diff options
Diffstat (limited to 'drivers/net/sky2.h')
-rw-r--r-- | drivers/net/sky2.h | 167 |
1 files changed, 148 insertions, 19 deletions
diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h index b8c4a3b5eadf..dce4d276d443 100644 --- a/drivers/net/sky2.h +++ b/drivers/net/sky2.h | |||
@@ -14,6 +14,8 @@ enum { | |||
14 | PCI_DEV_REG3 = 0x80, | 14 | PCI_DEV_REG3 = 0x80, |
15 | PCI_DEV_REG4 = 0x84, | 15 | PCI_DEV_REG4 = 0x84, |
16 | PCI_DEV_REG5 = 0x88, | 16 | PCI_DEV_REG5 = 0x88, |
17 | PCI_CFG_REG_0 = 0x90, | ||
18 | PCI_CFG_REG_1 = 0x94, | ||
17 | }; | 19 | }; |
18 | 20 | ||
19 | enum { | 21 | enum { |
@@ -28,6 +30,7 @@ enum { | |||
28 | enum pci_dev_reg_1 { | 30 | enum pci_dev_reg_1 { |
29 | PCI_Y2_PIG_ENA = 1<<31, /* Enable Plug-in-Go (YUKON-2) */ | 31 | PCI_Y2_PIG_ENA = 1<<31, /* Enable Plug-in-Go (YUKON-2) */ |
30 | PCI_Y2_DLL_DIS = 1<<30, /* Disable PCI DLL (YUKON-2) */ | 32 | PCI_Y2_DLL_DIS = 1<<30, /* Disable PCI DLL (YUKON-2) */ |
33 | PCI_SW_PWR_ON_RST= 1<<30, /* SW Power on Reset (Yukon-EX) */ | ||
31 | PCI_Y2_PHY2_COMA = 1<<29, /* Set PHY 2 to Coma Mode (YUKON-2) */ | 34 | PCI_Y2_PHY2_COMA = 1<<29, /* Set PHY 2 to Coma Mode (YUKON-2) */ |
32 | PCI_Y2_PHY1_COMA = 1<<28, /* Set PHY 1 to Coma Mode (YUKON-2) */ | 35 | PCI_Y2_PHY1_COMA = 1<<28, /* Set PHY 1 to Coma Mode (YUKON-2) */ |
33 | PCI_Y2_PHY2_POWD = 1<<27, /* Set PHY 2 to Power Down (YUKON-2) */ | 36 | PCI_Y2_PHY2_POWD = 1<<27, /* Set PHY 2 to Power Down (YUKON-2) */ |
@@ -67,6 +70,80 @@ enum pci_dev_reg_4 { | |||
67 | | P_ASPM_CLKRUN_REQUEST | P_ASPM_INT_FIFO_EMPTY, | 70 | | P_ASPM_CLKRUN_REQUEST | P_ASPM_INT_FIFO_EMPTY, |
68 | }; | 71 | }; |
69 | 72 | ||
73 | /* PCI_OUR_REG_5 32 bit Our Register 5 (Yukon-ECU only) */ | ||
74 | enum pci_dev_reg_5 { | ||
75 | /* Bit 31..27: for A3 & later */ | ||
76 | P_CTL_DIV_CORE_CLK_ENA = 1<<31, /* Divide Core Clock Enable */ | ||
77 | P_CTL_SRESET_VMAIN_AV = 1<<30, /* Soft Reset for Vmain_av De-Glitch */ | ||
78 | P_CTL_BYPASS_VMAIN_AV = 1<<29, /* Bypass En. for Vmain_av De-Glitch */ | ||
79 | P_CTL_TIM_VMAIN_AV_MSK = 3<<27, /* Bit 28..27: Timer Vmain_av Mask */ | ||
80 | /* Bit 26..16: Release Clock on Event */ | ||
81 | P_REL_PCIE_RST_DE_ASS = 1<<26, /* PCIe Reset De-Asserted */ | ||
82 | P_REL_GPHY_REC_PACKET = 1<<25, /* GPHY Received Packet */ | ||
83 | P_REL_INT_FIFO_N_EMPTY = 1<<24, /* Internal FIFO Not Empty */ | ||
84 | P_REL_MAIN_PWR_AVAIL = 1<<23, /* Main Power Available */ | ||
85 | P_REL_CLKRUN_REQ_REL = 1<<22, /* CLKRUN Request Release */ | ||
86 | P_REL_PCIE_RESET_ASS = 1<<21, /* PCIe Reset Asserted */ | ||
87 | P_REL_PME_ASSERTED = 1<<20, /* PME Asserted */ | ||
88 | P_REL_PCIE_EXIT_L1_ST = 1<<19, /* PCIe Exit L1 State */ | ||
89 | P_REL_LOADER_NOT_FIN = 1<<18, /* EPROM Loader Not Finished */ | ||
90 | P_REL_PCIE_RX_EX_IDLE = 1<<17, /* PCIe Rx Exit Electrical Idle State */ | ||
91 | P_REL_GPHY_LINK_UP = 1<<16, /* GPHY Link Up */ | ||
92 | |||
93 | /* Bit 10.. 0: Mask for Gate Clock */ | ||
94 | P_GAT_PCIE_RST_ASSERTED = 1<<10,/* PCIe Reset Asserted */ | ||
95 | P_GAT_GPHY_N_REC_PACKET = 1<<9, /* GPHY Not Received Packet */ | ||
96 | P_GAT_INT_FIFO_EMPTY = 1<<8, /* Internal FIFO Empty */ | ||
97 | P_GAT_MAIN_PWR_N_AVAIL = 1<<7, /* Main Power Not Available */ | ||
98 | P_GAT_CLKRUN_REQ_REL = 1<<6, /* CLKRUN Not Requested */ | ||
99 | P_GAT_PCIE_RESET_ASS = 1<<5, /* PCIe Reset Asserted */ | ||
100 | P_GAT_PME_DE_ASSERTED = 1<<4, /* PME De-Asserted */ | ||
101 | P_GAT_PCIE_ENTER_L1_ST = 1<<3, /* PCIe Enter L1 State */ | ||
102 | P_GAT_LOADER_FINISHED = 1<<2, /* EPROM Loader Finished */ | ||
103 | P_GAT_PCIE_RX_EL_IDLE = 1<<1, /* PCIe Rx Electrical Idle State */ | ||
104 | P_GAT_GPHY_LINK_DOWN = 1<<0, /* GPHY Link Down */ | ||
105 | |||
106 | PCIE_OUR5_EVENT_CLK_D3_SET = P_REL_GPHY_REC_PACKET | | ||
107 | P_REL_INT_FIFO_N_EMPTY | | ||
108 | P_REL_PCIE_EXIT_L1_ST | | ||
109 | P_REL_PCIE_RX_EX_IDLE | | ||
110 | P_GAT_GPHY_N_REC_PACKET | | ||
111 | P_GAT_INT_FIFO_EMPTY | | ||
112 | P_GAT_PCIE_ENTER_L1_ST | | ||
113 | P_GAT_PCIE_RX_EL_IDLE, | ||
114 | }; | ||
115 | |||
116 | #/* PCI_CFG_REG_1 32 bit Config Register 1 (Yukon-Ext only) */ | ||
117 | enum pci_cfg_reg1 { | ||
118 | P_CF1_DIS_REL_EVT_RST = 1<<24, /* Dis. Rel. Event during PCIE reset */ | ||
119 | /* Bit 23..21: Release Clock on Event */ | ||
120 | P_CF1_REL_LDR_NOT_FIN = 1<<23, /* EEPROM Loader Not Finished */ | ||
121 | P_CF1_REL_VMAIN_AVLBL = 1<<22, /* Vmain available */ | ||
122 | P_CF1_REL_PCIE_RESET = 1<<21, /* PCI-E reset */ | ||
123 | /* Bit 20..18: Gate Clock on Event */ | ||
124 | P_CF1_GAT_LDR_NOT_FIN = 1<<20, /* EEPROM Loader Finished */ | ||
125 | P_CF1_GAT_PCIE_RX_IDLE = 1<<19, /* PCI-E Rx Electrical idle */ | ||
126 | P_CF1_GAT_PCIE_RESET = 1<<18, /* PCI-E Reset */ | ||
127 | P_CF1_PRST_PHY_CLKREQ = 1<<17, /* Enable PCI-E rst & PM2PHY gen. CLKREQ */ | ||
128 | P_CF1_PCIE_RST_CLKREQ = 1<<16, /* Enable PCI-E rst generate CLKREQ */ | ||
129 | |||
130 | P_CF1_ENA_CFG_LDR_DONE = 1<<8, /* Enable core level Config loader done */ | ||
131 | |||
132 | P_CF1_ENA_TXBMU_RD_IDLE = 1<<1, /* Enable TX BMU Read IDLE for ASPM */ | ||
133 | P_CF1_ENA_TXBMU_WR_IDLE = 1<<0, /* Enable TX BMU Write IDLE for ASPM */ | ||
134 | |||
135 | PCIE_CFG1_EVENT_CLK_D3_SET = P_CF1_DIS_REL_EVT_RST | | ||
136 | P_CF1_REL_LDR_NOT_FIN | | ||
137 | P_CF1_REL_VMAIN_AVLBL | | ||
138 | P_CF1_REL_PCIE_RESET | | ||
139 | P_CF1_GAT_LDR_NOT_FIN | | ||
140 | P_CF1_GAT_PCIE_RESET | | ||
141 | P_CF1_PRST_PHY_CLKREQ | | ||
142 | P_CF1_ENA_CFG_LDR_DONE | | ||
143 | P_CF1_ENA_TXBMU_RD_IDLE | | ||
144 | P_CF1_ENA_TXBMU_WR_IDLE, | ||
145 | }; | ||
146 | |||
70 | 147 | ||
71 | #define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \ | 148 | #define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \ |
72 | PCI_STATUS_SIG_SYSTEM_ERROR | \ | 149 | PCI_STATUS_SIG_SYSTEM_ERROR | \ |
@@ -364,6 +441,20 @@ enum { | |||
364 | TST_CFG_WRITE_OFF= 1<<0, /* Disable Config Reg WR */ | 441 | TST_CFG_WRITE_OFF= 1<<0, /* Disable Config Reg WR */ |
365 | }; | 442 | }; |
366 | 443 | ||
444 | /* B2_GPIO */ | ||
445 | enum { | ||
446 | GLB_GPIO_CLK_DEB_ENA = 1<<31, /* Clock Debug Enable */ | ||
447 | GLB_GPIO_CLK_DBG_MSK = 0xf<<26, /* Clock Debug */ | ||
448 | |||
449 | GLB_GPIO_INT_RST_D3_DIS = 1<<15, /* Disable Internal Reset After D3 to D0 */ | ||
450 | GLB_GPIO_LED_PAD_SPEED_UP = 1<<14, /* LED PAD Speed Up */ | ||
451 | GLB_GPIO_STAT_RACE_DIS = 1<<13, /* Status Race Disable */ | ||
452 | GLB_GPIO_TEST_SEL_MSK = 3<<11, /* Testmode Select */ | ||
453 | GLB_GPIO_TEST_SEL_BASE = 1<<11, | ||
454 | GLB_GPIO_RAND_ENA = 1<<10, /* Random Enable */ | ||
455 | GLB_GPIO_RAND_BIT_1 = 1<<9, /* Random Bit 1 */ | ||
456 | }; | ||
457 | |||
367 | /* B2_MAC_CFG 8 bit MAC Configuration / Chip Revision */ | 458 | /* B2_MAC_CFG 8 bit MAC Configuration / Chip Revision */ |
368 | enum { | 459 | enum { |
369 | CFG_CHIP_R_MSK = 0xf<<4, /* Bit 7.. 4: Chip Revision */ | 460 | CFG_CHIP_R_MSK = 0xf<<4, /* Bit 7.. 4: Chip Revision */ |
@@ -392,6 +483,11 @@ enum { | |||
392 | CHIP_REV_YU_FE_A2 = 2, | 483 | CHIP_REV_YU_FE_A2 = 2, |
393 | 484 | ||
394 | }; | 485 | }; |
486 | enum yukon_ex_rev { | ||
487 | CHIP_REV_YU_EX_A0 = 1, | ||
488 | CHIP_REV_YU_EX_B0 = 2, | ||
489 | }; | ||
490 | |||
395 | 491 | ||
396 | /* B2_Y2_CLK_GATE 8 bit Clock Gating (Yukon-2 only) */ | 492 | /* B2_Y2_CLK_GATE 8 bit Clock Gating (Yukon-2 only) */ |
397 | enum { | 493 | enum { |
@@ -515,23 +611,15 @@ enum { | |||
515 | enum { | 611 | enum { |
516 | B8_Q_REGS = 0x0400, /* base of Queue registers */ | 612 | B8_Q_REGS = 0x0400, /* base of Queue registers */ |
517 | Q_D = 0x00, /* 8*32 bit Current Descriptor */ | 613 | Q_D = 0x00, /* 8*32 bit Current Descriptor */ |
518 | Q_DA_L = 0x20, /* 32 bit Current Descriptor Address Low dWord */ | 614 | Q_VLAN = 0x20, /* 16 bit Current VLAN Tag */ |
519 | Q_DA_H = 0x24, /* 32 bit Current Descriptor Address High dWord */ | 615 | Q_DONE = 0x24, /* 16 bit Done Index */ |
520 | Q_AC_L = 0x28, /* 32 bit Current Address Counter Low dWord */ | 616 | Q_AC_L = 0x28, /* 32 bit Current Address Counter Low dWord */ |
521 | Q_AC_H = 0x2c, /* 32 bit Current Address Counter High dWord */ | 617 | Q_AC_H = 0x2c, /* 32 bit Current Address Counter High dWord */ |
522 | Q_BC = 0x30, /* 32 bit Current Byte Counter */ | 618 | Q_BC = 0x30, /* 32 bit Current Byte Counter */ |
523 | Q_CSR = 0x34, /* 32 bit BMU Control/Status Register */ | 619 | Q_CSR = 0x34, /* 32 bit BMU Control/Status Register */ |
524 | Q_F = 0x38, /* 32 bit Flag Register */ | 620 | Q_TEST = 0x38, /* 32 bit Test/Control Register */ |
525 | Q_T1 = 0x3c, /* 32 bit Test Register 1 */ | ||
526 | Q_T1_TR = 0x3c, /* 8 bit Test Register 1 Transfer SM */ | ||
527 | Q_T1_WR = 0x3d, /* 8 bit Test Register 1 Write Descriptor SM */ | ||
528 | Q_T1_RD = 0x3e, /* 8 bit Test Register 1 Read Descriptor SM */ | ||
529 | Q_T1_SV = 0x3f, /* 8 bit Test Register 1 Supervisor SM */ | ||
530 | Q_T2 = 0x40, /* 32 bit Test Register 2 */ | ||
531 | Q_T3 = 0x44, /* 32 bit Test Register 3 */ | ||
532 | 621 | ||
533 | /* Yukon-2 */ | 622 | /* Yukon-2 */ |
534 | Q_DONE = 0x24, /* 16 bit Done Index (Yukon-2 only) */ | ||
535 | Q_WM = 0x40, /* 16 bit FIFO Watermark */ | 623 | Q_WM = 0x40, /* 16 bit FIFO Watermark */ |
536 | Q_AL = 0x42, /* 8 bit FIFO Alignment */ | 624 | Q_AL = 0x42, /* 8 bit FIFO Alignment */ |
537 | Q_RSP = 0x44, /* 16 bit FIFO Read Shadow Pointer */ | 625 | Q_RSP = 0x44, /* 16 bit FIFO Read Shadow Pointer */ |
@@ -545,15 +633,16 @@ enum { | |||
545 | }; | 633 | }; |
546 | #define Q_ADDR(reg, offs) (B8_Q_REGS + (reg) + (offs)) | 634 | #define Q_ADDR(reg, offs) (B8_Q_REGS + (reg) + (offs)) |
547 | 635 | ||
548 | /* Q_F 32 bit Flag Register */ | 636 | /* Q_TEST 32 bit Test Register */ |
549 | enum { | 637 | enum { |
550 | F_ALM_FULL = 1<<27, /* Rx FIFO: almost full */ | 638 | /* Transmit */ |
551 | F_EMPTY = 1<<27, /* Tx FIFO: empty flag */ | 639 | F_TX_CHK_AUTO_OFF = 1<<31, /* Tx checksum auto calc off (Yukon EX) */ |
552 | F_FIFO_EOF = 1<<26, /* Tag (EOF Flag) bit in FIFO */ | 640 | F_TX_CHK_AUTO_ON = 1<<30, /* Tx checksum auto calc off (Yukon EX) */ |
553 | F_WM_REACHED = 1<<25, /* Watermark reached */ | 641 | |
642 | /* Receive */ | ||
554 | F_M_RX_RAM_DIS = 1<<24, /* MAC Rx RAM Read Port disable */ | 643 | F_M_RX_RAM_DIS = 1<<24, /* MAC Rx RAM Read Port disable */ |
555 | F_FIFO_LEVEL = 0x1fL<<16, /* Bit 23..16: # of Qwords in FIFO */ | 644 | |
556 | F_WATER_MARK = 0x0007ffL, /* Bit 10.. 0: Watermark */ | 645 | /* Hardware testbits not used */ |
557 | }; | 646 | }; |
558 | 647 | ||
559 | /* Queue Prefetch Unit Offsets, use Y2_QADDR() to address (Yukon-2 only)*/ | 648 | /* Queue Prefetch Unit Offsets, use Y2_QADDR() to address (Yukon-2 only)*/ |
@@ -1608,6 +1697,16 @@ enum { | |||
1608 | RX_VLAN_STRIP_ON = 1<<25, /* enable VLAN stripping */ | 1697 | RX_VLAN_STRIP_ON = 1<<25, /* enable VLAN stripping */ |
1609 | RX_VLAN_STRIP_OFF = 1<<24, /* disable VLAN stripping */ | 1698 | RX_VLAN_STRIP_OFF = 1<<24, /* disable VLAN stripping */ |
1610 | 1699 | ||
1700 | RX_MACSEC_FLUSH_ON = 1<<23, | ||
1701 | RX_MACSEC_FLUSH_OFF = 1<<22, | ||
1702 | RX_MACSEC_ASF_FLUSH_ON = 1<<21, | ||
1703 | RX_MACSEC_ASF_FLUSH_OFF = 1<<20, | ||
1704 | |||
1705 | GMF_RX_OVER_ON = 1<<19, /* enable flushing on receive overrun */ | ||
1706 | GMF_RX_OVER_OFF = 1<<18, /* disable flushing on receive overrun */ | ||
1707 | GMF_ASF_RX_OVER_ON = 1<<17, /* enable flushing of ASF when overrun */ | ||
1708 | GMF_ASF_RX_OVER_OFF = 1<<16, /* disable flushing of ASF when overrun */ | ||
1709 | |||
1611 | GMF_WP_TST_ON = 1<<14, /* Write Pointer Test On */ | 1710 | GMF_WP_TST_ON = 1<<14, /* Write Pointer Test On */ |
1612 | GMF_WP_TST_OFF = 1<<13, /* Write Pointer Test Off */ | 1711 | GMF_WP_TST_OFF = 1<<13, /* Write Pointer Test Off */ |
1613 | GMF_WP_STEP = 1<<12, /* Write Pointer Step/Increment */ | 1712 | GMF_WP_STEP = 1<<12, /* Write Pointer Step/Increment */ |
@@ -1720,6 +1819,15 @@ enum { | |||
1720 | 1819 | ||
1721 | /* GMAC_CTRL 32 bit GMAC Control Reg (YUKON only) */ | 1820 | /* GMAC_CTRL 32 bit GMAC Control Reg (YUKON only) */ |
1722 | enum { | 1821 | enum { |
1822 | GMC_SET_RST = 1<<15,/* MAC SEC RST */ | ||
1823 | GMC_SEC_RST_OFF = 1<<14,/* MAC SEC RSt OFF */ | ||
1824 | GMC_BYP_MACSECRX_ON = 1<<13,/* Bypass macsec RX */ | ||
1825 | GMC_BYP_MACSECRX_OFF= 1<<12,/* Bypass macsec RX off */ | ||
1826 | GMC_BYP_MACSECTX_ON = 1<<11,/* Bypass macsec TX */ | ||
1827 | GMC_BYP_MACSECTX_OFF= 1<<10,/* Bypass macsec TX off*/ | ||
1828 | GMC_BYP_RETR_ON = 1<<9, /* Bypass retransmit FIFO On */ | ||
1829 | GMC_BYP_RETR_OFF= 1<<8, /* Bypass retransmit FIFO Off */ | ||
1830 | |||
1723 | GMC_H_BURST_ON = 1<<7, /* Half Duplex Burst Mode On */ | 1831 | GMC_H_BURST_ON = 1<<7, /* Half Duplex Burst Mode On */ |
1724 | GMC_H_BURST_OFF = 1<<6, /* Half Duplex Burst Mode Off */ | 1832 | GMC_H_BURST_OFF = 1<<6, /* Half Duplex Burst Mode Off */ |
1725 | GMC_F_LOOPB_ON = 1<<5, /* FIFO Loopback On */ | 1833 | GMC_F_LOOPB_ON = 1<<5, /* FIFO Loopback On */ |
@@ -1805,9 +1913,13 @@ enum { | |||
1805 | OP_ADDR64VLAN = OP_ADDR64 | OP_VLAN, | 1913 | OP_ADDR64VLAN = OP_ADDR64 | OP_VLAN, |
1806 | OP_LRGLEN = 0x24, | 1914 | OP_LRGLEN = 0x24, |
1807 | OP_LRGLENVLAN = OP_LRGLEN | OP_VLAN, | 1915 | OP_LRGLENVLAN = OP_LRGLEN | OP_VLAN, |
1916 | OP_MSS = 0x28, | ||
1917 | OP_MSSVLAN = OP_MSS | OP_VLAN, | ||
1918 | |||
1808 | OP_BUFFER = 0x40, | 1919 | OP_BUFFER = 0x40, |
1809 | OP_PACKET = 0x41, | 1920 | OP_PACKET = 0x41, |
1810 | OP_LARGESEND = 0x43, | 1921 | OP_LARGESEND = 0x43, |
1922 | OP_LSOV2 = 0x45, | ||
1811 | 1923 | ||
1812 | /* YUKON-2 STATUS opcodes defines */ | 1924 | /* YUKON-2 STATUS opcodes defines */ |
1813 | OP_RXSTAT = 0x60, | 1925 | OP_RXSTAT = 0x60, |
@@ -1818,6 +1930,19 @@ enum { | |||
1818 | OP_RXTIMEVLAN = OP_RXTIMESTAMP | OP_RXVLAN, | 1930 | OP_RXTIMEVLAN = OP_RXTIMESTAMP | OP_RXVLAN, |
1819 | OP_RSS_HASH = 0x65, | 1931 | OP_RSS_HASH = 0x65, |
1820 | OP_TXINDEXLE = 0x68, | 1932 | OP_TXINDEXLE = 0x68, |
1933 | OP_MACSEC = 0x6c, | ||
1934 | OP_PUTIDX = 0x70, | ||
1935 | }; | ||
1936 | |||
1937 | enum status_css { | ||
1938 | CSS_TCPUDPCSOK = 1<<7, /* TCP / UDP checksum is ok */ | ||
1939 | CSS_ISUDP = 1<<6, /* packet is a UDP packet */ | ||
1940 | CSS_ISTCP = 1<<5, /* packet is a TCP packet */ | ||
1941 | CSS_ISIPFRAG = 1<<4, /* packet is a TCP/UDP frag, CS calc not done */ | ||
1942 | CSS_ISIPV6 = 1<<3, /* packet is a IPv6 packet */ | ||
1943 | CSS_IPV4CSUMOK = 1<<2, /* IP v4: TCP header checksum is ok */ | ||
1944 | CSS_ISIPV4 = 1<<1, /* packet is a IPv4 packet */ | ||
1945 | CSS_LINK_BIT = 1<<0, /* port number (legacy) */ | ||
1821 | }; | 1946 | }; |
1822 | 1947 | ||
1823 | /* Yukon 2 hardware interface */ | 1948 | /* Yukon 2 hardware interface */ |
@@ -1838,7 +1963,7 @@ struct sky2_rx_le { | |||
1838 | struct sky2_status_le { | 1963 | struct sky2_status_le { |
1839 | __le32 status; /* also checksum */ | 1964 | __le32 status; /* also checksum */ |
1840 | __le16 length; /* also vlan tag */ | 1965 | __le16 length; /* also vlan tag */ |
1841 | u8 link; | 1966 | u8 css; |
1842 | u8 opcode; | 1967 | u8 opcode; |
1843 | } __attribute((packed)); | 1968 | } __attribute((packed)); |
1844 | 1969 | ||
@@ -1873,6 +1998,7 @@ struct sky2_port { | |||
1873 | struct sky2_tx_le *tx_le; | 1998 | struct sky2_tx_le *tx_le; |
1874 | u16 tx_cons; /* next le to check */ | 1999 | u16 tx_cons; /* next le to check */ |
1875 | u16 tx_prod; /* next le to use */ | 2000 | u16 tx_prod; /* next le to use */ |
2001 | u16 tx_next; /* debug only */ | ||
1876 | u32 tx_addr64; | 2002 | u32 tx_addr64; |
1877 | u16 tx_pending; | 2003 | u16 tx_pending; |
1878 | u16 tx_last_mss; | 2004 | u16 tx_last_mss; |
@@ -1903,6 +2029,9 @@ struct sky2_port { | |||
1903 | enum flow_control flow_mode; | 2029 | enum flow_control flow_mode; |
1904 | enum flow_control flow_status; | 2030 | enum flow_control flow_status; |
1905 | 2031 | ||
2032 | #ifdef CONFIG_SKY2_DEBUG | ||
2033 | struct dentry *debugfs; | ||
2034 | #endif | ||
1906 | struct net_device_stats net_stats; | 2035 | struct net_device_stats net_stats; |
1907 | 2036 | ||
1908 | }; | 2037 | }; |