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 432FEA0560; Tue, 18 Oct 2022 05:13:53 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 480BC42B71; Tue, 18 Oct 2022 05:13:12 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2096.outbound.protection.outlook.com [40.107.220.96]) by mails.dpdk.org (Postfix) with ESMTP id A003D42B70 for ; Tue, 18 Oct 2022 05:13:10 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UxGt59Lzjdsg2F6pGC3gM/5uuMABna1JclnS1Am7ZHOiTw25VB7bwSDFZ/656osZskfAtMqOMF8LZVz0F7WAaBFX+IAakJZ4hV4bvWz3afW1qWRj+hxuqncipjyO+8ftAzVQymPmUgwkh/F37unLD1Li7NY5xG1zi8THAq+xcos8NuT/hwCoO7BfqJ5dNkausRk0KDiP2PeGd1kZEJ/PDah/mUiu0aSCW0G2tf7eh7OlBPBfcT3GouLWRQ1sseEqybW2GKfTq+9hdUPItLYwhezHQpvdznWnuOawe83KPNH5/0Lqg3eqdrIZptgDBqoD5/fO8ALCU/SNez+4bAdS9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=GlfPl6fC/PFnsdMTqiI+WKEUU+BjRXO/FR+tN1dFKxQ=; b=PA75TQXcPdgYPTtfipauFeJvnSPH7bN84I3sxwdHM6w4q/ESPDH4xxBvd63yoNNuCBrDs5NKox8u79C+cMiueHtVnVfTQeMvghcETnodd8DTxmJMYUXXfxmzPhMg0rerqVOM68jp9lPjo08rLD7VMsAFYcmfgX7JB8bDOB2E6bnq3xqRODFwW2OZGQyN7OwswtHwMdUGEu6P1g1pO/B9sBiv4RSdIubZDw6KxWoI/oP2Y5yT3x2mbY9JYQcCe+ZyCg/tQMaaNugPJ8UjprhLQ6t/B0XHuKOCVZyo/y0n5+qNMr+POKkkZO5EAVDDC75f0sw23hOQUXuaB6uw9NYS1Q== 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=GlfPl6fC/PFnsdMTqiI+WKEUU+BjRXO/FR+tN1dFKxQ=; b=IXGBPxNzcCqylf1qB9exGbLMDTUjBcowRdZqP48DYLloQst9U82lYI0n3WDc+TWeOMgeoZ15UnSnl5ick6MPwqG+zvxI2IWukU9u7gfWoIqTIr9S61Ebt+xNZFnGAaMExZBQqZNCHHzF/mUCJHa38v/oZBAJ1VBmfrTJJWui5Zo= 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 DM6PR13MB3865.namprd13.prod.outlook.com (2603:10b6:5:1::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.20; Tue, 18 Oct 2022 03:13:07 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7c26:1a0b:2825:6f4b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7c26:1a0b:2825:6f4b%4]) with mapi id 15.20.5723.014; Tue, 18 Oct 2022 03:13:07 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Chaoyong He Subject: [PATCH v3 09/25] net/nfp: add the offload support of IPv6 item Date: Tue, 18 Oct 2022 11:12:16 +0800 Message-Id: <1666062752-33689-10-git-send-email-chaoyong.he@corigine.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1666062752-33689-1-git-send-email-chaoyong.he@corigine.com> References: <1666062752-33689-1-git-send-email-chaoyong.he@corigine.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: SI1PR02CA0010.apcprd02.prod.outlook.com (2603:1096:4:1f7::17) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM6PR13MB3865:EE_ X-MS-Office365-Filtering-Correlation-Id: a76cddf2-bb52-411b-beb7-08dab0b6ad86 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8vRGcVVxCzhcMCFt4FIO3ISkcA/EUoCPg1cgbZ6DYtXbKARJBnYOahUSSpZUwLO9tc9jOPUS86bRBrHwrokM7XGd/A9qOrdXBw9hfwjgtIr+SczVyKj6FBdmMhcdkEk3NcU28VYAOQK2crFm2kbXNuT8iJHu9rDUvxNxfae6ljC0ClL2aZW/b520nE1cTsfRLt3cimWlr+OQXT+ZJrAu7V+oIJg5mlQR8aNa6uP31X0D/XCK28IyUrFCD0yphh+ie+Th/A+/6/qgc6Aq8zXXfCGlxlwl3lAqMye9SiC3l6Psvrw9y6q/GidFpDFc55a9nZhE4vM4DtBUihNmlxdHtjPOhWBMEK+XkHztVBPwbY3lmIK9M55SO31Y5vuivWaCmRVm4xnn7vKyXh8BVjQvVFYV523XTSRl5HSsGvqfX9G8Fmy0udQujZCAoKfUludWvD/6pYHZTMHRK4j6O3vS0hBCTpWubiF6RkwFsAeDo2yiYhfLeYLXQu7jQuvhcZCP2t3isSeMwr36cdqy4GVVA8ZPoDp1MpQaSzOGBwkagwxxmEh36cPmu7g7HWJcEOuUQBlytHJB1b8mrB8FeM7LlYhKuIOeg00VGNJtQ8u10odUrjUpEe4mna+4YDd43C9M6s251yCJEY0ay71aj1s7WLYzU/omjPsfwVPA5PBpkIxoOBH5ActlvFJ5i4pTQU8prDpcRuiAPANx/jretmCo5u+yM2JWMi31B5VCclTaQOeusnAc748EqZMmRa2dETRjk1Ty01oLCKJywBdjaX0mBw== 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:(13230022)(4636009)(39830400003)(376002)(366004)(136003)(346002)(396003)(451199015)(66476007)(6916009)(36756003)(2906002)(8676002)(86362001)(38100700002)(38350700002)(44832011)(186003)(41300700001)(66946007)(66556008)(8936002)(6512007)(26005)(52116002)(6666004)(107886003)(6506007)(5660300002)(316002)(4326008)(2616005)(83380400001)(6486002)(478600001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NVZTVFdZcE1qZVVnK2xMWnhMem5DcENMc01md3REa0p6YzRrLzZRUENTUTRo?= =?utf-8?B?OStueEhGNHkyU0JCaGJlU2tDWWsya2g3cFE2WGVjSEhHUlM4c0g0TGEvbENt?= =?utf-8?B?MDUrVDgwU1RmaFNRd1BFRWhBVmduVEpuR3hQb05TMjZXVUljbjh5Z2E3LzNE?= =?utf-8?B?ZTZ1UjN5YTVLalJtaDhWMHMyYWhrYTI3SmRuMEFxMlgyWFBPKy82V3JqZDcz?= =?utf-8?B?dzJKeHJ6aCsrOVVWajNHc3BQT1RLd2RaVHBDeWxhRlRsQVZYVjh4UlIzYlNK?= =?utf-8?B?elR0RThnbmVieUltbUIyU2xjTXMrNldLOFFvNDdXc1NpOUQ1OHhiSUdmMFFF?= =?utf-8?B?WllPbUpzeGJvcTVvYmNvdGdhV0xUbVFUYTJoS243RnI0SVg0TWx2M2FKV2sw?= =?utf-8?B?MGlMeTVuam5SZjJWVTdWMDRCWmtTcElxTWUwa0I5R2xTRGFaSkFvdFZCc1l4?= =?utf-8?B?bUhrN3ZFQndXTHhhc1FPalM2Y0xTSEhDVlA4OGU3SG1Ba3pjdXBkZStGUENY?= =?utf-8?B?dFVjZnFlZmtFNGM3YVoxKzB4NzhZa2NpbkxzdmRIVmhLeHRGdWxGaVlmL29Z?= =?utf-8?B?RnNoZkdiMVdpenlzd051WkFvajRkNytJSW4vMXFyaFNxSVVNZVNzS1g4elRZ?= =?utf-8?B?K0tUMXMyNWVaTXljbnN0THBlWDNQWXBHZUZRYzRKTlp1ZjJKRHNFSUJob3Rn?= =?utf-8?B?V0RnSTdJZ2VlWUU0TGIwSnc0L2FCK3hXVEplMXdaN2t5OXp0ZUs0VnJSa3cy?= =?utf-8?B?aHBJUk1zTGVZR3RuUWZPQ29rSXhYRE5PMjVZeXRrTUxUc3A3eW1PZGZkb2Rr?= =?utf-8?B?VUEzWUFISXcxZ0UxZXFmUjRBVkNNVzZBYWxIR2pldGFSc2ZwZVZMdFlBOFox?= =?utf-8?B?YlZBZGsrTlI0RUZHeGRtdVA1RlgxSWgzcEZqemtYK0xUb1NvV2tuRitiQWZs?= =?utf-8?B?ZmFMODV2dFQ5eDlRV3lPREViR1dBTkxITzhKRWhqR2pwNVZhTUNLV0J1eHpS?= =?utf-8?B?dE95OW1ITXhEV2lGTC9ndG80K2dQV1dKUEpWN3d3K2tsZVhlWnYwVVJDRW5M?= =?utf-8?B?MFZSSW0xVXpnRlk3cnZFcVBlL0JOeXd4OFJ0UmFNaVFnOXFlTS94c2NMeTg5?= =?utf-8?B?cFRjK1VMWUFhN0JZSDE0LzQzaEpVOC95U3JRZk5kbVJHZndKWXdINFp3cXJT?= =?utf-8?B?a2lGSVgzd3p3T3JURDZGenBqT1crQmRMMmdGOXg5OFp1YlRVdTRzR0lNNTlo?= =?utf-8?B?V3BLdHVQMGNqc25UZ2J1Zm1DbWdiYXlRSjQrcVIrdVBOblN2a3MzMmNqaWFn?= =?utf-8?B?dVpqODR1TDluV3grV3dLVVBDWStWT0VERzcxUEdqMmoydlJLMWpzWFJSbWpu?= =?utf-8?B?MUF4UjF5cW1JVWJZeXBjK3Q2c3VWN2Z3Q0V2SmxBZkdrR29hMlVNMEEwQUFv?= =?utf-8?B?eHQzbGlNcVI2NGlTSVNIcE1mR25CZEd2SXk2WTVHbmE5a0xJZFpTbG15QWpk?= =?utf-8?B?RWc0TTdISXVZRGdCRXVsdVIrNnI0YUNJU3hqbEpLaURHSU9rVEFRd3lQSkpi?= =?utf-8?B?S0hITWU5SjJNVXB6aEFHd1orVzJ3TzE0MVE5QWFKckFpb1VYQ29XcnNLZGIr?= =?utf-8?B?ckNUSyttL2xDZitMYW0rb3RmNEF5MXJJSm0xMFhrWmgzOFRIQy9KeWNnR0VC?= =?utf-8?B?cmVTaU1Kem45bHUxQVhYdlJzaElOY09Sc08wRENTbjdWOFZvYktQdFlpbTJ3?= =?utf-8?B?OXBvWGRUSEtOYXBGdllnMzFoYm9QZkt2UDZ5UEQ1dmh2M01oYVlWQ3NWVjU0?= =?utf-8?B?UTNvM2hPN0FyY0w3WWdTNlRVREkyTG00UEY4N3dkS2xkSHBMVGFpRXM0aGln?= =?utf-8?B?MzRKekJYcnFiK1FIQXdHUlJlVm5TQlpwNnFNZUVYa2hEODJIZnFLbkx1TmtE?= =?utf-8?B?bnRIM2ZSWTBldTRIcFNzWmcvL1hLUTl0S0xjbjFnWHBMSzBBQ0VwRFpSRUo4?= =?utf-8?B?bDhsQzJBVWJYRDNxNGRwNnhtZm9FRHVHMXV3YkVnS01zNSswZWk1SC9GSXht?= =?utf-8?B?SDZoUlJiNEwvSzQ1eThuSDQzblUxM3k1RXB2VmlHZlBVb2lsL1dCL0xrWXdt?= =?utf-8?B?QkFDTHV2dVg4QWwxVnh1NjFCakN3MjM0ZWJjMjRHcUdaOGxsMXEzeUtEM3l6?= =?utf-8?B?TlE9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: a76cddf2-bb52-411b-beb7-08dab0b6ad86 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2022 03:13:07.1608 (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: yosJZAaS6rXnM/fv+YRdfFbZHDaOi2NtPWwDymVtLA8x4ONevKKNsy7qsKmFtJ8ozPXi3SIcE1iwYm4ywbQQ24PcyCWqZRKHJHxVbO9yI+Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR13MB3865 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 Add the corresponding data structure and logics, to support the offload of IPv6 item. Signed-off-by: Chaoyong He Reviewed-by: Niklas Söderlund --- doc/guides/nics/features/nfp.ini | 2 + doc/guides/rel_notes/release_22_11.rst | 1 + drivers/net/nfp/flower/nfp_flower_cmsg.h | 33 +++++++++++++++ drivers/net/nfp/nfp_flow.c | 73 +++++++++++++++++++++++++++++++- 4 files changed, 107 insertions(+), 2 deletions(-) diff --git a/doc/guides/nics/features/nfp.ini b/doc/guides/nics/features/nfp.ini index d4ceae0..9dff34b 100644 --- a/doc/guides/nics/features/nfp.ini +++ b/doc/guides/nics/features/nfp.ini @@ -29,6 +29,8 @@ Usage doc = Y [rte_flow items] eth = Y ipv4 = Y +ipv6 = Y +ipv6_frag_ext = Y port_id = Y vlan = Y diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst index f6c0414..fcc5d00 100644 --- a/doc/guides/rel_notes/release_22_11.rst +++ b/doc/guides/rel_notes/release_22_11.rst @@ -168,6 +168,7 @@ New Features * Ethernet * Single VLAN * IPv4 + * IPv6 Add the support of rte_flow actions as follow: diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h index 5964ecf..36d406f 100644 --- a/drivers/net/nfp/flower/nfp_flower_cmsg.h +++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h @@ -291,6 +291,39 @@ struct nfp_flower_ipv4 { rte_be32_t ipv4_dst; }; +/* + * L3 IPv6 details (10W/40B) + * 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 + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | DSCP |ECN| protocol | ttl | flags | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_exthdr | res | ipv6_flow_label | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 31 - 0 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 63 - 32 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 95 - 64 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_src, 127 - 96 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 31 - 0 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 63 - 32 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 95 - 64 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + * | ipv6_addr_dst, 127 - 96 | + * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + */ +struct nfp_flower_ipv6 { + struct nfp_flower_ip_ext ip_ext; + rte_be32_t ipv6_flow_label_exthdr; + uint8_t ipv6_src[16]; + uint8_t ipv6_dst[16]; +}; + struct nfp_fl_act_head { uint8_t jump_id; uint8_t len_lw; diff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c index b8280a6..e713491 100644 --- a/drivers/net/nfp/nfp_flow.c +++ b/drivers/net/nfp/nfp_flow.c @@ -539,6 +539,11 @@ struct nfp_mask_id_entry { key_ls->key_layer |= NFP_FLOWER_LAYER_IPV4; key_ls->key_size += sizeof(struct nfp_flower_ipv4); break; + case RTE_FLOW_ITEM_TYPE_IPV6: + PMD_DRV_LOG(DEBUG, "RTE_FLOW_ITEM_TYPE_IPV6 detected"); + key_ls->key_layer |= NFP_FLOWER_LAYER_IPV6; + key_ls->key_size += sizeof(struct nfp_flower_ipv6); + break; default: PMD_DRV_LOG(ERR, "Item type %d not supported.", item->type); return -ENOTSUP; @@ -723,6 +728,51 @@ struct nfp_mask_id_entry { return 0; } +static int +nfp_flow_merge_ipv6(struct rte_flow *nfp_flow, + char **mbuf_off, + const struct rte_flow_item *item, + const struct nfp_flow_item_proc *proc, + bool is_mask) +{ + struct nfp_flower_ipv6 *ipv6; + const struct rte_ipv6_hdr *hdr; + struct nfp_flower_meta_tci *meta_tci; + const struct rte_flow_item_ipv6 *spec; + const struct rte_flow_item_ipv6 *mask; + + spec = item->spec; + mask = item->mask ? item->mask : proc->mask_default; + meta_tci = (struct nfp_flower_meta_tci *)nfp_flow->payload.unmasked_data; + + if (spec == NULL) { + PMD_DRV_LOG(DEBUG, "nfp flow merge ipv6: no item->spec!"); + goto ipv6_end; + } + + /* + * reserve space for L4 info. + * rte_flow has ipv4 before L4 but NFP flower fw requires L4 before ipv4 + */ + if (meta_tci->nfp_flow_key_layer & NFP_FLOWER_LAYER_TP) + *mbuf_off += sizeof(struct nfp_flower_tp_ports); + + hdr = is_mask ? &mask->hdr : &spec->hdr; + ipv6 = (struct nfp_flower_ipv6 *)*mbuf_off; + + ipv6->ip_ext.tos = (hdr->vtc_flow & RTE_IPV6_HDR_TC_MASK) >> + RTE_IPV6_HDR_TC_SHIFT; + ipv6->ip_ext.proto = hdr->proto; + ipv6->ip_ext.ttl = hdr->hop_limits; + memcpy(ipv6->ipv6_src, hdr->src_addr, sizeof(ipv6->ipv6_src)); + memcpy(ipv6->ipv6_dst, hdr->dst_addr, sizeof(ipv6->ipv6_dst)); + +ipv6_end: + *mbuf_off += sizeof(struct nfp_flower_ipv6); + + return 0; +} + /* Graph of supported items and associated process function */ static const struct nfp_flow_item_proc nfp_flow_item_proc_list[] = { [RTE_FLOW_ITEM_TYPE_END] = { @@ -730,7 +780,8 @@ struct nfp_mask_id_entry { }, [RTE_FLOW_ITEM_TYPE_ETH] = { .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_VLAN, - RTE_FLOW_ITEM_TYPE_IPV4), + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_IPV6), .mask_support = &(const struct rte_flow_item_eth){ .hdr = { .dst_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff", @@ -744,7 +795,8 @@ struct nfp_mask_id_entry { .merge = nfp_flow_merge_eth, }, [RTE_FLOW_ITEM_TYPE_VLAN] = { - .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_IPV4), + .next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_IPV6), .mask_support = &(const struct rte_flow_item_vlan){ .hdr = { .vlan_tci = RTE_BE16(0xefff), @@ -771,6 +823,23 @@ struct nfp_mask_id_entry { .mask_sz = sizeof(struct rte_flow_item_ipv4), .merge = nfp_flow_merge_ipv4, }, + [RTE_FLOW_ITEM_TYPE_IPV6] = { + .mask_support = &(const struct rte_flow_item_ipv6){ + .hdr = { + .vtc_flow = RTE_BE32(0x0ff00000), + .proto = 0xff, + .hop_limits = 0xff, + .src_addr = "\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff", + .dst_addr = "\xff\xff\xff\xff\xff\xff\xff\xff" + "\xff\xff\xff\xff\xff\xff\xff\xff", + }, + .has_frag_ext = 1, + }, + .mask_default = &rte_flow_item_ipv6_mask, + .mask_sz = sizeof(struct rte_flow_item_ipv6), + .merge = nfp_flow_merge_ipv6, + }, }; static int -- 1.8.3.1