Lines Matching full:mac_addr
106 struct fbnic_mac_addr *mac_addr; in fbnic_bmc_rpc_all_multi_config() local
115 mac_addr = &fbd->mac_addr[fbd->mac_addr_boundary - 1]; in fbnic_bmc_rpc_all_multi_config()
117 if (mac_addr->state != FBNIC_TCAM_S_VALID) { in fbnic_bmc_rpc_all_multi_config()
118 eth_zero_addr(mac_addr->value.addr8); in fbnic_bmc_rpc_all_multi_config()
119 eth_broadcast_addr(mac_addr->mask.addr8); in fbnic_bmc_rpc_all_multi_config()
120 mac_addr->value.addr8[0] ^= 1; in fbnic_bmc_rpc_all_multi_config()
121 mac_addr->mask.addr8[0] ^= 1; in fbnic_bmc_rpc_all_multi_config()
122 set_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam); in fbnic_bmc_rpc_all_multi_config()
123 mac_addr->state = FBNIC_TCAM_S_ADD; in fbnic_bmc_rpc_all_multi_config()
127 mac_addr->act_tcam); in fbnic_bmc_rpc_all_multi_config()
130 mac_addr->act_tcam); in fbnic_bmc_rpc_all_multi_config()
131 } else if (!test_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam) && in fbnic_bmc_rpc_all_multi_config()
132 !is_zero_ether_addr(mac_addr->mask.addr8) && in fbnic_bmc_rpc_all_multi_config()
133 mac_addr->state == FBNIC_TCAM_S_VALID) { in fbnic_bmc_rpc_all_multi_config()
134 clear_bit(FBNIC_MAC_ADDR_T_ALLMULTI, mac_addr->act_tcam); in fbnic_bmc_rpc_all_multi_config()
135 clear_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam); in fbnic_bmc_rpc_all_multi_config()
136 mac_addr->state = FBNIC_TCAM_S_DELETE; in fbnic_bmc_rpc_all_multi_config()
180 struct fbnic_mac_addr *mac_addr; in fbnic_bmc_rpc_init() local
196 mac_addr = __fbnic_mc_sync(fbd, bmc_mac); in fbnic_bmc_rpc_init()
198 mac_addr = &fbd->mac_addr[i++]; in fbnic_bmc_rpc_init()
200 if (!mac_addr) { in fbnic_bmc_rpc_init()
206 ether_addr_copy(mac_addr->value.addr8, bmc_mac); in fbnic_bmc_rpc_init()
207 eth_zero_addr(mac_addr->mask.addr8); in fbnic_bmc_rpc_init()
209 set_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam); in fbnic_bmc_rpc_init()
210 mac_addr->state = FBNIC_TCAM_S_ADD; in fbnic_bmc_rpc_init()
214 mac_addr = &fbd->mac_addr[FBNIC_RPC_TCAM_MACDA_BROADCAST_IDX]; in fbnic_bmc_rpc_init()
215 eth_broadcast_addr(mac_addr->value.addr8); in fbnic_bmc_rpc_init()
216 set_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam); in fbnic_bmc_rpc_init()
217 mac_addr->state = FBNIC_TCAM_S_ADD; in fbnic_bmc_rpc_init()
370 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[i]; in __fbnic_uc_sync() local
372 if (mac_addr->state == FBNIC_TCAM_S_DISABLED) { in __fbnic_uc_sync()
373 avail_addr = mac_addr; in __fbnic_uc_sync()
374 } else if (ether_addr_equal(mac_addr->value.addr8, addr)) { in __fbnic_uc_sync()
375 avail_addr = mac_addr; in __fbnic_uc_sync()
401 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[i]; in __fbnic_mc_sync() local
403 if (mac_addr->state == FBNIC_TCAM_S_DISABLED) { in __fbnic_mc_sync()
404 avail_addr = mac_addr; in __fbnic_mc_sync()
405 } else if (ether_addr_equal(mac_addr->value.addr8, addr)) { in __fbnic_mc_sync()
406 avail_addr = mac_addr; in __fbnic_mc_sync()
415 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[i]; in __fbnic_mc_sync() local
417 if (!is_zero_ether_addr(mac_addr->mask.addr8)) in __fbnic_mc_sync()
421 if (!ether_addr_equal(mac_addr->value.addr8, addr)) in __fbnic_mc_sync()
426 memcpy(avail_addr, mac_addr, sizeof(*mac_addr)); in __fbnic_mc_sync()
427 mac_addr->state = FBNIC_TCAM_S_DELETE; in __fbnic_mc_sync()
443 int __fbnic_xc_unsync(struct fbnic_mac_addr *mac_addr, unsigned int tcam_idx) in __fbnic_xc_unsync() argument
445 if (!test_and_clear_bit(tcam_idx, mac_addr->act_tcam)) in __fbnic_xc_unsync()
448 if (bitmap_empty(mac_addr->act_tcam, FBNIC_RPC_TCAM_ACT_NUM_ENTRIES)) in __fbnic_xc_unsync()
449 mac_addr->state = FBNIC_TCAM_S_DELETE; in __fbnic_xc_unsync()
463 struct fbnic_mac_addr *dest_addr = &fbd->mac_addr[dest]; in fbnic_sift_macda()
469 struct fbnic_mac_addr *src_addr = &fbd->mac_addr[src++]; in fbnic_sift_macda()
509 for (idx = ARRAY_SIZE(fbd->mac_addr); idx--;) { in fbnic_clear_macda()
510 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[idx]; in fbnic_clear_macda() local
512 if (mac_addr->state == FBNIC_TCAM_S_DISABLED) in fbnic_clear_macda()
515 if (test_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam)) { in fbnic_clear_macda()
525 if (mac_addr->state == FBNIC_TCAM_S_DELETE) { in fbnic_clear_macda()
526 memset(mac_addr, 0, sizeof(*mac_addr)); in fbnic_clear_macda()
533 mac_addr->state = FBNIC_TCAM_S_UPDATE; in fbnic_clear_macda()
538 struct fbnic_mac_addr *mac_addr) in fbnic_write_macda_entry() argument
543 mask = &mac_addr->mask.addr16[FBNIC_RPC_TCAM_MACDA_WORD_LEN - 1]; in fbnic_write_macda_entry()
544 value = &mac_addr->value.addr16[FBNIC_RPC_TCAM_MACDA_WORD_LEN - 1]; in fbnic_write_macda_entry()
560 for (idx = ARRAY_SIZE(fbd->mac_addr); idx--;) { in fbnic_write_macda()
561 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[idx]; in fbnic_write_macda() local
564 if (!(mac_addr->state & FBNIC_TCAM_S_UPDATE)) in fbnic_write_macda()
568 if (mac_addr->state == FBNIC_TCAM_S_DELETE) { in fbnic_write_macda()
571 memset(mac_addr, 0, sizeof(*mac_addr)); in fbnic_write_macda()
576 fbnic_write_macda_entry(fbd, idx, mac_addr); in fbnic_write_macda()
578 mac_addr->state = FBNIC_TCAM_S_VALID; in fbnic_write_macda()
601 struct fbnic_mac_addr *mac_addr) in fbnic_write_tce_tcam_dest() argument
606 if (is_multicast_ether_addr(mac_addr->value.addr8)) in fbnic_write_tce_tcam_dest()
617 struct fbnic_mac_addr *mac_addr) in fbnic_write_tce_tcam_entry() argument
622 mask = &mac_addr->mask.addr16[FBNIC_TCE_TCAM_WORD_LEN - 1]; in fbnic_write_tce_tcam_entry()
623 value = &mac_addr->value.addr16[FBNIC_TCE_TCAM_WORD_LEN - 1]; in fbnic_write_tce_tcam_entry()
642 for (mac_idx = ARRAY_SIZE(fbd->mac_addr); mac_idx--;) { in __fbnic_write_tce_tcam_rev()
643 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[mac_idx]; in __fbnic_write_tce_tcam_rev() local
646 if (!test_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam)) in __fbnic_write_tce_tcam_rev()
655 fbnic_write_tce_tcam_dest(fbd, tcam_idx, mac_addr); in __fbnic_write_tce_tcam_rev()
656 fbnic_write_tce_tcam_entry(fbd, tcam_idx, mac_addr); in __fbnic_write_tce_tcam_rev()
670 for (mac_idx = 0; mac_idx < ARRAY_SIZE(fbd->mac_addr); mac_idx++) { in __fbnic_write_tce_tcam()
671 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[mac_idx]; in __fbnic_write_tce_tcam() local
674 if (!test_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam)) in __fbnic_write_tce_tcam()
682 fbnic_write_tce_tcam_dest(fbd, tcam_idx, mac_addr); in __fbnic_write_tce_tcam()
683 fbnic_write_tce_tcam_entry(fbd, tcam_idx, mac_addr); in __fbnic_write_tce_tcam()