net: dsa: b53: Implement ARL add/del/dump operations
Adds support for FDB add/delete/dump using the ARL read/write logic and the ARL search logic for faster dumps. The code is made flexible enough it could support devices with a different register layout like BCM5325 and BCM5365 which have fewer number of entries or pack values into a single 64 bits register. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Este cometimento está contido em:

cometido por
David S. Miller

ascendente
0830c9802e
cometimento
1da6df85c6
@@ -226,6 +226,70 @@
|
||||
#define VTE_UNTAG_S 9
|
||||
#define VTE_UNTAG (0x1ff << 9)
|
||||
|
||||
/*************************************************************************
|
||||
* ARL I/O Registers
|
||||
*************************************************************************/
|
||||
|
||||
/* ARL Table Read/Write Register (8 bit) */
|
||||
#define B53_ARLTBL_RW_CTRL 0x00
|
||||
#define ARLTBL_RW BIT(0)
|
||||
#define ARLTBL_START_DONE BIT(7)
|
||||
|
||||
/* MAC Address Index Register (48 bit) */
|
||||
#define B53_MAC_ADDR_IDX 0x02
|
||||
|
||||
/* VLAN ID Index Register (16 bit) */
|
||||
#define B53_VLAN_ID_IDX 0x08
|
||||
|
||||
/* ARL Table MAC/VID Entry N Registers (64 bit)
|
||||
*
|
||||
* BCM5325 and BCM5365 share most definitions below
|
||||
*/
|
||||
#define B53_ARLTBL_MAC_VID_ENTRY(n) (0x10 * (n))
|
||||
#define ARLTBL_MAC_MASK 0xffffffffffff
|
||||
#define ARLTBL_VID_S 48
|
||||
#define ARLTBL_VID_MASK_25 0xff
|
||||
#define ARLTBL_VID_MASK 0xfff
|
||||
#define ARLTBL_DATA_PORT_ID_S_25 48
|
||||
#define ARLTBL_DATA_PORT_ID_MASK_25 0xf
|
||||
#define ARLTBL_AGE_25 BIT(61)
|
||||
#define ARLTBL_STATIC_25 BIT(62)
|
||||
#define ARLTBL_VALID_25 BIT(63)
|
||||
|
||||
/* ARL Table Data Entry N Registers (32 bit) */
|
||||
#define B53_ARLTBL_DATA_ENTRY(n) ((0x10 * (n)) + 0x08)
|
||||
#define ARLTBL_DATA_PORT_ID_MASK 0x1ff
|
||||
#define ARLTBL_TC(tc) ((3 & tc) << 11)
|
||||
#define ARLTBL_AGE BIT(14)
|
||||
#define ARLTBL_STATIC BIT(15)
|
||||
#define ARLTBL_VALID BIT(16)
|
||||
|
||||
/* ARL Search Control Register (8 bit) */
|
||||
#define B53_ARL_SRCH_CTL 0x50
|
||||
#define B53_ARL_SRCH_CTL_25 0x20
|
||||
#define ARL_SRCH_VLID BIT(0)
|
||||
#define ARL_SRCH_STDN BIT(7)
|
||||
|
||||
/* ARL Search Address Register (16 bit) */
|
||||
#define B53_ARL_SRCH_ADDR 0x51
|
||||
#define B53_ARL_SRCH_ADDR_25 0x22
|
||||
#define B53_ARL_SRCH_ADDR_65 0x24
|
||||
#define ARL_ADDR_MASK GENMASK(14, 0)
|
||||
|
||||
/* ARL Search MAC/VID Result (64 bit) */
|
||||
#define B53_ARL_SRCH_RSTL_0_MACVID 0x60
|
||||
|
||||
/* Single register search result on 5325 */
|
||||
#define B53_ARL_SRCH_RSTL_0_MACVID_25 0x24
|
||||
/* Single register search result on 5365 */
|
||||
#define B53_ARL_SRCH_RSTL_0_MACVID_65 0x30
|
||||
|
||||
/* ARL Search Data Result (32 bit) */
|
||||
#define B53_ARL_SRCH_RSTL_0 0x68
|
||||
|
||||
#define B53_ARL_SRCH_RSTL_MACVID(x) (B53_ARL_SRCH_RSTL_0_MACVID + ((x) * 0x10))
|
||||
#define B53_ARL_SRCH_RSTL(x) (B53_ARL_SRCH_RSTL_0 + ((x) * 0x10))
|
||||
|
||||
/*************************************************************************
|
||||
* Port VLAN Registers
|
||||
*************************************************************************/
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador