• Sean Anderson's avatar
    net: phy: Add support for rate matching · 0c3e10cb
    Sean Anderson authored
    This adds support for rate matching (also known as rate adaptation) to
    the phy subsystem. The general idea is that the phy interface runs at
    one speed, and the MAC throttles the rate at which it sends packets to
    the link speed. There's a good overview of several techniques for
    achieving this at [1]. This patch adds support for three: pause-frame
    based (such as in Aquantia phys), CRS-based (such as in 10PASS-TS and
    2BASE-TL), and open-loop-based (such as in 10GBASE-W).
    
    This patch makes a few assumptions and a few non assumptions about the
    types of rate matching available. First, it assumes that different phys
    may use different forms of rate matching. Second, it assumes that phys
    can use rate matching for any of their supported link speeds (e.g. if a
    phy supports 10BASE-T and XGMII, then it can adapt XGMII to 10BASE-T).
    Third, it does not assume that all interface modes will use the same
    form of rate matching. Fourth, it does not assume that all phy devices
    will support rate matching (even if some do). Relaxing or strengthening
    these (non-)assumptions could result in a different API. For example, if
    all interface modes were assumed to use the same form of rate matching,
    then a bitmask of interface modes supportting rate matching would
    suffice.
    
    For some better visibility into the process, the current rate matching
    mode is exposed as part of the ethtool ksettings. For the moment, only
    read access is supported. I'm not sure what userspace might want to
    configure yet (disable it altogether, disable just one mode, specify the
    mode to use, etc.). For the moment, since only pause-based rate
    adaptation support is added in the next few commits, rate matching can
    be disabled altogether by adjusting the advertisement.
    
    802.3 calls this feature "rate adaptation" in clause 49 (10GBASE-R) and
    "rate matching" in clause 61 (10PASS-TL and 2BASE-TS). Aquantia also calls
    this feature "rate adaptation". I chose "rate matching" because it is
    shorter, and because Russell doesn't think "adaptation" is correct in this
    context.
    Signed-off-by: default avatarSean Anderson <sean.anderson@seco.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    0c3e10cb
phy-core.c 27.9 KB