On Tue, 3 Nov 2026 11:04:39 +0000
Dariusz Sosnowski <[email protected]> wrote:

> > -----Original Message-----
> > From: Stephen Hemminger <[email protected]>
> > Sent: Monday, November 2, 2026 9:08 AM
> > To: Dariusz Sosnowski <[email protected]>
> > Cc: Slava Ovsiienko <[email protected]>; Bing Zhao
> > <[email protected]>; Ori Kam <[email protected]>; Suanming Mou
> > <[email protected]>; Matan Azrad <[email protected]>;
> > [email protected]
> > Subject: Re: [PATCH v2 0/2] net/mlx5: improvements to link status handling
> > 
> > On Fri, 30 Oct 2026 18:28:41 +0100
> > Dariusz Sosnowski <[email protected]> wrote:
> >   
> > > This series is a result of splitting patch:
> > > https://patches.dpdk.org/project/dpdk/patch/20261026160400.1290443-1-  
> > d  
> > > [email protected]/
> > >
> > > Patch 1 - Fix for mlx5 link update function to query current link
> > > carrier status, bypassing the delay introduced by linkwatch in Linux 
> > > kernel.
> > >
> > > Patch 2 - Move to link status polling, in place of relying on netlink
> > > events which can be delayed by linkwatch for up to 1s.  
> > 
> > Instead of polling is there a way to get the lsc directly from devx or ibv 
> > on
> > mlx5? That would work around the issue and avoid the overhead.  
> 
> From DevX, unfortunately no.
> 
> In ibv there are 2 options:
> 
> - IBV_EVENT_PORT_ACTIVE/ERR - generated on up/down respectively;
>   On ethernet devices, these are generated from netdev carrier state, so they 
> are
>   subjected to the same linkwatch delay.
> 
> - IBV_EVENT_DEVICE_SPEED_CHANGE - generated on up and down;
>   Is generated immediately on FW event reception.
>   It is available from Linux kernel v7.0 and rdma-core v62.0.
> 
> IBV_EVENT_DEVICE_SPEED_CHANGE would be ideal here,
> but there's no good way to discover whether currently running kernel supports 
> it.
> 
> Theoretically, this event was added alongside ibv_query_port_speed() IB verb.
> Following logic could be implemented (for DPDK compiled with recent rdma-core)
> 
> - Call ibv_query_port_speed()
> - If error:
>     - start listening on device speed change async event
>     - on event: query link status of DPDK ports on that device
> - else if ENOTSUP:
>     - start link status poll loop
> 
> > 
> > Long term, it would be good if kernel had sysctl to set linkwatch per 
> > interface
> > but it doesn't  

I have a patch to allow link watch timeout to be set via netlink or sysfs.
But needs more testing. In future, mlx5 could detect and configure that.

Reply via email to