lk_data
static int a5psw_lk_execute_lookup(struct a5psw *a5psw, union lk_data *lk_data,
a5psw_reg_writel(a5psw, A5PSW_LK_DATA_LO, lk_data->lo);
a5psw_reg_writel(a5psw, A5PSW_LK_DATA_HI, lk_data->hi);
union lk_data lk_data = {0};
ether_addr_copy(lk_data.entry.mac, addr);
lk_data.entry.port_mask = BIT(port);
ret = a5psw_lk_execute_lookup(a5psw, &lk_data, &entry);
lk_data.hi = a5psw_reg_readl(a5psw, A5PSW_LK_DATA_HI);
if (!lk_data.entry.valid) {
lk_data.entry.port_mask = 0;
lk_data.entry.prio = 0;
lk_data.entry.port_mask |= BIT(port);
lk_data.entry.is_static = 1;
lk_data.entry.valid = 1;
a5psw_reg_writel(a5psw, A5PSW_LK_DATA_HI, lk_data.hi);
union lk_data lk_data = {0};
ether_addr_copy(lk_data.entry.mac, addr);
ret = a5psw_lk_execute_lookup(a5psw, &lk_data, &entry);
lk_data.hi = a5psw_reg_readl(a5psw, A5PSW_LK_DATA_HI);
if (!lk_data.entry.valid)
lk_data.entry.port_mask &= ~BIT(port);
if (lk_data.entry.port_mask == 0)
a5psw_reg_writel(a5psw, A5PSW_LK_DATA_HI, lk_data.hi);
union lk_data lk_data;
lk_data.hi = a5psw_reg_readl(a5psw, A5PSW_LK_DATA_HI);
if (!lk_data.entry.valid ||
!(lk_data.entry.port_mask & BIT(port)))
lk_data.lo = a5psw_reg_readl(a5psw, A5PSW_LK_DATA_LO);
ret = cb(lk_data.entry.mac, 0, lk_data.entry.is_static, data);