• Horatiu Vultur's avatar
    bridge: mrp: Extend br_mrp_switchdev to detect better the errors · 1a3ddb0b
    Horatiu Vultur authored
    This patch extends the br_mrp_switchdev functions to be able to have a
    better understanding what cause the issue and if the SW needs to be used
    as a backup.
    
    There are the following cases:
    - when the code is compiled without CONFIG_NET_SWITCHDEV. In this case
      return success so the SW can continue with the protocol. Depending
      on the function, it returns 0 or BR_MRP_SW.
    - when code is compiled with CONFIG_NET_SWITCHDEV and the driver doesn't
      implement any MRP callbacks. In this case the HW can't run MRP so it
      just returns -EOPNOTSUPP. So the SW will stop further to configure the
      node.
    - when code is compiled with CONFIG_NET_SWITCHDEV and the driver fully
      supports any MRP functionality. In this case the SW doesn't need to do
      anything. The functions will return 0 or BR_MRP_HW.
    - when code is compiled with CONFIG_NET_SWITCHDEV and the HW can't run
      completely the protocol but it can help the SW to run it. For
      example, the HW can't support completely MRM role(can't detect when it
      stops receiving MRP Test frames) but it can redirect these frames to
      CPU. In this case it is possible to have a SW fallback. The SW will
      try initially to call the driver with sw_backup set to false, meaning
      that the HW should implement completely the role. If the driver returns
      -EOPNOTSUPP, the SW will try again with sw_backup set to false,
      meaning that the SW will detect when it stops receiving the frames but
      it needs HW support to redirect the frames to CPU. In case the driver
      returns 0 then the SW will continue to configure the node accordingly.
    Signed-off-by: default avatarHoratiu Vultur <horatiu.vultur@microchip.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    1a3ddb0b
br_mrp_switchdev.c 5.79 KB