From patchwork Tue Nov 5 07:04:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zhang X-Patchwork-Id: 62415 X-Patchwork-Delegate: xiaolong.ye@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 738CFA04A2; Tue, 5 Nov 2019 08:01:00 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id E39C22C37; Tue, 5 Nov 2019 08:00:59 +0100 (CET) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id 538DF2C23 for ; Tue, 5 Nov 2019 08:00:58 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Nov 2019 23:00:57 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,270,1569308400"; d="scan'208";a="221991237" Received: from dpdk51.sh.intel.com ([10.67.110.245]) by FMSMGA003.fm.intel.com with ESMTP; 04 Nov 2019 23:00:56 -0800 From: Qi Zhang To: qiming.yang@intel.com, xiaolong.ye@intel.com Cc: dev@dpdk.org, yahui.cao@intel.com, beilei.xing@intel.com, Qi Zhang Date: Tue, 5 Nov 2019 15:04:00 +0800 Message-Id: <20191105070400.40511-1-qi.z.zhang@intel.com> X-Mailer: git-send-email 2.13.6 Subject: [dpdk-dev] [PATCH] net/ice: handle flow mark offload properly X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 1. Do not select vector path if DEV_RX_OFFLOAD_FLOW_MARK is required. 2. return error when a rte_flow rule require software mark action while DEV_RX_OFFLOAD_FLOW_MARK is not configured. Signed-off-by: Qi Zhang --- This patch depends on patchset: http://patchwork.dpdk.org/project/dpdk/list/?series=7076 drivers/net/ice/ice_fdir_filter.c | 8 +++++++- drivers/net/ice/ice_rxtx_vec_common.h | 6 +++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index fbbc41ff0..83d3adab9 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -1254,6 +1254,7 @@ ice_fdir_parse_action(struct ice_adapter *ad, struct rte_flow_error *error, struct ice_fdir_filter_conf *filter) { + struct rte_eth_rxmode *rxmode = &ad->eth_dev->data->dev_conf.rxmode; struct ice_pf *pf = &ad->pf; const struct rte_flow_action_queue *act_q; const struct rte_flow_action_mark *mark_spec = NULL; @@ -1305,8 +1306,13 @@ ice_fdir_parse_action(struct ice_adapter *ad, return ret; break; case RTE_FLOW_ACTION_TYPE_MARK: + if (!(rxmode->offloads & DEV_RX_OFFLOAD_FLOW_MARK)) { + rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, actions, + "DEV_RX_OFFLOAD_FLOW_MARK is not enabled"); + return -rte_errno; + } mark_num++; - mark_spec = actions->conf; filter->input.fltr_id = mark_spec->id; break; diff --git a/drivers/net/ice/ice_rxtx_vec_common.h b/drivers/net/ice/ice_rxtx_vec_common.h index 080ca4175..9d8918928 100644 --- a/drivers/net/ice/ice_rxtx_vec_common.h +++ b/drivers/net/ice/ice_rxtx_vec_common.h @@ -266,8 +266,12 @@ ice_tx_vec_queue_default(struct ice_tx_queue *txq) static inline int ice_rx_vec_dev_check_default(struct rte_eth_dev *dev) { - int i; + struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode; struct ice_rx_queue *rxq; + int i; + + if (rxmode->offloads & DEV_RX_OFFLOAD_FLOW_MARK) + return -1; for (i = 0; i < dev->data->nb_rx_queues; i++) { rxq = dev->data->rx_queues[i];