aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ixgbe/ixgbe_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_main.c')
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index eebb1921c66..56cc9a10c71 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;
@@ -7361,6 +7369,7 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
7361 netdev->features |= NETIF_F_TSO; 7369 netdev->features |= NETIF_F_TSO;
7362 netdev->features |= NETIF_F_TSO6; 7370 netdev->features |= NETIF_F_TSO6;
7363 netdev->features |= NETIF_F_GRO; 7371 netdev->features |= NETIF_F_GRO;
7372 netdev->features |= NETIF_F_RXHASH;
7364 7373
7365 switch (adapter->hw.mac.type) { 7374 switch (adapter->hw.mac.type) {
7366 case ixgbe_mac_82599EB: 7375 case ixgbe_mac_82599EB:
@@ -7441,6 +7450,9 @@ static int __devinit ixgbe_probe(struct pci_dev *pdev,
7441 if (err) 7450 if (err)
7442 goto err_sw_init; 7451 goto err_sw_init;
7443 7452
7453 if (!(adapter->flags & IXGBE_FLAG_RSS_ENABLED))
7454 netdev->features &= ~NETIF_F_RXHASH;
7455
7444 switch (pdev->device) { 7456 switch (pdev->device) {
7445 case IXGBE_DEV_ID_82599_SFP: 7457 case IXGBE_DEV_ID_82599_SFP:
7446 /* Only this subdevice supports WOL */ 7458 /* Only this subdevice supports WOL */