Lines Matching defs:rtwvif
4058 struct rtw89_vif *rtwvif, u8 type)
4062 u8 mask = B_AX_PTCL_DBG_INFO_MASK_BY_PORT(rtwvif->port);
4067 reg_info = rtw89_mac_reg_by_idx(rtwdev, p->ptcl_dbg_info, rtwvif->mac_idx);
4068 reg_ctrl = rtw89_mac_reg_by_idx(rtwdev, p->ptcl_dbg, rtwvif->mac_idx);
4080 static void rtw89_mac_bcn_drop(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
4085 rtw89_write32_set(rtwdev, p->bcn_drop_all, BIT(rtwvif->port));
4086 rtw89_write32_port_mask(rtwdev, rtwvif, p->tbtt_prohib, B_AX_TBTT_SETUP_MASK, 1);
4087 rtw89_write32_port_mask(rtwdev, rtwvif, p->bcn_area, B_AX_BCN_MSK_AREA_MASK, 0);
4088 rtw89_write32_port_mask(rtwdev, rtwvif, p->tbtt_prohib, B_AX_TBTT_HOLD_MASK, 0);
4089 rtw89_write32_port_mask(rtwdev, rtwvif, p->bcn_early, B_AX_BCNERLY_MASK, 2);
4090 rtw89_write16_port_mask(rtwdev, rtwvif, p->tbtt_early, B_AX_TBTTERLY_MASK, 1);
4091 rtw89_write32_port_mask(rtwdev, rtwvif, p->bcn_space, B_AX_BCN_SPACE_MASK, 1);
4092 rtw89_write32_port_set(rtwdev, rtwvif, p->port_cfg, B_AX_BCNTX_EN);
4094 rtw89_mac_check_packet_ctrl(rtwdev, rtwvif, AX_PTCL_DBG_BCNQ_NUM0);
4095 if (rtwvif->port == RTW89_PORT_0)
4096 rtw89_mac_check_packet_ctrl(rtwdev, rtwvif, AX_PTCL_DBG_BCNQ_NUM1);
4098 rtw89_write32_clr(rtwdev, p->bcn_drop_all, BIT(rtwvif->port));
4099 rtw89_write32_port_clr(rtwdev, rtwvif, p->port_cfg, B_AX_TBTT_PROHIB_EN);
4113 struct rtw89_vif *rtwvif)
4117 struct ieee80211_vif *vif = rtwvif_to_vif(rtwvif);
4122 if (!rtw89_read32_port_mask(rtwdev, rtwvif, p->port_cfg, B_AX_PORT_FUNC_EN))
4125 if (chip->chip_id == RTL8852A && rtwvif->port != RTW89_PORT_0) {
4127 backup_val = rtw89_read32_port(rtwdev, rtwvif, p->tbtt_prohib);
4130 if (rtwvif->net_type == RTW89_NET_TYPE_AP_MODE)
4131 rtw89_mac_bcn_drop(rtwdev, rtwvif);
4134 rtw89_write32_port_clr(rtwdev, rtwvif, p->tbtt_prohib, B_AX_TBTT_SETUP_MASK);
4135 rtw89_write32_port_mask(rtwdev, rtwvif, p->tbtt_prohib, B_AX_TBTT_HOLD_MASK, 1);
4136 rtw89_write16_port_clr(rtwdev, rtwvif, p->tbtt_early, B_AX_TBTTERLY_MASK);
4137 rtw89_write16_port_clr(rtwdev, rtwvif, p->bcn_early, B_AX_BCNERLY_MASK);
4141 rtw89_write32_port_clr(rtwdev, rtwvif, p->port_cfg, B_AX_PORT_FUNC_EN |
4143 rtw89_write32_port_set(rtwdev, rtwvif, p->port_cfg, B_AX_TSFTR_RST);
4144 rtw89_write32_port(rtwdev, rtwvif, p->bcn_cnt_tmr, 0);
4147 rtw89_write32_port(rtwdev, rtwvif, p->tbtt_prohib, backup_val);
4151 struct rtw89_vif *rtwvif, bool en)
4157 rtw89_write32_port_set(rtwdev, rtwvif, p->port_cfg, B_AX_TXBCN_RPT_EN);
4159 rtw89_write32_port_clr(rtwdev, rtwvif, p->port_cfg, B_AX_TXBCN_RPT_EN);
4163 struct rtw89_vif *rtwvif, bool en)
4169 rtw89_write32_port_set(rtwdev, rtwvif, p->port_cfg, B_AX_RXBCN_RPT_EN);
4171 rtw89_write32_port_clr(rtwdev, rtwvif, p->port_cfg, B_AX_RXBCN_RPT_EN);
4175 struct rtw89_vif *rtwvif)
4180 rtw89_write32_port_mask(rtwdev, rtwvif, p->port_cfg, B_AX_NET_TYPE_MASK,
4181 rtwvif->net_type);
4185 struct rtw89_vif *rtwvif)
4189 bool en = rtwvif->net_type != RTW89_NET_TYPE_NO_LINK;
4193 rtw89_write32_port_set(rtwdev, rtwvif, p->port_cfg, bits);
4195 rtw89_write32_port_clr(rtwdev, rtwvif, p->port_cfg, bits);
4199 struct rtw89_vif *rtwvif)
4203 bool en = rtwvif->net_type == RTW89_NET_TYPE_INFRA ||
4204 rtwvif->net_type == RTW89_NET_TYPE_AD_HOC;
4208 rtw89_write32_port_set(rtwdev, rtwvif, p->port_cfg, bit);
4210 rtw89_write32_port_clr(rtwdev, rtwvif, p->port_cfg, bit);
4214 struct rtw89_vif *rtwvif, bool en)
4220 rtw89_write32_port_set(rtwdev, rtwvif, p->port_cfg, B_AX_TSF_UDT_EN);
4222 rtw89_write32_port_clr(rtwdev, rtwvif, p->port_cfg, B_AX_TSF_UDT_EN);
4226 struct rtw89_vif *rtwvif)
4228 bool en = rtwvif->net_type == RTW89_NET_TYPE_INFRA ||
4229 rtwvif->net_type == RTW89_NET_TYPE_AD_HOC;
4231 rtw89_mac_port_cfg_rx_sync(rtwdev, rtwvif, en);
4235 struct rtw89_vif *rtwvif, bool en)
4241 rtw89_write32_port_set(rtwdev, rtwvif, p->port_cfg, B_AX_BCNTX_EN);
4243 rtw89_write32_port_clr(rtwdev, rtwvif, p->port_cfg, B_AX_BCNTX_EN);
4247 struct rtw89_vif *rtwvif)
4249 bool en = rtwvif->net_type == RTW89_NET_TYPE_AP_MODE ||
4250 rtwvif->net_type == RTW89_NET_TYPE_AD_HOC;
4252 rtw89_mac_port_cfg_tx_sw(rtwdev, rtwvif, en);
4257 struct rtw89_vif *rtwvif;
4259 rtw89_for_each_rtwvif(rtwdev, rtwvif)
4260 if (rtwvif->net_type == RTW89_NET_TYPE_AP_MODE)
4261 rtw89_mac_port_cfg_tx_sw(rtwdev, rtwvif, en);
4265 struct rtw89_vif *rtwvif)
4269 struct ieee80211_vif *vif = rtwvif_to_vif(rtwvif);
4272 rtw89_write32_port_mask(rtwdev, rtwvif, p->bcn_space, B_AX_BCN_SPACE_MASK,
4277 struct rtw89_vif *rtwvif)
4279 u8 win = rtwvif->net_type == RTW89_NET_TYPE_AP_MODE ? 16 : 0;
4282 u8 port = rtwvif->port;
4285 reg = rtw89_mac_reg_by_idx(rtwdev, p->hiq_win[port], rtwvif->mac_idx);
4290 struct rtw89_vif *rtwvif)
4294 struct ieee80211_vif *vif = rtwvif_to_vif(rtwvif);
4297 addr = rtw89_mac_reg_by_idx(rtwdev, p->md_tsft, rtwvif->mac_idx);
4300 rtw89_write16_port_mask(rtwdev, rtwvif, p->dtim_ctrl, B_AX_DTIM_NUM_MASK,
4305 struct rtw89_vif *rtwvif)
4310 rtw89_write32_port_mask(rtwdev, rtwvif, p->tbtt_prohib,
4315 struct rtw89_vif *rtwvif)
4320 rtw89_write32_port_mask(rtwdev, rtwvif, p->tbtt_prohib,
4325 struct rtw89_vif *rtwvif)
4330 rtw89_write32_port_mask(rtwdev, rtwvif, p->bcn_area,
4335 struct rtw89_vif *rtwvif)
4340 rtw89_write16_port_mask(rtwdev, rtwvif, p->tbtt_early,
4345 struct rtw89_vif *rtwvif)
4349 struct ieee80211_vif *vif = rtwvif_to_vif(rtwvif);
4355 u8 port = rtwvif->port;
4362 reg = rtw89_mac_reg_by_idx(rtwdev, reg_base, rtwvif->mac_idx);
4367 struct rtw89_vif *rtwvif)
4371 u8 port = rtwvif->port;
4374 if (rtwvif->net_type == RTW89_NET_TYPE_AP_MODE)
4378 reg = rtw89_mac_reg_by_idx(rtwdev, p->mbssid, rtwvif->mac_idx);
4384 struct rtw89_vif *rtwvif)
4388 u8 port = rtwvif->port;
4392 reg = rtw89_mac_reg_by_idx(rtwdev, p->mbssid_drop, rtwvif->mac_idx);
4401 struct rtw89_vif *rtwvif, bool enable)
4407 rtw89_write32_port_set(rtwdev, rtwvif, p->port_cfg,
4410 rtw89_write32_port_clr(rtwdev, rtwvif, p->port_cfg,
4415 struct rtw89_vif *rtwvif)
4420 rtw89_write32_port_mask(rtwdev, rtwvif, p->bcn_early, B_AX_BCNERLY_MASK,
4425 struct rtw89_vif *rtwvif)
4434 if (rtwvif->wifi_role != RTW89_WIFI_ROLE_P2P_CLIENT &&
4435 rtwvif->wifi_role != RTW89_WIFI_ROLE_STATION)
4441 rtw89_write16_port_mask(rtwdev, rtwvif, p->tbtt_shift,
4446 struct rtw89_vif *rtwvif,
4455 reg = rtw89_mac_reg_by_idx(rtwdev, p->tsf_sync + rtwvif->port * 4,
4456 rtwvif->mac_idx);
4464 struct rtw89_vif *rtwvif,
4468 if (rtwvif->net_type != RTW89_NET_TYPE_AP_MODE || rtwvif == rtwvif_src)
4473 rtw89_mac_port_tsf_sync(rtwdev, rtwvif, rtwvif_src,
4501 int rtw89_mac_vif_init(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
4505 ret = rtw89_mac_port_update(rtwdev, rtwvif);
4509 rtw89_mac_dmac_tbl_init(rtwdev, rtwvif->mac_id);
4510 rtw89_mac_cmac_tbl_init(rtwdev, rtwvif->mac_id);
4512 ret = rtw89_mac_set_macid_pause(rtwdev, rtwvif->mac_id, false);
4516 ret = rtw89_fw_h2c_role_maintain(rtwdev, rtwvif, NULL, RTW89_ROLE_CREATE);
4520 ret = rtw89_fw_h2c_join_info(rtwdev, rtwvif, NULL, true);
4524 ret = rtw89_cam_init(rtwdev, rtwvif);
4528 ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL, NULL);
4532 ret = rtw89_chip_h2c_default_cmac_tbl(rtwdev, rtwvif, NULL);
4536 ret = rtw89_chip_h2c_default_dmac_tbl(rtwdev, rtwvif, NULL);
4543 int rtw89_mac_vif_deinit(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
4547 ret = rtw89_fw_h2c_role_maintain(rtwdev, rtwvif, NULL, RTW89_ROLE_REMOVE);
4551 rtw89_cam_deinit(rtwdev, rtwvif);
4553 ret = rtw89_fw_h2c_cam(rtwdev, rtwvif, NULL, NULL);
4560 int rtw89_mac_port_update(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
4562 u8 port = rtwvif->port;
4567 rtw89_mac_port_cfg_func_sw(rtwdev, rtwvif);
4568 rtw89_mac_port_cfg_tx_rpt(rtwdev, rtwvif, false);
4569 rtw89_mac_port_cfg_rx_rpt(rtwdev, rtwvif, false);
4570 rtw89_mac_port_cfg_net_type(rtwdev, rtwvif);
4571 rtw89_mac_port_cfg_bcn_prct(rtwdev, rtwvif);
4572 rtw89_mac_port_cfg_rx_sw(rtwdev, rtwvif);
4573 rtw89_mac_port_cfg_rx_sync_by_nettype(rtwdev, rtwvif);
4574 rtw89_mac_port_cfg_tx_sw_by_nettype(rtwdev, rtwvif);
4575 rtw89_mac_port_cfg_bcn_intv(rtwdev, rtwvif);
4576 rtw89_mac_port_cfg_hiq_win(rtwdev, rtwvif);
4577 rtw89_mac_port_cfg_hiq_dtim(rtwdev, rtwvif);
4578 rtw89_mac_port_cfg_hiq_drop(rtwdev, rtwvif);
4579 rtw89_mac_port_cfg_bcn_setup_time(rtwdev, rtwvif);
4580 rtw89_mac_port_cfg_bcn_hold_time(rtwdev, rtwvif);
4581 rtw89_mac_port_cfg_bcn_mask_area(rtwdev, rtwvif);
4582 rtw89_mac_port_cfg_tbtt_early(rtwdev, rtwvif);
4583 rtw89_mac_port_cfg_tbtt_shift(rtwdev, rtwvif);
4584 rtw89_mac_port_cfg_bss_color(rtwdev, rtwvif);
4585 rtw89_mac_port_cfg_mbssid(rtwdev, rtwvif);
4586 rtw89_mac_port_cfg_func_en(rtwdev, rtwvif, true);
4589 rtw89_mac_port_cfg_bcn_early(rtwdev, rtwvif);
4594 int rtw89_mac_port_get_tsf(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif,
4602 ret = rtw89_mac_check_mac_en(rtwdev, rtwvif->mac_idx, RTW89_CMAC_SEL);
4606 tsf_low = rtw89_read32_port(rtwdev, rtwvif, p->tsftr_l);
4607 tsf_high = rtw89_read32_port(rtwdev, rtwvif, p->tsftr_h);
4635 struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
4652 rtwvif->mac_idx);
4659 void rtw89_mac_stop_ap(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
4661 rtw89_mac_port_cfg_func_sw(rtwdev, rtwvif);
4664 int rtw89_mac_add_vif(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
4668 rtwvif->mac_id = rtw89_acquire_mac_id(rtwdev);
4669 if (rtwvif->mac_id == RTW89_MAX_MAC_ID_NUM)
4672 ret = rtw89_mac_vif_init(rtwdev, rtwvif);
4679 rtw89_release_mac_id(rtwdev, rtwvif->mac_id);
4684 int rtw89_mac_remove_vif(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
4688 ret = rtw89_mac_vif_deinit(rtwdev, rtwvif);
4689 rtw89_release_mac_id(rtwdev, rtwvif->mac_id);
4713 struct rtw89_vif *rtwvif = vif_to_rtwvif_safe(vif);
4721 if (!rtwvif)
4763 if (rtwvif && rtwvif->scan_req &&
4764 last_chan < rtwvif->scan_req->n_channels) {
4777 rtw89_assign_entity_chan(rtwdev, rtwvif->sub_entity_idx,
4784 rtw89_assign_entity_chan(rtwdev, rtwvif->sub_entity_idx,
4794 rtw89_mac_bcn_fltr_rpt(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif,
4797 struct ieee80211_vif *vif = rtwvif_to_vif_safe(rtwvif);
4809 if (mac_id != rtwvif->mac_id)
4818 if (!rtwdev->scanning && !rtwvif->offchan)
4845 struct rtw89_vif *rtwvif;
4847 rtw89_for_each_rtwvif(rtwdev, rtwvif)
4848 rtw89_mac_bcn_fltr_rpt(rtwdev, rtwvif, c2h);
5926 struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
5927 u8 mac_idx = rtwvif->mac_idx;
5929 u8 port_sel = rtwvif->port;
5984 struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
5987 u8 mac_idx = rtwvif->mac_idx;
6023 struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
6028 rtw89_mac_init_bfee_ax(rtwdev, rtwvif->mac_idx);
6037 struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
6039 rtw89_mac_bfee_ctrl(rtwdev, rtwvif->mac_idx, false);
6045 struct rtw89_vif *rtwvif = (struct rtw89_vif *)vif->drv_priv;
6046 u8 mac_idx = rtwvif->mac_idx;
6113 struct rtw89_vif *rtwvif;
6125 rtw89_for_each_rtwvif(rtwdev, rtwvif)
6126 rtw89_mac_bfee_standby_timer(rtwdev, rtwvif->mac_idx,
6133 rtw89_for_each_rtwvif(rtwdev, rtwvif)
6134 rtw89_mac_bfee_ctrl(rtwdev, rtwvif->mac_idx, en);
6142 u8 mac_idx = rtwsta->rtwvif->mac_idx;
6184 u8 mac_idx = rtwsta->rtwvif->mac_idx;
6226 u8 mac_idx = rtwsta->rtwvif->mac_idx;
6247 struct rtw89_vif *rtwvif, bool en)
6250 u8 mac_idx = rtwvif->mac_idx;
6326 struct rtw89_vif *rtwvif = rtwsta->rtwvif;
6332 params.port = rtwvif->port;
6334 params.tf_trs = rtwvif->trigger;
6345 struct rtw89_vif *rtwvif = rtwsta->rtwvif;
6346 struct rtw89_dev *rtwdev = rtwvif->rtwdev;
6349 if (rtwvif != target)
6355 void rtw89_mac_pkt_drop_vif(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif)
6359 rtwvif);