• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/wpa/src/drivers/

Lines Matching defs:drv

38 static u32 get_nl80211_protocol_features(struct wpa_driver_nl80211_data *drv)
47 if (!nl80211_cmd(drv, msg, 0, NL80211_CMD_GET_PROTOCOL_FEATURES)) {
52 if (send_and_recv_msgs(drv, msg, protocol_feature_handler, &feat) == 0)
60 struct wpa_driver_nl80211_data *drv;
556 static void wiphy_info_extended_capab(struct wpa_driver_nl80211_data *drv,
562 if (!tb || drv->num_iface_ext_capa == NL80211_IFTYPE_MAX)
577 capa = &drv->iface_ext_capa[drv->num_iface_ext_capa];
603 drv->num_iface_ext_capa++;
604 if (drv->num_iface_ext_capa == NL80211_IFTYPE_MAX)
613 os_free(drv->iface_ext_capa[i].ext_capa);
614 drv->iface_ext_capa[i].ext_capa = NULL;
615 os_free(drv->iface_ext_capa[i].ext_capa_mask);
616 drv->iface_ext_capa[i].ext_capa_mask = NULL;
617 drv->iface_ext_capa[i].ext_capa_len = 0;
619 drv->num_iface_ext_capa = 0;
629 struct wpa_driver_nl80211_data *drv = info->drv;
635 drv->wiphy_idx = nla_get_u32(tb[NL80211_ATTR_WIPHY]);
638 os_strlcpy(drv->phyname,
640 sizeof(drv->phyname));
704 drv->extended_capa == NULL) {
705 drv->extended_capa =
707 if (drv->extended_capa) {
708 os_memcpy(drv->extended_capa,
711 drv->extended_capa_len =
715 drv->extended_capa, drv->extended_capa_len);
717 drv->extended_capa_mask =
719 if (drv->extended_capa_mask) {
720 os_memcpy(drv->extended_capa_mask,
725 drv->extended_capa_mask,
726 drv->extended_capa_len);
728 os_free(drv->extended_capa);
729 drv->extended_capa = NULL;
730 drv->extended_capa_len = 0;
734 wiphy_info_extended_capab(drv, tb[NL80211_ATTR_IFTYPE_EXT_CAPA]);
750 drv->vendor_cmd_test_avail = 1;
754 drv->roaming_vendor_cmd_avail = 1;
757 drv->dfs_vendor_cmd_avail = 1;
760 drv->get_features_vendor_cmd_avail = 1;
763 drv->get_pref_freq_list = 1;
766 drv->set_prob_oper_freq = 1;
769 drv->capa.flags |=
773 drv->setband_vendor_cmd_avail = 1;
776 drv->scan_vendor_cmd_avail = 1;
779 drv->set_wifi_conf_vendor_cmd_avail = 1;
782 drv->fetch_bss_trans_status = 1;
785 drv->roam_vendor_cmd_avail = 1;
788 drv->get_supported_akm_suites_avail = 1;
833 static int wpa_driver_nl80211_get_info(struct wpa_driver_nl80211_data *drv,
841 info->capa = &drv->capa;
842 info->drv = drv;
844 feat = get_nl80211_protocol_features(drv);
847 msg = nl80211_cmd_msg(drv->first_bss, flags, NL80211_CMD_GET_WIPHY);
853 if (send_and_recv_msgs(drv, msg, wiphy_info_handler, info))
857 drv->capa.flags |= WPA_DRIVER_FLAGS_SME;
865 drv->capa.flags |= WPA_DRIVER_FLAGS_P2P_CAPABLE;
869 drv->capa.flags |= WPA_DRIVER_FLAGS_P2P_CONCURRENT;
870 drv->capa.flags |= WPA_DRIVER_FLAGS_P2P_MGMT_AND_NON_P2P;
875 drv->capa.num_multichan_concurrent =
878 if (drv->capa.flags & WPA_DRIVER_FLAGS_DEDICATED_P2P_DEVICE)
882 if (!drv->capa.max_remain_on_chan)
883 drv->capa.max_remain_on_chan = 5000;
885 drv->capa.wmm_ac_supported = info->wmm_ac_supported;
887 drv->capa.mac_addr_rand_sched_scan_supported =
889 drv->capa.mac_addr_rand_scan_supported =
893 drv->capa.flags |= WPA_DRIVER_FLAGS_AP_CSA;
894 if (!drv->capa.max_csa_counters)
895 drv->capa.max_csa_counters = 1;
898 if (!drv->capa.max_sched_scan_plans) {
899 drv->capa.max_sched_scan_plans = 1;
900 drv->capa.max_sched_scan_plan_interval = UINT32_MAX;
901 drv->capa.max_sched_scan_plan_iterations = 0;
939 static void qca_nl80211_check_dfs_capa(struct wpa_driver_nl80211_data *drv)
945 if (!drv->dfs_vendor_cmd_avail)
948 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) ||
956 ret = send_and_recv_msgs(drv, msg, dfs_info_handler, &dfs_capability);
958 drv->capa.flags |= WPA_DRIVER_FLAGS_DFS_OFFLOAD;
1053 static int qca_nl80211_get_akm_suites(struct wpa_driver_nl80211_data *drv)
1059 if (!drv->get_supported_akm_suites_avail)
1062 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) ||
1070 ret = send_and_recv_msgs(drv, msg, get_akm_suites_handler, &key_mgmt);
1075 drv->capa.key_mgmt = key_mgmt;
1144 static void qca_nl80211_get_features(struct wpa_driver_nl80211_data *drv)
1150 if (!drv->get_features_vendor_cmd_avail)
1153 if (!(msg = nl80211_drv_msg(drv, 0, NL80211_CMD_VENDOR)) ||
1162 info.capa = &drv->capa;
1163 ret = send_and_recv_msgs(drv, msg, features_info_handler, &info);
1168 drv->capa.flags |= WPA_DRIVER_FLAGS_KEY_MGMT_OFFLOAD;
1171 drv->capa.flags |= WPA_DRIVER_FLAGS_SUPPORT_HW_MODE_ANY;
1175 drv->capa.flags |= WPA_DRIVER_FLAGS_OFFCHANNEL_SIMULTANEOUS;
1177 drv->capa.flags |= WPA_DRIVER_FLAGS_P2P_LISTEN_OFFLOAD;
1179 drv->capa.flags |= WPA_DRIVER_FLAGS_OCE_STA;
1181 drv->capa.flags |= WPA_DRIVER_FLAGS_OCE_AP;
1183 drv->capa.flags |= WPA_DRIVER_FLAGS_OCE_STA_CFON;
1190 int wpa_driver_nl80211_capa(struct wpa_driver_nl80211_data *drv)
1193 if (wpa_driver_nl80211_get_info(drv, &info))
1199 drv->has_capability = 1;
1200 drv->capa.key_mgmt = WPA_DRIVER_CAPA_KEY_MGMT_WPA |
1209 if (drv->capa.flags & WPA_DRIVER_FLAGS_SME)
1210 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_FILS_SHA256 |
1215 else if (drv->capa.flags & WPA_DRIVER_FLAGS_FILS_SK_OFFLOAD)
1216 drv->capa.key_mgmt |= WPA_DRIVER_CAPA_KEY_MGMT_FILS_SHA256 |
1220 /* Override drv->capa.key_mgmt based on driver advertised capability
1222 qca_nl80211_get_akm_suites(drv);
1225 drv->capa.auth = WPA_DRIVER_AUTH_OPEN |
1229 drv->capa.flags |= WPA_DRIVER_FLAGS_SANE_ERROR_CODES;
1230 drv->capa.flags |= WPA_DRIVER_FLAGS_SET_KEYS_AFTER_ASSOC_DONE;
1231 drv->capa.flags |= WPA_DRIVER_FLAGS_EAPOL_TX_STATUS;
1240 drv->capa.flags |= WPA_DRIVER_FLAGS_AP_TEARDOWN_SUPPORT;
1243 drv->capa.flags |= WPA_DRIVER_FLAGS_DEAUTH_TX_STATUS;
1249 drv->capa.flags |= WPA_DRIVER_FLAGS_AP_MLME;
1252 drv->device_ap_sme = info.device_ap_sme;
1253 drv->poll_command_supported = info.poll_command_supported;
1254 drv->data_tx_status = info.data_tx_status;
1255 drv->p2p_go_ctwindow_supported = info.p2p_go_ctwindow_supported;
1257 drv->capa.flags |= WPA_DRIVER_FLAGS_QOS_MAPPING;
1258 drv->have_low_prio_scan = info.have_low_prio_scan;
1264 drv->use_monitor = !info.device_ap_sme &&
1272 if (!drv->use_monitor && !info.data_tx_status)
1273 drv->capa.flags &= ~WPA_DRIVER_FLAGS_EAPOL_TX_STATUS;
1277 qca_nl80211_check_dfs_capa(drv);
1278 qca_nl80211_get_features(drv);
1287 if (!(drv->capa.flags & WPA_DRIVER_FLAGS_OFFCHANNEL_TX))
1288 drv->capa.flags &= ~WPA_DRIVER_FLAGS_OFFCHANNEL_SIMULTANEOUS;
2130 static int nl80211_set_regulatory_flags(struct wpa_driver_nl80211_data *drv,
2139 nl80211_cmd(drv, msg, 0, NL80211_CMD_GET_REG);
2140 if (drv->capa.flags & WPA_DRIVER_FLAGS_SELF_MANAGED_REGULATORY) {
2141 if (nla_put_u32(msg, NL80211_ATTR_WIPHY, drv->wiphy_idx)) {
2147 return send_and_recv_msgs(drv, msg, nl80211_get_reg, results);
2212 struct wpa_driver_nl80211_data *drv = bss->drv;
2227 feat = get_nl80211_protocol_features(drv);
2236 if (send_and_recv_msgs(drv, msg, phy_info_handler, &result) == 0) {
2239 nl80211_set_regulatory_flags(drv, &result);