Lines Matching defs:arvif

425 	struct qwx_vif *arvif = TAILQ_FIRST(&sc->vif_list); /* XXX */
442 return qwx_mac_mgmt_tx_wmi(sc, arvif, pdev_id, ni, m);
444 return qwx_dp_tx(sc, arvif, pdev_id, ni, m);
613 qwx_wmi_install_key_cmd(struct qwx_softc *sc, struct qwx_vif *arvif,
619 .vdev_id = arvif->vdev_id,
628 lockdep_assert_held(&arvif->ar->conf_mutex);
698 struct qwx_vif *arvif = TAILQ_FIRST(&sc->vif_list); /* XXX */
715 ret = qwx_wmi_install_key_cmd(sc, arvif, ni->ni_macaddr, k, flags, 0);
722 ret = qwx_dp_peer_rx_pn_replay_config(sc, arvif, ni, k, 0);
749 struct qwx_vif *arvif = TAILQ_FIRST(&sc->vif_list); /* XXX */
752 ret = qwx_wmi_install_key_cmd(sc, arvif, ni->ni_macaddr, k, 0, 1);
759 ret = qwx_dp_peer_rx_pn_replay_config(sc, arvif, ni, k, 1);
12783 struct qwx_vif *arvif;
12793 TAILQ_FOREACH(arvif, &sc->vif_list, entry) {
12794 if (arvif->vdev_id == scan_ev.vdev_id)
12798 if (!arvif) {
12892 struct qwx_vif *arvif;
12921 TAILQ_FOREACH(arvif, &sc->vif_list, entry) {
12922 if (arvif->vdev_id == ch_info_ev.vdev_id)
12925 if (!arvif) {
13204 struct qwx_vif *arvif = TAILQ_FIRST(&sc->vif_list); /* XXX */
13208 if (tx_compl_param->desc_id >= nitems(arvif->txmgmt.data)) {
13214 tx_data = &arvif->txmgmt.data[tx_compl_param->desc_id];
13228 if (arvif->txmgmt.queued > 0)
13229 arvif->txmgmt.queued--;
13234 if (arvif->txmgmt.queued < nitems(arvif->txmgmt.data) - 1) {
13387 struct qwx_vif *arvif;
13402 TAILQ_FOREACH(arvif, &sc->vif_list, entry) {
13403 if (arvif->vdev_id == install_key_compl.vdev_id)
13406 if (!arvif) {
15351 qwx_dp_update_vdev_search(struct qwx_softc *sc, struct qwx_vif *arvif)
15358 switch (arvif->vdev_type) {
15361 arvif->hal_addr_search_flags = HAL_TX_ADDRX_EN;
15362 arvif->search_type = HAL_TX_ADDR_SEARCH_INDEX;
15364 arvif->hal_addr_search_flags = HAL_TX_ADDRY_EN;
15365 arvif->search_type = HAL_TX_ADDR_SEARCH_DEFAULT;
15370 arvif->hal_addr_search_flags = HAL_TX_ADDRX_EN;
15371 arvif->search_type = HAL_TX_ADDR_SEARCH_DEFAULT;
15381 struct qwx_vif *arvif)
15383 arvif->tcl_metadata |= FIELD_PREP(HTT_TCL_META_DATA_TYPE, 1) |
15384 FIELD_PREP(HTT_TCL_META_DATA_VDEV_ID, arvif->vdev_id) |
15388 arvif->tcl_metadata &= ~HTT_TCL_META_DATA_VALID_HTT;
15390 qwx_dp_update_vdev_search(sc, arvif);
19103 qwx_wmi_mgmt_send(struct qwx_softc *sc, struct qwx_vif *arvif, uint8_t pdev_id,
19129 cmd->vdev_id = arvif->vdev_id;
19314 if (arvif && arvif->vif->type == NL80211_IFTYPE_STATION) {
19315 bss_conf = &arvif->vif->bss_conf;
22324 struct qwx_vif *arvif;
22332 TAILQ_FOREACH(arvif, &sc->vif_list, entry) {
22333 if (arvif->txpower <= 0)
22337 txpower = arvif->txpower;
22339 txpower = MIN(txpower, arvif->txpower);
22494 qwx_mac_setup_vdev_params_mbssid(struct qwx_vif *arvif,
22503 qwx_mac_setup_vdev_create_params(struct qwx_vif *arvif, struct qwx_pdev *pdev,
22506 struct qwx_softc *sc = arvif->sc;
22509 params->if_id = arvif->vdev_id;
22510 params->type = arvif->vdev_type;
22511 params->subtype = arvif->vdev_subtype;
22518 ret = qwx_mac_setup_vdev_params_mbssid(arvif,
22544 struct qwx_vif *arvif)
22555 ret = qwx_wmi_vdev_set_param_cmd(sc, arvif->vdev_id, pdev->pdev_id,
22559 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
22569 ret = qwx_wmi_vdev_set_param_cmd(sc, arvif->vdev_id, pdev->pdev_id,
22573 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
22581 qwx_mac_vdev_delete(struct qwx_softc *sc, struct qwx_vif *arvif)
22611 qwx_mac_set_txbf_conf(struct qwx_vif *arvif)
22618 qwx_mac_vdev_stop(struct qwx_softc *sc, struct qwx_vif *arvif, int pdev_id)
22628 ret = qwx_wmi_vdev_stop(sc, arvif->vdev_id, pdev_id);
22631 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
22638 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
22646 arvif->vdev_id);
22651 arvif->vdev_id);
22658 qwx_mac_vdev_start_restart(struct qwx_softc *sc, struct qwx_vif *arvif,
22671 arg.vdev_id = arvif->vdev_id;
22707 ret = qwx_mac_setup_vdev_params_mbssid(arvif,
22713 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
22714 arg.ssid = arvif->u.ap.ssid;
22715 arg.ssid_len = arvif->u.ap.ssid_len;
22716 arg.hidden_ssid = arvif->u.ap.hidden_ssid;
22757 DNPRINTF(QWX_D_MAC, "%s: vdev %d started\n", __func__, arvif->vdev_id);
22767 if (arvif->vdev_type == WMI_VDEV_TYPE_AP &&
22776 ret = qwx_mac_set_txbf_conf(arvif);
22779 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
22785 qwx_mac_vdev_restart(struct qwx_softc *sc, struct qwx_vif *arvif, int pdev_id)
22787 return qwx_mac_vdev_start_restart(sc, arvif, pdev_id, 1);
22791 qwx_mac_vdev_start(struct qwx_softc *sc, struct qwx_vif *arvif, int pdev_id)
22793 return qwx_mac_vdev_start_restart(sc, arvif, pdev_id, 0);
22797 qwx_vif_free(struct qwx_softc *sc, struct qwx_vif *arvif)
22802 if (arvif == NULL)
22805 txmgmt = &arvif->txmgmt;
22819 free(arvif, M_DEVBUF, sizeof(*arvif));
22825 struct qwx_vif *arvif;
22828 arvif = TAILQ_FIRST(&sc->vif_list);
22829 TAILQ_REMOVE(&sc->vif_list, arvif, entry);
22830 qwx_vif_free(sc, arvif);
22837 struct qwx_vif *arvif;
22842 arvif = malloc(sizeof(*arvif), M_DEVBUF, M_NOWAIT | M_ZERO);
22843 if (arvif == NULL)
22846 txmgmt = &arvif->txmgmt;
22853 qwx_vif_free(sc, arvif);
22858 arvif->sc = sc;
22860 return arvif;
22868 struct qwx_vif *arvif = NULL;
22899 arvif = qwx_vif_alloc(sc);
22900 if (arvif == NULL) {
22905 INIT_DELAYED_WORK(&arvif->connection_loss_work,
22907 for (i = 0; i < ARRAY_SIZE(arvif->bitrate_mask.control); i++) {
22908 arvif->bitrate_mask.control[i].legacy = 0xffffffff;
22909 arvif->bitrate_mask.control[i].gi = 0;
22910 memset(arvif->bitrate_mask.control[i].ht_mcs, 0xff,
22911 sizeof(arvif->bitrate_mask.control[i].ht_mcs));
22912 memset(arvif->bitrate_mask.control[i].vht_mcs, 0xff,
22913 sizeof(arvif->bitrate_mask.control[i].vht_mcs));
22914 memset(arvif->bitrate_mask.control[i].he_mcs, 0xff,
22915 sizeof(arvif->bitrate_mask.control[i].he_mcs));
22927 arvif->vdev_id = bit;
22928 arvif->vdev_subtype = WMI_VDEV_SUBTYPE_NONE;
22932 arvif->vdev_type = WMI_VDEV_TYPE_STA;
22936 arvif->vdev_subtype = WMI_VDEV_SUBTYPE_MESH_11S;
22939 arvif->vdev_type = WMI_VDEV_TYPE_AP;
22942 arvif->vdev_type = WMI_VDEV_TYPE_MONITOR;
22955 __func__, arvif->vdev_id, arvif->vdev_type,
22956 arvif->vdev_subtype, sc->free_vdev_map);
22958 ret = qwx_mac_setup_vdev_create_params(arvif, pdev, &vdev_param);
22961 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
22968 sc->sc_dev.dv_xname, arvif->vdev_id,
22975 ether_sprintf(ic->ic_myaddr), arvif->vdev_id);
22976 sc->allocated_vdev_map |= 1U << arvif->vdev_id;
22977 sc->free_vdev_map &= ~(1U << arvif->vdev_id);
22981 TAILQ_INSERT_TAIL(&sc->vif_list, arvif, entry);
22985 ret = qwx_mac_op_update_vif_offload(sc, pdev, arvif);
22990 ret = qwx_wmi_vdev_set_param_cmd(sc, arvif->vdev_id, pdev->pdev_id,
22994 sc->sc_dev.dv_xname, arvif->vdev_id, sc->cfg_tx_chainmask,
22999 switch (arvif->vdev_type) {
23002 peer_param.vdev_id = arvif->vdev_id;
23005 ret = ath11k_peer_create(ar, arvif, NULL, &peer_param);
23008 arvif->vdev_id, ret);
23012 ret = ath11k_mac_set_kickout(arvif);
23015 arvif->vdev_id, ret);
23025 ret = qwx_wmi_set_sta_ps_param(sc, arvif->vdev_id,
23029 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
23035 ret = qwx_wmi_set_sta_ps_param(sc, arvif->vdev_id,
23040 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
23046 ret = qwx_wmi_set_sta_ps_param(sc, arvif->vdev_id,
23050 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
23054 ret = qwx_wmi_pdev_set_ps_mode(sc, arvif->vdev_id,
23058 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
23074 sc->sc_dev.dv_xname, arvif->vdev_type);
23079 arvif->txpower = 40;
23086 ret = qwx_wmi_vdev_set_param_cmd(sc, arvif->vdev_id, pdev->pdev_id,
23090 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
23094 qwx_dp_vdev_tx_attach(sc, pdev, arvif);
23110 if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
23111 fbret = qwx_peer_delete(sc, arvif->vdev_id, vif->addr);
23115 vif->addr, arvif->vdev_id, fbret);
23121 qwx_mac_vdev_delete(sc, arvif);
23125 TAILQ_REMOVE(&sc->vif_list, arvif, entry);
23134 qwx_vif_free(sc, arvif);
23177 qwx_mac_11d_scan_start(struct qwx_softc *sc, struct qwx_vif *arvif)
23200 param.vdev_id = arvif->vdev_id;
23207 0 /* TODO: derive pdev ID from arvif somehow? */);
23212 arvif->vdev_id, ret);
23215 sc->vdev_id_11d_scan = arvif->vdev_id;
23376 qwx_peer_create(struct qwx_softc *sc, struct qwx_vif *arvif, uint8_t pdev_id,
23463 arvif->ast_hash = peer->ast_hash;
23464 arvif->ast_idx = peer->hw_peer_id;
24120 qwx_dp_peer_rx_pn_replay_config(struct qwx_softc *sc, struct qwx_vif *arvif,
24247 qwx_dp_tx(struct qwx_softc *sc, struct qwx_vif *arvif, uint8_t pdev_id,
24301 ti.meta_data_flags = arvif->tcl_metadata;
24341 ti.addr_search_flags = arvif->hal_addr_search_flags;
24342 ti.search_type = arvif->search_type;
24346 ti.bss_ast_hash = arvif->ast_hash;
24347 ti.bss_ast_idx = arvif->ast_idx;
24359 if (ieee80211_vif_is_mesh(arvif->vif))
24460 qwx_mac_station_remove(struct qwx_softc *sc, struct qwx_vif *arvif,
24469 ret = qwx_peer_delete(sc, arvif->vdev_id, pdev_id, ni->ni_macaddr);
24480 qwx_mac_station_add(struct qwx_softc *sc, struct qwx_vif *arvif,
24488 peer_param.vdev_id = arvif->vdev_id;
24492 ret = qwx_peer_create(sc, arvif, pdev_id, ni, &peer_param);
24496 arvif->vdev_id);
24501 ether_sprintf(ni->ni_macaddr), arvif->vdev_id);
24503 ret = qwx_dp_peer_setup(sc, arvif->vdev_id, pdev_id, ni);
24507 arvif->vdev_id, ret);
24514 qwx_peer_delete(sc, arvif->vdev_id, pdev_id, ni->ni_macaddr);
24519 qwx_mac_mgmt_tx_wmi(struct qwx_softc *sc, struct qwx_vif *arvif,
24522 struct qwx_txmgmt_queue *txmgmt = &arvif->txmgmt;
24568 ret = qwx_wmi_mgmt_send(sc, arvif, pdev_id, buf_id, m, tx_data);
24841 struct qwx_vif *arvif = TAILQ_FIRST(&sc->vif_list);
24847 if (arvif == NULL) {
24868 qwx_mac_11d_scan_start(sc, arvif);
24880 sc->scan.vdev_id = arvif->vdev_id;
24902 arg->vdev_id = arvif->vdev_id;
25006 qwx_mac_11d_scan_start(sc, arvif);
25125 struct qwx_vif *arvif;
25129 arvif = TAILQ_FIRST(&sc->vif_list);
25130 if (arvif == NULL) {
25143 ret = qwx_wmi_vdev_set_param_cmd(sc, arvif->vdev_id, pdev->pdev_id,
25147 sc->sc_dev.dv_xname, arvif->vdev_id);
25151 qwx_recalculate_mgmt_rate(sc, ni, arvif->vdev_id, pdev->pdev_id);
25154 ret = qwx_mac_station_add(sc, arvif, pdev->pdev_id, ni);
25159 ret = qwx_mac_vdev_start(sc, arvif, pdev->pdev_id);
25162 sc->sc_dev.dv_xname, arvif->vdev_id);
25170 qwx_recalculate_mgmt_rate(sc, ni, arvif->vdev_id, pdev->pdev_id);
25180 struct qwx_vif *arvif = TAILQ_FIRST(&sc->vif_list); /* XXX */
25184 ret = qwx_mac_vdev_stop(sc, arvif, pdev_id);
25187 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
25191 ret = qwx_wmi_set_peer_param(sc, ni->ni_macaddr, arvif->vdev_id,
25199 ret = qwx_mac_station_remove(sc, arvif, pdev_id, ni);
25204 __func__, ether_sprintf(ni->ni_bssid), arvif->aid);
25210 qwx_peer_assoc_h_basic(struct qwx_softc *sc, struct qwx_vif *arvif,
25218 arg->vdev_id = arvif->vdev_id;
25227 qwx_peer_assoc_h_crypto(struct qwx_softc *sc, struct qwx_vif *arvif,
25297 qwx_peer_assoc_prepare(struct qwx_softc *sc, struct qwx_vif *arvif,
25303 qwx_peer_assoc_h_basic(sc, arvif, ni, arg);
25304 qwx_peer_assoc_h_crypto(sc, arvif, ni, arg);
25308 qwx_peer_assoc_h_ht(sc, arvif, ni, arg);
25309 qwx_peer_assoc_h_vht(sc, arvif, ni, arg);
25310 qwx_peer_assoc_h_he(sc, arvif, ni, arg);
25311 qwx_peer_assoc_h_he_6ghz(sc, arvif, ni, arg);
25312 qwx_peer_assoc_h_qos(sc, arvif, ni, arg);
25326 struct qwx_vif *arvif = TAILQ_FIRST(&sc->vif_list); /* XXX */
25335 __func__, arvif->vdev_id, arvif->bssid, arvif->aid);
25337 qwx_peer_assoc_prepare(sc, arvif, ni, &peer_arg, 0);
25346 arvif->vdev_id, ret);
25356 ether_sprintf(ni->ni_macaddr), arvif->vdev_id);
25361 ret = ath11k_setup_peer_smps(ar, arvif, sta->addr,
25366 arvif->vdev_id, ret);
25372 arvif->vdev_id, bss_conf->bssid);
25376 WARN_ON(arvif->is_up);
25379 arvif->aid = ni->ni_associd;
25380 IEEE80211_ADDR_COPY(arvif->bssid, ni->ni_bssid);
25382 ret = qwx_wmi_vdev_up(sc, arvif->vdev_id, pdev_id, arvif->aid,
25383 arvif->bssid, NULL, 0, 0);
25386 sc->sc_dev.dv_xname, arvif->vdev_id, ret);
25390 arvif->is_up = 1;
25392 arvif->rekey_data.enable_offload = 0;
25396 __func__, arvif->vdev_id, ether_sprintf(ni->ni_bssid), arvif->aid);
25398 ret = qwx_wmi_set_peer_param(sc, ni->ni_macaddr, arvif->vdev_id,
25413 struct qwx_vif *arvif = TAILQ_FIRST(&sc->vif_list); /* XXX */
25425 ret = qwx_wmi_vdev_down(sc, arvif->vdev_id, pdev_id);
25429 arvif->is_up = 0;
25431 DNPRINTF(QWX_D_MAC, "%s: vdev %d down\n", __func__, arvif->vdev_id);