Lines Matching defs:addr_cam

137 static int rtw89_cam_get_addr_cam_key_idx(struct rtw89_addr_cam_entry *addr_cam,
149 switch (addr_cam->sec_ent_mode) {
153 idx = find_first_zero_bit(addr_cam->sec_cam_map,
161 idx = find_next_zero_bit(addr_cam->sec_cam_map,
170 idx = find_next_zero_bit(addr_cam->sec_cam_map,
179 idx = find_next_zero_bit(addr_cam->sec_cam_map,
187 if (test_bit(6, addr_cam->sec_cam_map))
194 idx = find_next_zero_bit(addr_cam->sec_cam_map,
203 idx = find_next_zero_bit(addr_cam->sec_cam_map,
220 struct rtw89_addr_cam_entry *addr_cam;
224 addr_cam = rtw89_get_addr_cam_of(rtwvif_link, rtwsta_link);
226 for_each_set_bit(i, addr_cam->sec_cam_map, RTW89_SEC_CAM_IN_ADDR_CAM) {
227 if (addr_cam->sec_ent[i] != sec_cam->sec_cam_idx)
230 clear_bit(i, addr_cam->sec_cam_map);
252 struct rtw89_addr_cam_entry *addr_cam;
256 addr_cam = rtw89_get_addr_cam_of(rtwvif_link, rtwsta_link);
260 addr_cam->sec_ent_mode = RTW89_ADDR_CAM_SEC_ALL_UNI;
262 ret = rtw89_cam_get_addr_cam_key_idx(addr_cam, sec_cam, key, &key_idx);
265 addr_cam->sec_ent_mode, sec_cam->type);
269 addr_cam->sec_ent_keyid[key_idx] = key->keyidx;
270 addr_cam->sec_ent[key_idx] = sec_cam->sec_cam_idx;
271 set_bit(key_idx, addr_cam->sec_cam_map);
282 clear_bit(key_idx, addr_cam->sec_cam_map);
565 struct rtw89_addr_cam_entry *addr_cam)
569 addr_cam->valid = false;
570 clear_bit(addr_cam->addr_cam_idx, cam_info->addr_cam_map);
584 struct rtw89_addr_cam_entry *addr_cam = &rtwvif_link->addr_cam;
587 rtw89_cam_deinit_addr_cam(rtwdev, addr_cam);
632 struct rtw89_addr_cam_entry *addr_cam,
639 if (unlikely(addr_cam->valid)) {
651 addr_cam->addr_cam_idx = addr_cam_idx;
652 addr_cam->len = rtw89_get_addr_cam_entry_size(rtwdev);
653 addr_cam->offset = 0;
654 addr_cam->valid = true;
655 addr_cam->addr_mask = 0;
656 addr_cam->mask_sel = RTW89_NO_MSK;
657 addr_cam->sec_ent_mode = RTW89_ADDR_CAM_SEC_NORMAL;
658 bitmap_zero(addr_cam->sec_cam_map, RTW89_SEC_CAM_IN_ADDR_CAM);
661 addr_cam->sec_ent_keyid[i] = 0;
662 addr_cam->sec_ent[i] = 0;
666 addr_cam->bssid_cam_idx = bssid_cam->bssid_cam_idx;
728 struct rtw89_addr_cam_entry *addr_cam = &rtwvif_link->addr_cam;
739 ret = rtw89_cam_init_addr_cam(rtwdev, addr_cam, bssid_cam);
806 struct rtw89_addr_cam_entry *addr_cam =
825 if (addr_cam->addr_mask != 0) {
826 addr_msk_start = __ffs(addr_cam->addr_mask);
827 if (addr_cam->mask_sel == RTW89_SMA)
829 else if (addr_cam->mask_sel == RTW89_TMA)
835 FWCMD_SET_ADDR_IDX(cmd, addr_cam->addr_cam_idx);
836 FWCMD_SET_ADDR_OFFSET(cmd, addr_cam->offset);
837 FWCMD_SET_ADDR_LEN(cmd, addr_cam->len);
839 FWCMD_SET_ADDR_VALID(cmd, addr_cam->valid);
844 FWCMD_SET_ADDR_ADDR_MASK(cmd, addr_cam->addr_mask);
845 FWCMD_SET_ADDR_MASK_SEL(cmd, addr_cam->mask_sel);
849 FWCMD_SET_ADDR_BSSID_CAM_IDX(cmd, addr_cam->bssid_cam_idx);
880 FWCMD_SET_ADDR_WAPI(cmd, addr_cam->wapi);
881 FWCMD_SET_ADDR_SEC_ENT_MODE(cmd, addr_cam->sec_ent_mode);
882 FWCMD_SET_ADDR_SEC_ENT0_KEYID(cmd, addr_cam->sec_ent_keyid[0]);
883 FWCMD_SET_ADDR_SEC_ENT1_KEYID(cmd, addr_cam->sec_ent_keyid[1]);
884 FWCMD_SET_ADDR_SEC_ENT2_KEYID(cmd, addr_cam->sec_ent_keyid[2]);
885 FWCMD_SET_ADDR_SEC_ENT3_KEYID(cmd, addr_cam->sec_ent_keyid[3]);
886 FWCMD_SET_ADDR_SEC_ENT4_KEYID(cmd, addr_cam->sec_ent_keyid[4]);
887 FWCMD_SET_ADDR_SEC_ENT5_KEYID(cmd, addr_cam->sec_ent_keyid[5]);
888 FWCMD_SET_ADDR_SEC_ENT6_KEYID(cmd, addr_cam->sec_ent_keyid[6]);
890 FWCMD_SET_ADDR_SEC_ENT_VALID(cmd, addr_cam->sec_cam_map[0] & 0xff);
891 FWCMD_SET_ADDR_SEC_ENT0(cmd, addr_cam->sec_ent[0]);
892 FWCMD_SET_ADDR_SEC_ENT1(cmd, addr_cam->sec_ent[1]);
893 FWCMD_SET_ADDR_SEC_ENT2(cmd, addr_cam->sec_ent[2]);
894 FWCMD_SET_ADDR_SEC_ENT3(cmd, addr_cam->sec_ent[3]);
895 FWCMD_SET_ADDR_SEC_ENT4(cmd, addr_cam->sec_ent[4]);
896 FWCMD_SET_ADDR_SEC_ENT5(cmd, addr_cam->sec_ent[5]);
897 FWCMD_SET_ADDR_SEC_ENT6(cmd, addr_cam->sec_ent[6]);
907 struct rtw89_addr_cam_entry *addr_cam =
917 h2c->w4 = le32_encode_bits(addr_cam->sec_ent_keyid[0],
919 le32_encode_bits(addr_cam->sec_ent_keyid[1],
921 le32_encode_bits(addr_cam->sec_ent_keyid[2],
923 le32_encode_bits(addr_cam->sec_ent_keyid[3],
925 le32_encode_bits(addr_cam->sec_ent_keyid[4],
927 le32_encode_bits(addr_cam->sec_ent_keyid[5],
929 le32_encode_bits(addr_cam->sec_ent_keyid[6],
939 h2c->w5 = le32_encode_bits(addr_cam->sec_cam_map[0] & 0xff,
941 le32_encode_bits(addr_cam->sec_ent[0],
943 le32_encode_bits(addr_cam->sec_ent[1],
945 le32_encode_bits(addr_cam->sec_ent[2],
952 h2c->w6 = le32_encode_bits(addr_cam->sec_ent[3],
954 le32_encode_bits(addr_cam->sec_ent[4],
956 le32_encode_bits(addr_cam->sec_ent[5],
958 le32_encode_bits(addr_cam->sec_ent[6],
991 struct rtw89_addr_cam_entry *addr_cam =
1006 h2c->w4 = le32_encode_bits(addr_cam->sec_ent_keyid[0],
1008 le32_encode_bits(addr_cam->sec_ent_keyid[1],
1010 le32_encode_bits(addr_cam->sec_ent_keyid[2],
1012 le32_encode_bits(addr_cam->sec_ent_keyid[3],
1014 le32_encode_bits(addr_cam->sec_ent_keyid[4],
1016 le32_encode_bits(addr_cam->sec_ent_keyid[5],
1018 le32_encode_bits(addr_cam->sec_ent_keyid[6],
1028 h2c->w5 = le32_encode_bits(addr_cam->sec_cam_map[0],
1030 le32_encode_bits(addr_cam->sec_ent[0],
1035 h2c->w6 = le32_encode_bits(addr_cam->sec_ent[1],
1037 le32_encode_bits(addr_cam->sec_ent[2],
1039 le32_encode_bits(addr_cam->sec_ent[3],
1041 le32_encode_bits(addr_cam->sec_ent[4],
1048 h2c->w7 = le32_encode_bits(addr_cam->sec_ent[5],
1050 le32_encode_bits(addr_cam->sec_ent[6],