• Ben Hutchings's avatar
    net: dsa: microchip: ksz8795: Fix PVID tag insertion · ef3b02a1
    Ben Hutchings authored
    ksz8795 has never actually enabled PVID tag insertion, and it also
    programmed the PVID incorrectly.  To fix this:
    
    * Allow tag insertion to be controlled per ingress port.  On most
      chips, set bit 2 in Global Control 19.  On KSZ88x3 this control
      flag doesn't exist.
    
    * When adding a PVID:
      - Set the appropriate register bits to enable tag insertion on
        egress at every other port if this was the packet's ingress port.
      - Mask *out* the VID from the default tag, before or-ing in the new
        PVID.
    
    * When removing a PVID:
      - Clear the same control bits to disable tag insertion.
      - Don't update the default tag.  This wasn't doing anything useful.
    
    Fixes: e66f840c ("net: dsa: ksz: Add Microchip KSZ8795 DSA driver")
    Signed-off-by: default avatarBen Hutchings <ben.hutchings@mind.be>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ef3b02a1
ksz8795.c 44.2 KB