OSDN Git Service

hv_netvsc: make recording RSS hash depend on feature flag
authorStephen Hemminger <sthemmin@microsoft.com>
Sat, 23 Nov 2019 23:50:17 +0000 (15:50 -0800)
committerJakub Kicinski <jakub.kicinski@netronome.com>
Sun, 24 Nov 2019 02:42:41 +0000 (18:42 -0800)
The recording of RSS hash should be controlled by NETIF_F_RXHASH.

Fixes: 1fac7ca4e63b ("hv_netvsc: record hardware hash in skb")
Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: Michael Kelley <mikelley@microsoft.com>
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
drivers/net/hyperv/hyperv_net.h
drivers/net/hyperv/netvsc_drv.c
drivers/net/hyperv/rndis_filter.c

index 034dbab..250bd90 100644 (file)
@@ -823,7 +823,8 @@ struct nvsp_message {
 
 #define NETVSC_SUPPORTED_HW_FEATURES (NETIF_F_RXCSUM | NETIF_F_IP_CSUM | \
                                      NETIF_F_TSO | NETIF_F_IPV6_CSUM | \
-                                     NETIF_F_TSO6 | NETIF_F_LRO | NETIF_F_SG)
+                                     NETIF_F_TSO6 | NETIF_F_LRO | \
+                                     NETIF_F_SG | NETIF_F_RXHASH)
 
 #define VRSS_SEND_TAB_SIZE 16  /* must be power of 2 */
 #define VRSS_CHANNEL_MAX 64
index 5fa5c49..868e22e 100644 (file)
@@ -803,7 +803,7 @@ static struct sk_buff *netvsc_alloc_recv_skb(struct net_device *net,
                        skb->ip_summed = CHECKSUM_UNNECESSARY;
        }
 
-       if (hash_info)
+       if (hash_info && (net->features & NETIF_F_RXHASH))
                skb_set_hash(skb, *hash_info, PKT_HASH_TYPE_L4);
 
        if (vlan) {
index c061783..206b4e7 100644 (file)
@@ -1214,6 +1214,7 @@ static int rndis_netdev_set_hwcaps(struct rndis_device *rndis_device,
        /* Compute tx offload settings based on hw capabilities */
        net->hw_features |= NETIF_F_RXCSUM;
        net->hw_features |= NETIF_F_SG;
+       net->hw_features |= NETIF_F_RXHASH;
 
        if ((hwcaps.csum.ip4_txcsum & NDIS_TXCSUM_ALL_TCP4) == NDIS_TXCSUM_ALL_TCP4) {
                /* Can checksum TCP */