net/octeontx2: fix PF flow action for Tx
authorLiron Himi <lironh@marvell.com>
Mon, 18 Jan 2021 10:50:31 +0000 (12:50 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 29 Jan 2021 17:16:08 +0000 (18:16 +0100)
pf-func is 16bit but the current reserved location
used in tx action is 8bits. Moved it to bits 63-48.

Fixes: 32e6aaa97c40 ("net/octeontx2: support flow parse actions")
Cc: stable@dpdk.org
Signed-off-by: Liron Himi <lironh@marvell.com>
Reviewed-by: Kiran Kumar K <kirankumark@marvell.com>
drivers/net/octeontx2/otx2_flow_parse.c
drivers/net/octeontx2/otx2_flow_utils.c

index 476195d..e9b940f 100644 (file)
@@ -1090,7 +1090,10 @@ otx2_flow_parse_actions(struct rte_eth_dev *dev,
 
 set_pf_func:
        /* Ideally AF must ensure that correct pf_func is set */
-       flow->npc_action |= (uint64_t)pf_func << 4;
+       if (attr->egress)
+               flow->npc_action |= (uint64_t)pf_func << 48;
+       else
+               flow->npc_action |= (uint64_t)pf_func << 4;
 
        return 0;
 
index 9a0a5f9..7ed86ba 100644 (file)
@@ -944,7 +944,7 @@ otx2_flow_mcam_alloc_and_write(struct rte_flow *flow, struct otx2_mbox *mbox,
                req->entry_data.kw[0] |= flow_info->channel;
                req->entry_data.kw_mask[0] |=  (BIT_ULL(12) - 1);
        } else {
-               uint16_t pf_func = (flow->npc_action >> 4) & 0xffff;
+               uint16_t pf_func = (flow->npc_action >> 48) & 0xffff;
 
                pf_func = htons(pf_func);
                req->entry_data.kw[0] |= ((uint64_t)pf_func << 32);