drivers: net: xgene: fix: RSS for non-TCP/UDP
authorIyappan Subramanian <isubramanian@apm.com>
Fri, 2 Dec 2016 00:41:41 +0000 (16:41 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 3 Dec 2016 20:46:50 +0000 (15:46 -0500)
This patch fixes RSS feature, for non-TCP/UDP packets.

Signed-off-by: Khuong Dinh <kdinh@apm.com>
Signed-off-by: Iyappan Subramanian <isubramanian@apm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/apm/xgene/xgene_enet_cle.c
drivers/net/ethernet/apm/xgene/xgene_enet_cle.h

index caa55bd678256ef5b80a20c62ef2318ae3476e76..1dc6c20cd82b798d1d10597abe5feec0827dad97 100644 (file)
@@ -485,11 +485,11 @@ static int xgene_enet_cle_init(struct xgene_enet_pdata *pdata)
                                },
                                {
                                        .valid = 0,
-                                       .next_packet_pointer = 260,
+                                       .next_packet_pointer = 26,
                                        .jump_bw = JMP_FW,
                                        .jump_rel = JMP_ABS,
                                        .operation = EQT,
-                                       .next_node = LAST_NODE,
+                                       .next_node = RSS_IPV4_OTHERS_NODE,
                                        .next_branch = 0,
                                        .data = 0x0,
                                        .mask = 0xffff
@@ -666,6 +666,92 @@ static int xgene_enet_cle_init(struct xgene_enet_pdata *pdata)
                                }
                        }
                },
+               {
+                       /* RSS_IPV4_OTHERS_NODE */
+                       .node_type = EWDN,
+                       .last_node = 0,
+                       .hdr_len_store = 1,
+                       .hdr_extn = NO_BYTE,
+                       .byte_store = NO_BYTE,
+                       .search_byte_store = BOTH_BYTES,
+                       .result_pointer = DB_RES_DROP,
+                       .num_branches = 6,
+                       .branch = {
+                               {
+                                       /* SRC IPV4 B01 */
+                                       .valid = 0,
+                                       .next_packet_pointer = 28,
+                                       .jump_bw = JMP_FW,
+                                       .jump_rel = JMP_ABS,
+                                       .operation = EQT,
+                                       .next_node = RSS_IPV4_OTHERS_NODE,
+                                       .next_branch = 1,
+                                       .data = 0x0,
+                                       .mask = 0xffff
+                               },
+                               {
+                                       /* SRC IPV4 B23 */
+                                       .valid = 0,
+                                       .next_packet_pointer = 30,
+                                       .jump_bw = JMP_FW,
+                                       .jump_rel = JMP_ABS,
+                                       .operation = EQT,
+                                       .next_node = RSS_IPV4_OTHERS_NODE,
+                                       .next_branch = 2,
+                                       .data = 0x0,
+                                       .mask = 0xffff
+                               },
+                               {
+                                       /* DST IPV4 B01 */
+                                       .valid = 0,
+                                       .next_packet_pointer = 32,
+                                       .jump_bw = JMP_FW,
+                                       .jump_rel = JMP_ABS,
+                                       .operation = EQT,
+                                       .next_node = RSS_IPV4_OTHERS_NODE,
+                                       .next_branch = 3,
+                                       .data = 0x0,
+                                       .mask = 0xffff
+                               },
+                               {
+                                       /* DST IPV4 B23 */
+                                       .valid = 0,
+                                       .next_packet_pointer = 34,
+                                       .jump_bw = JMP_FW,
+                                       .jump_rel = JMP_ABS,
+                                       .operation = EQT,
+                                       .next_node = RSS_IPV4_OTHERS_NODE,
+                                       .next_branch = 4,
+                                       .data = 0x0,
+                                       .mask = 0xffff
+                               },
+                               {
+                                       /* TCP SRC Port */
+                                       .valid = 0,
+                                       .next_packet_pointer = 36,
+                                       .jump_bw = JMP_FW,
+                                       .jump_rel = JMP_ABS,
+                                       .operation = EQT,
+                                       .next_node = RSS_IPV4_OTHERS_NODE,
+                                       .next_branch = 5,
+                                       .data = 0x0,
+                                       .mask = 0xffff
+                               },
+                               {
+                                       /* TCP DST Port */
+                                       .valid = 0,
+                                       .next_packet_pointer = 260,
+                                       .jump_bw = JMP_FW,
+                                       .jump_rel = JMP_ABS,
+                                       .operation = EQT,
+                                       .next_node = LAST_NODE,
+                                       .next_branch = 0,
+                                       .data = 0x0,
+                                       .mask = 0xffff
+                               }
+                       }
+               },
+
                {
                        /* LAST NODE */
                        .node_type = EWDN,
index 903be0c25ff658b9514d131fd869bc4946c39f2b..290d5d159ec26b90e608c7a196dff13d657f8639 100644 (file)
@@ -106,6 +106,7 @@ enum xgene_cle_ptree_nodes {
        PKT_PROT_NODE,
        RSS_IPV4_TCP_NODE,
        RSS_IPV4_UDP_NODE,
+       RSS_IPV4_OTHERS_NODE,
        LAST_NODE,
        MAX_NODES
 };