diff options
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/hostap/hostap.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_hw.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_main.c | 19 |
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; | |||
34 | int hostap_80211_get_hdrlen(u16 fc); | 34 | int hostap_80211_get_hdrlen(u16 fc); |
35 | struct net_device_stats *hostap_get_stats(struct net_device *dev); | 35 | struct net_device_stats *hostap_get_stats(struct net_device *dev); |
36 | void hostap_setup_dev(struct net_device *dev, local_info_t *local, | 36 | void hostap_setup_dev(struct net_device *dev, local_info_t *local, |
37 | int main_dev); | 37 | int type); |
38 | void hostap_set_multicast_list_queue(struct work_struct *work); | 38 | void hostap_set_multicast_list_queue(struct work_struct *work); |
39 | int hostap_set_hostapd(local_info_t *local, int val, int rtnl_locked); | 39 | int hostap_set_hostapd(local_info_t *local, int val, int rtnl_locked); |
40 | int hostap_set_hostapd_sta(local_info_t *local, int val, int rtnl_locked); | 40 | int 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 = { | |||
857 | EXPORT_SYMBOL(hostap_80211_ops); | 857 | EXPORT_SYMBOL(hostap_80211_ops); |
858 | 858 | ||
859 | void hostap_setup_dev(struct net_device *dev, local_info_t *local, | 859 | void 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 | ||