Lines Matching defs:mac_addr

107 	struct fbnic_mac_addr *mac_addr;
116 mac_addr = &fbd->mac_addr[fbd->mac_addr_boundary - 1];
118 if (mac_addr->state != FBNIC_TCAM_S_VALID) {
119 eth_zero_addr(mac_addr->value.addr8);
120 eth_broadcast_addr(mac_addr->mask.addr8);
121 mac_addr->value.addr8[0] ^= 1;
122 mac_addr->mask.addr8[0] ^= 1;
123 set_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam);
124 mac_addr->state = FBNIC_TCAM_S_ADD;
128 mac_addr->act_tcam);
131 mac_addr->act_tcam);
132 } else if (!test_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam) &&
133 !is_zero_ether_addr(mac_addr->mask.addr8) &&
134 mac_addr->state == FBNIC_TCAM_S_VALID) {
135 clear_bit(FBNIC_MAC_ADDR_T_ALLMULTI, mac_addr->act_tcam);
136 clear_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam);
137 mac_addr->state = FBNIC_TCAM_S_DELETE;
181 struct fbnic_mac_addr *mac_addr;
197 mac_addr = __fbnic_mc_sync(fbd, bmc_mac);
199 mac_addr = &fbd->mac_addr[i++];
201 if (!mac_addr) {
207 ether_addr_copy(mac_addr->value.addr8, bmc_mac);
208 eth_zero_addr(mac_addr->mask.addr8);
210 set_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam);
211 mac_addr->state = FBNIC_TCAM_S_ADD;
215 mac_addr = &fbd->mac_addr[FBNIC_RPC_TCAM_MACDA_BROADCAST_IDX];
216 eth_broadcast_addr(mac_addr->value.addr8);
217 set_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam);
218 mac_addr->state = FBNIC_TCAM_S_ADD;
371 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[i];
373 if (mac_addr->state == FBNIC_TCAM_S_DISABLED) {
374 avail_addr = mac_addr;
375 } else if (ether_addr_equal(mac_addr->value.addr8, addr)) {
376 avail_addr = mac_addr;
402 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[i];
404 if (mac_addr->state == FBNIC_TCAM_S_DISABLED) {
405 avail_addr = mac_addr;
406 } else if (ether_addr_equal(mac_addr->value.addr8, addr)) {
407 avail_addr = mac_addr;
416 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[i];
418 if (!is_zero_ether_addr(mac_addr->mask.addr8))
422 if (!ether_addr_equal(mac_addr->value.addr8, addr))
427 memcpy(avail_addr, mac_addr, sizeof(*mac_addr));
428 mac_addr->state = FBNIC_TCAM_S_DELETE;
444 int __fbnic_xc_unsync(struct fbnic_mac_addr *mac_addr, unsigned int tcam_idx)
446 if (!test_and_clear_bit(tcam_idx, mac_addr->act_tcam))
449 if (bitmap_empty(mac_addr->act_tcam, FBNIC_RPC_TCAM_ACT_NUM_ENTRIES))
450 mac_addr->state = FBNIC_TCAM_S_DELETE;
464 struct fbnic_mac_addr *dest_addr = &fbd->mac_addr[dest];
470 struct fbnic_mac_addr *src_addr = &fbd->mac_addr[src++];
510 for (idx = ARRAY_SIZE(fbd->mac_addr); idx--;) {
511 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[idx];
513 if (mac_addr->state == FBNIC_TCAM_S_DISABLED)
516 if (test_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam)) {
526 if (mac_addr->state == FBNIC_TCAM_S_DELETE) {
527 memset(mac_addr, 0, sizeof(*mac_addr));
534 mac_addr->state = FBNIC_TCAM_S_UPDATE;
539 struct fbnic_mac_addr *mac_addr)
544 mask = &mac_addr->mask.addr16[FBNIC_RPC_TCAM_MACDA_WORD_LEN - 1];
545 value = &mac_addr->value.addr16[FBNIC_RPC_TCAM_MACDA_WORD_LEN - 1];
561 for (idx = ARRAY_SIZE(fbd->mac_addr); idx--;) {
562 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[idx];
565 if (!(mac_addr->state & FBNIC_TCAM_S_UPDATE))
569 if (mac_addr->state == FBNIC_TCAM_S_DELETE) {
572 memset(mac_addr, 0, sizeof(*mac_addr));
577 fbnic_write_macda_entry(fbd, idx, mac_addr);
579 mac_addr->state = FBNIC_TCAM_S_VALID;
602 struct fbnic_mac_addr *mac_addr)
607 if (is_multicast_ether_addr(mac_addr->value.addr8))
618 struct fbnic_mac_addr *mac_addr)
623 mask = &mac_addr->mask.addr16[FBNIC_TCE_TCAM_WORD_LEN - 1];
624 value = &mac_addr->value.addr16[FBNIC_TCE_TCAM_WORD_LEN - 1];
643 for (mac_idx = ARRAY_SIZE(fbd->mac_addr); mac_idx--;) {
644 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[mac_idx];
647 if (!test_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam))
656 fbnic_write_tce_tcam_dest(fbd, tcam_idx, mac_addr);
657 fbnic_write_tce_tcam_entry(fbd, tcam_idx, mac_addr);
671 for (mac_idx = 0; mac_idx < ARRAY_SIZE(fbd->mac_addr); mac_idx++) {
672 struct fbnic_mac_addr *mac_addr = &fbd->mac_addr[mac_idx];
675 if (!test_bit(FBNIC_MAC_ADDR_T_BMC, mac_addr->act_tcam))
683 fbnic_write_tce_tcam_dest(fbd, tcam_idx, mac_addr);
684 fbnic_write_tce_tcam_entry(fbd, tcam_idx, mac_addr);