On Tue, Aug 01, 2017 at 07:56:31PM -0500, Timur Tabi wrote: > On 8/1/17 6:15 PM, Andrew Lunn wrote: > >Pause frames are something you can auto-negotiate at the PHY > >level. Should you also be clearing some bits in the phydev, so the > >peer knows pause frames are not supported? > > When pause frame autonegotiation is enabled in the driver, that only means > that the driver looks at what the PHY has autonegotiated, and then > configures the MAC to match that. > > The driver doesn't touch the PHY at all. It leaves all that to phylib. > > Now if autonegotiation is disabled in the driver, then it just hard-codes > those TX/RX settings in the driver. Are you saying I should program the PHY > at the point to disable autonegotiation on the PHY level? If so, then I > don't know how to do that. I just assumed that the MAC never tells the PHY > what to do.
Documentation/networking/phy.txt says: Pause frames / flow control The PHY does not participate directly in flow control/pause frames except by making sure that the SUPPORTED_Pause and SUPPORTED_AsymPause bits are set in MII_ADVERTISE to indicate towards the link partner that the Ethernet MAC controller supports such a thing. Since flow control/pause frames generation involves the Ethernet MAC driver, it is recommended that this driver takes care of properly indicating advertisement and support for such features by setting the SUPPORTED_Pause and SUPPORTED_AsymPause bits accordingly. This can be done either before or after phy_connect() and/or as a result of implementing the ethtool::set_pauseparam feature. So just check if the MAC driver is setting SUPPORTED_Pause and SUPPORTED_AsymPause. Andrew