From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5A837458A7; Fri, 30 Aug 2024 13:29:12 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6FF7742E97; Fri, 30 Aug 2024 13:29:02 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2096.outbound.protection.outlook.com [40.107.94.96]) by mails.dpdk.org (Postfix) with ESMTP id 6086542E6F for ; Fri, 30 Aug 2024 13:29:00 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AfkyBwed+Wn7Giv+Riu6Cq6eSo1ef9PS38hzxU/g4VI7725ePx1Uv+kopnyBf5TiJsR4yz6IPRBuPaDChvVF1Pb8L7d5nYBPhqnHMHzIcmY77L6tdFpxTa6SjWxjNH+93F4NjMJJMQCo5r+rl6iwhXoC94/58QYjeRoe6fZ4Xa12A1cB7ejOEi934sK3ODidcONnifKbWcmUG+qiuXK2mfUhwFW1rAncIm7ptHqJd+oKj1q/ZA0ITnzQoC7DvXwMKVLCU+ons5B2n/yBDcoygM3++CHxkbgrAAGD7PCqnXDFUuxzTpjFZ0rnaqAQ1dz9uklDRH2Sk5mwuIQcya3mzA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QQRDb77/3Q+elDwl2WIn9eWnk7lAJExA9rHbZ+nqmbA=; b=CZMzylePNHJpLawY4kOhb6NCztv1h+A3i7tKRxbEZZCRebolA9sIldmBXIMNdGBoDxhLg043EzPuXWVusOnWSqQiEeYk6fIk99GZcaae+QMXhyDbC6MjAuXIkSY6XzSiFv/qGG/VG+vA4PbLLwGrIgOyMzBiTBj+88JUp+43JS+YOPtn6F4hRjy0up3sddWnj8K42Tg4pn/Tp6VijMZN3e93FkyrrtzsLZxqOdbEmX0tbq9EfgFple2m8/v4KVSFDMwmeq3F1yknyTIpxF/nDyywjHPjJMU9PVkxYSxzn1OAG4aZbDLTnge8De+Fv9YD0f8phgruxI0+5cYnz7BFnw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QQRDb77/3Q+elDwl2WIn9eWnk7lAJExA9rHbZ+nqmbA=; b=NMF8Ot1VlkBuMU5BKk6YBx5AwkT0tfR4JVoR57Fak3TjwPbzAQTyvTws80CDCFEc8wpc7zXEFRTPKvT87IO5eZa1dXxQ5MMe866kdGfFk2jcGgM+CgrCPXEYAwSPiqxAhCf2jWOHeSLvsnja0OEjPvOhDIlmoq8NJmU/7Ks2flk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by MN0PR13MB6790.namprd13.prod.outlook.com (2603:10b6:208:4a5::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7897.22; Fri, 30 Aug 2024 11:28:58 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833%4]) with mapi id 15.20.7897.021; Fri, 30 Aug 2024 11:28:58 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , Chaoyong He Subject: [PATCH v3 2/2] net/nfp: flow rule supports match Ethernet type Date: Fri, 30 Aug 2024 19:28:29 +0800 Message-Id: <20240830112829.2586795-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240830112829.2586795-1-chaoyong.he@corigine.com> References: <20240830071323.2581557-1-chaoyong.he@corigine.com> <20240830112829.2586795-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR02CA0104.apcprd02.prod.outlook.com (2603:1096:4:92::20) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN0PR13MB6790:EE_ X-MS-Office365-Filtering-Correlation-Id: 630b1775-7e50-4d00-485f-08dcc8e6f092 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|1800799024|52116014|366016|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?cxsu2aY08DSjiqTm8L7RiVRHOKDHfuJWIO4G7N/xLOkl5cNccow9/XGeLNlb?= =?us-ascii?Q?XxKT20oFvcM1U/N5CfYnn8u+Hc6UtlGq+EzYFDQuItscY4VAuxMf9NYro0bq?= =?us-ascii?Q?0qkz4tHdRJ+i+05uZvMy4MybudIDNf/bo0NuY2z7Olh3NU/ZbV39fGB1kgFl?= =?us-ascii?Q?iQhRJARvbqGn7KDNQTUZYQ3U2AIoyi90and8UqxAR/WtU/1Ha6JmgBsrNlNT?= =?us-ascii?Q?MBVUK6Jl5CPpBjprvuoul9vyadcIzkjO0QnarKuLeIv+Bx4bRZLoTJGUCE5e?= =?us-ascii?Q?rDXxJ1JWQ47NObdUuwk10xWyrj8xA7qIjh4kfjWkggSQHf1zmnv/nWZW4otl?= =?us-ascii?Q?pllmYMXjekuvDXXuLf/7W8PpkdzhJXNJUq+N7EcxsH4wiqoV6U3zTDbRefIW?= =?us-ascii?Q?iewNu+yB22RdRUhzm7zzQrM3XpmUhvJ1FnEyXG9kAxx2xfor2eS6AJ0e1eCB?= =?us-ascii?Q?o3Kc3RAYVyV6sq1XYhYEJmwC5kDa1TqQH7XNAnCR7BMTYIP1OfSJrhnqLfsg?= =?us-ascii?Q?D2r4k+N6h0lzQoVJ/moFTd+P6iIZLPLvkCPgDFSy8f2JpsHHrKIVvvgcK7Fi?= =?us-ascii?Q?qBR0gS9t/HB+2oKGogN9HWzKvKHomImP0bBTZT7rs1F7/YMHsPM+FLp8J6qc?= =?us-ascii?Q?94lV4tS+fpe8NoESU5aAKZ+eX9g1p2UUbARmpl9P7rs845Ed0G0CGvY1fSRt?= =?us-ascii?Q?5OsylqpqDZ9A1ycv/T6516y3PXvXFlEnF40saZ8ucYF5g/IBCLMXRlTqTA+R?= =?us-ascii?Q?/up4aDn1c6YSU65H4UDYRUurntTUGon/OHQYHQT+5+qy5t1iarkIXfhgWxzL?= =?us-ascii?Q?ElnSe2KwyOKLkaEec37/6tAKhuuRswiTood6XJw39KDK3fhxSpQkUtZybZly?= =?us-ascii?Q?FYG5BmlamlehEJh2Az22yCDA1wQPr9FJ+x55RrLGWiOO/4qEyqJLjQHIM9lz?= =?us-ascii?Q?uztfmf+K6n3Z4SdExMrAVLxglhNcVILwul/6v3x3QHQI4p1dXy/3AmfeIoie?= =?us-ascii?Q?6k6+DK/65RrmlbtLfTnqCO+ZS0RNDAjFHtdiSdaO6FDo6QtpSa7kHimCCqSL?= =?us-ascii?Q?nLqWT5N6BOZzR82mwENmv3w3kNmNwfgY4fb6pFIxItnp6UKA7bmL/ZbZxgNY?= =?us-ascii?Q?uQgTx2yzaU8ypVy2WlaX6rw05FaHiqvkL9IHc5DvBAhdQC2c6jG7LxInbVmg?= =?us-ascii?Q?2xRNYHI5c1quyMRDsjHoPuoIAZjck3fB0TacvNHhLtcEhEIlgO/QRBwftQkq?= =?us-ascii?Q?JWrVQbAIeqpqZxEdCRsK2lF+r2QvpfGcoEz6yJ99xzkZ95WUGDpCY+AVUAeB?= =?us-ascii?Q?OMA0o7K9Cj/95W7bKe/VkPC4T/TlSaONZsVt6jRJgnmIyjMoRGTeQzNBf7cP?= =?us-ascii?Q?+Xky2A66Omywdcj0T0z58Tr6PTh74MoJyAlHES2RJVNUIXdlvg=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(52116014)(366016)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bmGHxuY9rO9MCfJnsF5oxRDZqw7X6o+oTXjWyxp+6YenxLYeCtEraLRghkiV?= =?us-ascii?Q?KTadTyKolzLUXEvizI8W/7cVfLPibHQorpgzuSv9qAM5L0KhpkzM6YHMj2F7?= =?us-ascii?Q?DrQqQAa737Fe4W0h9aFyyHxUqxGO+5skyJzxccCJSol9OITXvCVA/fuYc3en?= =?us-ascii?Q?nhnJjBk+raLr9nanBbI58S2p+bNwF0KA60IZbCQqAmSHsZay4A0mL9DpG9t9?= =?us-ascii?Q?ut0ISwJI96kFazclnJPQPj9ufH5dVq9i0kmJ1dHjVhUJ3DiPhu423auiatk0?= =?us-ascii?Q?RiuO/skK3xXAgBDm8Url2ial5msMZcZqvTEthfvlSXie6NIQEdxgsjsH/pGw?= =?us-ascii?Q?Pbp0XLP0v+aadIFR2LH00oyrLuoGeecQxwrzOZyjdfU40vKk1m5xmVwVhvIu?= =?us-ascii?Q?ijMiUhiPJDczj2H8NJHCOCFfH1bD1L1MBwNWZdzhHgY4yv5nZEiH4nU2/CSV?= =?us-ascii?Q?oQQnFN+cQsH2PRbzbOEFHGHpFqxprhCW5WPhfDlbJab89TTo5P+Lkbkri64F?= =?us-ascii?Q?FMs0EHJZ9Zm5AjozMzGJ6ViqV1KUonk1vB8WkkkJ9A0z9CFI4i3QFkd5eW+h?= =?us-ascii?Q?lkdy5ZGJEll739J4u5GabOze68+1CxnuuhGScc6IfvEbSNtNJAWXND0gqDd3?= =?us-ascii?Q?5oVKwo720trYv1kL29vARk/S78JA2Rr0HN4d9gPaBsMZLnWt1XdkxUDjlyvP?= =?us-ascii?Q?u4/ygAiRthzRMx8ztpqerDOxaIu83G2KUnDpTEgyo4QqZSMkfhOq80e5OIt5?= =?us-ascii?Q?Pav/I/1IUvayGoApdF9n/dLnNA73zSf6jAOfOvWCi5Wm64XWpI2j0sHDeWzu?= =?us-ascii?Q?e9vlu0OAsjZRD3k/nbh5ec6aBcDku+2wYIq9Kd8wZoZJ/iVbx3j6Pj9j1I6z?= =?us-ascii?Q?vfCPICEHqkTz84D+w5OX8Q6inqzyl+9AKtp2RXpwOikNfFVB66uQ784JnLPy?= =?us-ascii?Q?WfX0difJfGiGLv7725EjTCYf3oUCAxSEJKwyf9H6AKzmSoBIW6gApijWUJSQ?= =?us-ascii?Q?7/SU+BQG+fyJnG+CmLaiA6u80WWZ0jUDSJBW1rpvRz84r0eX/bLEjdbx+JMj?= =?us-ascii?Q?UHWQObr2PVf+qvpsMUYtsTSUokd5jeA9T4A4h2SC0GdG8g9z7U523NbYSrGh?= =?us-ascii?Q?8OcmFF1RfutPs3k/DVN4g9r3zpgiF/E9p9+20/fN8d74CZyvtNTvhrwbOK5b?= =?us-ascii?Q?pr7f9hJRkFCoqiFC/78xtO6i5ekbYv8JZ12/6XW7KR5NvoxVP5LKx3tRDabu?= =?us-ascii?Q?AE1kvEq6mL3Y2Q/LT0UKcPW2AT08+QbO4AYOhuiA/cS+oNvnLeyKpT+qgKVa?= =?us-ascii?Q?N1eP8oms2W+SCXtFT9p9eK2p1gnpiEGtGk8d7mxdZyZwhAPo3mk7R8zQ/Zbn?= =?us-ascii?Q?tlBsZEUf359/vmv/W1RvdakJQNoBFboE+L+v+w2owEsyhB5++YTMAA5q/htu?= =?us-ascii?Q?V1QaFWtILar6Iqq/L62SzsDHStQp+/CMPoejeh51J6O0IgHeRPWGYCmb1KXL?= =?us-ascii?Q?r5LvUAtJVTdr3HC3hL88XKu4k0QuVdqtDZHF5fDt2Nib7etYOVUCeWZ7Jrvl?= =?us-ascii?Q?Ym+Lo3YCf3ucDfnWf9K14HPakhXWQIYWgMb1BZAe7UzBkPX+XFmI8Ys96gBw?= =?us-ascii?Q?FQ=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 630b1775-7e50-4d00-485f-08dcc8e6f092 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Aug 2024 11:28:58.5745 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PHcbx1K5hr58KnPjo1d3lcfv6ZOfu1b5d86oQI+aYr663z8Rgn91a2lHo+EcaadlZyywIt45k/zZp7vv13GCae4GSBZjmeDRzTfSuoON0H0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR13MB6790 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Long Wu Add the support of match ethernet type item when using flower firmware, with a limit that it can only be used alone. Signed-off-by: Long Wu Reviewed-by: Chaoyong He --- drivers/net/nfp/flower/nfp_flower_cmsg.h | 14 ++++++++++ drivers/net/nfp/flower/nfp_flower_flow.c | 34 ++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h index 5d23227c24..5fc4210d8b 100644 --- a/drivers/net/nfp/flower/nfp_flower_cmsg.h +++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h @@ -708,6 +708,20 @@ struct nfp_flower_ipv6_gre_tun { rte_be32_t reserved2; }; +/* + * L3 other (1W/4B) + * 3 2 1 + * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | reserved | ethertype | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * Note: This is only used when no specific L3 header available. + */ +struct nfp_flower_l3_other { + rte_be16_t reserved; + rte_be16_t ethertype; +}; + struct nfp_fl_act_head { uint8_t jump_id; uint8_t len_lw; diff --git a/drivers/net/nfp/flower/nfp_flower_flow.c b/drivers/net/nfp/flower/nfp_flower_flow.c index f24e9cee9c..20c8b4a1b1 100644 --- a/drivers/net/nfp/flower/nfp_flower_flow.c +++ b/drivers/net/nfp/flower/nfp_flower_flow.c @@ -26,6 +26,7 @@ #define NFP_FLOWER_LAYER_VXLAN RTE_BIT32(7) #define NFP_FLOWER_LAYER2_GRE RTE_BIT32(0) +#define NFP_FLOWER_LAYER2_L3_OTHER RTE_BIT32(3) #define NFP_FLOWER_LAYER2_QINQ RTE_BIT32(4) #define NFP_FLOWER_LAYER2_GENEVE RTE_BIT32(5) #define NFP_FLOWER_LAYER2_GENEVE_OP RTE_BIT32(6) @@ -962,10 +963,15 @@ struct nfp_item_flag { bool outer_ip6_flag; }; +struct nfp_item_shared_flag { + bool l3_other_flag; +}; + struct nfp_item_calculate_param { const struct rte_flow_item *item; struct nfp_fl_key_ls *key_ls; struct nfp_item_flag *flag; + struct nfp_item_shared_flag shared_flag; }; typedef int (*nfp_flow_key_check_item_fn)(struct nfp_item_calculate_param *param); @@ -1065,6 +1071,9 @@ nfp_flow_key_layers_check_items(const struct rte_flow_item items[], PMD_DRV_LOG(ERR, "Flow item %d check fail", item->type); return ret; } + + if (item->type != RTE_FLOW_ITEM_TYPE_ETH) + param->shared_flag.l3_other_flag = true; } return 0; @@ -1089,6 +1098,13 @@ nfp_flow_item_calculate_eth(struct nfp_item_calculate_param *param) key_ls->key_layer |= NFP_FLOWER_LAYER_MAC; key_ls->key_size += sizeof(struct nfp_flower_mac_mpls); + + if (!param->shared_flag.l3_other_flag && spec->type != 0) { + key_ls->key_layer |= NFP_FLOWER_LAYER_EXT_META; + key_ls->key_size += sizeof(struct nfp_flower_ext_meta); + key_ls->key_layer_two |= NFP_FLOWER_LAYER2_L3_OTHER; + key_ls->key_size += sizeof(struct nfp_flower_l3_other); + } } static void @@ -1870,6 +1886,9 @@ nfp_flow_merge_eth(struct nfp_flow_merge_param *param) const struct rte_flow_item *item; const struct rte_flow_item_eth *spec; const struct rte_flow_item_eth *mask; + struct nfp_flower_l3_other *l3_other; + struct nfp_flower_meta_tci *meta_tci; + struct nfp_flower_ext_meta *ext_meta = NULL; item = param->item; spec = item->spec; @@ -1892,6 +1911,21 @@ nfp_flow_merge_eth(struct nfp_flow_merge_param *param) eth->mpls_lse = 0; *param->mbuf_off += sizeof(struct nfp_flower_mac_mpls); + meta_tci = (struct nfp_flower_meta_tci *)param->nfp_flow->payload.unmasked_data; + if ((meta_tci->nfp_flow_key_layer & NFP_FLOWER_LAYER_EXT_META) != 0) + ext_meta = (struct nfp_flower_ext_meta *)(meta_tci + 1); + + if (ext_meta != NULL && + (ext_meta->nfp_flow_key_layer2 & NFP_FLOWER_LAYER2_L3_OTHER) != 0) { + l3_other = (void *)(*param->mbuf_off); + if (param->is_mask) + l3_other->ethertype = mask->type; + else + l3_other->ethertype = spec->type; + + *param->mbuf_off += sizeof(struct nfp_flower_l3_other); + } + eth_end: return 0; } -- 2.39.1