aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/gianfar.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/gianfar.h')
-rw-r--r--drivers/net/gianfar.h38
1 files changed, 27 insertions, 11 deletions
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h
index a60f93f1ae07..79e8471584ea 100644
--- a/drivers/net/gianfar.h
+++ b/drivers/net/gianfar.h
@@ -770,6 +770,32 @@ struct gfar_priv_rx_q {
770 unsigned long rxic; 770 unsigned long rxic;
771}; 771};
772 772
773/**
774 * struct gfar_priv_grp - per group structure
775 * @priv: back pointer to the priv structure
776 * @regs: the ioremapped register space for this group
777 * @grp_id: group id for this group
778 * @interruptTransmit: The TX interrupt number for this group
779 * @interruptReceive: The RX interrupt number for this group
780 * @interruptError: The ERROR interrupt number for this group
781 * @int_name_tx: tx interrupt name for this group
782 * @int_name_rx: rx interrupt name for this group
783 * @int_name_er: er interrupt name for this group
784 */
785
786struct gfar_priv_grp {
787 spinlock_t grplock __attribute__ ((aligned (SMP_CACHE_BYTES)));
788 struct gfar_private *priv;
789 struct gfar __iomem *regs;
790 unsigned int interruptTransmit;
791 unsigned int interruptReceive;
792 unsigned int interruptError;
793
794 char int_name_tx[GFAR_INT_NAME_MAX];
795 char int_name_rx[GFAR_INT_NAME_MAX];
796 char int_name_er[GFAR_INT_NAME_MAX];
797};
798
773/* Struct stolen almost completely (and shamelessly) from the FCC enet source 799/* Struct stolen almost completely (and shamelessly) from the FCC enet source
774 * (Ok, that's not so true anymore, but there is a family resemblence) 800 * (Ok, that's not so true anymore, but there is a family resemblence)
775 * The GFAR buffer descriptors track the ring buffers. The rx_bd_base 801 * The GFAR buffer descriptors track the ring buffers. The rx_bd_base
@@ -785,6 +811,7 @@ struct gfar_private {
785 struct net_device *ndev; 811 struct net_device *ndev;
786 struct of_device *ofdev; 812 struct of_device *ofdev;
787 813
814 struct gfar_priv_grp gfargrp;
788 struct gfar_priv_tx_q *tx_queue; 815 struct gfar_priv_tx_q *tx_queue;
789 struct gfar_priv_rx_q *rx_queue; 816 struct gfar_priv_rx_q *rx_queue;
790 817
@@ -797,9 +824,6 @@ struct gfar_private {
797 824
798 struct vlan_group *vlgrp; 825 struct vlan_group *vlgrp;
799 826
800 /* Unprotected fields */
801 /* Pointer to the GFAR memory mapped Registers */
802 struct gfar __iomem *regs;
803 827
804 /* Hash registers and their width */ 828 /* Hash registers and their width */
805 u32 __iomem *hash_regs[16]; 829 u32 __iomem *hash_regs[16];
@@ -823,10 +847,6 @@ struct gfar_private {
823 wol_en:1; /* Wake-on-LAN enabled */ 847 wol_en:1; /* Wake-on-LAN enabled */
824 unsigned short padding; 848 unsigned short padding;
825 849
826 unsigned int interruptTransmit;
827 unsigned int interruptReceive;
828 unsigned int interruptError;
829
830 /* PHY stuff */ 850 /* PHY stuff */
831 struct phy_device *phydev; 851 struct phy_device *phydev;
832 struct mii_bus *mii_bus; 852 struct mii_bus *mii_bus;
@@ -838,10 +858,6 @@ struct gfar_private {
838 858
839 struct work_struct reset_task; 859 struct work_struct reset_task;
840 860
841 char int_name_tx[GFAR_INT_NAME_MAX];
842 char int_name_rx[GFAR_INT_NAME_MAX];
843 char int_name_er[GFAR_INT_NAME_MAX];
844
845 /* Network Statistics */ 861 /* Network Statistics */
846 struct gfar_extra_stats extra_stats; 862 struct gfar_extra_stats extra_stats;
847}; 863};