From nobody Wed Sep 16 14:12:45 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hlLSZ0Xmpz6rX9w for ; Wed, 16 Sep 2026 14:12:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hlLSY6Jkwz3Lck for ; Wed, 16 Sep 2026 14:12:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789567965; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=l5d6t96rnraKGEOm4trEbjN1YYnFYBR/FODKO0l6T64=; b=v0jFTeXTGguVorDtCgV5nCjqUZD+dcM+9FQiAM5ee0Ih+o9ks0qpwhitWh/V2mLmZYoX48 MyBm9TsYNyNUg5yTlSoe7IF/IsP5kqwSKjhWrEJfZlfIjRl9cxNaD2f6KjqEbnEkgAob09 eBYpLIRPla21ydle3bIbsg9khf2pS3D8D7Y9rn87SC76sGneSK76iN07rYW9bcbhdo3X58 cIb3GpDaaHKxssSRTlsZc1aan5mJt8Cw/9wlOn97il1gHwJAZfiP7ZhhUh40eafwmY6qoX kHZqmD0zumyrahmYm6D2jQ+dcKgFhEqP+yYAb6S4ysd8BTvUc3sunRymSKK77Q== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1789567965; b=jOUnE+RkvKHkhDydG2VoiJCIbNcHJ4kGCF4Q35vfYBBXt7cZmopVTwGHPUNxBhgdOsXdfP mt4gkyPAaZzbJ9Bn1AeifTYYJ2QxjqdWaEf0XqKzsiuSziOXy5KrZHf8eq44fHkaYUlTJE nTTAUxNgMSXsoncO03rXwtFlo9EJfMzxGPBR2/AEMkqPOn0Fw5jOHp1iuA8IGwdN9BWSjD yg1I1dw23Q9/3/0DIE3Q93Qgq5zD6A7hyZ5mC52oJC1GwhqhjY9WEEDyKpix0GzWmWAgmd ms+2DRRlT7OwwCF0yjwtc2m+kHG1sprG356FTI7iDOpuiUO4JVuWgZTUPoPJ+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789567965; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=l5d6t96rnraKGEOm4trEbjN1YYnFYBR/FODKO0l6T64=; b=c79+4nlC8Y4BEYT24Q92Ht+cDmB1BuNzmwHwuxC/7pCSY/0siSC3/T36U4Db4sAlZFX25G dZ/vYe8XIlRZxA30ioRgG+hkp11EEcDECaKEJwnj3MAHsqKe/RMGYp0tuU51o6APARcwFM decVcZWlvP0/Zy1O0pd9tk4N8sc105tJQloGip/MuOjwe78gR3ydjDgR3IT5gODDy9OO5g 38fDkeMFBbqG9DKwh6yGJVXmZr/t0+VGfe00/7Kk4cSk0pE+5q8dhyM7yjeJB0OcSRQWG2 EUcW6pBTgWFBTjWJFr9zZ3zz+qYDIDj/vmkvebcsGn5QhcnXV4NHbA9615WNZg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hlLSY5Nm4zr0L for ; Wed, 16 Sep 2026 14:12:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3791d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Wed, 16 Sep 2026 14:12:45 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Vag Singh From: Konstantin Belousov Subject: git: f8001dd9c873 - main - mlx5ib: Add drop flow steering rule support List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f8001dd9c873429dece0bbdda376b5cfe55a3873 Auto-Submitted: auto-generated Date: Wed, 16 Sep 2026 14:12:45 +0000 Message-Id: <6aaaa3dd.3791d.2a4ad79f@gitrepo.freebsd.org> The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=f8001dd9c873429dece0bbdda376b5cfe55a3873 commit f8001dd9c873429dece0bbdda376b5cfe55a3873 Author: Vag Singh AuthorDate: 2025-08-14 05:35:44 +0000 Commit: Konstantin Belousov CommitDate: 2026-09-16 14:12:07 +0000 mlx5ib: Add drop flow steering rule support [PATCH 07/31] FreeBSD OFED support for DPDK MLX5 PMD A drop rule is described by an action drop and no destination. If a user specified IB_FLOW_SPEC_ACTION_DROP then set the action to MLX5_FLOW_CONTEXT_ACTION_DROP and clear the destination. Differential revision: https://reviews.freebsd.org/D32181 MFC after: 1 month --- sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c b/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c index 92ccb348427f..462306465a8e 100644 --- a/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c +++ b/sys/dev/mlx5/mlx5_ib/mlx5_ib_main.c @@ -1878,6 +1878,7 @@ static void set_tos(void *outer_c, void *outer_v, u8 mask, u8 val) #define LAST_IPV4_FIELD tos #define LAST_IPV6_FIELD traffic_class #define LAST_TCP_UDP_FIELD src_port +#define LAST_DROP_FIELD size /* Field is the last supported field */ #define FIELDS_NOT_SUPPORTED(filter, field)\ @@ -1888,7 +1889,7 @@ static void set_tos(void *outer_c, void *outer_v, u8 mask, u8 val) sizeof(filter.field)) static int parse_flow_attr(u32 *match_c, u32 *match_v, - const union ib_flow_spec *ib_spec) + const union ib_flow_spec *ib_spec, bool *is_drop) { void *outer_headers_c = MLX5_ADDR_OF(fte_match_param, match_c, outer_headers); @@ -2061,6 +2062,12 @@ static int parse_flow_attr(u32 *match_c, u32 *match_v, MLX5_SET(fte_match_set_lyr_2_4, outer_headers_v, udp_dport, ntohs(ib_spec->tcp_udp.val.dst_port)); break; + case IB_FLOW_SPEC_ACTION_DROP: + if (FIELDS_NOT_SUPPORTED(ib_spec->drop, + LAST_DROP_FIELD)) + return -EOPNOTSUPP; + *is_drop = true; + break; default: return -EINVAL; } @@ -2246,7 +2253,7 @@ static struct mlx5_ib_flow_handler *create_flow_rule(struct mlx5_ib_dev *dev, const void *ib_flow = (const void *)flow_attr + sizeof(*flow_attr); unsigned int spec_index; struct mlx5_flow_act flow_act = {}; - + bool is_drop; u32 action; int err = 0; @@ -2267,7 +2274,7 @@ static struct mlx5_ib_flow_handler *create_flow_rule(struct mlx5_ib_dev *dev, for (spec_index = 0; spec_index < flow_attr->num_of_specs; spec_index++) { err = parse_flow_attr(spec->match_criteria, - spec->match_value, ib_flow); + spec->match_value, ib_flow, &is_drop); if (err < 0) goto free; @@ -2275,7 +2282,10 @@ static struct mlx5_ib_flow_handler *create_flow_rule(struct mlx5_ib_dev *dev, } spec->match_criteria_enable = get_match_criteria_enable(spec->match_criteria); - action = dst ? MLX5_FLOW_CONTEXT_ACTION_FWD_DEST : 0; + if (is_drop) + action = MLX5_FLOW_CONTEXT_ACTION_DROP; + else + action = dst ? MLX5_FLOW_CONTEXT_ACTION_FWD_DEST : 0; flow_act.action = action; handler->rule = mlx5_add_flow_rules(ft, spec, &flow_act, dst, 1);