Lines Matching refs:vif
26 struct ath6kl_sta *ath6kl_find_sta(struct ath6kl_vif *vif, u8 *node_addr) in ath6kl_find_sta() argument
28 struct ath6kl *ar = vif->ar; in ath6kl_find_sta()
35 max_conn = (vif->nw_type == AP_NETWORK) ? AP_MAX_NUM_STA : 0; in ath6kl_find_sta()
61 static void ath6kl_add_new_sta(struct ath6kl_vif *vif, u8 *mac, u16 aid, in ath6kl_add_new_sta() argument
65 struct ath6kl *ar = vif->ar; in ath6kl_add_new_sta()
83 aggr_conn_init(vif, vif->aggr_cntxt, sta->aggr_conn); in ath6kl_add_new_sta()
351 static void ath6kl_install_static_wep_keys(struct ath6kl_vif *vif) in ath6kl_install_static_wep_keys() argument
357 if (vif->wep_key_list[index].key_len) { in ath6kl_install_static_wep_keys()
359 if (index == vif->def_txkey_index) in ath6kl_install_static_wep_keys()
362 ath6kl_wmi_addkey_cmd(vif->ar->wmi, vif->fw_vif_idx, in ath6kl_install_static_wep_keys()
366 vif->wep_key_list[index].key_len, in ath6kl_install_static_wep_keys()
368 vif->wep_key_list[index].key, in ath6kl_install_static_wep_keys()
375 void ath6kl_connect_ap_mode_bss(struct ath6kl_vif *vif, u16 channel) in ath6kl_connect_ap_mode_bss() argument
377 struct ath6kl *ar = vif->ar; in ath6kl_connect_ap_mode_bss()
386 switch (vif->auth_mode) { in ath6kl_connect_ap_mode_bss()
388 if (vif->prwise_crypto == WEP_CRYPT) in ath6kl_connect_ap_mode_bss()
389 ath6kl_install_static_wep_keys(vif); in ath6kl_connect_ap_mode_bss()
403 ar->wmi, vif->fw_vif_idx, ik->key_index, ik->key_type, in ath6kl_connect_ap_mode_bss()
416 ath6kl_cfg80211_ch_switch_notify(vif, channel, WMI_11G_HT20); in ath6kl_connect_ap_mode_bss()
418 ath6kl_wmi_bssfilter_cmd(ar->wmi, vif->fw_vif_idx, NONE_BSS_FILTER, 0); in ath6kl_connect_ap_mode_bss()
419 set_bit(CONNECTED, &vif->flags); in ath6kl_connect_ap_mode_bss()
420 netif_carrier_on(vif->ndev); in ath6kl_connect_ap_mode_bss()
423 void ath6kl_connect_ap_mode_sta(struct ath6kl_vif *vif, u16 aid, u8 *mac_addr, in ath6kl_connect_ap_mode_sta() argument
480 ath6kl_add_new_sta(vif, mac_addr, aid, wpa_ie, in ath6kl_connect_ap_mode_sta()
492 cfg80211_new_sta(vif->ndev, mac_addr, &sinfo, GFP_KERNEL); in ath6kl_connect_ap_mode_sta()
494 netif_wake_queue(vif->ndev); in ath6kl_connect_ap_mode_sta()
500 struct ath6kl_vif *vif = netdev_priv(dev); in disconnect_timer_handler() local
502 ath6kl_init_profile_info(vif); in disconnect_timer_handler()
503 ath6kl_disconnect(vif); in disconnect_timer_handler()
506 void ath6kl_disconnect(struct ath6kl_vif *vif) in ath6kl_disconnect() argument
508 if (test_bit(CONNECTED, &vif->flags) || in ath6kl_disconnect()
509 test_bit(CONNECT_PEND, &vif->flags)) { in ath6kl_disconnect()
510 ath6kl_wmi_disconnect_cmd(vif->ar->wmi, vif->fw_vif_idx); in ath6kl_disconnect()
516 clear_bit(CONNECT_PEND, &vif->flags); in ath6kl_disconnect()
552 void ath6kl_scan_complete_evt(struct ath6kl_vif *vif, int status) in ath6kl_scan_complete_evt() argument
554 struct ath6kl *ar = vif->ar; in ath6kl_scan_complete_evt()
560 ath6kl_cfg80211_scan_complete_event(vif, aborted); in ath6kl_scan_complete_evt()
563 clear_bit(CLEAR_BSSFILTER_ON_BEACON, &vif->flags); in ath6kl_scan_complete_evt()
564 ath6kl_wmi_bssfilter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_scan_complete_evt()
571 static int ath6kl_commit_ch_switch(struct ath6kl_vif *vif, u16 channel) in ath6kl_commit_ch_switch() argument
573 struct ath6kl *ar = vif->ar; in ath6kl_commit_ch_switch()
575 vif->profile.ch = cpu_to_le16(channel); in ath6kl_commit_ch_switch()
577 switch (vif->nw_type) { in ath6kl_commit_ch_switch()
583 if (vif->rsn_capab && in ath6kl_commit_ch_switch()
586 ath6kl_wmi_set_ie_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_commit_ch_switch()
588 (const u8 *) &vif->rsn_capab, in ath6kl_commit_ch_switch()
589 sizeof(vif->rsn_capab)); in ath6kl_commit_ch_switch()
591 return ath6kl_wmi_ap_profile_commit(ar->wmi, vif->fw_vif_idx, in ath6kl_commit_ch_switch()
592 &vif->profile); in ath6kl_commit_ch_switch()
594 ath6kl_err("won't switch channels nw_type=%d\n", vif->nw_type); in ath6kl_commit_ch_switch()
601 struct ath6kl_vif *vif; in ath6kl_check_ch_switch() local
608 list_for_each_entry(vif, &ar->vif_list, list) { in ath6kl_check_ch_switch()
609 if (ar->want_ch_switch & (1 << vif->fw_vif_idx)) in ath6kl_check_ch_switch()
610 res = ath6kl_commit_ch_switch(vif, channel); in ath6kl_check_ch_switch()
613 ar->want_ch_switch &= ~(1 << vif->fw_vif_idx); in ath6kl_check_ch_switch()
617 vif->nw_type, res); in ath6kl_check_ch_switch()
622 void ath6kl_connect_event(struct ath6kl_vif *vif, u16 channel, u8 *bssid, in ath6kl_connect_event() argument
628 struct ath6kl *ar = vif->ar; in ath6kl_connect_event()
630 ath6kl_cfg80211_connect_event(vif, channel, bssid, in ath6kl_connect_event()
636 memcpy(vif->bssid, bssid, sizeof(vif->bssid)); in ath6kl_connect_event()
637 vif->bss_ch = channel; in ath6kl_connect_event()
639 if ((vif->nw_type == INFRA_NETWORK)) { in ath6kl_connect_event()
640 ath6kl_wmi_listeninterval_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_connect_event()
641 vif->listen_intvl_t, 0); in ath6kl_connect_event()
645 netif_wake_queue(vif->ndev); in ath6kl_connect_event()
648 spin_lock_bh(&vif->if_lock); in ath6kl_connect_event()
649 set_bit(CONNECTED, &vif->flags); in ath6kl_connect_event()
650 clear_bit(CONNECT_PEND, &vif->flags); in ath6kl_connect_event()
651 netif_carrier_on(vif->ndev); in ath6kl_connect_event()
652 spin_unlock_bh(&vif->if_lock); in ath6kl_connect_event()
654 aggr_reset_state(vif->aggr_cntxt->aggr_conn); in ath6kl_connect_event()
655 vif->reconnect_flag = 0; in ath6kl_connect_event()
657 if ((vif->nw_type == ADHOC_NETWORK) && ar->ibss_ps_enable) { in ath6kl_connect_event()
664 set_bit(CLEAR_BSSFILTER_ON_BEACON, &vif->flags); in ath6kl_connect_event()
665 ath6kl_wmi_bssfilter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_connect_event()
670 void ath6kl_tkip_micerr_event(struct ath6kl_vif *vif, u8 keyid, bool ismcast) in ath6kl_tkip_micerr_event() argument
673 struct ath6kl *ar = vif->ar; in ath6kl_tkip_micerr_event()
680 if (vif->nw_type == AP_NETWORK) { in ath6kl_tkip_micerr_event()
689 cfg80211_michael_mic_failure(vif->ndev, sta->mac, in ath6kl_tkip_micerr_event()
693 ath6kl_cfg80211_tkip_micerr_event(vif, keyid, ismcast); in ath6kl_tkip_micerr_event()
697 static void ath6kl_update_target_stats(struct ath6kl_vif *vif, u8 *ptr, u32 len) in ath6kl_update_target_stats() argument
701 struct ath6kl *ar = vif->ar; in ath6kl_update_target_stats()
702 struct target_stats *stats = &vif->target_stats; in ath6kl_update_target_stats()
805 if (test_bit(STATS_UPDATE_PEND, &vif->flags)) { in ath6kl_update_target_stats()
806 clear_bit(STATS_UPDATE_PEND, &vif->flags); in ath6kl_update_target_stats()
816 void ath6kl_tgt_stats_event(struct ath6kl_vif *vif, u8 *ptr, u32 len) in ath6kl_tgt_stats_event() argument
819 struct ath6kl *ar = vif->ar; in ath6kl_tgt_stats_event()
824 if (vif->nw_type == AP_NETWORK) { in ath6kl_tgt_stats_event()
843 ath6kl_update_target_stats(vif, ptr, len); in ath6kl_tgt_stats_event()
862 void ath6kl_pspoll_event(struct ath6kl_vif *vif, u8 aid) in ath6kl_pspoll_event() argument
867 struct ath6kl *ar = vif->ar; in ath6kl_pspoll_event()
895 ath6kl_wmi_send_mgmt_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_pspoll_event()
906 ath6kl_data_tx(skb, vif->ndev); in ath6kl_pspoll_event()
915 ath6kl_wmi_set_pvb_cmd(ar->wmi, vif->fw_vif_idx, conn->aid, 0); in ath6kl_pspoll_event()
918 void ath6kl_dtimexpiry_event(struct ath6kl_vif *vif) in ath6kl_dtimexpiry_event() argument
922 struct ath6kl *ar = vif->ar; in ath6kl_dtimexpiry_event()
944 set_bit(DTIM_EXPIRED, &vif->flags); in ath6kl_dtimexpiry_event()
950 ath6kl_data_tx(skb, vif->ndev); in ath6kl_dtimexpiry_event()
956 clear_bit(DTIM_EXPIRED, &vif->flags); in ath6kl_dtimexpiry_event()
959 ath6kl_wmi_set_pvb_cmd(ar->wmi, vif->fw_vif_idx, MCAST_AID, 0); in ath6kl_dtimexpiry_event()
962 void ath6kl_disconnect_event(struct ath6kl_vif *vif, u8 reason, u8 *bssid, in ath6kl_disconnect_event() argument
966 struct ath6kl *ar = vif->ar; in ath6kl_disconnect_event()
968 if (vif->nw_type == AP_NETWORK) { in ath6kl_disconnect_event()
972 ar->want_ch_switch |= 1 << vif->fw_vif_idx; in ath6kl_disconnect_event()
974 ar->last_ch = le16_to_cpu(vif->profile.ch); in ath6kl_disconnect_event()
979 cfg80211_conn_failed(vif->ndev, bssid, in ath6kl_disconnect_event()
986 cfg80211_conn_failed(vif->ndev, bssid, in ath6kl_disconnect_event()
1002 ath6kl_wmi_set_pvb_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_disconnect_event()
1008 cfg80211_del_sta(vif->ndev, bssid, GFP_KERNEL); in ath6kl_disconnect_event()
1011 if (memcmp(vif->ndev->dev_addr, bssid, ETH_ALEN) == 0) { in ath6kl_disconnect_event()
1012 memset(vif->wep_key_list, 0, sizeof(vif->wep_key_list)); in ath6kl_disconnect_event()
1013 clear_bit(CONNECTED, &vif->flags); in ath6kl_disconnect_event()
1018 ath6kl_cfg80211_disconnect_event(vif, reason, bssid, in ath6kl_disconnect_event()
1022 aggr_reset_state(vif->aggr_cntxt->aggr_conn); in ath6kl_disconnect_event()
1024 del_timer(&vif->disconnect_timer); in ath6kl_disconnect_event()
1035 ath6kl_wmi_bssfilter_cmd(ar->wmi, vif->fw_vif_idx, in ath6kl_disconnect_event()
1038 set_bit(CONNECT_PEND, &vif->flags); in ath6kl_disconnect_event()
1042 (vif->reconnect_flag == 1))) { in ath6kl_disconnect_event()
1043 set_bit(CONNECTED, &vif->flags); in ath6kl_disconnect_event()
1052 spin_lock_bh(&vif->if_lock); in ath6kl_disconnect_event()
1053 clear_bit(CONNECTED, &vif->flags); in ath6kl_disconnect_event()
1054 netif_carrier_off(vif->ndev); in ath6kl_disconnect_event()
1055 spin_unlock_bh(&vif->if_lock); in ath6kl_disconnect_event()
1057 if ((reason != CSERV_DISCONNECT) || (vif->reconnect_flag != 1)) in ath6kl_disconnect_event()
1058 vif->reconnect_flag = 0; in ath6kl_disconnect_event()
1063 netif_stop_queue(vif->ndev); in ath6kl_disconnect_event()
1064 memset(vif->bssid, 0, sizeof(vif->bssid)); in ath6kl_disconnect_event()
1065 vif->bss_ch = 0; in ath6kl_disconnect_event()
1072 struct ath6kl_vif *vif; in ath6kl_vif_first() local
1080 vif = list_first_entry(&ar->vif_list, struct ath6kl_vif, list); in ath6kl_vif_first()
1084 return vif; in ath6kl_vif_first()
1089 struct ath6kl_vif *vif = netdev_priv(dev); in ath6kl_open() local
1091 set_bit(WLAN_ENABLED, &vif->flags); in ath6kl_open()
1093 if (test_bit(CONNECTED, &vif->flags)) { in ath6kl_open()
1105 struct ath6kl_vif *vif = netdev_priv(dev); in ath6kl_close() local
1109 ath6kl_cfg80211_stop(vif); in ath6kl_close()
1111 clear_bit(WLAN_ENABLED, &vif->flags); in ath6kl_close()
1118 struct ath6kl_vif *vif = netdev_priv(dev); in ath6kl_get_stats() local
1120 return &vif->net_stats; in ath6kl_get_stats()
1126 struct ath6kl_vif *vif = netdev_priv(dev); in ath6kl_set_features() local
1127 struct ath6kl *ar = vif->ar; in ath6kl_set_features()
1134 vif->fw_vif_idx, in ath6kl_set_features()
1144 vif->fw_vif_idx, in ath6kl_set_features()
1157 struct ath6kl_vif *vif = netdev_priv(ndev); in ath6kl_set_multicast_list() local
1166 if (!test_bit(WMI_READY, &vif->ar->flag) || in ath6kl_set_multicast_list()
1167 !test_bit(WLAN_ENABLED, &vif->flags)) in ath6kl_set_multicast_list()
1176 set_bit(NETDEV_MCAST_ALL_ON, &vif->flags); in ath6kl_set_multicast_list()
1178 clear_bit(NETDEV_MCAST_ALL_ON, &vif->flags); in ath6kl_set_multicast_list()
1181 vif->ar->fw_capabilities)) { in ath6kl_set_multicast_list()
1182 mc_all_on = mc_all_on || (vif->ar->state == ATH6KL_STATE_ON); in ath6kl_set_multicast_list()
1187 set_bit(NETDEV_MCAST_ALL_OFF, &vif->flags); in ath6kl_set_multicast_list()
1189 clear_bit(NETDEV_MCAST_ALL_OFF, &vif->flags); in ath6kl_set_multicast_list()
1196 ret = ath6kl_wmi_mcast_filter_cmd(vif->ar->wmi, vif->fw_vif_idx, in ath6kl_set_multicast_list()
1204 if (test_bit(NETDEV_MCAST_ALL_ON, &vif->flags)) in ath6kl_set_multicast_list()
1208 list_for_each_entry_safe(mc_filter, tmp, &vif->mc_filter, list) { in ath6kl_set_multicast_list()
1226 ret = ath6kl_wmi_add_del_mcast_filter_cmd(vif->ar->wmi, in ath6kl_set_multicast_list()
1227 vif->fw_vif_idx, mc_filter->hw_addr, in ath6kl_set_multicast_list()
1244 list_for_each_entry(mc_filter, &vif->mc_filter, list) { in ath6kl_set_multicast_list()
1266 ret = ath6kl_wmi_add_del_mcast_filter_cmd(vif->ar->wmi, in ath6kl_set_multicast_list()
1267 vif->fw_vif_idx, mc_filter->hw_addr, in ath6kl_set_multicast_list()
1281 list_splice_tail(&mc_filter_new, &vif->mc_filter); in ath6kl_set_multicast_list()