vmxnet3: better RSS support
authorStephen Hemminger <stephen@networkplumber.org>
Tue, 15 Jan 2013 07:28:35 +0000 (07:28 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Jan 2013 19:40:53 +0000 (14:40 -0500)
The VMXNET3 device provides RSS hash value for received packets,
but it is not being used.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vmxnet3/vmxnet3_drv.c

index 9777dc6..b1c90f8 100644 (file)
@@ -1226,6 +1226,11 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,
                        pci_unmap_single(adapter->pdev, rbi->dma_addr, rbi->len,
                                         PCI_DMA_FROMDEVICE);
 
+#ifdef VMXNET3_RSS
+                       if (rcd->rssType != VMXNET3_RCD_RSS_TYPE_NONE &&
+                           (adapter->netdev->features & NETIF_F_RXHASH))
+                               ctx->skb->rxhash = le32_to_cpu(rcd->rssHash);
+#endif
                        skb_put(ctx->skb, rcd->len);
 
                        /* Immediate refill */
@@ -3022,6 +3027,8 @@ vmxnet3_probe_device(struct pci_dev *pdev,
        if (adapter->num_rx_queues > 1 &&
            adapter->intr.type == VMXNET3_IT_MSIX) {
                adapter->rss = true;
+               netdev->hw_features |= NETIF_F_RXHASH;
+               netdev->features |= NETIF_F_RXHASH;
                dev_dbg(&pdev->dev, "RSS is enabled.\n");
        } else {
                adapter->rss = false;