aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/zd1211rw
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-07-14 23:40:34 -0400
committerDavid S. Miller <davem@davemloft.net>2008-07-14 23:40:34 -0400
commitfc943b12e48f9341bce48c2fadf094cc721aab93 (patch)
tree8c3244d7f5fae4edbfe0a5103789b0bc5c64f478 /drivers/net/wireless/zd1211rw
parent72d9794f444734af56ef12833b496326643e2964 (diff)
parent4c9adafff7d910f142fe44fae37ed12c6b99f20f (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'drivers/net/wireless/zd1211rw')
-rw-r--r--drivers/net/wireless/zd1211rw/zd_mac.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c
index feaf43d17249..fcc532bb6a7e 100644
--- a/drivers/net/wireless/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
@@ -728,15 +728,19 @@ static int zd_op_config_interface(struct ieee80211_hw *hw,
728 if (mac->type == IEEE80211_IF_TYPE_MESH_POINT || 728 if (mac->type == IEEE80211_IF_TYPE_MESH_POINT ||
729 mac->type == IEEE80211_IF_TYPE_IBSS) { 729 mac->type == IEEE80211_IF_TYPE_IBSS) {
730 associated = true; 730 associated = true;
731 if (conf->beacon) { 731 if (conf->changed & IEEE80211_IFCC_BEACON) {
732 r = zd_mac_config_beacon(hw, conf->beacon); 732 struct sk_buff *beacon = ieee80211_beacon_get(hw, vif);
733
734 if (!beacon)
735 return -ENOMEM;
736 r = zd_mac_config_beacon(hw, beacon);
733 if (r < 0) 737 if (r < 0)
734 return r; 738 return r;
735 r = zd_set_beacon_interval(&mac->chip, BCN_MODE_IBSS | 739 r = zd_set_beacon_interval(&mac->chip, BCN_MODE_IBSS |
736 hw->conf.beacon_int); 740 hw->conf.beacon_int);
737 if (r < 0) 741 if (r < 0)
738 return r; 742 return r;
739 kfree_skb(conf->beacon); 743 kfree_skb(beacon);
740 } 744 }
741 } else 745 } else
742 associated = is_valid_ether_addr(conf->bssid); 746 associated = is_valid_ether_addr(conf->bssid);
@@ -890,17 +894,6 @@ static void zd_op_bss_info_changed(struct ieee80211_hw *hw,
890 } 894 }
891} 895}
892 896
893static int zd_op_beacon_update(struct ieee80211_hw *hw,
894 struct sk_buff *skb)
895{
896 struct zd_mac *mac = zd_hw_mac(hw);
897 zd_mac_config_beacon(hw, skb);
898 kfree_skb(skb);
899 zd_set_beacon_interval(&mac->chip, BCN_MODE_IBSS |
900 hw->conf.beacon_int);
901 return 0;
902}
903
904static const struct ieee80211_ops zd_ops = { 897static const struct ieee80211_ops zd_ops = {
905 .tx = zd_op_tx, 898 .tx = zd_op_tx,
906 .start = zd_op_start, 899 .start = zd_op_start,
@@ -911,7 +904,6 @@ static const struct ieee80211_ops zd_ops = {
911 .config_interface = zd_op_config_interface, 904 .config_interface = zd_op_config_interface,
912 .configure_filter = zd_op_configure_filter, 905 .configure_filter = zd_op_configure_filter,
913 .bss_info_changed = zd_op_bss_info_changed, 906 .bss_info_changed = zd_op_bss_info_changed,
914 .beacon_update = zd_op_beacon_update,
915}; 907};
916 908
917struct ieee80211_hw *zd_mac_alloc_hw(struct usb_interface *intf) 909struct ieee80211_hw *zd_mac_alloc_hw(struct usb_interface *intf)