• Vladimir Oltean's avatar
    net: dsa: provide switch operations for tracking the master state · 295ab96f
    Vladimir Oltean authored
    Certain drivers may need to send management traffic to the switch for
    things like register access, FDB dump, etc, to accelerate what their
    slow bus (SPI, I2C, MDIO) can already do.
    
    Ethernet is faster (especially in bulk transactions) but is also more
    unreliable, since the user may decide to bring the DSA master down (or
    not bring it up), therefore severing the link between the host and the
    attached switch.
    
    Drivers needing Ethernet-based register access already should have
    fallback logic to the slow bus if the Ethernet method fails, but that
    fallback may be based on a timeout, and the I/O to the switch may slow
    down to a halt if the master is down, because every Ethernet packet will
    have to time out. The driver also doesn't have the option to turn off
    Ethernet-based I/O momentarily, because it wouldn't know when to turn it
    back on.
    
    Which is where this change comes in. By tracking NETDEV_CHANGE,
    NETDEV_UP and NETDEV_GOING_DOWN events on the DSA master, we should know
    the exact interval of time during which this interface is reliably
    available for traffic. Provide this information to switches so they can
    use it as they wish.
    
    An helper is added dsa_port_master_is_operational() to check if a master
    port is operational.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarAnsuel Smith <ansuelsmth@gmail.com>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    295ab96f
switch.c 19.4 KB