Hello,
Currently, in the mlx5 driver, XOFF thresholds are dynamically configured solely based on cable length. This approach is increasingly inapplicable in high-speed AI networking scenarios. Especially in GPU Direct RDMA deployments, larger headroom values and wider XOFF-XON hysteresis ranges are necessary to mitigate traffic jitter smoothly. Accordingly, the driver needs to expose dedicated interfaces for direct manual configuration of XOFF and XON parameters.
/* xoff = ((301+2.16 * len [m]) * speed [Gbps] + 2.72 MTU [B])
* minimum speed value is 40Gbps
*/
static u32 calculate_xoff(struct mlx5e_priv *priv, unsigned int mtu)
{
u32 speed; u32 xoff; int err; err = mlx5e_port_linkspeed(priv->mdev, &speed); if (err) speed = SPEED_40000; speed = max_t(u32, speed, SPEED_40000); xoff = (301 + 216 \* priv->dcbx.cable_len / 100) \* speed / 1000 + 272 \* mtu / 100; netdev_dbg(priv->netdev, "%s: xoff=%d\\n", \__func_\_, xoff); return xoff;}