aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-05-08 01:57:22 -0400
committerDavid S. Miller <davem@davemloft.net>2011-05-08 01:57:22 -0400
commit534eacb5d4e7bafbdb60386678afeffb7966c375 (patch)
treec9785d952d8327c07993964d7313711f4f5bc6a0
parent0f020dec545629bb068310e8ee374648867e391c (diff)
parent58f6bcf96e95f042a2bee6ace238365cb8fb1ce6 (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/jkirsher/net-next-2.6
-rw-r--r--drivers/net/e100.c66
-rw-r--r--drivers/net/e1000/e1000.h3
-rw-r--r--drivers/net/e1000/e1000_ethtool.c50
-rw-r--r--drivers/net/igb/igb_ethtool.c37
-rw-r--r--drivers/net/ixgbe/ixgbe_ethtool.c11
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c21
-rw-r--r--drivers/net/ixgbe/ixgbe_type.h8
7 files changed, 100 insertions, 96 deletions
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 29f812dc1098..e336c7937f05 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -593,7 +593,6 @@ struct nic {
593 enum phy phy; 593 enum phy phy;
594 struct params params; 594 struct params params;
595 struct timer_list watchdog; 595 struct timer_list watchdog;
596 struct timer_list blink_timer;
597 struct mii_if_info mii; 596 struct mii_if_info mii;
598 struct work_struct tx_timeout_task; 597 struct work_struct tx_timeout_task;
599 enum loopback loopback; 598 enum loopback loopback;
@@ -618,7 +617,6 @@ struct nic {
618 u32 rx_tco_frames; 617 u32 rx_tco_frames;
619 u32 rx_over_length_errors; 618 u32 rx_over_length_errors;
620 619
621 u16 leds;
622 u16 eeprom_wc; 620 u16 eeprom_wc;
623 __le16 eeprom[256]; 621 __le16 eeprom[256];
624 spinlock_t mdio_lock; 622 spinlock_t mdio_lock;
@@ -2353,30 +2351,6 @@ err_clean_rx:
2353#define E100_82552_LED_OVERRIDE 0x19 2351#define E100_82552_LED_OVERRIDE 0x19
2354#define E100_82552_LED_ON 0x000F /* LEDTX and LED_RX both on */ 2352#define E100_82552_LED_ON 0x000F /* LEDTX and LED_RX both on */
2355#define E100_82552_LED_OFF 0x000A /* LEDTX and LED_RX both off */ 2353#define E100_82552_LED_OFF 0x000A /* LEDTX and LED_RX both off */
2356static void e100_blink_led(unsigned long data)
2357{
2358 struct nic *nic = (struct nic *)data;
2359 enum led_state {
2360 led_on = 0x01,
2361 led_off = 0x04,
2362 led_on_559 = 0x05,
2363 led_on_557 = 0x07,
2364 };
2365 u16 led_reg = MII_LED_CONTROL;
2366
2367 if (nic->phy == phy_82552_v) {
2368 led_reg = E100_82552_LED_OVERRIDE;
2369
2370 nic->leds = (nic->leds == E100_82552_LED_ON) ?
2371 E100_82552_LED_OFF : E100_82552_LED_ON;
2372 } else {
2373 nic->leds = (nic->leds & led_on) ? led_off :
2374 (nic->mac < mac_82559_D101M) ? led_on_557 :
2375 led_on_559;
2376 }
2377 mdio_write(nic->netdev, nic->mii.phy_id, led_reg, nic->leds);
2378 mod_timer(&nic->blink_timer, jiffies + HZ / 4);
2379}
2380 2354
2381static int e100_get_settings(struct net_device *netdev, struct ethtool_cmd *cmd) 2355static int e100_get_settings(struct net_device *netdev, struct ethtool_cmd *cmd)
2382{ 2356{
@@ -2600,19 +2574,38 @@ static void e100_diag_test(struct net_device *netdev,
2600 msleep_interruptible(4 * 1000); 2574 msleep_interruptible(4 * 1000);
2601} 2575}
2602 2576
2603static int e100_phys_id(struct net_device *netdev, u32 data) 2577static int e100_set_phys_id(struct net_device *netdev,
2578 enum ethtool_phys_id_state state)
2604{ 2579{
2605 struct nic *nic = netdev_priv(netdev); 2580 struct nic *nic = netdev_priv(netdev);
2581 enum led_state {
2582 led_on = 0x01,
2583 led_off = 0x04,
2584 led_on_559 = 0x05,
2585 led_on_557 = 0x07,
2586 };
2606 u16 led_reg = (nic->phy == phy_82552_v) ? E100_82552_LED_OVERRIDE : 2587 u16 led_reg = (nic->phy == phy_82552_v) ? E100_82552_LED_OVERRIDE :
2607 MII_LED_CONTROL; 2588 MII_LED_CONTROL;
2589 u16 leds = 0;
2590
2591 switch (state) {
2592 case ETHTOOL_ID_ACTIVE:
2593 return 2;
2608 2594
2609 if (!data || data > (u32)(MAX_SCHEDULE_TIMEOUT / HZ)) 2595 case ETHTOOL_ID_ON:
2610 data = (u32)(MAX_SCHEDULE_TIMEOUT / HZ); 2596 leds = (nic->phy == phy_82552_v) ? E100_82552_LED_ON :
2611 mod_timer(&nic->blink_timer, jiffies); 2597 (nic->mac < mac_82559_D101M) ? led_on_557 : led_on_559;
2612 msleep_interruptible(data * 1000); 2598 break;
2613 del_timer_sync(&nic->blink_timer); 2599
2614 mdio_write(netdev, nic->mii.phy_id, led_reg, 0); 2600 case ETHTOOL_ID_OFF:
2601 leds = (nic->phy == phy_82552_v) ? E100_82552_LED_OFF : led_off;
2602 break;
2603
2604 case ETHTOOL_ID_INACTIVE:
2605 break;
2606 }
2615 2607
2608 mdio_write(netdev, nic->mii.phy_id, led_reg, leds);
2616 return 0; 2609 return 0;
2617} 2610}
2618 2611
@@ -2693,7 +2686,7 @@ static const struct ethtool_ops e100_ethtool_ops = {
2693 .set_ringparam = e100_set_ringparam, 2686 .set_ringparam = e100_set_ringparam,
2694 .self_test = e100_diag_test, 2687 .self_test = e100_diag_test,
2695 .get_strings = e100_get_strings, 2688 .get_strings = e100_get_strings,
2696 .phys_id = e100_phys_id, 2689 .set_phys_id = e100_set_phys_id,
2697 .get_ethtool_stats = e100_get_ethtool_stats, 2690 .get_ethtool_stats = e100_get_ethtool_stats,
2698 .get_sset_count = e100_get_sset_count, 2691 .get_sset_count = e100_get_sset_count,
2699}; 2692};
@@ -2834,9 +2827,6 @@ static int __devinit e100_probe(struct pci_dev *pdev,
2834 init_timer(&nic->watchdog); 2827 init_timer(&nic->watchdog);
2835 nic->watchdog.function = e100_watchdog; 2828 nic->watchdog.function = e100_watchdog;
2836 nic->watchdog.data = (unsigned long)nic; 2829 nic->watchdog.data = (unsigned long)nic;
2837 init_timer(&nic->blink_timer);
2838 nic->blink_timer.function = e100_blink_led;
2839 nic->blink_timer.data = (unsigned long)nic;
2840 2830
2841 INIT_WORK(&nic->tx_timeout_task, e100_tx_timeout_task); 2831 INIT_WORK(&nic->tx_timeout_task, e100_tx_timeout_task);
2842 2832
diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h
index b1b23ddd4eed..8676899120c3 100644
--- a/drivers/net/e1000/e1000.h
+++ b/drivers/net/e1000/e1000.h
@@ -238,9 +238,6 @@ struct e1000_adapter {
238 struct work_struct reset_task; 238 struct work_struct reset_task;
239 u8 fc_autoneg; 239 u8 fc_autoneg;
240 240
241 struct timer_list blink_timer;
242 unsigned long led_status;
243
244 /* TX */ 241 /* TX */
245 struct e1000_tx_ring *tx_ring; /* One per active queue */ 242 struct e1000_tx_ring *tx_ring; /* One per active queue */
246 unsigned int restart_queue; 243 unsigned int restart_queue;
diff --git a/drivers/net/e1000/e1000_ethtool.c b/drivers/net/e1000/e1000_ethtool.c
index 4fa727ce8374..ec0fa426cce2 100644
--- a/drivers/net/e1000/e1000_ethtool.c
+++ b/drivers/net/e1000/e1000_ethtool.c
@@ -1755,46 +1755,28 @@ static int e1000_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
1755 return 0; 1755 return 0;
1756} 1756}
1757 1757
1758/* toggle LED 4 times per second = 2 "blinks" per second */ 1758static int e1000_set_phys_id(struct net_device *netdev,
1759#define E1000_ID_INTERVAL (HZ/4) 1759 enum ethtool_phys_id_state state)
1760
1761/* bit defines for adapter->led_status */
1762#define E1000_LED_ON 0
1763
1764static void e1000_led_blink_callback(unsigned long data)
1765{ 1760{
1766 struct e1000_adapter *adapter = (struct e1000_adapter *) data; 1761 struct e1000_adapter *adapter = netdev_priv(netdev);
1767 struct e1000_hw *hw = &adapter->hw; 1762 struct e1000_hw *hw = &adapter->hw;
1768 1763
1769 if (test_and_change_bit(E1000_LED_ON, &adapter->led_status)) 1764 switch (state) {
1770 e1000_led_off(hw); 1765 case ETHTOOL_ID_ACTIVE:
1771 else 1766 e1000_setup_led(hw);
1772 e1000_led_on(hw); 1767 return 2;
1773
1774 mod_timer(&adapter->blink_timer, jiffies + E1000_ID_INTERVAL);
1775}
1776 1768
1777static int e1000_phys_id(struct net_device *netdev, u32 data) 1769 case ETHTOOL_ID_ON:
1778{ 1770 e1000_led_on(hw);
1779 struct e1000_adapter *adapter = netdev_priv(netdev); 1771 break;
1780 struct e1000_hw *hw = &adapter->hw;
1781 1772
1782 if (!data) 1773 case ETHTOOL_ID_OFF:
1783 data = INT_MAX; 1774 e1000_led_off(hw);
1775 break;
1784 1776
1785 if (!adapter->blink_timer.function) { 1777 case ETHTOOL_ID_INACTIVE:
1786 init_timer(&adapter->blink_timer); 1778 e1000_cleanup_led(hw);
1787 adapter->blink_timer.function = e1000_led_blink_callback;
1788 adapter->blink_timer.data = (unsigned long)adapter;
1789 } 1779 }
1790 e1000_setup_led(hw);
1791 mod_timer(&adapter->blink_timer, jiffies);
1792 msleep_interruptible(data * 1000);
1793 del_timer_sync(&adapter->blink_timer);
1794
1795 e1000_led_off(hw);
1796 clear_bit(E1000_LED_ON, &adapter->led_status);
1797 e1000_cleanup_led(hw);
1798 1780
1799 return 0; 1781 return 0;
1800} 1782}
@@ -1931,7 +1913,7 @@ static const struct ethtool_ops e1000_ethtool_ops = {
1931 .set_tso = e1000_set_tso, 1913 .set_tso = e1000_set_tso,
1932 .self_test = e1000_diag_test, 1914 .self_test = e1000_diag_test,
1933 .get_strings = e1000_get_strings, 1915 .get_strings = e1000_get_strings,
1934 .phys_id = e1000_phys_id, 1916 .set_phys_id = e1000_set_phys_id,
1935 .get_ethtool_stats = e1000_get_ethtool_stats, 1917 .get_ethtool_stats = e1000_get_ethtool_stats,
1936 .get_sset_count = e1000_get_sset_count, 1918 .get_sset_count = e1000_get_sset_count,
1937 .get_coalesce = e1000_get_coalesce, 1919 .get_coalesce = e1000_get_coalesce,
diff --git a/drivers/net/igb/igb_ethtool.c b/drivers/net/igb/igb_ethtool.c
index 6e29634b1fb5..fdc895e5a3f8 100644
--- a/drivers/net/igb/igb_ethtool.c
+++ b/drivers/net/igb/igb_ethtool.c
@@ -1964,27 +1964,28 @@ static int igb_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
1964/* bit defines for adapter->led_status */ 1964/* bit defines for adapter->led_status */
1965#define IGB_LED_ON 0 1965#define IGB_LED_ON 0
1966 1966
1967static int igb_phys_id(struct net_device *netdev, u32 data) 1967static int igb_set_phys_id(struct net_device *netdev,
1968 enum ethtool_phys_id_state state)
1968{ 1969{
1969 struct igb_adapter *adapter = netdev_priv(netdev); 1970 struct igb_adapter *adapter = netdev_priv(netdev);
1970 struct e1000_hw *hw = &adapter->hw; 1971 struct e1000_hw *hw = &adapter->hw;
1971 unsigned long timeout;
1972 1972
1973 timeout = data * 1000; 1973 switch (state) {
1974 1974 case ETHTOOL_ID_ACTIVE:
1975 /* 1975 igb_blink_led(hw);
1976 * msleep_interruptable only accepts unsigned int so we are limited 1976 return 2;
1977 * in how long a duration we can wait 1977 case ETHTOOL_ID_ON:
1978 */ 1978 igb_blink_led(hw);
1979 if (!timeout || timeout > UINT_MAX) 1979 break;
1980 timeout = UINT_MAX; 1980 case ETHTOOL_ID_OFF:
1981 1981 igb_led_off(hw);
1982 igb_blink_led(hw); 1982 break;
1983 msleep_interruptible(timeout); 1983 case ETHTOOL_ID_INACTIVE:
1984 1984 igb_led_off(hw);
1985 igb_led_off(hw); 1985 clear_bit(IGB_LED_ON, &adapter->led_status);
1986 clear_bit(IGB_LED_ON, &adapter->led_status); 1986 igb_cleanup_led(hw);
1987 igb_cleanup_led(hw); 1987 break;
1988 }
1988 1989
1989 return 0; 1990 return 0;
1990} 1991}
@@ -2216,7 +2217,7 @@ static const struct ethtool_ops igb_ethtool_ops = {
2216 .set_tso = igb_set_tso, 2217 .set_tso = igb_set_tso,
2217 .self_test = igb_diag_test, 2218 .self_test = igb_diag_test,
2218 .get_strings = igb_get_strings, 2219 .get_strings = igb_get_strings,
2219 .phys_id = igb_phys_id, 2220 .set_phys_id = igb_set_phys_id,
2220 .get_sset_count = igb_get_sset_count, 2221 .get_sset_count = igb_get_sset_count,
2221 .get_ethtool_stats = igb_get_ethtool_stats, 2222 .get_ethtool_stats = igb_get_ethtool_stats,
2222 .get_coalesce = igb_get_coalesce, 2223 .get_coalesce = igb_get_coalesce,
diff --git a/drivers/net/ixgbe/ixgbe_ethtool.c b/drivers/net/ixgbe/ixgbe_ethtool.c
index f2efa3245352..1fdd075afe79 100644
--- a/drivers/net/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ixgbe/ixgbe_ethtool.c
@@ -102,6 +102,10 @@ static struct ixgbe_stats ixgbe_gstrings_stats[] = {
102 {"alloc_rx_page_failed", IXGBE_STAT(alloc_rx_page_failed)}, 102 {"alloc_rx_page_failed", IXGBE_STAT(alloc_rx_page_failed)},
103 {"alloc_rx_buff_failed", IXGBE_STAT(alloc_rx_buff_failed)}, 103 {"alloc_rx_buff_failed", IXGBE_STAT(alloc_rx_buff_failed)},
104 {"rx_no_dma_resources", IXGBE_STAT(hw_rx_no_dma_resources)}, 104 {"rx_no_dma_resources", IXGBE_STAT(hw_rx_no_dma_resources)},
105 {"os2bmc_rx_by_bmc", IXGBE_STAT(stats.o2bgptc)},
106 {"os2bmc_tx_by_bmc", IXGBE_STAT(stats.b2ospc)},
107 {"os2bmc_tx_by_host", IXGBE_STAT(stats.o2bspc)},
108 {"os2bmc_rx_by_host", IXGBE_STAT(stats.b2ogprc)},
105#ifdef IXGBE_FCOE 109#ifdef IXGBE_FCOE
106 {"fcoe_bad_fccrc", IXGBE_STAT(stats.fccrc)}, 110 {"fcoe_bad_fccrc", IXGBE_STAT(stats.fccrc)},
107 {"rx_fcoe_dropped", IXGBE_STAT(stats.fcoerpdc)}, 111 {"rx_fcoe_dropped", IXGBE_STAT(stats.fcoerpdc)},
@@ -2253,8 +2257,13 @@ static int ixgbe_set_flags(struct net_device *netdev, u32 data)
2253 need_reset = (data & ETH_FLAG_RXVLAN) != 2257 need_reset = (data & ETH_FLAG_RXVLAN) !=
2254 (netdev->features & NETIF_F_HW_VLAN_RX); 2258 (netdev->features & NETIF_F_HW_VLAN_RX);
2255 2259
2260 if ((data & ETH_FLAG_RXHASH) &&
2261 !(adapter->flags & IXGBE_FLAG_RSS_ENABLED))
2262 return -EOPNOTSUPP;
2263
2256 rc = ethtool_op_set_flags(netdev, data, ETH_FLAG_LRO | ETH_FLAG_NTUPLE | 2264 rc = ethtool_op_set_flags(netdev, data, ETH_FLAG_LRO | ETH_FLAG_NTUPLE |
2257 ETH_FLAG_RXVLAN | ETH_FLAG_TXVLAN); 2265 ETH_FLAG_RXVLAN | ETH_FLAG_TXVLAN |
2266 ETH_FLAG_RXHASH);
2258 if (rc) 2267 if (rc)
2259 return rc; 2268 return rc;
2260 2269
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index eebb1921c660..a3e384bc50fe 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -1063,8 +1063,14 @@ static int __ixgbe_notify_dca(struct device *dev, void *data)
1063 1063
1064 return 0; 1064 return 0;
1065} 1065}
1066
1067#endif /* CONFIG_IXGBE_DCA */ 1066#endif /* CONFIG_IXGBE_DCA */
1067
1068static inline void ixgbe_rx_hash(union ixgbe_adv_rx_desc *rx_desc,
1069 struct sk_buff *skb)
1070{
1071 skb->rxhash = le32_to_cpu(rx_desc->wb.lower.hi_dword.rss);
1072}
1073
1068/** 1074/**
1069 * ixgbe_receive_skb - Send a completed packet up the stack 1075 * ixgbe_receive_skb - Send a completed packet up the stack
1070 * @adapter: board private structure 1076 * @adapter: board private structure
@@ -1456,6 +1462,8 @@ static void ixgbe_clean_rx_irq(struct ixgbe_q_vector *q_vector,
1456 } 1462 }
1457 1463
1458 ixgbe_rx_checksum(adapter, rx_desc, skb); 1464 ixgbe_rx_checksum(adapter, rx_desc, skb);
1465 if (adapter->netdev->features & NETIF_F_RXHASH)
1466 ixgbe_rx_hash(rx_desc, skb);
1459 1467
1460 /* probably a little skewed due to removing CRC */ 1468 /* probably a little skewed due to removing CRC */
1461 total_rx_bytes += skb->len; 1469 total_rx_bytes += skb->len;
@@ -5904,8 +5912,13 @@ void ixgbe_update_stats(struct ixgbe_adapter *adapter)
5904 hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); 5912 hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH);
5905 hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH); 5913 hwstats->tor += IXGBE_READ_REG(hw, IXGBE_TORH);
5906 break; 5914 break;
5907 case ixgbe_mac_82599EB:
5908 case ixgbe_mac_X540: 5915 case ixgbe_mac_X540:
5916 /* OS2BMC stats are X540 only*/
5917 hwstats->o2bgptc += IXGBE_READ_REG(hw, IXGBE_O2BGPTC);
5918 hwstats->o2bspc += IXGBE_READ_REG(hw, IXGBE_O2BSPC);
5919 hwstats->b2ospc += IXGBE_READ_REG(hw, IXGBE_B2OSPC);
5920 hwstats->b2ogprc += IXGBE_READ_REG(hw, IXGBE_B2OGPRC);
5921 case ixgbe_mac_82599EB:
5909 hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCL); 5922 hwstats->gorc += IXGBE_READ_REG(hw, IXGBE_GORCL);
5910 IXGBE_READ_REG(hw, IXGBE_GORCH); /* to clear */ 5923 IXGBE_READ_REG(hw, IXGBE_GORCH); /* to clear */
5911 hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCL); 5924 hwstats->gotc += IXGBE_READ_REG(hw, IXGBE_GOTCL);
@@ -7361,6 +7374,7 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
7361 netdev->features |= NETIF_F_TSO; 7374 netdev->features |= NETIF_F_TSO;
7362 netdev->features |= NETIF_F_TSO6; 7375 netdev->features |= NETIF_F_TSO6;
7363 netdev->features |= NETIF_F_GRO; 7376 netdev->features |= NETIF_F_GRO;
7377 netdev->features |= NETIF_F_RXHASH;
7364 7378
7365 switch (adapter->hw.mac.type) { 7379 switch (adapter->hw.mac.type) {
7366 case ixgbe_mac_82599EB: 7380 case ixgbe_mac_82599EB:
@@ -7441,6 +7455,9 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
7441 if (err) 7455 if (err)
7442 goto err_sw_init; 7456 goto err_sw_init;
7443 7457
7458 if (!(adapter->flags & IXGBE_FLAG_RSS_ENABLED))
7459 netdev->features &= ~NETIF_F_RXHASH;
7460
7444 switch (pdev->device) { 7461 switch (pdev->device) {
7445 case IXGBE_DEV_ID_82599_SFP: 7462 case IXGBE_DEV_ID_82599_SFP:
7446 /* Only this subdevice supports WOL */ 7463 /* Only this subdevice supports WOL */
diff --git a/drivers/net/ixgbe/ixgbe_type.h b/drivers/net/ixgbe/ixgbe_type.h
index b1d523ca4d81..70e6870be01f 100644
--- a/drivers/net/ixgbe/ixgbe_type.h
+++ b/drivers/net/ixgbe/ixgbe_type.h
@@ -672,6 +672,10 @@
672#define IXGBE_FCOEDWRC 0x0242C /* Number of FCoE DWords Received */ 672#define IXGBE_FCOEDWRC 0x0242C /* Number of FCoE DWords Received */
673#define IXGBE_FCOEPTC 0x08784 /* Number of FCoE Packets Transmitted */ 673#define IXGBE_FCOEPTC 0x08784 /* Number of FCoE Packets Transmitted */
674#define IXGBE_FCOEDWTC 0x08788 /* Number of FCoE DWords Transmitted */ 674#define IXGBE_FCOEDWTC 0x08788 /* Number of FCoE DWords Transmitted */
675#define IXGBE_O2BGPTC 0x041C4
676#define IXGBE_O2BSPC 0x087B0
677#define IXGBE_B2OSPC 0x041C0
678#define IXGBE_B2OGPRC 0x02F90
675#define IXGBE_PCRC8ECL 0x0E810 679#define IXGBE_PCRC8ECL 0x0E810
676#define IXGBE_PCRC8ECH 0x0E811 680#define IXGBE_PCRC8ECH 0x0E811
677#define IXGBE_PCRC8ECH_MASK 0x1F 681#define IXGBE_PCRC8ECH_MASK 0x1F
@@ -2554,6 +2558,10 @@ struct ixgbe_hw_stats {
2554 u64 fcoeptc; 2558 u64 fcoeptc;
2555 u64 fcoedwrc; 2559 u64 fcoedwrc;
2556 u64 fcoedwtc; 2560 u64 fcoedwtc;
2561 u64 b2ospc;
2562 u64 b2ogprc;
2563 u64 o2bgptc;
2564 u64 o2bspc;
2557}; 2565};
2558 2566
2559/* forward declaration */ 2567/* forward declaration */