[dpdk-dev] Questions about reporting auto-negotiation capability

Thomas Monjalon thomas at monjalon.net
Mon Mar 29 14:05:37 CEST 2021


29/03/2021 13:44, Huisong Li:
> 
> 在 2021/3/29 15:19, Thomas Monjalon 写道:
> > 29/03/2021 09:03, Thomas Monjalon:
> >> 29/03/2021 06:02, Huisong Li:
> >>>           'speed_capa' in struct rte_eth_dev_info is defined as follows:
> >>>
> >>> uint32_t speed_capa;  /**< Supported speeds bitmap (ETH_LINK_SPEED_). */
> >>>
> >>>
> >>>         Most PMD drivers use this field to report the speeds capability
> >>> supported by the device to the upper-layer app.
> >>>
> >>> But it seems that few NICs report their auto-negotiation capability
> >>> through this field. If NIC also uses it to report
> >>> their auto-negotiation capability through this field, and should set it
> >>> to ETH_LINK_SPEED_AUTONEG(0) based on
> >>> the definition of ETH_LINK_SPEED_xxx. In this case, it conflicts the
> >>> report of the speeds capability .
> >>>
> >>> I don't know how to correctly report the auto-negotiation capability of
> >>> the device. Thanks for your reply.
> >> ETH_LINK_SPEED_AUTONEG is not for capabilities.
> >> Anyway, if it is set, it changes nothing (0) in the bitmap.
> >> I see mlx5 is wrongly using it.
> >>
> >> speed_capa is only for enumerating speeds.
> > I see some drivers are advertising ETH_LINK_SPEED_FIXED in speed_capa
> > if the device cannot support autonegotiation.
> > Should we add a note in doxygen?
> 
> Can we use bit 0 to indicate whether the device supports auto-negotiation?
> 
> Like,
> 
> 1/ If device doesn't support auto-negotiation, set bit(0) of the 
> 'speed_capa' to 1, namely, "speed_capa |= ETH_LINK_SPEED_FIXED".

Yes I think this is what FIXED means: cannot negotiate.

> 2/ Other bits of the 'speed_capa' report all the speed capabilities 
> supported by the device regardless of the value of bit(0) .
> 
> The above behavior is similar to cxgbe, bnxt, and mlx5. In this way, 
> users can know whether the device supports auto-negotiation
> 
> based on bit(0) and detect the supported speed capabilities based on 
> other bits.
> 
> After all, this 'speed_capa' and the 'link_speeds' in "rte_eth_conf" 
> struct have different purposes.





More information about the dev mailing list