Skip to content
  • Vivien Didelot's avatar
    net: dsa: mv88e6xxx: fix fid_mask when leaving bridge · 40a71660
    Vivien Didelot authored
    
    
    The mv88e6xxx_priv_state structure contains an fid_mask, where 1 means
    the FID is free to use, 0 means the FID is in use.
    
    This patch fixes the bit clear in mv88e6xxx_leave_bridge() when
    assigning a new FID to a port.
    
    Example scenario: I have 7 ports, port 5 is CPU, port 6 is unused (no
    PHY). After setting the ports 0, 1 and 2 in bridge br0, and ports 3 and
    4 in bridge br1, I have the following fid_mask: 0b111110010110 (0xf96).
    
    Indeed, br0 uses FID 0, and br1 uses FID 3.
    
    After setting nomaster for port 0, I get the wrong fid_mask: 0b10 (0x2).
    
    With this patch we correctly get 0b111110010100 (0xf94), meaning port 0
    uses FID 1, br0 uses FID 0, and br1 uses FID 3.
    
    Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
    Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    40a71660