Lines Matching refs:priv
145 struct mwifiex_private *priv = mwifiex_netdev_get_priv(netdev); in mwifiex_cfg80211_del_key() local
149 if (mwifiex_set_encode(priv, NULL, NULL, 0, key_index, peer_mac, 1)) { in mwifiex_cfg80211_del_key()
150 mwifiex_dbg(priv->adapter, ERROR, "deleting the crypto keys\n"); in mwifiex_cfg80211_del_key()
154 mwifiex_dbg(priv->adapter, INFO, "info: crypto keys deleted\n"); in mwifiex_cfg80211_del_key()
206 struct mwifiex_private *priv = mwifiex_netdev_get_priv(wdev->netdev); in mwifiex_cfg80211_mgmt_tx() local
209 mwifiex_dbg(priv->adapter, ERROR, "invalid buffer and length\n"); in mwifiex_cfg80211_mgmt_tx()
214 if (GET_BSS_ROLE(priv) != MWIFIEX_BSS_ROLE_STA && in mwifiex_cfg80211_mgmt_tx()
218 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_mgmt_tx()
229 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_mgmt_tx()
236 tx_info->bss_num = priv->bss_num; in mwifiex_cfg80211_mgmt_tx()
237 tx_info->bss_type = priv->bss_type; in mwifiex_cfg80211_mgmt_tx()
244 skb = mwifiex_clone_skb_for_tx_status(priv, in mwifiex_cfg80211_mgmt_tx()
251 mwifiex_queue_tx_pkt(priv, skb); in mwifiex_cfg80211_mgmt_tx()
253 mwifiex_dbg(priv->adapter, INFO, "info: management frame transmitted\n"); in mwifiex_cfg80211_mgmt_tx()
265 struct mwifiex_private *priv = mwifiex_netdev_get_priv(wdev->netdev); in mwifiex_cfg80211_mgmt_frame_register() local
269 mask = priv->mgmt_frame_mask | BIT(frame_type >> 4); in mwifiex_cfg80211_mgmt_frame_register()
271 mask = priv->mgmt_frame_mask & ~BIT(frame_type >> 4); in mwifiex_cfg80211_mgmt_frame_register()
273 if (mask != priv->mgmt_frame_mask) { in mwifiex_cfg80211_mgmt_frame_register()
274 priv->mgmt_frame_mask = mask; in mwifiex_cfg80211_mgmt_frame_register()
275 mwifiex_send_cmd(priv, HostCmd_CMD_MGMT_FRAME_REG, in mwifiex_cfg80211_mgmt_frame_register()
277 &priv->mgmt_frame_mask, false); in mwifiex_cfg80211_mgmt_frame_register()
278 mwifiex_dbg(priv->adapter, INFO, "info: mgmt frame registered\n"); in mwifiex_cfg80211_mgmt_frame_register()
291 struct mwifiex_private *priv = mwifiex_netdev_get_priv(wdev->netdev); in mwifiex_cfg80211_remain_on_channel() local
295 mwifiex_dbg(priv->adapter, ERROR, "Invalid parameter for ROC\n"); in mwifiex_cfg80211_remain_on_channel()
299 if (priv->roc_cfg.cookie) { in mwifiex_cfg80211_remain_on_channel()
300 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_remain_on_channel()
302 priv->roc_cfg.cookie); in mwifiex_cfg80211_remain_on_channel()
306 ret = mwifiex_remain_on_chan_cfg(priv, HostCmd_ACT_GEN_SET, chan, in mwifiex_cfg80211_remain_on_channel()
311 priv->roc_cfg.cookie = *cookie; in mwifiex_cfg80211_remain_on_channel()
312 priv->roc_cfg.chan = *chan; in mwifiex_cfg80211_remain_on_channel()
317 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_remain_on_channel()
331 struct mwifiex_private *priv = mwifiex_netdev_get_priv(wdev->netdev); in mwifiex_cfg80211_cancel_remain_on_channel() local
334 if (cookie != priv->roc_cfg.cookie) in mwifiex_cfg80211_cancel_remain_on_channel()
337 ret = mwifiex_remain_on_chan_cfg(priv, HostCmd_ACT_GEN_REMOVE, in mwifiex_cfg80211_cancel_remain_on_channel()
338 &priv->roc_cfg.chan, 0); in mwifiex_cfg80211_cancel_remain_on_channel()
342 &priv->roc_cfg.chan, in mwifiex_cfg80211_cancel_remain_on_channel()
345 memset(&priv->roc_cfg, 0, sizeof(struct mwifiex_roc_cfg)); in mwifiex_cfg80211_cancel_remain_on_channel()
347 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_cancel_remain_on_channel()
364 struct mwifiex_private *priv; in mwifiex_cfg80211_set_tx_power() local
375 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); in mwifiex_cfg80211_set_tx_power()
377 return mwifiex_set_tx_power(priv, &power_cfg); in mwifiex_cfg80211_set_tx_power()
390 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_set_power_mgmt() local
394 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_set_power_mgmt()
399 return mwifiex_drv_set_power(priv, &ps_mode); in mwifiex_cfg80211_set_power_mgmt()
410 struct mwifiex_private *priv = mwifiex_netdev_get_priv(netdev); in mwifiex_cfg80211_set_default_key() local
413 if (!priv->sec_info.wep_enabled) in mwifiex_cfg80211_set_default_key()
416 if (priv->bss_type == MWIFIEX_BSS_TYPE_UAP) { in mwifiex_cfg80211_set_default_key()
417 priv->wep_key_curr_index = key_index; in mwifiex_cfg80211_set_default_key()
418 } else if (mwifiex_set_encode(priv, NULL, NULL, 0, key_index, in mwifiex_cfg80211_set_default_key()
420 mwifiex_dbg(priv->adapter, ERROR, "set default Tx key index\n"); in mwifiex_cfg80211_set_default_key()
435 struct mwifiex_private *priv = mwifiex_netdev_get_priv(netdev); in mwifiex_cfg80211_add_key() local
440 if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP && in mwifiex_cfg80211_add_key()
444 wep_key = &priv->wep_key[key_index]; in mwifiex_cfg80211_add_key()
450 priv->sec_info.wep_enabled = 1; in mwifiex_cfg80211_add_key()
455 if (mwifiex_set_encode(priv, params, params->key, params->key_len, in mwifiex_cfg80211_add_key()
457 mwifiex_dbg(priv->adapter, ERROR, "crypto keys added\n"); in mwifiex_cfg80211_add_key()
482 struct mwifiex_private *priv; in mwifiex_send_domain_info_cmd_fw() local
540 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); in mwifiex_send_domain_info_cmd_fw()
542 if (mwifiex_send_cmd(priv, HostCmd_CMD_802_11D_DOMAIN_INFO, in mwifiex_send_domain_info_cmd_fw()
566 struct mwifiex_private *priv = mwifiex_get_priv(adapter, in mwifiex_reg_notifier() local
592 mwifiex_dnld_txpwr_table(priv); in mwifiex_reg_notifier()
603 mwifiex_set_frag(struct mwifiex_private *priv, u32 frag_thr) in mwifiex_set_frag() argument
609 return mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB, in mwifiex_set_frag()
621 mwifiex_set_rts(struct mwifiex_private *priv, u32 rts_thr) in mwifiex_set_rts() argument
626 return mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB, in mwifiex_set_rts()
641 struct mwifiex_private *priv; in mwifiex_cfg80211_set_wiphy_params() local
645 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); in mwifiex_cfg80211_set_wiphy_params()
647 switch (priv->bss_role) { in mwifiex_cfg80211_set_wiphy_params()
649 if (priv->bss_started) { in mwifiex_cfg80211_set_wiphy_params()
668 ret = mwifiex_send_cmd(priv, HostCmd_CMD_UAP_SYS_CONFIG, in mwifiex_cfg80211_set_wiphy_params()
682 if (priv->media_connected) { in mwifiex_cfg80211_set_wiphy_params()
688 ret = mwifiex_set_rts(priv, in mwifiex_cfg80211_set_wiphy_params()
694 ret = mwifiex_set_frag(priv, in mwifiex_cfg80211_set_wiphy_params()
706 mwifiex_cfg80211_deinit_p2p(struct mwifiex_private *priv) in mwifiex_cfg80211_deinit_p2p() argument
710 if (mwifiex_send_cmd(priv, HostCmd_CMD_P2P_MODE_CFG, in mwifiex_cfg80211_deinit_p2p()
723 mwifiex_cfg80211_init_p2p_client(struct mwifiex_private *priv) in mwifiex_cfg80211_init_p2p_client() argument
727 if (mwifiex_cfg80211_deinit_p2p(priv)) in mwifiex_cfg80211_init_p2p_client()
731 if (mwifiex_send_cmd(priv, HostCmd_CMD_P2P_MODE_CFG, in mwifiex_cfg80211_init_p2p_client()
736 if (mwifiex_send_cmd(priv, HostCmd_CMD_P2P_MODE_CFG, in mwifiex_cfg80211_init_p2p_client()
749 mwifiex_cfg80211_init_p2p_go(struct mwifiex_private *priv) in mwifiex_cfg80211_init_p2p_go() argument
753 if (mwifiex_cfg80211_deinit_p2p(priv)) in mwifiex_cfg80211_init_p2p_go()
757 if (mwifiex_send_cmd(priv, HostCmd_CMD_P2P_MODE_CFG, in mwifiex_cfg80211_init_p2p_go()
762 if (mwifiex_send_cmd(priv, HostCmd_CMD_P2P_MODE_CFG, in mwifiex_cfg80211_init_p2p_go()
769 static int mwifiex_deinit_priv_params(struct mwifiex_private *priv) in mwifiex_deinit_priv_params() argument
771 struct mwifiex_adapter *adapter = priv->adapter; in mwifiex_deinit_priv_params()
774 priv->mgmt_frame_mask = 0; in mwifiex_deinit_priv_params()
775 if (mwifiex_send_cmd(priv, HostCmd_CMD_MGMT_FRAME_REG, in mwifiex_deinit_priv_params()
777 &priv->mgmt_frame_mask, false)) { in mwifiex_deinit_priv_params()
783 mwifiex_deauthenticate(priv, NULL); in mwifiex_deinit_priv_params()
803 mwifiex_free_priv(priv); in mwifiex_deinit_priv_params()
804 priv->wdev.iftype = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_deinit_priv_params()
805 priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_deinit_priv_params()
806 priv->sec_info.authentication_mode = NL80211_AUTHTYPE_OPEN_SYSTEM; in mwifiex_deinit_priv_params()
812 mwifiex_init_new_priv_params(struct mwifiex_private *priv, in mwifiex_init_new_priv_params() argument
816 struct mwifiex_adapter *adapter = priv->adapter; in mwifiex_init_new_priv_params()
819 mwifiex_init_priv(priv); in mwifiex_init_new_priv_params()
821 priv->bss_mode = type; in mwifiex_init_new_priv_params()
822 priv->wdev.iftype = type; in mwifiex_init_new_priv_params()
824 mwifiex_init_priv_params(priv, priv->netdev); in mwifiex_init_new_priv_params()
825 priv->bss_started = 0; in mwifiex_init_new_priv_params()
830 priv->bss_role = MWIFIEX_BSS_ROLE_STA; in mwifiex_init_new_priv_params()
831 priv->bss_type = MWIFIEX_BSS_TYPE_STA; in mwifiex_init_new_priv_params()
834 priv->bss_role = MWIFIEX_BSS_ROLE_STA; in mwifiex_init_new_priv_params()
835 priv->bss_type = MWIFIEX_BSS_TYPE_P2P; in mwifiex_init_new_priv_params()
838 priv->bss_role = MWIFIEX_BSS_ROLE_UAP; in mwifiex_init_new_priv_params()
839 priv->bss_type = MWIFIEX_BSS_TYPE_P2P; in mwifiex_init_new_priv_params()
842 priv->bss_type = MWIFIEX_BSS_TYPE_UAP; in mwifiex_init_new_priv_params()
843 priv->bss_role = MWIFIEX_BSS_ROLE_UAP; in mwifiex_init_new_priv_params()
869 struct mwifiex_private *priv; in mwifiex_change_vif_to_p2p() local
872 priv = mwifiex_netdev_get_priv(dev); in mwifiex_change_vif_to_p2p()
874 if (!priv) in mwifiex_change_vif_to_p2p()
877 adapter = priv->adapter; in mwifiex_change_vif_to_p2p()
889 if (mwifiex_deinit_priv_params(priv)) in mwifiex_change_vif_to_p2p()
891 if (mwifiex_init_new_priv_params(priv, dev, type)) in mwifiex_change_vif_to_p2p()
896 if (mwifiex_cfg80211_init_p2p_client(priv)) in mwifiex_change_vif_to_p2p()
900 if (mwifiex_cfg80211_init_p2p_go(priv)) in mwifiex_change_vif_to_p2p()
910 if (mwifiex_send_cmd(priv, HostCmd_CMD_SET_BSS_MODE, in mwifiex_change_vif_to_p2p()
914 if (mwifiex_sta_init_cmd(priv, false, false)) in mwifiex_change_vif_to_p2p()
941 struct mwifiex_private *priv; in mwifiex_change_vif_to_sta_adhoc() local
944 priv = mwifiex_netdev_get_priv(dev); in mwifiex_change_vif_to_sta_adhoc()
946 if (!priv) in mwifiex_change_vif_to_sta_adhoc()
949 adapter = priv->adapter; in mwifiex_change_vif_to_sta_adhoc()
967 if (mwifiex_deinit_priv_params(priv)) in mwifiex_change_vif_to_sta_adhoc()
969 if (mwifiex_init_new_priv_params(priv, dev, type)) in mwifiex_change_vif_to_sta_adhoc()
971 if (mwifiex_send_cmd(priv, HostCmd_CMD_SET_BSS_MODE, in mwifiex_change_vif_to_sta_adhoc()
974 if (mwifiex_sta_init_cmd(priv, false, false)) in mwifiex_change_vif_to_sta_adhoc()
1000 struct mwifiex_private *priv; in mwifiex_change_vif_to_ap() local
1003 priv = mwifiex_netdev_get_priv(dev); in mwifiex_change_vif_to_ap()
1005 if (!priv) in mwifiex_change_vif_to_ap()
1008 adapter = priv->adapter; in mwifiex_change_vif_to_ap()
1020 if (mwifiex_deinit_priv_params(priv)) in mwifiex_change_vif_to_ap()
1022 if (mwifiex_init_new_priv_params(priv, dev, type)) in mwifiex_change_vif_to_ap()
1024 if (mwifiex_send_cmd(priv, HostCmd_CMD_SET_BSS_MODE, in mwifiex_change_vif_to_ap()
1027 if (mwifiex_sta_init_cmd(priv, false, false)) in mwifiex_change_vif_to_ap()
1056 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_change_virtual_intf() local
1063 priv->bss_mode = type; in mwifiex_cfg80211_change_virtual_intf()
1064 priv->sec_info.authentication_mode = in mwifiex_cfg80211_change_virtual_intf()
1067 mwifiex_deauthenticate(priv, NULL); in mwifiex_cfg80211_change_virtual_intf()
1068 return mwifiex_send_cmd(priv, HostCmd_CMD_SET_BSS_MODE, in mwifiex_cfg80211_change_virtual_intf()
1079 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_change_virtual_intf()
1084 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_change_virtual_intf()
1093 priv->bss_mode = type; in mwifiex_cfg80211_change_virtual_intf()
1094 priv->sec_info.authentication_mode = in mwifiex_cfg80211_change_virtual_intf()
1097 mwifiex_deauthenticate(priv, NULL); in mwifiex_cfg80211_change_virtual_intf()
1098 return mwifiex_send_cmd(priv, HostCmd_CMD_SET_BSS_MODE, in mwifiex_cfg80211_change_virtual_intf()
1109 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_change_virtual_intf()
1114 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_change_virtual_intf()
1133 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_change_virtual_intf()
1138 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_change_virtual_intf()
1148 if (mwifiex_cfg80211_deinit_p2p(priv)) in mwifiex_cfg80211_change_virtual_intf()
1150 priv->adapter->curr_iface_comb.p2p_intf--; in mwifiex_cfg80211_change_virtual_intf()
1151 priv->adapter->curr_iface_comb.sta_intf++; in mwifiex_cfg80211_change_virtual_intf()
1155 if (mwifiex_cfg80211_deinit_p2p(priv)) in mwifiex_cfg80211_change_virtual_intf()
1162 if (mwifiex_cfg80211_deinit_p2p(priv)) in mwifiex_cfg80211_change_virtual_intf()
1167 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_change_virtual_intf()
1173 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_change_virtual_intf()
1180 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_change_virtual_intf()
1191 mwifiex_parse_htinfo(struct mwifiex_private *priv, u8 tx_htinfo, in mwifiex_parse_htinfo() argument
1194 struct mwifiex_adapter *adapter = priv->adapter; in mwifiex_parse_htinfo()
1200 rate->mcs = priv->tx_rate; in mwifiex_parse_htinfo()
1205 rate->mcs = priv->tx_rate & 0x0F; in mwifiex_parse_htinfo()
1229 if ((priv->tx_rate >> 4) == 1) in mwifiex_parse_htinfo()
1239 if ((tx_htinfo & BIT(0)) && (priv->tx_rate < 16)) { in mwifiex_parse_htinfo()
1240 rate->mcs = priv->tx_rate; in mwifiex_parse_htinfo()
1263 mwifiex_dump_station_info(struct mwifiex_private *priv, in mwifiex_dump_station_info() argument
1274 if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP) { in mwifiex_dump_station_info()
1291 mwifiex_parse_htinfo(priv, node->stats.last_tx_htinfo, in mwifiex_dump_station_info()
1299 if (mwifiex_send_cmd(priv, HostCmd_CMD_RSSI_INFO, in mwifiex_dump_station_info()
1301 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_dump_station_info()
1306 if (mwifiex_drv_get_data_rate(priv, &rate)) { in mwifiex_dump_station_info()
1307 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_dump_station_info()
1313 mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB, in mwifiex_dump_station_info()
1315 &priv->dtim_period, true); in mwifiex_dump_station_info()
1317 mwifiex_parse_htinfo(priv, priv->tx_htinfo, &sinfo->txrate); in mwifiex_dump_station_info()
1319 sinfo->signal_avg = priv->bcn_rssi_avg; in mwifiex_dump_station_info()
1320 sinfo->rx_bytes = priv->stats.rx_bytes; in mwifiex_dump_station_info()
1321 sinfo->tx_bytes = priv->stats.tx_bytes; in mwifiex_dump_station_info()
1322 sinfo->rx_packets = priv->stats.rx_packets; in mwifiex_dump_station_info()
1323 sinfo->tx_packets = priv->stats.tx_packets; in mwifiex_dump_station_info()
1324 sinfo->signal = priv->bcn_rssi_avg; in mwifiex_dump_station_info()
1328 if (priv->bss_mode == NL80211_IFTYPE_STATION) { in mwifiex_dump_station_info()
1331 if (priv->curr_bss_params.bss_descriptor.cap_info_bitmap & in mwifiex_dump_station_info()
1335 if (priv->curr_bss_params.bss_descriptor.cap_info_bitmap & in mwifiex_dump_station_info()
1339 sinfo->bss_param.dtim_period = priv->dtim_period; in mwifiex_dump_station_info()
1341 priv->curr_bss_params.bss_descriptor.beacon_period; in mwifiex_dump_station_info()
1357 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_get_station() local
1359 if (!priv->media_connected) in mwifiex_cfg80211_get_station()
1361 if (memcmp(mac, priv->cfg_bssid, ETH_ALEN)) in mwifiex_cfg80211_get_station()
1364 return mwifiex_dump_station_info(priv, NULL, sinfo); in mwifiex_cfg80211_get_station()
1374 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_dump_station() local
1377 if ((GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA) && in mwifiex_cfg80211_dump_station()
1378 priv->media_connected && idx == 0) { in mwifiex_cfg80211_dump_station()
1379 ether_addr_copy(mac, priv->cfg_bssid); in mwifiex_cfg80211_dump_station()
1380 return mwifiex_dump_station_info(priv, NULL, sinfo); in mwifiex_cfg80211_dump_station()
1381 } else if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP) { in mwifiex_cfg80211_dump_station()
1382 mwifiex_send_cmd(priv, HOST_CMD_APCMD_STA_LIST, in mwifiex_cfg80211_dump_station()
1385 if (node && (&node->list == &priv->sta_list)) { in mwifiex_cfg80211_dump_station()
1390 node = list_prepare_entry(node, &priv->sta_list, list); in mwifiex_cfg80211_dump_station()
1391 list_for_each_entry_continue(node, &priv->sta_list, list) { in mwifiex_cfg80211_dump_station()
1393 return mwifiex_dump_station_info(priv, node, sinfo); in mwifiex_cfg80211_dump_station()
1404 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_dump_survey() local
1405 struct mwifiex_chan_stats *pchan_stats = priv->adapter->chan_stats; in mwifiex_cfg80211_dump_survey()
1408 mwifiex_dbg(priv->adapter, DUMP, "dump_survey idx=%d\n", idx); in mwifiex_cfg80211_dump_survey()
1412 if ((GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA) && in mwifiex_cfg80211_dump_survey()
1413 priv->media_connected && idx == 0) { in mwifiex_cfg80211_dump_survey()
1414 u8 curr_bss_band = priv->curr_bss_params.band; in mwifiex_cfg80211_dump_survey()
1415 u32 chan = priv->curr_bss_params.bss_descriptor.channel; in mwifiex_cfg80211_dump_survey()
1421 if (priv->bcn_nf_last) { in mwifiex_cfg80211_dump_survey()
1423 survey->noise = priv->bcn_nf_last; in mwifiex_cfg80211_dump_survey()
1428 if (idx >= priv->adapter->num_in_chan_stats) in mwifiex_cfg80211_dump_survey()
1579 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_set_bitrate_mask() local
1582 struct mwifiex_adapter *adapter = priv->adapter; in mwifiex_cfg80211_set_bitrate_mask()
1584 if (!priv->media_connected) { in mwifiex_cfg80211_set_bitrate_mask()
1590 band = mwifiex_band_to_radio_type(priv->curr_bss_params.band); in mwifiex_cfg80211_set_bitrate_mask()
1616 return mwifiex_send_cmd(priv, HostCmd_CMD_TX_RATE_CFG, in mwifiex_cfg80211_set_bitrate_mask()
1630 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_set_cqm_rssi_config() local
1633 priv->cqm_rssi_thold = rssi_thold; in mwifiex_cfg80211_set_cqm_rssi_config()
1634 priv->cqm_rssi_hyst = rssi_hyst; in mwifiex_cfg80211_set_cqm_rssi_config()
1646 return mwifiex_send_cmd(priv, in mwifiex_cfg80211_set_cqm_rssi_config()
1651 return mwifiex_send_cmd(priv, in mwifiex_cfg80211_set_cqm_rssi_config()
1666 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_change_beacon() local
1668 if (GET_BSS_ROLE(priv) != MWIFIEX_BSS_ROLE_UAP) { in mwifiex_cfg80211_change_beacon()
1669 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_change_beacon()
1674 if (!priv->bss_started) { in mwifiex_cfg80211_change_beacon()
1675 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_change_beacon()
1680 if (mwifiex_set_mgmt_ies(priv, data)) { in mwifiex_cfg80211_change_beacon()
1681 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_change_beacon()
1699 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_del_station() local
1704 if (list_empty(&priv->sta_list) || !priv->bss_started) in mwifiex_cfg80211_del_station()
1710 mwifiex_dbg(priv->adapter, INFO, "%s: mac address %pM\n", in mwifiex_cfg80211_del_station()
1715 spin_lock_irqsave(&priv->sta_list_spinlock, flags); in mwifiex_cfg80211_del_station()
1716 sta_node = mwifiex_get_sta_entry(priv, params->mac); in mwifiex_cfg80211_del_station()
1719 spin_unlock_irqrestore(&priv->sta_list_spinlock, flags); in mwifiex_cfg80211_del_station()
1722 if (mwifiex_send_cmd(priv, HostCmd_CMD_UAP_STA_DEAUTH, in mwifiex_cfg80211_del_station()
1735 struct mwifiex_private *priv = mwifiex_get_priv(adapter, in mwifiex_cfg80211_set_antenna() local
1754 (priv->adapter->number_of_antenna > 1)) { in mwifiex_cfg80211_set_antenna()
1790 return mwifiex_send_cmd(priv, HostCmd_CMD_RF_ANTENNA, in mwifiex_cfg80211_set_antenna()
1799 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_stop_ap() local
1801 mwifiex_abort_cac(priv); in mwifiex_cfg80211_stop_ap()
1803 if (mwifiex_del_mgmt_ies(priv)) in mwifiex_cfg80211_stop_ap()
1804 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_stop_ap()
1807 priv->ap_11n_enabled = 0; in mwifiex_cfg80211_stop_ap()
1808 memset(&priv->bss_cfg, 0, sizeof(priv->bss_cfg)); in mwifiex_cfg80211_stop_ap()
1810 if (mwifiex_send_cmd(priv, HostCmd_CMD_UAP_BSS_STOP, in mwifiex_cfg80211_stop_ap()
1812 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_stop_ap()
1817 if (mwifiex_send_cmd(priv, HOST_CMD_APCMD_SYS_RESET, in mwifiex_cfg80211_stop_ap()
1819 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_stop_ap()
1824 if (netif_carrier_ok(priv->netdev)) in mwifiex_cfg80211_stop_ap()
1825 netif_carrier_off(priv->netdev); in mwifiex_cfg80211_stop_ap()
1826 mwifiex_stop_net_dev_queue(priv->netdev, priv->adapter); in mwifiex_cfg80211_stop_ap()
1841 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_start_ap() local
1843 if (GET_BSS_ROLE(priv) != MWIFIEX_BSS_ROLE_UAP) in mwifiex_cfg80211_start_ap()
1881 mwifiex_uap_set_channel(priv, bss_cfg, params->chandef); in mwifiex_cfg80211_start_ap()
1884 if (mwifiex_set_secure_params(priv, bss_cfg, params)) { in mwifiex_cfg80211_start_ap()
1886 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_start_ap()
1891 mwifiex_set_ht_params(priv, bss_cfg, params); in mwifiex_cfg80211_start_ap()
1893 if (priv->adapter->is_hw_11ac_capable) { in mwifiex_cfg80211_start_ap()
1894 mwifiex_set_vht_params(priv, bss_cfg, params); in mwifiex_cfg80211_start_ap()
1895 mwifiex_set_vht_width(priv, params->chandef.width, in mwifiex_cfg80211_start_ap()
1896 priv->ap_11ac_enabled); in mwifiex_cfg80211_start_ap()
1899 if (priv->ap_11ac_enabled) in mwifiex_cfg80211_start_ap()
1900 mwifiex_set_11ac_ba_params(priv); in mwifiex_cfg80211_start_ap()
1902 mwifiex_set_ba_params(priv); in mwifiex_cfg80211_start_ap()
1904 mwifiex_set_wmm_params(priv, bss_cfg, params); in mwifiex_cfg80211_start_ap()
1906 if (mwifiex_is_11h_active(priv)) in mwifiex_cfg80211_start_ap()
1907 mwifiex_set_tpc_params(priv, bss_cfg, params); in mwifiex_cfg80211_start_ap()
1909 if (mwifiex_is_11h_active(priv) && in mwifiex_cfg80211_start_ap()
1911 priv->bss_mode)) { in mwifiex_cfg80211_start_ap()
1912 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_start_ap()
1914 if (mwifiex_11h_activate(priv, false)) { in mwifiex_cfg80211_start_ap()
1915 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_start_ap()
1919 priv->state_11h.is_11h_active = false; in mwifiex_cfg80211_start_ap()
1922 if (mwifiex_config_start_uap(priv, bss_cfg)) { in mwifiex_cfg80211_start_ap()
1923 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_start_ap()
1929 if (mwifiex_set_mgmt_ies(priv, ¶ms->beacon)) in mwifiex_cfg80211_start_ap()
1932 if (!netif_carrier_ok(priv->netdev)) in mwifiex_cfg80211_start_ap()
1933 netif_carrier_on(priv->netdev); in mwifiex_cfg80211_start_ap()
1934 mwifiex_wake_up_net_dev_queue(priv->netdev, priv->adapter); in mwifiex_cfg80211_start_ap()
1936 memcpy(&priv->bss_cfg, bss_cfg, sizeof(priv->bss_cfg)); in mwifiex_cfg80211_start_ap()
1951 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_disconnect() local
1953 if (mwifiex_deauthenticate(priv, NULL)) in mwifiex_cfg80211_disconnect()
1956 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_disconnect()
1958 "reason code %d\n", priv->cfg_bssid, reason_code); in mwifiex_cfg80211_disconnect()
1960 eth_zero_addr(priv->cfg_bssid); in mwifiex_cfg80211_disconnect()
1961 priv->hs2_enabled = false; in mwifiex_cfg80211_disconnect()
1977 static int mwifiex_cfg80211_inform_ibss_bss(struct mwifiex_private *priv) in mwifiex_cfg80211_inform_ibss_bss() argument
1986 if (mwifiex_get_bss_info(priv, &bss_info)) in mwifiex_cfg80211_inform_ibss_bss()
1996 band = mwifiex_band_to_radio_type(priv->curr_bss_params.band); in mwifiex_cfg80211_inform_ibss_bss()
1997 chan = __ieee80211_get_channel(priv->wdev.wiphy, in mwifiex_cfg80211_inform_ibss_bss()
2001 bss = cfg80211_inform_bss(priv->wdev.wiphy, chan, in mwifiex_cfg80211_inform_ibss_bss()
2006 cfg80211_put_bss(priv->wdev.wiphy, bss); in mwifiex_cfg80211_inform_ibss_bss()
2007 ether_addr_copy(priv->cfg_bssid, bss_info.bssid); in mwifiex_cfg80211_inform_ibss_bss()
2028 mwifiex_cfg80211_assoc(struct mwifiex_private *priv, size_t ssid_len, in mwifiex_cfg80211_assoc() argument
2042 mwifiex_dbg(priv->adapter, ERROR, "invalid SSID - aborting\n"); in mwifiex_cfg80211_assoc()
2048 mwifiex_dbg(priv->adapter, ERROR, "invalid SSID - aborting\n"); in mwifiex_cfg80211_assoc()
2054 priv->sec_info.wpa_enabled = false; in mwifiex_cfg80211_assoc()
2055 priv->sec_info.wpa2_enabled = false; in mwifiex_cfg80211_assoc()
2056 priv->wep_key_curr_index = 0; in mwifiex_cfg80211_assoc()
2057 priv->sec_info.encryption_mode = 0; in mwifiex_cfg80211_assoc()
2058 priv->sec_info.is_authtype_auto = 0; in mwifiex_cfg80211_assoc()
2059 ret = mwifiex_set_encode(priv, NULL, NULL, 0, 0, NULL, 1); in mwifiex_cfg80211_assoc()
2070 priv->sec_info.encryption_mode = in mwifiex_cfg80211_assoc()
2072 priv->sec_info.authentication_mode = in mwifiex_cfg80211_assoc()
2082 priv->sec_info.is_authtype_auto = 1; in mwifiex_cfg80211_assoc()
2088 priv->sec_info.encryption_mode = in mwifiex_cfg80211_assoc()
2090 priv->sec_info.authentication_mode = auth_type; in mwifiex_cfg80211_assoc()
2094 priv->sec_info.encryption_mode = sme->crypto.cipher_group; in mwifiex_cfg80211_assoc()
2095 priv->sec_info.authentication_mode = auth_type; in mwifiex_cfg80211_assoc()
2098 ret = mwifiex_set_gen_ie(priv, sme->ie, sme->ie_len); in mwifiex_cfg80211_assoc()
2101 if (mwifiex_is_alg_wep(priv->sec_info.encryption_mode)) { in mwifiex_cfg80211_assoc()
2102 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_assoc()
2105 priv->wep_key_curr_index = sme->key_idx; in mwifiex_cfg80211_assoc()
2106 ret = mwifiex_set_encode(priv, NULL, sme->key, in mwifiex_cfg80211_assoc()
2120 if (mwifiex_request_scan(priv, &req_ssid)) { in mwifiex_cfg80211_assoc()
2121 mwifiex_dbg(priv->adapter, ERROR, "scan error\n"); in mwifiex_cfg80211_assoc()
2128 bss = cfg80211_get_bss(priv->wdev.wiphy, channel, in mwifiex_cfg80211_assoc()
2133 bss = cfg80211_get_bss(priv->wdev.wiphy, channel, in mwifiex_cfg80211_assoc()
2140 mwifiex_dbg(priv->adapter, WARN, in mwifiex_cfg80211_assoc()
2146 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_assoc()
2149 memcpy(&priv->cfg_bssid, bss->bssid, ETH_ALEN); in mwifiex_cfg80211_assoc()
2154 ret = mwifiex_bss_start(priv, bss, &req_ssid); in mwifiex_cfg80211_assoc()
2161 if (mwifiex_cfg80211_inform_ibss_bss(priv)) in mwifiex_cfg80211_assoc()
2179 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_connect() local
2180 struct mwifiex_adapter *adapter = priv->adapter; in mwifiex_cfg80211_connect()
2183 if (GET_BSS_ROLE(priv) != MWIFIEX_BSS_ROLE_STA) { in mwifiex_cfg80211_connect()
2190 if (priv->wdev.current_bss) { in mwifiex_cfg80211_connect()
2208 ret = mwifiex_cfg80211_assoc(priv, sme->ssid_len, sme->ssid, sme->bssid, in mwifiex_cfg80211_connect()
2209 priv->bss_mode, sme->channel, sme, 0); in mwifiex_cfg80211_connect()
2211 cfg80211_connect_result(priv->netdev, priv->cfg_bssid, NULL, 0, in mwifiex_cfg80211_connect()
2214 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_connect()
2216 priv->cfg_bssid); in mwifiex_cfg80211_connect()
2217 if (ISSUPP_TDLS_ENABLED(priv->adapter->fw_cap_info) && in mwifiex_cfg80211_connect()
2218 priv->adapter->auto_tdls && in mwifiex_cfg80211_connect()
2219 priv->bss_type == MWIFIEX_BSS_TYPE_STA) in mwifiex_cfg80211_connect()
2220 mwifiex_setup_auto_tdls_timer(priv); in mwifiex_cfg80211_connect()
2222 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_connect()
2224 priv->cfg_bssid); in mwifiex_cfg80211_connect()
2225 eth_zero_addr(priv->cfg_bssid); in mwifiex_cfg80211_connect()
2228 cfg80211_connect_result(priv->netdev, priv->cfg_bssid, in mwifiex_cfg80211_connect()
2232 cfg80211_connect_result(priv->netdev, priv->cfg_bssid, in mwifiex_cfg80211_connect()
2248 static int mwifiex_set_ibss_params(struct mwifiex_private *priv, in mwifiex_set_ibss_params() argument
2251 struct mwifiex_adapter *adapter = priv->adapter; in mwifiex_set_ibss_params()
2304 priv->adhoc_channel = ieee80211_frequency_to_channel( in mwifiex_set_ibss_params()
2309 config_bands, priv->adhoc_channel, in mwifiex_set_ibss_params()
2325 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_join_ibss() local
2328 if (priv->bss_mode != NL80211_IFTYPE_ADHOC) { in mwifiex_cfg80211_join_ibss()
2329 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_join_ibss()
2335 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_join_ibss()
2339 mwifiex_set_ibss_params(priv, params); in mwifiex_cfg80211_join_ibss()
2341 ret = mwifiex_cfg80211_assoc(priv, params->ssid_len, params->ssid, in mwifiex_cfg80211_join_ibss()
2342 params->bssid, priv->bss_mode, in mwifiex_cfg80211_join_ibss()
2347 cfg80211_ibss_joined(priv->netdev, priv->cfg_bssid, in mwifiex_cfg80211_join_ibss()
2349 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_join_ibss()
2351 "%pM successfully\n", priv->cfg_bssid); in mwifiex_cfg80211_join_ibss()
2353 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_join_ibss()
2369 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_leave_ibss() local
2371 mwifiex_dbg(priv->adapter, MSG, "info: disconnecting from essid %pM\n", in mwifiex_cfg80211_leave_ibss()
2372 priv->cfg_bssid); in mwifiex_cfg80211_leave_ibss()
2373 if (mwifiex_deauthenticate(priv, NULL)) in mwifiex_cfg80211_leave_ibss()
2376 eth_zero_addr(priv->cfg_bssid); in mwifiex_cfg80211_leave_ibss()
2393 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_scan() local
2399 mwifiex_dbg(priv->adapter, CMD, in mwifiex_cfg80211_scan()
2405 if (priv->scan_request || priv->scan_aborting) { in mwifiex_cfg80211_scan()
2406 mwifiex_dbg(priv->adapter, WARN, in mwifiex_cfg80211_scan()
2415 priv->scan_request = request; in mwifiex_cfg80211_scan()
2423 if (priv->vs_ie[i].mask != MWIFIEX_VSIE_MASK_CLEAR) in mwifiex_cfg80211_scan()
2425 priv->vs_ie[i].mask = MWIFIEX_VSIE_MASK_SCAN; in mwifiex_cfg80211_scan()
2427 memcpy(&priv->vs_ie[i].ie, ie, sizeof(*ie) + ie->len); in mwifiex_cfg80211_scan()
2451 if (priv->adapter->scan_chan_gap_enabled && in mwifiex_cfg80211_scan()
2452 mwifiex_is_any_intf_active(priv)) in mwifiex_cfg80211_scan()
2454 priv->adapter->scan_chan_gap_time; in mwifiex_cfg80211_scan()
2456 ret = mwifiex_scan_networks(priv, user_scan_cfg); in mwifiex_cfg80211_scan()
2459 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_scan()
2461 priv->scan_aborting = false; in mwifiex_cfg80211_scan()
2462 priv->scan_request = NULL; in mwifiex_cfg80211_scan()
2468 if (priv->vs_ie[i].mask == MWIFIEX_VSIE_MASK_SCAN) { in mwifiex_cfg80211_scan()
2469 priv->vs_ie[i].mask = MWIFIEX_VSIE_MASK_CLEAR; in mwifiex_cfg80211_scan()
2470 memset(&priv->vs_ie[i].ie, 0, in mwifiex_cfg80211_scan()
2479 struct mwifiex_private *priv) in mwifiex_setup_vht_caps() argument
2481 struct mwifiex_adapter *adapter = priv->adapter; in mwifiex_setup_vht_caps()
2509 struct mwifiex_private *priv) in mwifiex_setup_ht_caps() argument
2514 struct mwifiex_adapter *adapter = priv->adapter; in mwifiex_setup_ht_caps()
2572 if (priv->bss_mode == NL80211_IFTYPE_STATION || in mwifiex_setup_ht_caps()
2593 struct mwifiex_private *priv; in mwifiex_add_virtual_intf() local
2611 priv = mwifiex_get_unused_priv(adapter); in mwifiex_add_virtual_intf()
2612 if (!priv) { in mwifiex_add_virtual_intf()
2618 priv->wdev.wiphy = wiphy; in mwifiex_add_virtual_intf()
2619 priv->wdev.iftype = NL80211_IFTYPE_STATION; in mwifiex_add_virtual_intf()
2622 priv->bss_mode = NL80211_IFTYPE_STATION; in mwifiex_add_virtual_intf()
2624 priv->bss_mode = type; in mwifiex_add_virtual_intf()
2626 priv->bss_type = MWIFIEX_BSS_TYPE_STA; in mwifiex_add_virtual_intf()
2627 priv->frame_type = MWIFIEX_DATA_FRAME_TYPE_ETH_II; in mwifiex_add_virtual_intf()
2628 priv->bss_priority = 0; in mwifiex_add_virtual_intf()
2629 priv->bss_role = MWIFIEX_BSS_ROLE_STA; in mwifiex_add_virtual_intf()
2630 priv->bss_num = adapter->curr_iface_comb.sta_intf; in mwifiex_add_virtual_intf()
2641 priv = mwifiex_get_unused_priv(adapter); in mwifiex_add_virtual_intf()
2642 if (!priv) { in mwifiex_add_virtual_intf()
2648 priv->wdev.wiphy = wiphy; in mwifiex_add_virtual_intf()
2649 priv->wdev.iftype = NL80211_IFTYPE_AP; in mwifiex_add_virtual_intf()
2651 priv->bss_type = MWIFIEX_BSS_TYPE_UAP; in mwifiex_add_virtual_intf()
2652 priv->frame_type = MWIFIEX_DATA_FRAME_TYPE_ETH_II; in mwifiex_add_virtual_intf()
2653 priv->bss_priority = 0; in mwifiex_add_virtual_intf()
2654 priv->bss_role = MWIFIEX_BSS_ROLE_UAP; in mwifiex_add_virtual_intf()
2655 priv->bss_started = 0; in mwifiex_add_virtual_intf()
2656 priv->bss_num = adapter->curr_iface_comb.uap_intf; in mwifiex_add_virtual_intf()
2657 priv->bss_mode = type; in mwifiex_add_virtual_intf()
2668 priv = mwifiex_get_unused_priv(adapter); in mwifiex_add_virtual_intf()
2669 if (!priv) { in mwifiex_add_virtual_intf()
2675 priv->wdev.wiphy = wiphy; in mwifiex_add_virtual_intf()
2679 priv->wdev.iftype = NL80211_IFTYPE_P2P_CLIENT; in mwifiex_add_virtual_intf()
2680 priv->bss_mode = NL80211_IFTYPE_P2P_CLIENT; in mwifiex_add_virtual_intf()
2686 priv->bss_type = MWIFIEX_BSS_TYPE_P2P; in mwifiex_add_virtual_intf()
2688 priv->frame_type = MWIFIEX_DATA_FRAME_TYPE_ETH_II; in mwifiex_add_virtual_intf()
2689 priv->bss_priority = MWIFIEX_BSS_ROLE_STA; in mwifiex_add_virtual_intf()
2690 priv->bss_role = MWIFIEX_BSS_ROLE_STA; in mwifiex_add_virtual_intf()
2691 priv->bss_started = 0; in mwifiex_add_virtual_intf()
2692 priv->bss_num = adapter->curr_iface_comb.p2p_intf; in mwifiex_add_virtual_intf()
2694 if (mwifiex_cfg80211_init_p2p_client(priv)) { in mwifiex_add_virtual_intf()
2695 memset(&priv->wdev, 0, sizeof(priv->wdev)); in mwifiex_add_virtual_intf()
2696 priv->wdev.iftype = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_add_virtual_intf()
2712 memset(&priv->wdev, 0, sizeof(priv->wdev)); in mwifiex_add_virtual_intf()
2713 priv->wdev.iftype = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_add_virtual_intf()
2714 priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_add_virtual_intf()
2718 mwifiex_init_priv_params(priv, dev); in mwifiex_add_virtual_intf()
2719 priv->netdev = dev; in mwifiex_add_virtual_intf()
2721 mwifiex_setup_ht_caps(&wiphy->bands[IEEE80211_BAND_2GHZ]->ht_cap, priv); in mwifiex_add_virtual_intf()
2724 &wiphy->bands[IEEE80211_BAND_2GHZ]->vht_cap, priv); in mwifiex_add_virtual_intf()
2728 &wiphy->bands[IEEE80211_BAND_5GHZ]->ht_cap, priv); in mwifiex_add_virtual_intf()
2732 &wiphy->bands[IEEE80211_BAND_5GHZ]->vht_cap, priv); in mwifiex_add_virtual_intf()
2735 dev->ieee80211_ptr = &priv->wdev; in mwifiex_add_virtual_intf()
2736 dev->ieee80211_ptr->iftype = priv->bss_mode; in mwifiex_add_virtual_intf()
2746 *((unsigned long *) mdev_priv) = (unsigned long) priv; in mwifiex_add_virtual_intf()
2755 priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_add_virtual_intf()
2756 priv->netdev = NULL; in mwifiex_add_virtual_intf()
2757 memset(&priv->wdev, 0, sizeof(priv->wdev)); in mwifiex_add_virtual_intf()
2758 priv->wdev.iftype = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_add_virtual_intf()
2762 priv->dfs_cac_workqueue = alloc_workqueue("MWIFIEX_DFS_CAC%s", in mwifiex_add_virtual_intf()
2766 if (!priv->dfs_cac_workqueue) { in mwifiex_add_virtual_intf()
2770 priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_add_virtual_intf()
2771 priv->netdev = NULL; in mwifiex_add_virtual_intf()
2772 memset(&priv->wdev, 0, sizeof(priv->wdev)); in mwifiex_add_virtual_intf()
2773 priv->wdev.iftype = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_add_virtual_intf()
2777 INIT_DELAYED_WORK(&priv->dfs_cac_work, mwifiex_dfs_cac_work_queue); in mwifiex_add_virtual_intf()
2779 priv->dfs_chan_sw_workqueue = alloc_workqueue("MWIFIEX_DFS_CHSW%s", in mwifiex_add_virtual_intf()
2782 if (!priv->dfs_chan_sw_workqueue) { in mwifiex_add_virtual_intf()
2786 priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_add_virtual_intf()
2787 priv->netdev = NULL; in mwifiex_add_virtual_intf()
2788 memset(&priv->wdev, 0, sizeof(priv->wdev)); in mwifiex_add_virtual_intf()
2789 priv->wdev.iftype = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_add_virtual_intf()
2793 INIT_DELAYED_WORK(&priv->dfs_chan_sw_work, in mwifiex_add_virtual_intf()
2796 sema_init(&priv->async_sem, 1); in mwifiex_add_virtual_intf()
2802 mwifiex_dev_debugfs_init(priv); in mwifiex_add_virtual_intf()
2822 return &priv->wdev; in mwifiex_add_virtual_intf()
2831 struct mwifiex_private *priv = mwifiex_netdev_get_priv(wdev->netdev); in mwifiex_del_virtual_intf() local
2832 struct mwifiex_adapter *adapter = priv->adapter; in mwifiex_del_virtual_intf()
2836 mwifiex_dev_debugfs_remove(priv); in mwifiex_del_virtual_intf()
2839 mwifiex_stop_net_dev_queue(priv->netdev, adapter); in mwifiex_del_virtual_intf()
2841 skb_queue_walk_safe(&priv->bypass_txq, skb, tmp) in mwifiex_del_virtual_intf()
2842 mwifiex_write_data_complete(priv->adapter, skb, 0, -1); in mwifiex_del_virtual_intf()
2844 if (netif_carrier_ok(priv->netdev)) in mwifiex_del_virtual_intf()
2845 netif_carrier_off(priv->netdev); in mwifiex_del_virtual_intf()
2850 if (priv->dfs_cac_workqueue) { in mwifiex_del_virtual_intf()
2851 flush_workqueue(priv->dfs_cac_workqueue); in mwifiex_del_virtual_intf()
2852 destroy_workqueue(priv->dfs_cac_workqueue); in mwifiex_del_virtual_intf()
2853 priv->dfs_cac_workqueue = NULL; in mwifiex_del_virtual_intf()
2856 if (priv->dfs_chan_sw_workqueue) { in mwifiex_del_virtual_intf()
2857 flush_workqueue(priv->dfs_chan_sw_workqueue); in mwifiex_del_virtual_intf()
2858 destroy_workqueue(priv->dfs_chan_sw_workqueue); in mwifiex_del_virtual_intf()
2859 priv->dfs_chan_sw_workqueue = NULL; in mwifiex_del_virtual_intf()
2862 priv->netdev->ieee80211_ptr = NULL; in mwifiex_del_virtual_intf()
2863 priv->netdev = NULL; in mwifiex_del_virtual_intf()
2864 priv->wdev.iftype = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_del_virtual_intf()
2866 priv->media_connected = false; in mwifiex_del_virtual_intf()
2868 switch (priv->bss_mode) { in mwifiex_del_virtual_intf()
2887 priv->bss_mode = NL80211_IFTYPE_UNSPECIFIED; in mwifiex_del_virtual_intf()
2889 if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA || in mwifiex_del_virtual_intf()
2890 GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP) in mwifiex_del_virtual_intf()
2891 kfree(priv->hist_data); in mwifiex_del_virtual_intf()
2928 static void mwifiex_set_auto_arp_mef_entry(struct mwifiex_private *priv, in mwifiex_set_auto_arp_mef_entry() argument
2935 struct mwifiex_adapter *adapter = priv->adapter; in mwifiex_set_auto_arp_mef_entry()
2943 if (adapter->priv[i]->netdev) { in mwifiex_set_auto_arp_mef_entry()
2944 in_dev = __in_dev_get_rtnl(adapter->priv[i]->netdev); in mwifiex_set_auto_arp_mef_entry()
2982 static int mwifiex_set_wowlan_mef_entry(struct mwifiex_private *priv, in mwifiex_set_wowlan_mef_entry() argument
3001 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_set_wowlan_mef_entry()
3040 memcpy(mef_entry->filter[filt_num].byte_seq, priv->curr_addr, in mwifiex_set_wowlan_mef_entry()
3051 memcpy(mef_entry->filter[filt_num].byte_seq, priv->curr_addr, in mwifiex_set_wowlan_mef_entry()
3062 static int mwifiex_set_mef_filter(struct mwifiex_private *priv, in mwifiex_set_mef_filter() argument
3082 mwifiex_set_auto_arp_mef_entry(priv, &mef_entry[0]); in mwifiex_set_mef_filter()
3085 ret = mwifiex_set_wowlan_mef_entry(priv, &mef_cfg, in mwifiex_set_mef_filter()
3096 ret = mwifiex_send_cmd(priv, HostCmd_CMD_MEF_CFG, in mwifiex_set_mef_filter()
3111 struct mwifiex_private *priv; in mwifiex_cfg80211_suspend() local
3114 priv = adapter->priv[i]; in mwifiex_cfg80211_suspend()
3115 mwifiex_abort_cac(priv); in mwifiex_cfg80211_suspend()
3126 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA); in mwifiex_cfg80211_suspend()
3128 if (!priv->media_connected) { in mwifiex_cfg80211_suspend()
3134 ret = mwifiex_set_mef_filter(priv, wowlan); in mwifiex_cfg80211_suspend()
3146 ret = mwifiex_set_hs_params(priv, HostCmd_ACT_GEN_SET, in mwifiex_cfg80211_suspend()
3193 mwifiex_fill_coalesce_rule_info(struct mwifiex_private *priv, in mwifiex_fill_coalesce_rule_info() argument
3210 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_fill_coalesce_rule_info()
3220 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_fill_coalesce_rule_info()
3244 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_fill_coalesce_rule_info()
3258 struct mwifiex_private *priv = in mwifiex_cfg80211_set_coalesce() local
3265 return mwifiex_send_cmd(priv, HostCmd_CMD_COALESCE_CFG, in mwifiex_cfg80211_set_coalesce()
3272 ret = mwifiex_fill_coalesce_rule_info(priv, &coalesce->rules[i], in mwifiex_cfg80211_set_coalesce()
3282 return mwifiex_send_cmd(priv, HostCmd_CMD_COALESCE_CFG, in mwifiex_cfg80211_set_coalesce()
3296 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_tdls_mgmt() local
3303 if (!(priv->bss_type == MWIFIEX_BSS_TYPE_STA && priv->media_connected)) in mwifiex_cfg80211_tdls_mgmt()
3308 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_tdls_mgmt()
3311 mwifiex_add_auto_tdls_peer(priv, peer); in mwifiex_cfg80211_tdls_mgmt()
3312 ret = mwifiex_send_tdls_data_frame(priv, peer, action_code, in mwifiex_cfg80211_tdls_mgmt()
3317 mwifiex_add_auto_tdls_peer(priv, peer); in mwifiex_cfg80211_tdls_mgmt()
3318 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_tdls_mgmt()
3321 ret = mwifiex_send_tdls_data_frame(priv, peer, action_code, in mwifiex_cfg80211_tdls_mgmt()
3326 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_tdls_mgmt()
3329 ret = mwifiex_send_tdls_data_frame(priv, peer, action_code, in mwifiex_cfg80211_tdls_mgmt()
3334 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_tdls_mgmt()
3336 ret = mwifiex_send_tdls_data_frame(priv, peer, action_code, in mwifiex_cfg80211_tdls_mgmt()
3341 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_tdls_mgmt()
3343 ret = mwifiex_send_tdls_data_frame(priv, peer, action_code, in mwifiex_cfg80211_tdls_mgmt()
3348 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_tdls_mgmt()
3350 ret = mwifiex_send_tdls_action_frame(priv, peer, action_code, in mwifiex_cfg80211_tdls_mgmt()
3355 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_tdls_mgmt()
3368 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_tdls_oper() local
3375 if (!(priv->bss_type == MWIFIEX_BSS_TYPE_STA && priv->media_connected)) in mwifiex_cfg80211_tdls_oper()
3378 mwifiex_dbg(priv->adapter, MSG, in mwifiex_cfg80211_tdls_oper()
3390 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_tdls_oper()
3395 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_tdls_oper()
3400 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_tdls_oper()
3404 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_tdls_oper()
3409 return mwifiex_tdls_oper(priv, peer, action); in mwifiex_cfg80211_tdls_oper()
3421 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_tdls_chan_switch() local
3423 spin_lock_irqsave(&priv->sta_list_spinlock, flags); in mwifiex_cfg80211_tdls_chan_switch()
3424 sta_ptr = mwifiex_get_sta_entry(priv, addr); in mwifiex_cfg80211_tdls_chan_switch()
3425 spin_unlock_irqrestore(&priv->sta_list_spinlock, flags); in mwifiex_cfg80211_tdls_chan_switch()
3448 mwifiex_start_tdls_cs(priv, addr, chan, second_chan_offset, band); in mwifiex_cfg80211_tdls_chan_switch()
3460 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_tdls_cancel_chan_switch() local
3462 spin_lock_irqsave(&priv->sta_list_spinlock, flags); in mwifiex_cfg80211_tdls_cancel_chan_switch()
3463 sta_ptr = mwifiex_get_sta_entry(priv, addr); in mwifiex_cfg80211_tdls_cancel_chan_switch()
3464 spin_unlock_irqrestore(&priv->sta_list_spinlock, flags); in mwifiex_cfg80211_tdls_cancel_chan_switch()
3475 mwifiex_stop_tdls_cs(priv, addr); in mwifiex_cfg80211_tdls_cancel_chan_switch()
3482 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_add_station() local
3488 if ((priv->bss_type != MWIFIEX_BSS_TYPE_STA) || !priv->media_connected) in mwifiex_cfg80211_add_station()
3491 return mwifiex_tdls_oper(priv, mac, MWIFIEX_TDLS_CREATE_LINK); in mwifiex_cfg80211_add_station()
3501 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_channel_switch() local
3503 if (priv->adapter->scan_processing) { in mwifiex_cfg80211_channel_switch()
3504 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_channel_switch()
3509 if (priv->wdev.cac_started) in mwifiex_cfg80211_channel_switch()
3513 &priv->dfs_chandef)) in mwifiex_cfg80211_channel_switch()
3520 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_channel_switch()
3527 if (netif_carrier_ok(priv->netdev)) in mwifiex_cfg80211_channel_switch()
3528 netif_carrier_off(priv->netdev); in mwifiex_cfg80211_channel_switch()
3529 mwifiex_stop_net_dev_queue(priv->netdev, priv->adapter); in mwifiex_cfg80211_channel_switch()
3532 if (mwifiex_del_mgmt_ies(priv)) in mwifiex_cfg80211_channel_switch()
3533 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_channel_switch()
3536 if (mwifiex_set_mgmt_ies(priv, ¶ms->beacon_csa)) { in mwifiex_cfg80211_channel_switch()
3537 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_channel_switch()
3542 memcpy(&priv->dfs_chandef, ¶ms->chandef, sizeof(priv->dfs_chandef)); in mwifiex_cfg80211_channel_switch()
3543 memcpy(&priv->beacon_after, ¶ms->beacon_after, in mwifiex_cfg80211_channel_switch()
3544 sizeof(priv->beacon_after)); in mwifiex_cfg80211_channel_switch()
3546 chsw_msec = max(channel_sw->count * priv->bss_cfg.beacon_period, 100); in mwifiex_cfg80211_channel_switch()
3547 queue_delayed_work(priv->dfs_chan_sw_workqueue, &priv->dfs_chan_sw_work, in mwifiex_cfg80211_channel_switch()
3556 struct mwifiex_private *priv = mwifiex_netdev_get_priv(wdev->netdev); in mwifiex_cfg80211_get_channel() local
3565 if (GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_UAP && in mwifiex_cfg80211_get_channel()
3566 cfg80211_chandef_valid(&priv->bss_chandef)) { in mwifiex_cfg80211_get_channel()
3567 *chandef = priv->bss_chandef; in mwifiex_cfg80211_get_channel()
3569 } else if (priv->media_connected) { in mwifiex_cfg80211_get_channel()
3570 curr_bss = &priv->curr_bss_params.bss_descriptor; in mwifiex_cfg80211_get_channel()
3571 band = mwifiex_band_to_radio_type(priv->curr_bss_params.band); in mwifiex_cfg80211_get_channel()
3597 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_start_radar_detection() local
3600 if (priv->adapter->scan_processing) { in mwifiex_cfg80211_start_radar_detection()
3601 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_start_radar_detection()
3606 if (!mwifiex_is_11h_active(priv)) { in mwifiex_cfg80211_start_radar_detection()
3607 mwifiex_dbg(priv->adapter, INFO, in mwifiex_cfg80211_start_radar_detection()
3609 if (mwifiex_11h_activate(priv, true)) { in mwifiex_cfg80211_start_radar_detection()
3610 mwifiex_dbg(priv->adapter, ERROR, in mwifiex_cfg80211_start_radar_detection()
3614 priv->state_11h.is_11h_active = true; in mwifiex_cfg80211_start_radar_detection()
3621 memcpy(&priv->dfs_chandef, chandef, sizeof(priv->dfs_chandef)); in mwifiex_cfg80211_start_radar_detection()
3623 if (mwifiex_send_cmd(priv, HostCmd_CMD_CHAN_REPORT_REQUEST, in mwifiex_cfg80211_start_radar_detection()
3627 queue_delayed_work(priv->dfs_cac_workqueue, &priv->dfs_cac_work, in mwifiex_cfg80211_start_radar_detection()
3638 struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev); in mwifiex_cfg80211_change_station() local
3645 if ((priv->bss_type != MWIFIEX_BSS_TYPE_STA) || !priv->media_connected) in mwifiex_cfg80211_change_station()
3648 priv->sta_params = params; in mwifiex_cfg80211_change_station()
3650 ret = mwifiex_tdls_oper(priv, mac, MWIFIEX_TDLS_CONFIG_LINK); in mwifiex_cfg80211_change_station()
3651 priv->sta_params = NULL; in mwifiex_cfg80211_change_station()
3765 struct mwifiex_private *priv = adapter->priv[MWIFIEX_BSS_TYPE_STA]; in mwifiex_register_cfg80211() local
3850 set_wiphy_dev(wiphy, priv->adapter->dev); in mwifiex_register_cfg80211()
3872 mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB, in mwifiex_register_cfg80211()
3875 mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB, in mwifiex_register_cfg80211()
3878 mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB, in mwifiex_register_cfg80211()
3881 mwifiex_send_cmd(priv, HostCmd_CMD_802_11_SNMP_MIB, in mwifiex_register_cfg80211()