Skip to content

Commit b3973bb

Browse files
Ronak Doshidavem330
authored andcommitted
vmxnet3: set correct hash type based on rss information
As vmxnet3 supports IP/TCP/UDP RSS, this patch sets appropriate hash type based on the type of RSS performed. Signed-off-by: Ronak Doshi <[email protected]> Acked-by: Guolin Yang <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 79d124b commit b3973bb

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

drivers/net/vmxnet3/vmxnet3_defs.h

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -344,13 +344,15 @@ struct Vmxnet3_RxCompDescExt {
344344
#define VMXNET3_TXD_EOP_SIZE 1
345345

346346
/* value of RxCompDesc.rssType */
347-
enum {
348-
VMXNET3_RCD_RSS_TYPE_NONE = 0,
349-
VMXNET3_RCD_RSS_TYPE_IPV4 = 1,
350-
VMXNET3_RCD_RSS_TYPE_TCPIPV4 = 2,
351-
VMXNET3_RCD_RSS_TYPE_IPV6 = 3,
352-
VMXNET3_RCD_RSS_TYPE_TCPIPV6 = 4,
353-
};
347+
#define VMXNET3_RCD_RSS_TYPE_NONE 0
348+
#define VMXNET3_RCD_RSS_TYPE_IPV4 1
349+
#define VMXNET3_RCD_RSS_TYPE_TCPIPV4 2
350+
#define VMXNET3_RCD_RSS_TYPE_IPV6 3
351+
#define VMXNET3_RCD_RSS_TYPE_TCPIPV6 4
352+
#define VMXNET3_RCD_RSS_TYPE_UDPIPV4 5
353+
#define VMXNET3_RCD_RSS_TYPE_UDPIPV6 6
354+
#define VMXNET3_RCD_RSS_TYPE_ESPIPV4 7
355+
#define VMXNET3_RCD_RSS_TYPE_ESPIPV6 8
354356

355357

356358
/* a union for accessing all cmd/completion descriptors */

drivers/net/vmxnet3/vmxnet3_drv.c

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1478,10 +1478,28 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq,
14781478

14791479
#ifdef VMXNET3_RSS
14801480
if (rcd->rssType != VMXNET3_RCD_RSS_TYPE_NONE &&
1481-
(adapter->netdev->features & NETIF_F_RXHASH))
1481+
(adapter->netdev->features & NETIF_F_RXHASH)) {
1482+
enum pkt_hash_types hash_type;
1483+
1484+
switch (rcd->rssType) {
1485+
case VMXNET3_RCD_RSS_TYPE_IPV4:
1486+
case VMXNET3_RCD_RSS_TYPE_IPV6:
1487+
hash_type = PKT_HASH_TYPE_L3;
1488+
break;
1489+
case VMXNET3_RCD_RSS_TYPE_TCPIPV4:
1490+
case VMXNET3_RCD_RSS_TYPE_TCPIPV6:
1491+
case VMXNET3_RCD_RSS_TYPE_UDPIPV4:
1492+
case VMXNET3_RCD_RSS_TYPE_UDPIPV6:
1493+
hash_type = PKT_HASH_TYPE_L4;
1494+
break;
1495+
default:
1496+
hash_type = PKT_HASH_TYPE_L3;
1497+
break;
1498+
}
14821499
skb_set_hash(ctx->skb,
14831500
le32_to_cpu(rcd->rssHash),
1484-
PKT_HASH_TYPE_L3);
1501+
hash_type);
1502+
}
14851503
#endif
14861504
skb_put(ctx->skb, rcd->len);
14871505

0 commit comments

Comments
 (0)