From 0d14c49b282196f48d63da0e34d1a20cdfc6e3a8 Mon Sep 17 00:00:00 2001 From: Yahui Cao Date: Tue, 21 Jan 2020 10:25:59 +0800 Subject: [PATCH] net/ice: fix flow director passthru The original PASSTHRU implementation is forwarding to queue 0. The corrected implementation is forwarding to the next stage filter. Fixes: f5cafa961fae ("net/ice: add flow director create and destroy") Cc: stable@dpdk.org Signed-off-by: Yahui Cao Acked-by: Qi Zhang --- drivers/net/ice/base/ice_fdir.c | 9 ++++++++- drivers/net/ice/ice_fdir_filter.c | 3 +-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/net/ice/base/ice_fdir.c b/drivers/net/ice/base/ice_fdir.c index 56c1c1c845..ba002586b6 100644 --- a/drivers/net/ice/base/ice_fdir.c +++ b/drivers/net/ice/base/ice_fdir.c @@ -401,6 +401,10 @@ ice_fdir_get_prgm_desc(struct ice_hw *hw, struct ice_fdir_fltr *input, if (input->dest_ctl == ICE_FLTR_PRGM_DESC_DEST_DROP_PKT) { fdir_fltr_ctx.drop = ICE_FXD_FLTR_QW0_DROP_YES; fdir_fltr_ctx.qindex = 0; + } else if (input->dest_ctl == + ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER) { + fdir_fltr_ctx.drop = ICE_FXD_FLTR_QW0_DROP_NO; + fdir_fltr_ctx.qindex = 0; } else { if (input->dest_ctl == ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_QGROUP) @@ -412,7 +416,10 @@ ice_fdir_get_prgm_desc(struct ice_hw *hw, struct ice_fdir_fltr *input, fdir_fltr_ctx.cnt_index = input->cnt_index; fdir_fltr_ctx.fd_vsi = ice_get_hw_vsi_num(hw, input->dest_vsi); fdir_fltr_ctx.evict_ena = ICE_FXD_FLTR_QW0_EVICT_ENA_FALSE; - fdir_fltr_ctx.toq_prio = 3; + if (input->dest_ctl == ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER) + fdir_fltr_ctx.toq_prio = 0; + else + fdir_fltr_ctx.toq_prio = 3; fdir_fltr_ctx.pcmd = (add) ? ICE_FXD_FLTR_QW1_PCMD_ADD : ICE_FXD_FLTR_QW1_PCMD_REMOVE; fdir_fltr_ctx.swap = ICE_FXD_FLTR_QW1_SWAP_NOT_SET; diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index 442295e59d..5a791610f8 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -1499,8 +1499,7 @@ ice_fdir_parse_action(struct ice_adapter *ad, dest_num++; filter->input.dest_ctl = - ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_QINDEX; - filter->input.q_index = 0; + ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_OTHER; break; case RTE_FLOW_ACTION_TYPE_RSS: dest_num++; -- 2.20.1