From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8A28CA09FF for ; Wed, 30 Dec 2020 06:29:45 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4683E2B87; Wed, 30 Dec 2020 06:29:44 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 686E12B87; Wed, 30 Dec 2020 06:29:41 +0100 (CET) IronPort-SDR: Lfy8WM+xxIGbEwq5dB8Am09CEQmB7bng1Pm8C5RpK1Iv8zI9/F6D2fth8vNEXV2U2wpK1vCLCR MAt7aFdlWevA== X-IronPort-AV: E=McAfee;i="6000,8403,9849"; a="176669456" X-IronPort-AV: E=Sophos;i="5.78,460,1599548400"; d="scan'208";a="176669456" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Dec 2020 21:29:38 -0800 IronPort-SDR: laaxwwU6Jh5ivHsXKo6WGJuhLhg4o/F6hA3QxbpVCz5Aq7ZfCXsXKWxepdzMMoOf8joyoxU0qa JBIu+8nlI/hA== X-IronPort-AV: E=Sophos;i="5.78,460,1599548400"; d="scan'208";a="395659068" Received: from shwdenpg235.ccr.corp.intel.com ([10.240.182.60]) by fmsmga002-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Dec 2020 21:29:33 -0800 From: "Zhang,Alvin" To: orika@nvidia.com Cc: dev@dpdk.org, Alvin Zhang , stable@dpdk.org Date: Wed, 30 Dec 2020 13:29:28 +0800 Message-Id: <20201230052928.19816-1-alvinx.zhang@intel.com> X-Mailer: git-send-email 2.21.0.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] [PATCH] app/testpmd: fix RSS key X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" From: Alvin Zhang Since the patch '1848b117' has set the value of key in 'struct rte_flow_action_rss' to NULL, the PMD cannot get the RSS key now. This patch sets offset and size of the key pointer as the first parameter of the token 'key' and copies the start address of the 'HEX' data to the location specified by the first parameter of the token. Fixes: 1848b117cca1 ("app/testpmd: fix RSS key for flow API RSS rule") Cc: stable@dpdk.org Signed-off-by: Alvin Zhang --- app/test-pmd/cmdline_flow.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index 585cab9..6eb46d3 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -3403,7 +3403,10 @@ static int comp_set_sample_index(struct context *, const struct token *, .name = "key", .help = "RSS hash key", .next = NEXT(action_rss, NEXT_ENTRY(HEX)), - .args = ARGS(ARGS_ENTRY_ARB(0, 0), + .args = ARGS(ARGS_ENTRY_ARB + (offsetof(struct action_rss_data, conf) + + offsetof(struct rte_flow_action_rss, key), + sizeof(((struct rte_flow_action_rss *)0)->key)), ARGS_ENTRY_ARB (offsetof(struct action_rss_data, conf) + offsetof(struct rte_flow_action_rss, key_len), @@ -6495,19 +6498,18 @@ static int comp_set_sample_index(struct context *, const struct token *, if (ctx->objmask) memset((uint8_t *)ctx->objmask + arg_data->offset, 0xff, hexlen); + /* Save address if requested. */ if (arg_addr->size) { - memcpy((uint8_t *)ctx->object + arg_addr->offset, - (void *[]){ - (uint8_t *)ctx->object + arg_data->offset - }, - arg_addr->size); + if (arg_addr->size < sizeof(void *)) + goto error; + + *(void **)((uint8_t *)ctx->object + arg_addr->offset) = + (uint8_t *)ctx->object + arg_data->offset; + if (ctx->objmask) - memcpy((uint8_t *)ctx->objmask + arg_addr->offset, - (void *[]){ - (uint8_t *)ctx->objmask + arg_data->offset - }, - arg_addr->size); + *(void **)((uint8_t *)ctx->objmask + arg_addr->offset) = + (uint8_t *)ctx->objmask + arg_data->offset; } return len; error: -- 1.8.3.1