On 11/07/2016 10:30 AM, Timur Tabi wrote:

I'm still don't understand 100% how these flags really work, because I
just can't shake the feeling that they should not be set for every phy.
  If these flags are supposed to be turned on universally, then why are
they even an option?

So I've been giving this more thought. Can you tell me if the following is correct:

1) PHY drivers and/or phylib sets the SUPPORTED_Pause | SUPPORTED_AsymPause bits in phydev->supported. This indicates that the PHY supports pause frames.

2) The MAC driver checks phydev->supported before it calls phy_start(). If (SUPPORTED_Pause | SUPPORTED_AsymPause) is set, then it sets those bits in phydev->advertising if it wants to enable pause frame support.

3) When the link state changes, the MAC driver checks phydev->advertising, and if the bits are set, then it enables those features in the MAC.

--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm
Technologies, Inc.  Qualcomm Technologies, Inc. is a member of the
Code Aurora Forum, a Linux Foundation Collaborative Project.

Reply via email to