]> err.no Git - linux-2.6/blobdiff - net/mac80211/mlme.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
[linux-2.6] / net / mac80211 / mlme.c
index 61d7f81bf45efed42e4250dccb48002a79c57f02..acb04133a95dc699735fcb1932fe16a64b4d720a 100644 (file)
@@ -345,7 +345,7 @@ static void ieee80211_sta_wmm_params(struct net_device *dev,
                params.aifs = pos[0] & 0x0f;
                params.cw_max = ecw2cw((pos[1] & 0xf0) >> 4);
                params.cw_min = ecw2cw(pos[1] & 0x0f);
-               params.txop = pos[2] | (pos[3] << 8);
+               params.txop = get_unaligned_le16(pos + 2);
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG
                printk(KERN_DEBUG "%s: WMM queue=%d aci=%d acm=%d aifs=%d "
                       "cWmin=%d cWmax=%d txop=%d\n",
@@ -606,7 +606,6 @@ void ieee80211_sta_tx(struct net_device *dev, struct sk_buff *skb,
                      int encrypt)
 {
        struct ieee80211_sub_if_data *sdata;
-       struct ieee80211_tx_info *info;
 
        sdata = IEEE80211_DEV_TO_SUB_IF(dev);
        skb->dev = sdata->local->mdev;
@@ -614,11 +613,8 @@ void ieee80211_sta_tx(struct net_device *dev, struct sk_buff *skb,
        skb_set_network_header(skb, 0);
        skb_set_transport_header(skb, 0);
 
-       info = IEEE80211_SKB_CB(skb);
-       memset(info, 0, sizeof(struct ieee80211_tx_info));
-       info->control.ifindex = sdata->dev->ifindex;
-       if (!encrypt)
-               info->flags |= IEEE80211_TX_CTL_DO_NOT_ENCRYPT;
+       skb->iif = sdata->dev->ifindex;
+       skb->do_not_encrypt = !encrypt;
 
        dev_queue_xmit(skb);
 }
@@ -3303,6 +3299,7 @@ void ieee80211_start_mesh(struct net_device *dev)
        ifsta = &sdata->u.sta;
        ifsta->state = IEEE80211_MESH_UP;
        ieee80211_sta_timer((unsigned long)sdata);
+       ieee80211_if_config(sdata, IEEE80211_IFCC_BEACON);
 }
 #endif
 
@@ -3869,6 +3866,7 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw)
 
 
        netif_tx_lock_bh(local->mdev);
+       netif_addr_lock(local->mdev);
        local->filter_flags &= ~FIF_BCN_PRBRESP_PROMISC;
        local->ops->configure_filter(local_to_hw(local),
                                     FIF_BCN_PRBRESP_PROMISC,
@@ -3876,6 +3874,7 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw)
                                     local->mdev->mc_count,
                                     local->mdev->mc_list);
 
+       netif_addr_unlock(local->mdev);
        netif_tx_unlock_bh(local->mdev);
 
        rcu_read_lock();
@@ -4062,14 +4061,14 @@ static int ieee80211_sta_start_scan(struct net_device *dev,
        local->scan_band = IEEE80211_BAND_2GHZ;
        local->scan_dev = dev;
 
-       netif_tx_lock_bh(local->mdev);
+       netif_addr_lock_bh(local->mdev);
        local->filter_flags |= FIF_BCN_PRBRESP_PROMISC;
        local->ops->configure_filter(local_to_hw(local),
                                     FIF_BCN_PRBRESP_PROMISC,
                                     &local->filter_flags,
                                     local->mdev->mc_count,
                                     local->mdev->mc_list);
-       netif_tx_unlock_bh(local->mdev);
+       netif_addr_unlock_bh(local->mdev);
 
        /* TODO: start scan as soon as all nullfunc frames are ACKed */
        queue_delayed_work(local->hw.workqueue, &local->scan_work,
@@ -4360,7 +4359,7 @@ struct sta_info *ieee80211_ibss_add_sta(struct net_device *dev,
                return NULL;
        }
 
-       if (!ieee80211_bssid_match(bssid, sdata->u.sta.bssid))
+       if (compare_ether_addr(bssid, sdata->u.sta.bssid))
                return NULL;
 
 #ifdef CONFIG_MAC80211_VERBOSE_DEBUG