From: Shay Drori <shayd@nvidia.com>
To: <netdev-bot+sashiko@kernel.org>, <tariqt@nvidia.com>
Cc: <andrew+netdev@lunn.ch>, <davem@davemloft.net>,
<edumazet@google.com>, <kuba@kernel.org>,
<netdev@vger.kernel.org>, <pabeni@redhat.com>,
<agoldberger@nvidia.com>, <cratiu@nvidia.com>, <gal@nvidia.com>,
<leon@kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-rdma@vger.kernel.org>, <mbloch@nvidia.com>,
<moshe@nvidia.com>, <ohartoov@nvidia.com>, <saeedm@nvidia.com>
Subject: Re: [PATCH net-next 09/13] net/mlx5: E-switch, derive manager vport from device capability
Date: Mon, 28 Sep 2026 18:13:44 +0300 [thread overview]
Message-ID: <eafbf4ff-e1e6-4cf1-b784-7adb233c7e15@nvidia.com> (raw)
In-Reply-To: <179027196200.2160803.11089100690642035873@kernel.org>
On 24/09/2026 20:46, netdev-bot+sashiko@kernel.org wrote:
> External email: Use caution opening links or attachments
>
>
> Thank you for your contribution! Sashiko AI review found 1 potential
> issue(s) to consider.
>
> Critical: 0 · High: 0 · Medium: 1 · Low: 0
>
> If you believe none of the issues are legitimate, please reply to each
> issue of Medium severity or higher and explain why the AI is wrong.
> If any of them are legitimate and you plan to respin, please let patchwork
> know by including "pw-bot: cr" as a separate line at the end of your reply
> (one such reply per series is enough).
>
> - [Medium] mlx5_eswitch_manager_vport() (include/linux/mlx5/eswitch.h)
> now returns MLX5_CAP_ESW(dev, esw_manager_vport_number) when…
>
> --
>
> net/mlx5: E-switch, derive manager vport from device capability
>
> The commit changes mlx5_eswitch_manager_vport() to return
> esw_manager_vport_number from the e-switch capability when
> esw_manager_vport_number_valid is set, so the manager vport can be a VF.
> The old ECPF/host PF mapping stays as the fallback. mlx5_esw_vports_init()
> now allocates the manager vport if it is not already in esw->vports.
>
>> diff --git a/include/linux/mlx5/eswitch.h b/include/linux/mlx5/eswitch.h
>> index a0dd162baa787..03d3620141c83 100644
>> --- a/include/linux/mlx5/eswitch.h
>> +++ b/include/linux/mlx5/eswitch.h
>> @@ -222,6 +222,9 @@ static inline bool is_mdev_switchdev_mode(struct mlx5_core_dev *dev)
>> /* The returned number is valid only when the dev is eswitch manager. */
>> static inline u16 mlx5_eswitch_manager_vport(struct mlx5_core_dev *dev)
>> {
>> + if (MLX5_CAP_ESW(dev, esw_manager_vport_number_valid))
>> + return MLX5_CAP_ESW(dev, esw_manager_vport_number);
>> +
>
> [Severity: Medium]
> Do the SW and HW steering backends agree with this new manager vport
> number?
>
> esw->manager_vport can now be a vport N that is neither ECPF nor 0. Both
> steering backends still hardcode the old rule to decide which vport is
> the manager.
>
> In steering/hws/vport.c:
>
> static bool hws_vport_is_esw_mgr_vport(struct mlx5hws_context *ctx, u16 vport)
> {
> return ctx->caps->is_ecpf ? vport == MLX5_VPORT_ECPF :
> vport == MLX5_VPORT_HOST_PF;
> }
>
> In steering/sws/dr_domain.c, dr_domain_is_esw_mgr_vport():
>
> return (caps->is_ecpf && vport == MLX5_VPORT_ECPF) ||
> (!caps->is_ecpf && vport == 0);
>
> The e-switch core passes esw->manager_vport to these backends as a
> destination or source port, with no vhca_id. Some examples:
>
> eswitch_offloads.c (slow-path miss):
> dest.vport.num = esw->manager_vport;
>
> rdma.c:
> mlx5_esw_set_spec_source_port(esw, esw->manager_vport, spec);
>
> The peer and slave miss rules in eswitch_offloads.c and en/tc/sample.c
> also use it.
>
> If firmware reports a manager vport N other than ECPF/0, it looks like
> mlx5dr_domain_get_vport_cap() and mlx5hws_vport_get_gvmi() would treat N
> as a foreign vport. They would not return the cached esw_manager_caps or
> esw_manager_gvmi. Instead they would go through dr_domain_add_vport_cap()
> or hws_vport_add_gvmi(), which query N with other_vport or other_function
> set to true. Vport 0 would also keep mapping to the local manager's
> caps/gvmi.
>
> Could this lead to failed rule creation, or to rules that resolve to the
> wrong vport context, when SMFS or HMFS steering is used on such a device?
>
> HWS already reads the capability in mlx5hws_cmd_query_caps() into
> caps->eswitch_manager_vport_number, and hws/table.c and hws/action.c use
> it. hws/vport.c does not. Should hws_vport_is_esw_mgr_vport() and
> dr_domain_is_esw_mgr_vport() be updated to use the capability-reported
> number as well?
VFs e-switch managers don't support SWS, and HWS only uses the hardcoded
manager check for source_port matching. FW doesn't support source_port
matching for a VF e-switch manager, so a VF manager always matches the
source by vport metadata (reg_c_0), and this helper is never reached for
it. HWS destination vport actions take the vport number directly,
without this lookup, and table/action defaults already use
esw_manager_vport_number. So this isn't a regression for VF e-switch
managers.
>
> The later patches in this series don't appear to touch the steering
> backends. Current firmware probably reports numbers that match the
> hardcoded mapping, so this would only show up with firmware that reports
> a VF as the e-switch manager.
>
>> return mlx5_core_is_ecpf_esw_manager(dev) ?
>> MLX5_VPORT_ECPF : MLX5_VPORT_HOST_PF;
>> }
>
> --
> Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260923103830.1183-1-tariqt%40nvidia.com
next prev parent reply other threads:[~2026-09-28 15:14 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-23 10:38 [PATCH net-next 00/13] net/mlx5: Preparations for nested E-switch Tariq Toukan
2026-09-23 10:38 ` [PATCH net-next 01/13] net/mlx5e: Assign a random MAC to any netdev with a zero MAC address Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-24 17:45 ` netdev-bot+sashiko
2026-09-23 10:38 ` [PATCH net-next 02/13] net/mlx5: E-switch, do not leave an unpaired devcom registered Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-24 17:45 ` netdev-bot+sashiko
2026-09-23 10:38 ` [PATCH net-next 03/13] net/mlx5: LAG, allocate v2p_map dynamically Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-24 17:45 ` netdev-bot+sashiko
2026-09-28 14:56 ` Shay Drori
2026-09-23 10:38 ` [PATCH net-next 04/13] net/mlx5: LAG, allocate port-indexed scratch buffers dynamically Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-24 17:45 ` netdev-bot+sashiko
2026-09-28 14:57 ` Shay Drori
2026-09-23 10:38 ` [PATCH net-next 05/13] net/mlx5: LAG, drop per-port scratch array in drop-rule setup Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-23 10:38 ` [PATCH net-next 06/13] net/mlx5: LAG, size debugfs buffers by port count Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-24 17:45 ` netdev-bot+sashiko
2026-09-23 10:38 ` [PATCH net-next 07/13] net/mlx5e: TC, anchor peer-flow reverse index on the duplicated flow Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-24 17:45 ` netdev-bot+sashiko
2026-09-23 10:38 ` [PATCH net-next 08/13] net/mlx5e: TC, track peer flows in a vhca_id xarray Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-24 17:46 ` netdev-bot+sashiko
2026-09-23 10:38 ` [PATCH net-next 09/13] net/mlx5: E-switch, derive manager vport from device capability Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-24 17:46 ` netdev-bot+sashiko
2026-09-28 15:13 ` Shay Drori [this message]
2026-09-23 10:38 ` [PATCH net-next 10/13] net/mlx5: LAG, don't print port mapping to debugfs in MPESW mode Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-23 10:38 ` [PATCH net-next 11/13] net/mlx5: LAG, drop stale esw_shared_ingress_acl gate from shared FDB Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-23 10:38 ` [PATCH net-next 12/13] net/mlx5: E-switch, correct stale VF/PF wording in esw-allowed comments Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-23 10:38 ` [PATCH net-next 13/13] net/mlx5: E-switch, disable host functions for a non PF e-switch manager Tariq Toukan
2026-09-24 10:41 ` sashiko-bot
2026-09-29 0:20 ` [PATCH net-next 00/13] net/mlx5: Preparations for nested E-switch patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=eafbf4ff-e1e6-4cf1-b784-7adb233c7e15@nvidia.com \
--to=shayd@nvidia.com \
--cc=agoldberger@nvidia.com \
--cc=andrew+netdev@lunn.ch \
--cc=cratiu@nvidia.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=gal@nvidia.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=mbloch@nvidia.com \
--cc=moshe@nvidia.com \
--cc=netdev-bot+sashiko@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=ohartoov@nvidia.com \
--cc=pabeni@redhat.com \
--cc=saeedm@nvidia.com \
--cc=tariqt@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.