[PATCH v2 3/3] net/txgbe: fix flow create error codes

Zhang Tengfei zhtfdev at gmail.com
Wed Sep 16 15:11:05 CEST 2026


txgbe_flow_create() reports failures with rte_flow_error_set(error, -ret).
The FDIR flex offset mismatch and mask-only paths jump to that handler
with ret == 0, so the application sees a failed create and errno 0. The
global mask memcmp path stores memcmp's positive result in ret, so -ret
is negative.

Set -EINVAL on these paths.

Fixes: 5c2352b9ece6 ("net/txgbe: support creating consistent filter")
Cc: stable at dpdk.org

Signed-off-by: Zhang Tengfei <zhtfdev at gmail.com>
---
 drivers/net/txgbe/txgbe_flow.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/txgbe/txgbe_flow.c b/drivers/net/txgbe/txgbe_flow.c
index a1a497fa22..084b1eec1d 100644
--- a/drivers/net/txgbe/txgbe_flow.c
+++ b/drivers/net/txgbe/txgbe_flow.c
@@ -3388,12 +3388,12 @@ txgbe_flow_create(struct rte_eth_dev *dev,
 				 * Only support one global mask,
 				 * all the masks should be the same.
 				 */
-				ret = memcmp(&fdir_info->mask,
+				if (memcmp(&fdir_info->mask,
 					&fdir_rule.mask,
-					sizeof(struct txgbe_hw_fdir_mask));
-				if (ret) {
+					sizeof(struct txgbe_hw_fdir_mask)) != 0) {
 					PMD_DRV_LOG(ERR, "only support one global mask");
 					rte_free(fdir_rule_ptr);
+					ret = -EINVAL;
 					goto out;
 				}
 
@@ -3402,6 +3402,7 @@ txgbe_flow_create(struct rte_eth_dev *dev,
 				    fdir_info->flex_relative !=
 				    fdir_rule.flex_relative) {
 					rte_free(fdir_rule_ptr);
+					ret = -EINVAL;
 					goto out;
 				}
 			}
@@ -3431,6 +3432,7 @@ txgbe_flow_create(struct rte_eth_dev *dev,
 		}
 
 		rte_free(fdir_rule_ptr);
+		ret = -EINVAL;
 		goto out;
 	}
 
-- 
2.53.0



More information about the stable mailing list