net/octeontx2: move PF-func location for egress
Checks
Commit Message
From: Liron Himi <lironh@marvell.com>
pf-func is 16bit but the current reserved location
used in tx action is 8bits. moved it to bits 63-48.
Fixes: 32e6aaa97 ("net/octeontx2: support flow parse actions")
Cc: stable@dpdk.org
Signed-off-by: Liron Himi <lironh@marvell.com>
Reviewed-by: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
---
drivers/net/octeontx2/otx2_flow_parse.c | 5 ++++-
drivers/net/octeontx2/otx2_flow_utils.c | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
Comments
On Mon, Jan 18, 2021 at 4:20 PM <lironh@marvell.com> wrote:
>
> From: Liron Himi <lironh@marvell.com>
>
> pf-func is 16bit but the current reserved location
> used in tx action is 8bits. moved it to bits 63-48.
>
> Fixes: 32e6aaa97 ("net/octeontx2: support flow parse actions")
> Cc: stable@dpdk.org
>
> Signed-off-by: Liron Himi <lironh@marvell.com>
> Reviewed-by: Kiran Kumar Kokkilagadda <kirankumark@marvell.com>
Applied to dpdk-next-net-mrvl/for-main. Thanks
> ---
> drivers/net/octeontx2/otx2_flow_parse.c | 5 ++++-
> drivers/net/octeontx2/otx2_flow_utils.c | 2 +-
> 2 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/octeontx2/otx2_flow_parse.c b/drivers/net/octeontx2/otx2_flow_parse.c
> index 476195d63..e9b940f6c 100644
> --- a/drivers/net/octeontx2/otx2_flow_parse.c
> +++ b/drivers/net/octeontx2/otx2_flow_parse.c
> @@ -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;
>
> diff --git a/drivers/net/octeontx2/otx2_flow_utils.c b/drivers/net/octeontx2/otx2_flow_utils.c
> index 9a0a5f9fb..7ed86ba74 100644
> --- a/drivers/net/octeontx2/otx2_flow_utils.c
> +++ b/drivers/net/octeontx2/otx2_flow_utils.c
> @@ -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);
> --
> 2.28.0
>
@@ -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;
@@ -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);