Skip to content

Commit d4aa0cc

Browse files
Tariq ToukanPaolo Abeni
authored andcommitted
net/mlx5e: Support XDP target xmit with dummy program
Save per-channel resources in default, in device and host memory. As no better API exist, make the XDP-redirect-target SQ available by loading a dummy XDP program. This improves the latency of interface up/down operations when feature is disabled. Perf numbers: NIC: Connect-X7. Setup: 248 channels, default mtu and rx/tx ring sizes. Interface up + down: Before: 2.246 secs After: 1.798 secs (-0.448 sec) Saves ~1.8 msec per channel. Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com> Reviewed-by: William Tu <witu@nvidia.com> Link: https://patch.msgid.link/1764497617-1326331-3-git-send-email-tariqt@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
1 parent 96a8395 commit d4aa0cc

File tree

1 file changed

+11
-12
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core

1 file changed

+11
-12
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2612,7 +2612,7 @@ static int mlx5e_open_queues(struct mlx5e_channel *c,
26122612
if (err)
26132613
goto err_close_icosq_cq;
26142614

2615-
if (netdev_ops->ndo_xdp_xmit) {
2615+
if (netdev_ops->ndo_xdp_xmit && c->xdp) {
26162616
c->xdpsq = mlx5e_open_xdpredirect_sq(c, params, cparam, &ccp);
26172617
if (IS_ERR(c->xdpsq)) {
26182618
err = PTR_ERR(c->xdpsq);
@@ -4415,19 +4415,18 @@ void mlx5e_set_xdp_feature(struct mlx5e_priv *priv)
44154415
{
44164416
struct mlx5e_params *params = &priv->channels.params;
44174417
struct net_device *netdev = priv->netdev;
4418-
xdp_features_t val;
4418+
xdp_features_t val = 0;
44194419

4420-
if (!netdev->netdev_ops->ndo_bpf ||
4421-
params->packet_merge.type != MLX5E_PACKET_MERGE_NONE) {
4422-
xdp_set_features_flag_locked(netdev, 0);
4423-
return;
4424-
}
4420+
if (netdev->netdev_ops->ndo_bpf &&
4421+
params->packet_merge.type == MLX5E_PACKET_MERGE_NONE)
4422+
val = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
4423+
NETDEV_XDP_ACT_XSK_ZEROCOPY |
4424+
NETDEV_XDP_ACT_RX_SG;
4425+
4426+
if (netdev->netdev_ops->ndo_xdp_xmit && params->xdp_prog)
4427+
val |= NETDEV_XDP_ACT_NDO_XMIT |
4428+
NETDEV_XDP_ACT_NDO_XMIT_SG;
44254429

4426-
val = NETDEV_XDP_ACT_BASIC | NETDEV_XDP_ACT_REDIRECT |
4427-
NETDEV_XDP_ACT_XSK_ZEROCOPY |
4428-
NETDEV_XDP_ACT_RX_SG |
4429-
NETDEV_XDP_ACT_NDO_XMIT |
4430-
NETDEV_XDP_ACT_NDO_XMIT_SG;
44314430
xdp_set_features_flag_locked(netdev, val);
44324431
}
44334432

0 commit comments

Comments
 (0)