• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/net/mac80211/

Lines Matching refs:sdata

48 	struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
50 meshhdrlen = (sdata->vif.type == NL80211_IFTYPE_MESH_POINT) ? 5 : 0;
68 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
72 if (ieee80211_sdata_running(sdata))
78 memcpy(sdata->vif.addr, sa->sa_data, ETH_ALEN);
99 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
101 struct ieee80211_local *local = sdata->local;
128 if (sdata->vif.type == NL80211_IFTYPE_ADHOC &&
142 if (!identical_mac_addr_allowed(sdata->vif.type,
149 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
151 sdata->bss = &nsdata->u.ap;
155 switch (sdata->vif.type) {
157 if (!is_valid_ether_addr(sdata->u.wds.remote_addr))
161 if (!sdata->bss)
163 list_add(&sdata->u.vlan.list, &sdata->bss->vlans);
166 sdata->bss = &sdata->u.ap;
169 if (!ieee80211_vif_is_mesh(&sdata->vif))
223 switch (sdata->vif.type) {
228 if (sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES) {
240 if (sdata->u.mntr_flags & MONITOR_FLAG_FCSFAIL)
242 if (sdata->u.mntr_flags & MONITOR_FLAG_PLCPFAIL)
244 if (sdata->u.mntr_flags & MONITOR_FLAG_CONTROL) {
248 if (sdata->u.mntr_flags & MONITOR_FLAG_OTHER_BSS)
256 res = drv_add_interface(local, &sdata->vif);
260 if (ieee80211_vif_is_mesh(&sdata->vif)) {
264 ieee80211_start_mesh(sdata);
265 } else if (sdata->vif.type == NL80211_IFTYPE_AP) {
271 changed |= ieee80211_reset_erp_info(sdata);
272 ieee80211_bss_info_change_notify(sdata, changed);
274 if (sdata->vif.type == NL80211_IFTYPE_STATION)
280 if (sdata->vif.type == NL80211_IFTYPE_WDS) {
282 sta = sta_info_alloc(sdata, sdata->u.wds.remote_addr,
304 if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
307 if (sdata->flags & IEEE80211_SDATA_PROMISC)
320 ieee80211_set_wmm_default(sdata);
329 drv_remove_interface(local, &sdata->vif);
334 sdata->bss = NULL;
335 if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
336 list_del(&sdata->u.vlan.list);
342 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
343 struct ieee80211_local *local = sdata->local;
357 ieee80211_work_purge(sdata);
370 * hash table and list but keep them on a per-sdata list that
376 sta_info_flush(local, sdata);
384 if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
387 if (sdata->flags & IEEE80211_SDATA_PROMISC)
390 if (sdata->vif.type == NL80211_IFTYPE_AP)
405 if (sdata->vif.type == NL80211_IFTYPE_AP) {
407 struct beacon_data *old_beacon = sdata->u.ap.beacon;
410 rcu_assign_pointer(sdata->u.ap.beacon, NULL);
415 list_for_each_entry_safe(vlan, tmpsdata, &sdata->u.ap.vlans,
418 WARN_ON(!list_empty(&sdata->u.ap.vlans));
423 switch (sdata->vif.type) {
425 list_del(&sdata->u.vlan.list);
429 if (sdata->u.mntr_flags & MONITOR_FLAG_COOK_FRAMES) {
440 if (sdata->u.mntr_flags & MONITOR_FLAG_FCSFAIL)
442 if (sdata->u.mntr_flags & MONITOR_FLAG_PLCPFAIL)
444 if (sdata->u.mntr_flags & MONITOR_FLAG_CONTROL) {
448 if (sdata->u.mntr_flags & MONITOR_FLAG_OTHER_BSS)
454 del_timer_sync(&sdata->u.mgd.chswitch_timer);
455 del_timer_sync(&sdata->u.mgd.timer);
456 del_timer_sync(&sdata->u.mgd.conn_mon_timer);
457 del_timer_sync(&sdata->u.mgd.bcn_mon_timer);
465 cancel_work_sync(&sdata->u.mgd.chswitch_work);
466 cancel_work_sync(&sdata->u.mgd.monitor_work);
467 cancel_work_sync(&sdata->u.mgd.beacon_connection_loss_work);
471 if (sdata->vif.type == NL80211_IFTYPE_ADHOC)
472 del_timer_sync(&sdata->u.ibss.timer);
475 if (ieee80211_vif_is_mesh(&sdata->vif)) {
483 ieee80211_stop_mesh(sdata);
487 flush_work(&sdata->work);
495 skb_queue_purge(&sdata->skb_queue);
497 if (local->scan_sdata == sdata)
504 if (sdata->vif.type == NL80211_IFTYPE_AP ||
505 sdata->vif.type == NL80211_IFTYPE_MESH_POINT) {
506 ieee80211_bss_info_change_notify(sdata,
511 ieee80211_free_keys(sdata);
512 drv_remove_interface(local, &sdata->vif);
515 sdata->bss = NULL;
537 if (info->control.vif == &sdata->vif) {
550 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
551 struct ieee80211_local *local = sdata->local;
556 sdata_allmulti = !!(sdata->flags & IEEE80211_SDATA_ALLMULTI);
557 sdata_promisc = !!(sdata->flags & IEEE80211_SDATA_PROMISC);
564 sdata->flags ^= IEEE80211_SDATA_ALLMULTI;
572 sdata->flags ^= IEEE80211_SDATA_PROMISC;
586 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
587 struct ieee80211_local *local = sdata->local;
594 ieee80211_free_keys(sdata);
596 ieee80211_debugfs_remove_netdev(sdata);
599 __skb_queue_purge(&sdata->fragments[i].skb_list);
600 sdata->fragment_next = 0;
602 switch (sdata->vif.type) {
604 beacon = sdata->u.ap.beacon;
605 rcu_assign_pointer(sdata->u.ap.beacon, NULL);
609 while ((skb = skb_dequeue(&sdata->u.ap.ps_bc_buf))) {
616 if (ieee80211_vif_is_mesh(&sdata->vif))
617 mesh_rmc_free(sdata);
620 if (WARN_ON(sdata->u.ibss.presp))
621 kfree_skb(sdata->u.ibss.presp);
634 flushed = sta_info_flush(local, sdata);
658 struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
659 struct ieee80211_local *local = sdata->local;
708 struct ieee80211_sub_if_data *sdata =
710 struct ieee80211_local *local = sdata->local;
715 if (!ieee80211_sdata_running(sdata))
730 while ((skb = skb_dequeue(&sdata->skb_queue))) {
735 ieee80211_start_tx_ba_cb(&sdata->vif, ra_tid->ra,
739 ieee80211_stop_tx_ba_cb(&sdata->vif, ra_tid->ra,
746 sta = sta_info_get_bss(sdata, mgmt->sa);
758 ieee80211_process_delba(sdata, sta,
787 sta = sta_info_get_bss(sdata, mgmt->sa);
797 } else switch (sdata->vif.type) {
799 ieee80211_sta_rx_queued_mgmt(sdata, skb);
802 ieee80211_ibss_rx_queued_mgmt(sdata, skb);
805 if (!ieee80211_vif_is_mesh(&sdata->vif))
807 ieee80211_mesh_rx_queued_mgmt(sdata, skb);
818 switch (sdata->vif.type) {
820 ieee80211_sta_work(sdata);
823 ieee80211_ibss_work(sdata);
826 if (!ieee80211_vif_is_mesh(&sdata->vif))
828 ieee80211_mesh_work(sdata);
839 static void ieee80211_setup_sdata(struct ieee80211_sub_if_data *sdata,
843 memset(&sdata->u, 0, sizeof(sdata->u));
846 sdata->vif.type = type;
847 sdata->dev->netdev_ops = &ieee80211_dataif_ops;
848 sdata->wdev.iftype = type;
851 sdata->dev->type = ARPHRD_ETHER;
853 skb_queue_head_init(&sdata->skb_queue);
854 INIT_WORK(&sdata->work, ieee80211_iface_work);
858 skb_queue_head_init(&sdata->u.ap.ps_bc_buf);
859 INIT_LIST_HEAD(&sdata->u.ap.vlans);
862 ieee80211_sta_setup_sdata(sdata);
865 ieee80211_ibss_setup_sdata(sdata);
868 if (ieee80211_vif_is_mesh(&sdata->vif))
869 ieee80211_mesh_init_sdata(sdata);
872 sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP;
873 sdata->dev->netdev_ops = &ieee80211_monitorif_ops;
874 sdata->u.mntr_flags = MONITOR_FLAG_CONTROL |
886 ieee80211_debugfs_add_netdev(sdata);
889 int ieee80211_if_change_type(struct ieee80211_sub_if_data *sdata,
894 if (type == sdata->vif.type)
898 if (sdata->local->oper_channel->flags & IEEE80211_CHAN_NO_IBSS &&
908 if (ieee80211_sdata_running(sdata))
912 ieee80211_teardown_sdata(sdata->dev);
913 ieee80211_setup_sdata(sdata, type);
916 sdata->vif.bss_conf.basic_rates =
917 ieee80211_mandatory_rates(sdata->local,
918 sdata->local->hw.conf.channel->band);
919 sdata->drop_unencrypted = 0;
921 sdata->u.mgd.use_4addr = false;
930 struct ieee80211_sub_if_data *sdata;
953 list_for_each_entry(sdata, &local->interfaces, list) {
954 if (sdata->vif.type != NL80211_IFTYPE_AP)
956 memcpy(dev->perm_addr, sdata->vif.addr, ETH_ALEN);
966 list_for_each_entry(sdata, &local->interfaces, list) {
968 sdata->vif.addr, ETH_ALEN) == 0) {
1017 list_for_each_entry(sdata, &local->interfaces, list) {
1018 if (memcmp(tmp_addr, sdata->vif.addr,
1043 struct ieee80211_sub_if_data *sdata = NULL;
1048 ndev = alloc_netdev_mq(sizeof(*sdata) + local->hw.vif_data_size,
1072 sdata = netdev_priv(ndev);
1073 ndev->ieee80211_ptr = &sdata->wdev;
1074 memcpy(sdata->vif.addr, ndev->dev_addr, ETH_ALEN);
1075 memcpy(sdata->name, ndev->name, IFNAMSIZ);
1078 sdata->wdev.wiphy = local->hw.wiphy;
1079 sdata->local = local;
1080 sdata->dev = ndev;
1082 sdata->arp_filter_state = true;
1086 skb_queue_head_init(&sdata->fragments[i].skb_list);
1088 INIT_LIST_HEAD(&sdata->key_list);
1093 sdata->rc_rateidx_mask[i] =
1098 ieee80211_setup_sdata(sdata, type);
1103 sdata->u.mgd.use_4addr = params->use_4addr;
1110 if (ieee80211_vif_is_mesh(&sdata->vif) &&
1112 ieee80211_sdata_set_mesh_id(sdata,
1117 list_add_tail_rcu(&sdata->list, &local->interfaces);
1130 void ieee80211_if_remove(struct ieee80211_sub_if_data *sdata)
1134 mutex_lock(&sdata->local->iflist_mtx);
1135 list_del_rcu(&sdata->list);
1136 mutex_unlock(&sdata->local->iflist_mtx);
1139 unregister_netdevice(sdata->dev);
1148 struct ieee80211_sub_if_data *sdata, *tmp;
1154 list_for_each_entry_safe(sdata, tmp, &local->interfaces, list) {
1155 list_del(&sdata->list);
1157 unregister_netdevice_queue(sdata->dev, &unreg_list);
1196 struct ieee80211_sub_if_data *sdata;
1205 list_for_each_entry(sdata, &local->interfaces, list) {
1206 if (!ieee80211_sdata_running(sdata))
1209 if (sdata->vif.type == NL80211_IFTYPE_STATION &&
1210 !sdata->u.mgd.associated)
1213 if (sdata->vif.type == NL80211_IFTYPE_ADHOC &&
1214 !sdata->u.ibss.ssid_len)
1244 struct ieee80211_sub_if_data *sdata;
1255 sdata = IEEE80211_DEV_TO_SUB_IF(dev);
1257 memcpy(sdata->name, dev->name, IFNAMSIZ);
1259 ieee80211_debugfs_rename_netdev(sdata);