aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/hostap/hostap.h2
-rw-r--r--drivers/net/wireless/hostap/hostap_hw.c2
-rw-r--r--drivers/net/wireless/hostap/hostap_main.c19
3 files changed, 13 insertions, 10 deletions
diff --git a/drivers/net/wireless/hostap/hostap.h b/drivers/net/wireless/hostap/hostap.h
index 951df83702f9..547ba84dc797 100644
--- a/drivers/net/wireless/hostap/hostap.h
+++ b/drivers/net/wireless/hostap/hostap.h
@@ -34,7 +34,7 @@ extern const struct header_ops hostap_80211_ops;
34int hostap_80211_get_hdrlen(u16 fc); 34int hostap_80211_get_hdrlen(u16 fc);
35struct net_device_stats *hostap_get_stats(struct net_device *dev); 35struct net_device_stats *hostap_get_stats(struct net_device *dev);
36void hostap_setup_dev(struct net_device *dev, local_info_t *local, 36void hostap_setup_dev(struct net_device *dev, local_info_t *local,
37 int main_dev); 37 int type);
38void hostap_set_multicast_list_queue(struct work_struct *work); 38void hostap_set_multicast_list_queue(struct work_struct *work);
39int hostap_set_hostapd(local_info_t *local, int val, int rtnl_locked); 39int hostap_set_hostapd(local_info_t *local, int val, int rtnl_locked);
40int hostap_set_hostapd_sta(local_info_t *local, int val, int rtnl_locked); 40int hostap_set_hostapd_sta(local_info_t *local, int val, int rtnl_locked);
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c
index b20bb013d57e..c592641e914e 100644
--- a/drivers/net/wireless/hostap/hostap_hw.c
+++ b/drivers/net/wireless/hostap/hostap_hw.c
@@ -3257,7 +3257,7 @@ while (0)
3257 3257
3258 INIT_LIST_HEAD(&local->bss_list); 3258 INIT_LIST_HEAD(&local->bss_list);
3259 3259
3260 hostap_setup_dev(dev, local, 1); 3260 hostap_setup_dev(dev, local, HOSTAP_INTERFACE_MASTER);
3261 3261
3262 dev->hard_start_xmit = hostap_master_start_xmit; 3262 dev->hard_start_xmit = hostap_master_start_xmit;
3263 dev->type = ARPHRD_IEEE80211; 3263 dev->type = ARPHRD_IEEE80211;
diff --git a/drivers/net/wireless/hostap/hostap_main.c b/drivers/net/wireless/hostap/hostap_main.c
index b75cf9205ce0..17c58e9bdad5 100644
--- a/drivers/net/wireless/hostap/hostap_main.c
+++ b/drivers/net/wireless/hostap/hostap_main.c
@@ -73,7 +73,7 @@ struct net_device * hostap_add_interface(struct local_info *local,
73 dev->mem_start = mdev->mem_start; 73 dev->mem_start = mdev->mem_start;
74 dev->mem_end = mdev->mem_end; 74 dev->mem_end = mdev->mem_end;
75 75
76 hostap_setup_dev(dev, local, 0); 76 hostap_setup_dev(dev, local, type);
77 dev->destructor = free_netdev; 77 dev->destructor = free_netdev;
78 78
79 sprintf(dev->name, "%s%s", prefix, name); 79 sprintf(dev->name, "%s%s", prefix, name);
@@ -857,7 +857,7 @@ const struct header_ops hostap_80211_ops = {
857EXPORT_SYMBOL(hostap_80211_ops); 857EXPORT_SYMBOL(hostap_80211_ops);
858 858
859void hostap_setup_dev(struct net_device *dev, local_info_t *local, 859void hostap_setup_dev(struct net_device *dev, local_info_t *local,
860 int main_dev) 860 int type)
861{ 861{
862 struct hostap_interface *iface; 862 struct hostap_interface *iface;
863 863
@@ -877,15 +877,22 @@ void hostap_setup_dev(struct net_device *dev, local_info_t *local,
877 dev->do_ioctl = hostap_ioctl; 877 dev->do_ioctl = hostap_ioctl;
878 dev->open = prism2_open; 878 dev->open = prism2_open;
879 dev->stop = prism2_close; 879 dev->stop = prism2_close;
880 dev->hard_start_xmit = hostap_data_start_xmit;
881 dev->set_mac_address = prism2_set_mac_address; 880 dev->set_mac_address = prism2_set_mac_address;
882 dev->set_multicast_list = hostap_set_multicast_list; 881 dev->set_multicast_list = hostap_set_multicast_list;
883 dev->change_mtu = prism2_change_mtu; 882 dev->change_mtu = prism2_change_mtu;
884 dev->tx_timeout = prism2_tx_timeout; 883 dev->tx_timeout = prism2_tx_timeout;
885 dev->watchdog_timeo = TX_TIMEOUT; 884 dev->watchdog_timeo = TX_TIMEOUT;
886 885
886 if (type == HOSTAP_INTERFACE_AP) {
887 dev->hard_start_xmit = hostap_mgmt_start_xmit;
888 dev->type = ARPHRD_IEEE80211;
889 dev->header_ops = &hostap_80211_ops;
890 } else {
891 dev->hard_start_xmit = hostap_data_start_xmit;
892 }
893
887 dev->mtu = local->mtu; 894 dev->mtu = local->mtu;
888 if (!main_dev) { 895 if (type != HOSTAP_INTERFACE_MASTER) {
889 /* use main radio device queue */ 896 /* use main radio device queue */
890 dev->tx_queue_len = 0; 897 dev->tx_queue_len = 0;
891 } 898 }
@@ -910,10 +917,6 @@ static int hostap_enable_hostapd(local_info_t *local, int rtnl_locked)
910 if (local->apdev == NULL) 917 if (local->apdev == NULL)
911 return -ENOMEM; 918 return -ENOMEM;
912 919
913 local->apdev->hard_start_xmit = hostap_mgmt_start_xmit;
914 local->apdev->type = ARPHRD_IEEE80211;
915 local->apdev->header_ops = &hostap_80211_ops;
916
917 return 0; 920 return 0;
918} 921}
919 922