Skip to content
  • Lennert Buytenhek's avatar
    dsa: fix master interface allmulti/promisc handling · df02c6ff
    Lennert Buytenhek authored
    Before commit b6c40d68
    
     ("net: only
    invoke dev->change_rx_flags when device is UP"), the dsa driver could
    sort-of get away with only fiddling with the master interface's
    allmulti/promisc counts in ->change_rx_flags() and not touching them
    in ->open() or ->stop().  After this commit (note that it was merged
    almost simultaneously with the dsa patches, which is why this wasn't
    caught initially), the breakage that was already there became more
    apparent.
    
    Since it makes no sense to keep the master interface's allmulti or
    promisc count pinned for a slave interface that is down, copy the vlan
    driver's sync logic (which does exactly what we want) over to dsa to
    fix this.
    
    Bug report from Dirk Teurlings <dirk@upexia.nl> and Peter van Valderen
    <linux@ddcrew.com>.
    
    Signed-off-by: default avatarLennert Buytenhek <buytenh@marvell.com>
    Tested-by: default avatarDirk Teurlings <dirk@upexia.nl>
    Tested-by: default avatarPeter van Valderen <linux@ddcrew.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    df02c6ff