RE: [PATCH net] devlink: Expose external flag for PCI SF ports

Parav Pandit <[email protected]> Mon, 3 Aug 2026 18:21:10 +0000
Newsgroups org.kernel.vger.netdev
Message-ID <SJ0PR12MB68060E8F0C80BD00F9918798DCD52@SJ0PR12MB6806.namprd12.prod.outlook.com>

> From: Przemek Kitszel <[email protected]>
> Sent: 03 August 2026 07:20 PM
> 
> On 8/3/26 11:00, Shay Drory wrote:
> > The external flag is part of the PCI SF port attributes, but unlike the
> > PCI PF and PCI VF flavours it was never filled into the port dump, so
> > userspace could not query it directly.
> >
> > Reporting of the external flag was missed for SF ports. Hence, put
> > DEVLINK_ATTR_PORT_EXTERNAL for the PCI SF flavour as well, matching what
> > PCI PF and PCI VF ports already report.
> >
> > $ devlink port show pci/0033:01:00.0/163840
> >   pci/0033:01:00.0/163840: type eth netdev eth1 flavour pcisf controller 1 pfnum 0 sfnum 77 external true splittable false
> >
> > Fixes: a1ab3e4554b5 ("devlink: Extend SF port attributes to have external attribute")
> 
> Cited commit has neither introduced a user-observed bug nor a buggy
> feature, merely a "backend for a feature", and now you exposes it,
> making "the frontend".
> IOW: I will rather call it a next material.
>
It is indeed a user observable bug to an extent that SF port is external, but user is not able to see the same.
External attribute was exposed as devlink port 'frontend' attribute.

A script that was supposed to work for the external PF, fails to find the attribute on the SF of the external PF.

The cited patch missed to expose the attribute, which was the patch's original intent; which in my view is a bug and fixes tag.

But at the same time, one can also say, that external flag itself was not exposed...

Inclined for net because of presence of fixes tag.
Not very strong opinion though...
 
> OTOH, code is fine
> 
> > Reviewed-by: Parav Pandit <[email protected]>
> > Signed-off-by: Shay Drory <[email protected]>
> > ---
> >   net/devlink/port.c | 2 ++
> >   1 file changed, 2 insertions(+)
> >
> > diff --git a/net/devlink/port.c b/net/devlink/port.c
> > index dc82cac68e7d..1528f2d148df 100644
> > --- a/net/devlink/port.c
> > +++ b/net/devlink/port.c
> > @@ -267,6 +267,8 @@ static int devlink_nl_port_attrs_put(struct sk_buff *msg,
> >   		    nla_put_u32(msg, DEVLINK_ATTR_PORT_PCI_SF_NUMBER,
> >   				attrs->pci_sf.sf))
> >   			return -EMSGSIZE;
> > +		if (nla_put_u8(msg, DEVLINK_ATTR_PORT_EXTERNAL, attrs->pci_sf.external))
> > +			return -EMSGSIZE;
> >   		break;
> >   	case DEVLINK_PORT_FLAVOUR_PHYSICAL:
> >   	case DEVLINK_PORT_FLAVOUR_CPU: