octeontx2-af: Add support for RSS hashing based on Transport protocol field
authorGeorge Cherian <george.cherian@marvell.com>
Fri, 20 Nov 2020 09:39:06 +0000 (15:09 +0530)
committerJakub Kicinski <kuba@kernel.org>
Sun, 22 Nov 2020 00:05:22 +0000 (16:05 -0800)
Add support to choose RSS flow key algorithm with IPv4 transport protocol
field included in hashing input data. This will be enabled by default.
There-by enabling 3/5 tuple hash

Signed-off-by: Sunil Kovvuri Goutham <sgoutham@marvell.com>
Signed-off-by: George Cherian <george.cherian@marvell.com>
Link: https://lore.kernel.org/r/20201120093906.2873616-1-george.cherian@marvell.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/marvell/octeontx2/af/mbox.h
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c

index 221fe5b..f919283 100644 (file)
@@ -716,6 +716,7 @@ struct nix_rss_flowkey_cfg {
 #define NIX_FLOW_KEY_TYPE_INNR_SCTP     BIT(16)
 #define NIX_FLOW_KEY_TYPE_INNR_ETH_DMAC BIT(17)
 #define NIX_FLOW_KEY_TYPE_VLAN         BIT(20)
+#define NIX_FLOW_KEY_TYPE_IPV4_PROTO   BIT(21)
        u32     flowkey_cfg; /* Flowkey types selected */
        u8      group;       /* RSS context or group */
 };
index 739b370..a8dfbb6 100644 (file)
@@ -2626,6 +2626,13 @@ static int set_flowkey_fields(struct nix_rx_flowkey_alg *alg, u32 flow_cfg)
                        /* This should be set to 1, when SEL_CHAN is set */
                        field->bytesm1 = 1;
                        break;
+               case NIX_FLOW_KEY_TYPE_IPV4_PROTO:
+                       field->lid = NPC_LID_LC;
+                       field->hdr_offset = 9; /* offset */
+                       field->bytesm1 = 0; /* 1 byte */
+                       field->ltype_match = NPC_LT_LC_IP;
+                       field->ltype_mask = 0xF;
+                       break;
                case NIX_FLOW_KEY_TYPE_IPV4:
                case NIX_FLOW_KEY_TYPE_INNR_IPV4:
                        field->lid = NPC_LID_LC;
index 68fb4e4..73fb94d 100644 (file)
@@ -359,7 +359,8 @@ int otx2_rss_init(struct otx2_nic *pfvf)
        rss->flowkey_cfg = rss->enable ? rss->flowkey_cfg :
                           NIX_FLOW_KEY_TYPE_IPV4 | NIX_FLOW_KEY_TYPE_IPV6 |
                           NIX_FLOW_KEY_TYPE_TCP | NIX_FLOW_KEY_TYPE_UDP |
-                          NIX_FLOW_KEY_TYPE_SCTP | NIX_FLOW_KEY_TYPE_VLAN;
+                          NIX_FLOW_KEY_TYPE_SCTP | NIX_FLOW_KEY_TYPE_VLAN |
+                          NIX_FLOW_KEY_TYPE_IPV4_PROTO;
 
        ret = otx2_set_flowkey_cfg(pfvf);
        if (ret)