diff options
Diffstat (limited to 'drivers/net/sky2.h')
-rw-r--r-- | drivers/net/sky2.h | 93 |
1 files changed, 43 insertions, 50 deletions
diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h index dce955c76f3c..2838f661b393 100644 --- a/drivers/net/sky2.h +++ b/drivers/net/sky2.h | |||
@@ -278,13 +278,11 @@ enum { | |||
278 | Y2_IS_CHK_TXS1 = 1<<1, /* Descriptor error TXS 1 */ | 278 | Y2_IS_CHK_TXS1 = 1<<1, /* Descriptor error TXS 1 */ |
279 | Y2_IS_CHK_TXA1 = 1<<0, /* Descriptor error TXA 1 */ | 279 | Y2_IS_CHK_TXA1 = 1<<0, /* Descriptor error TXA 1 */ |
280 | 280 | ||
281 | Y2_IS_BASE = Y2_IS_HW_ERR | Y2_IS_STAT_BMU | | 281 | Y2_IS_BASE = Y2_IS_HW_ERR | Y2_IS_STAT_BMU, |
282 | Y2_IS_POLL_CHK | Y2_IS_TWSI_RDY | | 282 | Y2_IS_PORT_1 = Y2_IS_IRQ_PHY1 | Y2_IS_IRQ_MAC1 |
283 | Y2_IS_IRQ_SW | Y2_IS_TIMINT, | 283 | | Y2_IS_CHK_TXA1 | Y2_IS_CHK_RX1, |
284 | Y2_IS_PORT_1 = Y2_IS_IRQ_PHY1 | Y2_IS_IRQ_MAC1 | | 284 | Y2_IS_PORT_2 = Y2_IS_IRQ_PHY2 | Y2_IS_IRQ_MAC2 |
285 | Y2_IS_CHK_RX1 | Y2_IS_CHK_TXA1 | Y2_IS_CHK_TXS1, | 285 | | Y2_IS_CHK_TXA2 | Y2_IS_CHK_RX2, |
286 | Y2_IS_PORT_2 = Y2_IS_IRQ_PHY2 | Y2_IS_IRQ_MAC2 | | ||
287 | Y2_IS_CHK_RX2 | Y2_IS_CHK_TXA2 | Y2_IS_CHK_TXS2, | ||
288 | }; | 286 | }; |
289 | 287 | ||
290 | /* B2_IRQM_HWE_MSK 32 bit IRQ Moderation HW Error Mask */ | 288 | /* B2_IRQM_HWE_MSK 32 bit IRQ Moderation HW Error Mask */ |
@@ -1375,23 +1373,23 @@ enum { | |||
1375 | GM_SMI_CTRL = 0x0080, /* 16 bit r/w SMI Control Register */ | 1373 | GM_SMI_CTRL = 0x0080, /* 16 bit r/w SMI Control Register */ |
1376 | GM_SMI_DATA = 0x0084, /* 16 bit r/w SMI Data Register */ | 1374 | GM_SMI_DATA = 0x0084, /* 16 bit r/w SMI Data Register */ |
1377 | GM_PHY_ADDR = 0x0088, /* 16 bit r/w GPHY Address Register */ | 1375 | GM_PHY_ADDR = 0x0088, /* 16 bit r/w GPHY Address Register */ |
1376 | /* MIB Counters */ | ||
1377 | GM_MIB_CNT_BASE = 0x0100, /* Base Address of MIB Counters */ | ||
1378 | GM_MIB_CNT_SIZE = 256, | ||
1378 | }; | 1379 | }; |
1379 | 1380 | ||
1380 | /* MIB Counters */ | ||
1381 | #define GM_MIB_CNT_BASE 0x0100 /* Base Address of MIB Counters */ | ||
1382 | #define GM_MIB_CNT_SIZE 44 /* Number of MIB Counters */ | ||
1383 | 1381 | ||
1384 | /* | 1382 | /* |
1385 | * MIB Counters base address definitions (low word) - | 1383 | * MIB Counters base address definitions (low word) - |
1386 | * use offset 4 for access to high word (32 bit r/o) | 1384 | * use offset 4 for access to high word (32 bit r/o) |
1387 | */ | 1385 | */ |
1388 | enum { | 1386 | enum { |
1389 | GM_RXF_UC_OK = GM_MIB_CNT_BASE + 0, /* Unicast Frames Received OK */ | 1387 | GM_RXF_UC_OK = GM_MIB_CNT_BASE + 0, /* Unicast Frames Received OK */ |
1390 | GM_RXF_BC_OK = GM_MIB_CNT_BASE + 8, /* Broadcast Frames Received OK */ | 1388 | GM_RXF_BC_OK = GM_MIB_CNT_BASE + 8, /* Broadcast Frames Received OK */ |
1391 | GM_RXF_MPAUSE = GM_MIB_CNT_BASE + 16, /* Pause MAC Ctrl Frames Received */ | 1389 | GM_RXF_MPAUSE = GM_MIB_CNT_BASE + 16, /* Pause MAC Ctrl Frames Received */ |
1392 | GM_RXF_MC_OK = GM_MIB_CNT_BASE + 24, /* Multicast Frames Received OK */ | 1390 | GM_RXF_MC_OK = GM_MIB_CNT_BASE + 24, /* Multicast Frames Received OK */ |
1393 | GM_RXF_FCS_ERR = GM_MIB_CNT_BASE + 32, /* Rx Frame Check Seq. Error */ | 1391 | GM_RXF_FCS_ERR = GM_MIB_CNT_BASE + 32, /* Rx Frame Check Seq. Error */ |
1394 | /* GM_MIB_CNT_BASE + 40: reserved */ | 1392 | |
1395 | GM_RXO_OK_LO = GM_MIB_CNT_BASE + 48, /* Octets Received OK Low */ | 1393 | GM_RXO_OK_LO = GM_MIB_CNT_BASE + 48, /* Octets Received OK Low */ |
1396 | GM_RXO_OK_HI = GM_MIB_CNT_BASE + 56, /* Octets Received OK High */ | 1394 | GM_RXO_OK_HI = GM_MIB_CNT_BASE + 56, /* Octets Received OK High */ |
1397 | GM_RXO_ERR_LO = GM_MIB_CNT_BASE + 64, /* Octets Received Invalid Low */ | 1395 | GM_RXO_ERR_LO = GM_MIB_CNT_BASE + 64, /* Octets Received Invalid Low */ |
@@ -1399,37 +1397,36 @@ enum { | |||
1399 | GM_RXF_SHT = GM_MIB_CNT_BASE + 80, /* Frames <64 Byte Received OK */ | 1397 | GM_RXF_SHT = GM_MIB_CNT_BASE + 80, /* Frames <64 Byte Received OK */ |
1400 | GM_RXE_FRAG = GM_MIB_CNT_BASE + 88, /* Frames <64 Byte Received with FCS Err */ | 1398 | GM_RXE_FRAG = GM_MIB_CNT_BASE + 88, /* Frames <64 Byte Received with FCS Err */ |
1401 | GM_RXF_64B = GM_MIB_CNT_BASE + 96, /* 64 Byte Rx Frame */ | 1399 | GM_RXF_64B = GM_MIB_CNT_BASE + 96, /* 64 Byte Rx Frame */ |
1402 | GM_RXF_127B = GM_MIB_CNT_BASE + 104, /* 65-127 Byte Rx Frame */ | 1400 | GM_RXF_127B = GM_MIB_CNT_BASE + 104,/* 65-127 Byte Rx Frame */ |
1403 | GM_RXF_255B = GM_MIB_CNT_BASE + 112, /* 128-255 Byte Rx Frame */ | 1401 | GM_RXF_255B = GM_MIB_CNT_BASE + 112,/* 128-255 Byte Rx Frame */ |
1404 | GM_RXF_511B = GM_MIB_CNT_BASE + 120, /* 256-511 Byte Rx Frame */ | 1402 | GM_RXF_511B = GM_MIB_CNT_BASE + 120,/* 256-511 Byte Rx Frame */ |
1405 | GM_RXF_1023B = GM_MIB_CNT_BASE + 128, /* 512-1023 Byte Rx Frame */ | 1403 | GM_RXF_1023B = GM_MIB_CNT_BASE + 128,/* 512-1023 Byte Rx Frame */ |
1406 | GM_RXF_1518B = GM_MIB_CNT_BASE + 136, /* 1024-1518 Byte Rx Frame */ | 1404 | GM_RXF_1518B = GM_MIB_CNT_BASE + 136,/* 1024-1518 Byte Rx Frame */ |
1407 | GM_RXF_MAX_SZ = GM_MIB_CNT_BASE + 144, /* 1519-MaxSize Byte Rx Frame */ | 1405 | GM_RXF_MAX_SZ = GM_MIB_CNT_BASE + 144,/* 1519-MaxSize Byte Rx Frame */ |
1408 | GM_RXF_LNG_ERR = GM_MIB_CNT_BASE + 152, /* Rx Frame too Long Error */ | 1406 | GM_RXF_LNG_ERR = GM_MIB_CNT_BASE + 152,/* Rx Frame too Long Error */ |
1409 | GM_RXF_JAB_PKT = GM_MIB_CNT_BASE + 160, /* Rx Jabber Packet Frame */ | 1407 | GM_RXF_JAB_PKT = GM_MIB_CNT_BASE + 160,/* Rx Jabber Packet Frame */ |
1410 | /* GM_MIB_CNT_BASE + 168: reserved */ | 1408 | |
1411 | GM_RXE_FIFO_OV = GM_MIB_CNT_BASE + 176, /* Rx FIFO overflow Event */ | 1409 | GM_RXE_FIFO_OV = GM_MIB_CNT_BASE + 176,/* Rx FIFO overflow Event */ |
1412 | /* GM_MIB_CNT_BASE + 184: reserved */ | 1410 | GM_TXF_UC_OK = GM_MIB_CNT_BASE + 192,/* Unicast Frames Xmitted OK */ |
1413 | GM_TXF_UC_OK = GM_MIB_CNT_BASE + 192, /* Unicast Frames Xmitted OK */ | 1411 | GM_TXF_BC_OK = GM_MIB_CNT_BASE + 200,/* Broadcast Frames Xmitted OK */ |
1414 | GM_TXF_BC_OK = GM_MIB_CNT_BASE + 200, /* Broadcast Frames Xmitted OK */ | 1412 | GM_TXF_MPAUSE = GM_MIB_CNT_BASE + 208,/* Pause MAC Ctrl Frames Xmitted */ |
1415 | GM_TXF_MPAUSE = GM_MIB_CNT_BASE + 208, /* Pause MAC Ctrl Frames Xmitted */ | 1413 | GM_TXF_MC_OK = GM_MIB_CNT_BASE + 216,/* Multicast Frames Xmitted OK */ |
1416 | GM_TXF_MC_OK = GM_MIB_CNT_BASE + 216, /* Multicast Frames Xmitted OK */ | 1414 | GM_TXO_OK_LO = GM_MIB_CNT_BASE + 224,/* Octets Transmitted OK Low */ |
1417 | GM_TXO_OK_LO = GM_MIB_CNT_BASE + 224, /* Octets Transmitted OK Low */ | 1415 | GM_TXO_OK_HI = GM_MIB_CNT_BASE + 232,/* Octets Transmitted OK High */ |
1418 | GM_TXO_OK_HI = GM_MIB_CNT_BASE + 232, /* Octets Transmitted OK High */ | 1416 | GM_TXF_64B = GM_MIB_CNT_BASE + 240,/* 64 Byte Tx Frame */ |
1419 | GM_TXF_64B = GM_MIB_CNT_BASE + 240, /* 64 Byte Tx Frame */ | 1417 | GM_TXF_127B = GM_MIB_CNT_BASE + 248,/* 65-127 Byte Tx Frame */ |
1420 | GM_TXF_127B = GM_MIB_CNT_BASE + 248, /* 65-127 Byte Tx Frame */ | 1418 | GM_TXF_255B = GM_MIB_CNT_BASE + 256,/* 128-255 Byte Tx Frame */ |
1421 | GM_TXF_255B = GM_MIB_CNT_BASE + 256, /* 128-255 Byte Tx Frame */ | 1419 | GM_TXF_511B = GM_MIB_CNT_BASE + 264,/* 256-511 Byte Tx Frame */ |
1422 | GM_TXF_511B = GM_MIB_CNT_BASE + 264, /* 256-511 Byte Tx Frame */ | 1420 | GM_TXF_1023B = GM_MIB_CNT_BASE + 272,/* 512-1023 Byte Tx Frame */ |
1423 | GM_TXF_1023B = GM_MIB_CNT_BASE + 272, /* 512-1023 Byte Tx Frame */ | 1421 | GM_TXF_1518B = GM_MIB_CNT_BASE + 280,/* 1024-1518 Byte Tx Frame */ |
1424 | GM_TXF_1518B = GM_MIB_CNT_BASE + 280, /* 1024-1518 Byte Tx Frame */ | 1422 | GM_TXF_MAX_SZ = GM_MIB_CNT_BASE + 288,/* 1519-MaxSize Byte Tx Frame */ |
1425 | GM_TXF_MAX_SZ = GM_MIB_CNT_BASE + 288, /* 1519-MaxSize Byte Tx Frame */ | 1423 | |
1426 | 1424 | GM_TXF_COL = GM_MIB_CNT_BASE + 304,/* Tx Collision */ | |
1427 | GM_TXF_COL = GM_MIB_CNT_BASE + 304, /* Tx Collision */ | 1425 | GM_TXF_LAT_COL = GM_MIB_CNT_BASE + 312,/* Tx Late Collision */ |
1428 | GM_TXF_LAT_COL = GM_MIB_CNT_BASE + 312, /* Tx Late Collision */ | 1426 | GM_TXF_ABO_COL = GM_MIB_CNT_BASE + 320,/* Tx aborted due to Exces. Col. */ |
1429 | GM_TXF_ABO_COL = GM_MIB_CNT_BASE + 320, /* Tx aborted due to Exces. Col. */ | 1427 | GM_TXF_MUL_COL = GM_MIB_CNT_BASE + 328,/* Tx Multiple Collision */ |
1430 | GM_TXF_MUL_COL = GM_MIB_CNT_BASE + 328, /* Tx Multiple Collision */ | 1428 | GM_TXF_SNG_COL = GM_MIB_CNT_BASE + 336,/* Tx Single Collision */ |
1431 | GM_TXF_SNG_COL = GM_MIB_CNT_BASE + 336, /* Tx Single Collision */ | 1429 | GM_TXE_FIFO_UR = GM_MIB_CNT_BASE + 344,/* Tx FIFO Underrun Event */ |
1432 | GM_TXE_FIFO_UR = GM_MIB_CNT_BASE + 344, /* Tx FIFO Underrun Event */ | ||
1433 | }; | 1430 | }; |
1434 | 1431 | ||
1435 | /* GMAC Bit Definitions */ | 1432 | /* GMAC Bit Definitions */ |
@@ -1832,6 +1829,7 @@ struct sky2_port { | |||
1832 | struct net_device *netdev; | 1829 | struct net_device *netdev; |
1833 | unsigned port; | 1830 | unsigned port; |
1834 | u32 msg_enable; | 1831 | u32 msg_enable; |
1832 | spinlock_t phy_lock; | ||
1835 | 1833 | ||
1836 | spinlock_t tx_lock ____cacheline_aligned_in_smp; | 1834 | spinlock_t tx_lock ____cacheline_aligned_in_smp; |
1837 | struct tx_ring_info *tx_ring; | 1835 | struct tx_ring_info *tx_ring; |
@@ -1840,7 +1838,6 @@ struct sky2_port { | |||
1840 | u16 tx_prod; /* next le to use */ | 1838 | u16 tx_prod; /* next le to use */ |
1841 | u32 tx_addr64; | 1839 | u32 tx_addr64; |
1842 | u16 tx_pending; | 1840 | u16 tx_pending; |
1843 | u16 tx_last_put; | ||
1844 | u16 tx_last_mss; | 1841 | u16 tx_last_mss; |
1845 | 1842 | ||
1846 | struct ring_info *rx_ring ____cacheline_aligned_in_smp; | 1843 | struct ring_info *rx_ring ____cacheline_aligned_in_smp; |
@@ -1849,7 +1846,6 @@ struct sky2_port { | |||
1849 | u16 rx_next; /* next re to check */ | 1846 | u16 rx_next; /* next re to check */ |
1850 | u16 rx_put; /* next le index to use */ | 1847 | u16 rx_put; /* next le index to use */ |
1851 | u16 rx_pending; | 1848 | u16 rx_pending; |
1852 | u16 rx_last_put; | ||
1853 | u16 rx_bufsize; | 1849 | u16 rx_bufsize; |
1854 | #ifdef SKY2_VLAN_TAG_USED | 1850 | #ifdef SKY2_VLAN_TAG_USED |
1855 | u16 rx_tag; | 1851 | u16 rx_tag; |
@@ -1865,20 +1861,15 @@ struct sky2_port { | |||
1865 | u8 rx_pause; | 1861 | u8 rx_pause; |
1866 | u8 tx_pause; | 1862 | u8 tx_pause; |
1867 | u8 rx_csum; | 1863 | u8 rx_csum; |
1868 | u8 wol; | ||
1869 | 1864 | ||
1870 | struct net_device_stats net_stats; | 1865 | struct net_device_stats net_stats; |
1871 | 1866 | ||
1872 | struct work_struct phy_task; | ||
1873 | struct semaphore phy_sema; | ||
1874 | }; | 1867 | }; |
1875 | 1868 | ||
1876 | struct sky2_hw { | 1869 | struct sky2_hw { |
1877 | void __iomem *regs; | 1870 | void __iomem *regs; |
1878 | struct pci_dev *pdev; | 1871 | struct pci_dev *pdev; |
1879 | struct net_device *dev[2]; | 1872 | struct net_device *dev[2]; |
1880 | spinlock_t hw_lock; | ||
1881 | u32 intr_mask; | ||
1882 | 1873 | ||
1883 | int pm_cap; | 1874 | int pm_cap; |
1884 | u8 chip_id; | 1875 | u8 chip_id; |
@@ -1889,6 +1880,8 @@ struct sky2_hw { | |||
1889 | struct sky2_status_le *st_le; | 1880 | struct sky2_status_le *st_le; |
1890 | u32 st_idx; | 1881 | u32 st_idx; |
1891 | dma_addr_t st_dma; | 1882 | dma_addr_t st_dma; |
1883 | int msi_detected; | ||
1884 | wait_queue_head_t msi_wait; | ||
1892 | }; | 1885 | }; |
1893 | 1886 | ||
1894 | /* Register accessor for memory mapped device */ | 1887 | /* Register accessor for memory mapped device */ |