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 30F8746C59 for ; Thu, 31 Jul 2025 04:02:36 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E26444025A; Thu, 31 Jul 2025 04:02:35 +0200 (CEST) Received: from smtpbgsg2.qq.com (smtpbgsg2.qq.com [54.254.200.128]) by mails.dpdk.org (Postfix) with ESMTP id A4B594025A for ; Thu, 31 Jul 2025 04:02:33 +0200 (CEST) X-QQ-mid: esmtpgz15t1753927348t056cf79f X-QQ-Originating-IP: RWHRSrYy4G/yqC09gfrlR/aRiBPMR6Ak7DMidkSby5k= Received: from wxdbg.localdomain.com ( [122.235.239.139]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 31 Jul 2025 10:02:20 +0800 (CST) X-QQ-SSF: 0000000000000000000000000000000 X-QQ-GoodBg: 0 X-BIZMAIL-ID: 156998001576495443 EX-QQ-RecipientCnt: 3 From: Jiawen Wu To: stable@dpdk.org Cc: Xueming Li , Jiawen Wu Subject: [PATCH 23.11 1/2] net/txgbe: fix FDIR perfect mode for IPv6 Date: Thu, 31 Jul 2025 10:26:30 +0800 Message-Id: <20250731022631.1830705-1-jiawenwu@trustnetic.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: esmtpgz:trustnetic.com:qybglogicsvrgz:qybglogicsvrgz6b-0 X-QQ-XMAILINFO: M0/UNHhZ6hMG30BYknDXU7NjFjE+QdsbF9q45sg/5E+gRRNRJxobeNgT d4708U4POnu1ym84w/aZjwJ4m/vsHutGLJfbK4q2qBHuw8WcixiWCver//OWiMZonsf5tcm NJ7UjXJ+mLDiMt8oe7dlSHwB1scKw+yhk78tTU/DKEbFYgwHZkqAxwZVQy6qtJ3j413BrtK hhSX7970xJN7Wf+FcL6L0jUc6EM9WtmpSYtpD7fxQs51pmpQYzTsWXIGu52l7KYlGm5e77c s/8TYySEzH4xfir1tf+Apq1casgaYDn/cu59MtrM21xva2wRFLDjxXc7u6iMD5H8/3ef1Cp rFmeilGyEESCzCLAFz+p4egz5xmeuJj9lwpXdFF67ZoBxgv3p5g9G6gvzH8JZ77qQaHE6JT Ow66H+KBbrr0tRwHE9v9MY9d3ohGqpDE83LxeO4Wm9wV8dDABkkLJ7LuYk6MgOkgtSSCRUZ hbBHLepeELOPuj6tl86TyZbwdh4cSQJUEv6n03m+EtAaH9daFUcuSelARENhUNP0gYe9OHb +RUOswnCbeKNiy/baavMXALRST5aD0X3Hv9e0ZLf7YGREB7QDiKwETOJZlfOmaNXmhehK00 v3J6A9VY5JadxyifJW5cI9tw/doMM2nvf/mhLVoIlvyRVlB6XUa1L3UdUKJFXeNKqZdz1Jz FLijL2PF8MVGFNRUiBq7fWBpyXENkLEcrknorbiPfINw6Lug9Yl+NMIZgzEcMp2iEZxFsdj NZ/Kt3w58HJYJH4PjerXYyWqOpnGcYsnopr6BJPli3IuQko9u31/hAt9bfmT4ZisRUq1qOq fuBOLBdbtAMDuZagexrIUhInYBwn1EYXn6WP/gWW7VgqRnvs8AeTyNuZ4Z4hvLWYJhl51TY Og4PwY76k66VsloX/5zg1M3K+lp3MCyB8CmFP76P2NHPprY1W+impVfGFBUj7oUAepjFt0d zbDPYS68ijesrO4y0w7m80ZDXz8F25jGZ1QpF8NZHpptpPjzgacr80uIidCddorJ25SI= X-QQ-XMRINFO: MPJ6Tf5t3I/ycC2BItcBVIA= X-QQ-RECHKSPAM: 0 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 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 [ upstream commit db4878838ad0e978352cad411f4a72d0cead81fe ] Perfect mode of FDIR rules to filter IPv6 packets is supported by hardware. Remove the restriction and fix the setting. Fixes: b973ee26747a ("net/txgbe: parse flow director filter") Cc: stable@dpdk.org Signed-off-by: Jiawen Wu --- drivers/net/txgbe/txgbe_fdir.c | 22 ++++++++-------------- drivers/net/txgbe/txgbe_flow.c | 7 +------ 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/drivers/net/txgbe/txgbe_fdir.c b/drivers/net/txgbe/txgbe_fdir.c index 0d12fb9a11..0efd43b59a 100644 --- a/drivers/net/txgbe/txgbe_fdir.c +++ b/drivers/net/txgbe/txgbe_fdir.c @@ -210,15 +210,12 @@ txgbe_fdir_set_input_mask(struct rte_eth_dev *dev) wr32(hw, TXGBE_FDIRSIP4MSK, ~info->mask.src_ipv4_mask); wr32(hw, TXGBE_FDIRDIP4MSK, ~info->mask.dst_ipv4_mask); - if (mode == RTE_FDIR_MODE_SIGNATURE) { - /* - * Store source and destination IPv6 masks (bit reversed) - */ - fdiripv6m = TXGBE_FDIRIP6MSK_DST(info->mask.dst_ipv6_mask) | - TXGBE_FDIRIP6MSK_SRC(info->mask.src_ipv6_mask); - - wr32(hw, TXGBE_FDIRIP6MSK, ~fdiripv6m); - } + /* + * Store source and destination IPv6 masks (bit reversed) + */ + fdiripv6m = TXGBE_FDIRIP6MSK_DST(info->mask.dst_ipv6_mask) | + TXGBE_FDIRIP6MSK_SRC(info->mask.src_ipv6_mask); + wr32(hw, TXGBE_FDIRIP6MSK, ~fdiripv6m); return 0; } @@ -642,6 +639,8 @@ fdir_write_perfect_filter(struct txgbe_hw *hw, fdircmd |= TXGBE_FDIRPICMD_QP(queue); fdircmd |= TXGBE_FDIRPICMD_POOL(input->vm_pool); + if (input->flow_type & TXGBE_ATR_L3TYPE_IPV6) + fdircmd |= TXGBE_FDIRPICMD_IP6; wr32(hw, TXGBE_FDIRPICMD, fdircmd); PMD_DRV_LOG(DEBUG, "Rx Queue=%x hash=%x", queue, fdirhash); @@ -810,11 +809,6 @@ txgbe_fdir_filter_program(struct rte_eth_dev *dev, is_perfect = TRUE; if (is_perfect) { - if (rule->input.flow_type & TXGBE_ATR_L3TYPE_IPV6) { - PMD_DRV_LOG(ERR, "IPv6 is not supported in" - " perfect mode!"); - return -ENOTSUP; - } fdirhash = atr_compute_perfect_hash(&rule->input, TXGBE_DEV_FDIR_CONF(dev)->pballoc); fdirhash |= TXGBE_FDIRPIHASH_IDX(rule->soft_id); diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c index a50bdffd62..36b2e02b80 100644 --- a/drivers/net/txgbe/txgbe_flow.c +++ b/drivers/net/txgbe/txgbe_flow.c @@ -1812,12 +1812,7 @@ txgbe_parse_fdir_filter_normal(struct rte_eth_dev *dev __rte_unused, rule->input.flow_type = TXGBE_ATR_FLOW_TYPE_IPV6; rule->mask.pkt_type_mask &= ~TXGBE_ATR_TYPE_MASK_L3P; - /** - * 1. must signature match - * 2. not support last - */ - if (rule->mode != RTE_FDIR_MODE_SIGNATURE || - item->last) { + if (item->last) { memset(rule, 0, sizeof(struct txgbe_fdir_rule)); rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, -- 2.27.0