• Rohan G Thomas's avatar
    net: stmmac: xgmac: Fix L3L4 filter count · 47448ff2
    Rohan G Thomas authored
    Get the exact count of L3L4 filters when the L3L4FNUM field of
    HW_FEATURE1 register is >= 8. If L3L4FNUM < 8, then the number of L3L4
    filters supported by XGMAC is equal to L3L4FNUM. From L3L4FNUM >= 8
    the number of L3L4 filters goes on like 8, 16, 32, ... Current
    maximum of L3L4FNUM = 10.
    
    Also, fix the XGMAC_IDDR bitmask of L3L4_ADDR_CTRL register. IDDR
    field starts from the 8th bit of the L3L4_ADDR_CTRL register. IDDR[3:0]
    indicates the type of L3L4 filter register while IDDR[8:4] indicates
    the filter number (0 to 31). So overall 9 bits are used for IDDR
    (i.e. L3L4_ADDR_CTRL[16:8]) to address the registers of all the
    filters. Currently, XGMAC_IDDR is GENMASK(15,8), causing issues
    accessing L3L4 filters above 15 for those XGMACs configured with more
    than 16 L3L4 filters.
    Signed-off-by: default avatarRohan G Thomas <rohan.g.thomas@intel.com>
    Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    47448ff2
dwxgmac2_dma.c 16.6 KB