• Oleksij Rempel's avatar
    net: dsa: microchip: ksz8863_smi: fix bulk access · 392ff7a8
    Oleksij Rempel authored
    Current regmap bulk access is broken, resulting to wrong reads/writes
    if ksz_read64/ksz_write64 functions are used.
    Mostly this issue was visible by using ksz8_fdb_dump(), which returned
    corrupt MAC address.
    
    The reason is that regmap was configured to have max_raw_read/write,
    even if ksz8863_mdio_read/write functions are able to handle unlimited
    read/write accesses. On ksz_read64 function we are using multiple 32bit
    accesses by incrementing each access by 1 instead of 4. Resulting buffer
    had 01234567.12345678 instead of 01234567.89abcdef.
    
    We have multiple ways to fix it:
    - enable 4 byte alignment for 32bit accesses. Since the HW do not have
      this requirement. It will break driver.
    - disable max_raw_* limit.
    
    This patch is removing max_raw_* limit for regmap accesses in ksz8863_smi.
    
    Fixes: 60a36476 ("net: dsa: microchip: Add Microchip KSZ8863 SMI based driver support")
    Signed-off-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
    Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    392ff7a8
ksz8863_smi.c 4.51 KB