Re: [PATCH 2/2] net:ethernet:enic: map ethtool link modes by VIC type
From: Andrew Lunn
Date: Sat Feb 21 2026 - 14:49:25 EST
> + switch (sub_dev_id) {
> + case PCI_SUBDEV_ID_CISCO_VIC_1225:
> + case PCI_SUBDEV_ID_CISCO_VIC_1227:
> + ethtool_link_ksettings_add_link_mode(ecmd, supported,
> + 10000baseSR_Full);
> + ethtool_link_ksettings_add_link_mode(ecmd, advertising,
> + 10000baseSR_Full);
Do these ports support autoneg? Is it really advertising a single link
mode to the link partner for the negotiation process?
> static int enic_get_ksettings(struct net_device *netdev,
> struct ethtool_link_ksettings *ecmd)
> {
> struct enic *enic = netdev_priv(netdev);
> struct ethtool_link_settings *base = &ecmd->base;
>
> - ethtool_link_ksettings_add_link_mode(ecmd, supported,
> - 10000baseT_Full);
> - ethtool_link_ksettings_add_link_mode(ecmd, supported, FIBRE);
> - ethtool_link_ksettings_add_link_mode(ecmd, advertising,
> - 10000baseT_Full);
> - ethtool_link_ksettings_add_link_mode(ecmd, advertising, FIBRE);
> - base->port = PORT_FIBRE;
> + enic_get_supp_adv_media_type(netdev, ecmd);
>
> if (netif_carrier_ok(netdev)) {
> base->speed = vnic_dev_port_speed(enic->vdev);
Ah, if you look at the rest of enic_get_ksettings() you see:
base->autoneg = AUTONEG_DISABLE;
So this hardware does not support autoneg. So all these advertising
values are pointless.
Andrew