Lines Matching refs:vif

128 static bool check_vif_up(struct brcmf_cfg80211_vif *vif)
130 if (!test_bit(BRCMF_VIF_STATUS_READY, &vif->sme_state)) {
132 vif->sme_state);
493 struct brcmf_cfg80211_vif *vif,
504 if (pos == vif) {
569 struct brcmf_cfg80211_vif *vif;
572 vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
573 ifp = vif->ifp;
826 struct brcmf_cfg80211_vif *vif;
835 brcmf_dbg(INFO, "Adding vif \"%s\"\n", name);
837 vif = brcmf_alloc_vif(cfg, type);
838 if (IS_ERR(vif))
839 return (struct wireless_dev *)vif;
841 brcmf_cfg80211_arm_vif_event(cfg, vif);
863 ifp = vif->ifp;
878 return &ifp->vif->wdev;
881 brcmf_free_vif(vif);
885 static bool brcmf_is_apmode(struct brcmf_cfg80211_vif *vif)
889 iftype = vif->wdev.iftype;
893 static bool brcmf_is_ibssmode(struct brcmf_cfg80211_vif *vif)
895 return vif->wdev.iftype == NL80211_IFTYPE_ADHOC;
908 struct brcmf_cfg80211_vif *vif;
918 vif = brcmf_alloc_vif(cfg, NL80211_IFTYPE_MONITOR);
919 if (IS_ERR(vif)) {
920 err = PTR_ERR(vif);
930 ndev->ieee80211_ptr = &vif->wdev;
936 ifp->vif = vif;
940 vif->ifp = ifp;
941 vif->wdev.netdev = ndev;
952 return &vif->wdev;
955 brcmf_free_vif(vif);
1033 if (check_vif_up(ifp->vif)) {
1255 brcmf_cfg80211_arm_vif_event(cfg, ifp->vif);
1288 /* vif event pending in firmware */
1330 struct brcmf_cfg80211_vif *vif = ifp->vif;
1348 ((vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) ||
1349 (vif->wdev.iftype == NL80211_IFTYPE_P2P_GO) ||
1350 (vif->wdev.iftype == NL80211_IFTYPE_P2P_DEVICE))) {
1369 err = brcmf_vif_change_validate(wiphy_to_cfg(wiphy), vif, type);
1410 brcmf_dbg(INFO, "IF Type = %s\n", brcmf_is_ibssmode(vif) ?
1415 brcmf_cfg80211_update_proto_addr_mode(&vif->wdev);
1516 struct brcmf_cfg80211_vif *vif;
1520 vif = container_of(request->wdev, struct brcmf_cfg80211_vif, wdev);
1521 if (!check_vif_up(vif))
1539 if (test_bit(BRCMF_VIF_STATUS_CONNECTING, &vif->sme_state)) {
1540 bphy_err(drvr, "Connecting: status (%lu)\n", vif->sme_state);
1545 if (vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif)
1546 vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif;
1554 err = brcmf_p2p_scan_prep(wiphy, request, vif);
1558 err = brcmf_vif_set_mgmt_ie(vif, BRCMF_VNDR_IE_PRBREQ_FLAG,
1563 err = brcmf_do_escan(vif->ifp, request);
1630 if (!check_vif_up(ifp->vif))
1725 static void brcmf_link_down(struct brcmf_cfg80211_vif *vif, u16 reason,
1728 struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(vif->wdev.wiphy);
1735 if (test_and_clear_bit(BRCMF_VIF_STATUS_CONNECTED, &vif->sme_state)) {
1738 err = brcmf_fil_cmd_data_set(vif->ifp,
1745 if ((vif->wdev.iftype == NL80211_IFTYPE_STATION) ||
1746 (vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT))
1747 cfg80211_disconnected(vif->wdev.netdev, reason, NULL, 0,
1750 clear_bit(BRCMF_VIF_STATUS_CONNECTING, &vif->sme_state);
1751 clear_bit(BRCMF_VIF_STATUS_EAP_SUCCESS, &vif->sme_state);
1752 clear_bit(BRCMF_VIF_STATUS_ASSOC_SUCCESS, &vif->sme_state);
1754 brcmf_btcoex_set_mode(vif, BRCMF_BTCOEX_ENABLED, 0);
1755 if (vif->profile.use_fwsup != BRCMF_PROFILE_FWSUP_NONE) {
1757 brcmf_set_pmk(vif->ifp, NULL, 0);
1758 vif->profile.use_fwsup = BRCMF_PROFILE_FWSUP_NONE;
1769 struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
1780 if (!check_vif_up(ifp->vif))
1790 set_bit(BRCMF_VIF_STATUS_CONNECTING, &ifp->vif->sme_state);
1910 clear_bit(BRCMF_VIF_STATUS_CONNECTING, &ifp->vif->sme_state);
1921 if (!check_vif_up(ifp->vif)) {
1929 brcmf_link_down(ifp->vif, WLAN_REASON_DEAUTH_LEAVING, true);
2086 struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
2360 struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
2375 if (!check_vif_up(ifp->vif))
2389 if (ifp->vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif) {
2411 err = brcmf_vif_set_mgmt_ie(ifp->vif, BRCMF_VNDR_IE_ASSOCREQ_FLAG,
2418 set_bit(BRCMF_VIF_STATUS_CONNECTING, &ifp->vif->sme_state);
2588 clear_bit(BRCMF_VIF_STATUS_CONNECTING, &ifp->vif->sme_state);
2599 struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
2605 if (!check_vif_up(ifp->vif))
2608 clear_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state);
2609 clear_bit(BRCMF_VIF_STATUS_CONNECTING, &ifp->vif->sme_state);
2610 clear_bit(BRCMF_VIF_STATUS_EAP_SUCCESS, &ifp->vif->sme_state);
2611 clear_bit(BRCMF_VIF_STATUS_ASSOC_SUCCESS, &ifp->vif->sme_state);
2638 if (!check_vif_up(ifp->vif))
2681 struct brcmf_cfg80211_vif *vif = wdev_to_vif(wdev);
2687 if (!check_vif_up(vif))
2690 err = brcmf_fil_iovar_int_get(vif->ifp, "qtxpower", &qdbm);
2715 if (!check_vif_up(ifp->vif))
2749 if (!check_vif_up(ifp->vif))
2757 key = &ifp->vif->profile.key[key_idx];
2792 if (!check_vif_up(ifp->vif))
2817 key = &ifp->vif->profile.key[key_idx];
2850 if (!brcmf_is_apmode(ifp->vif)) {
2907 struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
2915 if (!check_vif_up(ifp->vif))
2981 key = &ifp->vif->profile.key[key_idx];
3130 if (!check_vif_up(ifp->vif))
3133 if (brcmf_is_ibssmode(ifp->vif))
3213 &ifp->vif->sme_state)) {
3289 if (!check_vif_up(ifp->vif)) {
3297 if (ifp->vif->wdev.iftype == NL80211_IFTYPE_P2P_CLIENT) {
3510 if (brcmf_is_ibssmode(ifp->vif))
4131 cfg80211_report_wowlan_wakeup(&ifp->vif->wdev, wakeup, GFP_KERNEL);
4214 if (!test_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state))
4250 struct brcmf_cfg80211_vif *vif;
4257 if (!check_vif_up(ifp->vif))
4270 list_for_each_entry(vif, &cfg->vif_list, list) {
4271 if (!test_bit(BRCMF_VIF_STATUS_READY, &vif->sme_state))
4277 brcmf_link_down(vif, WLAN_REASON_UNSPECIFIED, true);
4366 if (!check_vif_up(ifp->vif))
4411 if (!check_vif_up(ifp->vif))
4454 if (!check_vif_up(ifp->vif))
4489 if (brcmf_is_ibssmode(ifp->vif))
4826 s32 brcmf_vif_set_mgmt_ie(struct brcmf_cfg80211_vif *vif, s32 pktflag,
4848 if (!vif)
4850 ifp = vif->ifp;
4852 saved_ie = &vif->saved_ie;
4991 s32 brcmf_vif_clear_mgmt_ies(struct brcmf_cfg80211_vif *vif)
5001 brcmf_vif_set_mgmt_ie(vif, pktflags[i], NULL, 0);
5003 memset(&vif->saved_ie, 0, sizeof(vif->saved_ie));
5008 brcmf_config_ap_mgmt_ie(struct brcmf_cfg80211_vif *vif,
5011 struct brcmf_pub *drvr = vif->ifp->drvr;
5015 err = brcmf_vif_set_mgmt_ie(vif, BRCMF_VNDR_IE_BEACON_FLAG,
5024 err = brcmf_vif_set_mgmt_ie(vif, BRCMF_VNDR_IE_PRBRSP_FLAG,
5033 err = brcmf_vif_set_mgmt_ie(vif, BRCMF_VNDR_IE_ASSOCRSP_FLAG,
5094 struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
5116 dev_role = ifp->vif->wdev.iftype;
5117 mbss = ifp->vif->mbss;
5121 &ifp->vif->is_11d)) {
5156 if ((supports_11d) && (is_11d != ifp->vif->is_11d)) {
5202 } else if (WARN_ON(supports_11d && (is_11d != ifp->vif->is_11d))) {
5323 brcmf_config_ap_mgmt_ie(ifp->vif, &settings->beacon);
5324 set_bit(BRCMF_VIF_STATUS_AP_CREATED, &ifp->vif->sme_state);
5341 struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
5348 if (ifp->vif->wdev.iftype == NL80211_IFTYPE_AP) {
5363 if (ifp->vif->mbss) {
5386 ifp->vif->is_11d);
5392 brcmf_vif_clear_mgmt_ies(ifp->vif);
5403 clear_bit(BRCMF_VIF_STATUS_AP_CREATED, &ifp->vif->sme_state);
5417 return brcmf_config_ap_mgmt_ie(ifp->vif, &info->beacon);
5435 if (ifp->vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif)
5436 ifp = cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif->ifp;
5437 if (!check_vif_up(ifp->vif))
5488 struct brcmf_cfg80211_vif *vif;
5490 vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
5492 vif->mgmt_rx_reg = upd->interface_stypes;
5506 struct brcmf_cfg80211_vif *vif;
5527 vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
5534 /* vif. Since this is only reason for a probe */
5535 /* response to be sent, the vif is taken from cfg. */
5544 if (vif == cfg->p2p.bss_idx[P2PAPI_BSSCFG_PRIMARY].vif)
5545 vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
5546 err = brcmf_vif_set_mgmt_ie(vif,
5578 brcmf_fil_cmd_int_get(vif->ifp, BRCMF_C_GET_CHANNEL,
5608 struct brcmf_cfg80211_vif *vif;
5615 vif = ifp->vif;
5617 if (rssi_low != vif->cqm_rssi_low || rssi_high != vif->cqm_rssi_high) {
5639 vif->cqm_rssi_low = rssi_low;
5640 vif->cqm_rssi_high = rssi_high;
5654 struct brcmf_cfg80211_vif *vif;
5659 vif = cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
5660 if (vif == NULL) {
5665 brcmf_p2p_cancel_remain_on_channel(vif->ifp);
5738 struct brcmf_cfg80211_vif *vif;
5740 vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
5750 return brcmf_btcoex_set_mode(vif, BRCMF_BTCOEX_DISABLED, duration);
5757 struct brcmf_cfg80211_vif *vif;
5759 vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
5761 brcmf_btcoex_set_mode(vif, BRCMF_BTCOEX_ENABLED, 0);
5850 err = brcmf_vif_set_mgmt_ie(ifp->vif, BRCMF_VNDR_IE_ASSOCREQ_FLAG,
5896 if (WARN_ON(ifp->vif->profile.use_fwsup != BRCMF_PROFILE_FWSUP_1X))
5912 if (WARN_ON(ifp->vif->profile.use_fwsup != BRCMF_PROFILE_FWSUP_1X))
5984 struct brcmf_cfg80211_vif *vif;
5989 sizeof(*vif));
5990 vif = kzalloc(sizeof(*vif), GFP_KERNEL);
5991 if (!vif)
5994 vif->wdev.wiphy = cfg->wiphy;
5995 vif->wdev.iftype = type;
5997 brcmf_init_prof(&vif->profile);
6008 vif->mbss = mbss;
6011 list_add_tail(&vif->list, &cfg->vif_list);
6012 return vif;
6015 void brcmf_free_vif(struct brcmf_cfg80211_vif *vif)
6017 list_del(&vif->list);
6018 kfree(vif);
6023 struct brcmf_cfg80211_vif *vif;
6027 vif = ifp->vif;
6029 if (vif)
6030 brcmf_free_vif(vif);
6033 static bool brcmf_is_linkup(struct brcmf_cfg80211_vif *vif,
6039 if ((vif->profile.use_fwsup == BRCMF_PROFILE_FWSUP_PSK ||
6040 vif->profile.use_fwsup == BRCMF_PROFILE_FWSUP_SAE) &&
6043 set_bit(BRCMF_VIF_STATUS_EAP_SUCCESS, &vif->sme_state);
6046 memcpy(vif->profile.bssid, e->addr, ETH_ALEN);
6047 if (vif->profile.use_fwsup != BRCMF_PROFILE_FWSUP_PSK &&
6048 vif->profile.use_fwsup != BRCMF_PROFILE_FWSUP_SAE)
6051 set_bit(BRCMF_VIF_STATUS_ASSOC_SUCCESS, &vif->sme_state);
6054 if (test_bit(BRCMF_VIF_STATUS_EAP_SUCCESS, &vif->sme_state) &&
6055 test_bit(BRCMF_VIF_STATUS_ASSOC_SUCCESS, &vif->sme_state)) {
6056 clear_bit(BRCMF_VIF_STATUS_EAP_SUCCESS, &vif->sme_state);
6057 clear_bit(BRCMF_VIF_STATUS_ASSOC_SUCCESS, &vif->sme_state);
6063 static bool brcmf_is_linkdown(struct brcmf_cfg80211_vif *vif,
6073 clear_bit(BRCMF_VIF_STATUS_EAP_SUCCESS, &vif->sme_state);
6074 clear_bit(BRCMF_VIF_STATUS_ASSOC_SUCCESS, &vif->sme_state);
6344 struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
6406 set_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state);
6417 struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
6424 &ifp->vif->sme_state)) {
6430 &ifp->vif->sme_state);
6434 &ifp->vif->sme_state);
6436 &ifp->vif->sme_state);
6504 struct brcmf_cfg80211_profile *profile = &ifp->vif->profile;
6515 if (brcmf_is_apmode(ifp->vif)) {
6517 } else if (brcmf_is_linkup(ifp->vif, e)) {
6519 if (brcmf_is_ibssmode(ifp->vif)) {
6525 &ifp->vif->sme_state);
6527 &ifp->vif->sme_state);
6531 } else if (brcmf_is_linkdown(ifp->vif, e)) {
6533 if (!brcmf_is_ibssmode(ifp->vif) &&
6535 &ifp->vif->sme_state) ||
6537 &ifp->vif->sme_state))) {
6539 &ifp->vif->sme_state) &&
6544 brcmf_link_down(ifp->vif,
6556 if (brcmf_is_ibssmode(ifp->vif))
6558 &ifp->vif->sme_state);
6576 &ifp->vif->sme_state)) {
6608 struct brcmf_cfg80211_vif *vif = ifp->vif;
6624 low = vif->cqm_rssi_low;
6625 high = vif->cqm_rssi_high;
6626 last = vif->cqm_rssi_last;
6631 vif->cqm_rssi_last = rssi;
6654 struct brcmf_cfg80211_vif *vif;
6662 vif = event->vif;
6667 if (!cfg->vif_event.vif) {
6672 ifp->vif = vif;
6673 vif->ifp = ifp;
6675 vif->wdev.netdev = ifp->ndev;
6676 ifp->ndev->ieee80211_ptr = &vif->wdev;
7761 set_bit(BRCMF_VIF_STATUS_READY, &ifp->vif->sme_state);
7774 if (check_vif_up(ifp->vif)) {
7775 brcmf_link_down(ifp->vif, WLAN_REASON_UNSPECIFIED, true);
7785 clear_bit(BRCMF_VIF_STATUS_READY, &ifp->vif->sme_state);
7818 struct wireless_dev *wdev = &ifp->vif->wdev;
7826 struct brcmf_cfg80211_vif *vif;
7828 list_for_each_entry(vif, &cfg->vif_list, list) {
7829 if (test_bit(state, &vif->sme_state))
7847 struct brcmf_cfg80211_vif *vif)
7852 event->vif = vif;
7863 armed = event->vif != NULL;
8093 if ((test_bit(BRCMF_VIF_STATUS_CONNECTING, &ifp->vif->sme_state)) ||
8094 (test_bit(BRCMF_VIF_STATUS_CONNECTED, &ifp->vif->sme_state))) {
8168 if (!brcmf_is_apmode(ifp->vif))
8249 struct brcmf_cfg80211_vif *vif;
8271 vif = brcmf_alloc_vif(cfg, NL80211_IFTYPE_STATION);
8272 if (IS_ERR(vif))
8276 vif->ifp = ifp;
8277 vif->wdev.netdev = ndev;
8278 ndev->ieee80211_ptr = &vif->wdev;
8284 brcmf_free_vif(vif);
8287 ifp->vif = vif;
8414 brcmf_free_vif(vif);
8415 ifp->vif = NULL;