On 11/09/2016 06:07 PM, Florian Fainelli wrote:
> On 11/09/2016 05:24 AM, Sebastian Frias wrote:
>> Hi,
>>
>> Documentation/networking/phy.txt discusses phy_connect and states that:
>>
>>  "...
>>
>>  interface is a u32 which specifies the connection type used
>>  between the controller and the PHY.  Examples are GMII, MII,
>>  RGMII, and SGMII.  For a full list, see include/linux/phy.h
>>
>>  Now just make sure that phydev->supported and phydev->advertising have any
>>  values pruned from them which don't make sense for your controller (a 10/100
>>  controller may be connected to a gigabit capable PHY, so you would need to
>>  mask off SUPPORTED_1000baseT*).  See include/linux/ethtool.h for definitions
>>  for these bitfields. Note that you should not SET any bits, or the PHY may
>>  get put into an unsupported state.
>>
>>  ..."
>>
>> However, 'drivers/net/ethernet/aurora/nb8800.c' for example, does SETs some
>> bits (in function 'nb8800_pause_adv').
> 
> All pause/flow control related bits should be set by the Ethernet MAC
> driver because this is an Ethernet MAC, not PHY, thing. See this
> discussion for some details:
> 
> https://www.mail-archive.com/netdev@vger.kernel.org/msg135347.html
> 
> So the nb8800 drivers does the correct thing here, but the documentation
> should be updated to reflect that this applies to all bits, except the
> Pause capabilities because these need to come from the Ethernet MAC.
> 

Ok, thanks.

>>
>> I checked 'drivers/net/ethernet/broadcom/genet/bcmmii.c' and that one CLEARs
>> bits (as per the documentation).
>>
>> Does anybody knows what is the correct/recommended approach?
> 
> Both drivers do correct things, they just don't set the same things here.
> 

Thanks!

Reply via email to