Merge branch 'fixes-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
commit
53438e5d04
|
@ -115,8 +115,16 @@ extern u32 ieee80211_debug_level;
|
||||||
do { if (ieee80211_debug_level & (level)) \
|
do { if (ieee80211_debug_level & (level)) \
|
||||||
printk(KERN_DEBUG "ieee80211: %c %s " fmt, \
|
printk(KERN_DEBUG "ieee80211: %c %s " fmt, \
|
||||||
in_interrupt() ? 'I' : 'U', __FUNCTION__ , ## args); } while (0)
|
in_interrupt() ? 'I' : 'U', __FUNCTION__ , ## args); } while (0)
|
||||||
|
static inline bool ieee80211_ratelimit_debug(u32 level)
|
||||||
|
{
|
||||||
|
return (ieee80211_debug_level & level) && net_ratelimit();
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
#define IEEE80211_DEBUG(level, fmt, args...) do {} while (0)
|
#define IEEE80211_DEBUG(level, fmt, args...) do {} while (0)
|
||||||
|
static inline bool ieee80211_ratelimit_debug(u32 level)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endif /* CONFIG_IEEE80211_DEBUG */
|
#endif /* CONFIG_IEEE80211_DEBUG */
|
||||||
|
|
||||||
/* escape_essid() is intended to be used in debug (and possibly error)
|
/* escape_essid() is intended to be used in debug (and possibly error)
|
||||||
|
|
|
@ -338,7 +338,7 @@ static int ieee80211_ccmp_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
|
||||||
pos += 8;
|
pos += 8;
|
||||||
|
|
||||||
if (ccmp_replay_check(pn, key->rx_pn)) {
|
if (ccmp_replay_check(pn, key->rx_pn)) {
|
||||||
if (net_ratelimit()) {
|
if (ieee80211_ratelimit_debug(IEEE80211_DL_DROP)) {
|
||||||
IEEE80211_DEBUG_DROP("CCMP: replay detected: STA=%s "
|
IEEE80211_DEBUG_DROP("CCMP: replay detected: STA=%s "
|
||||||
"previous PN %02x%02x%02x%02x%02x%02x "
|
"previous PN %02x%02x%02x%02x%02x%02x "
|
||||||
"received PN %02x%02x%02x%02x%02x%02x\n",
|
"received PN %02x%02x%02x%02x%02x%02x\n",
|
||||||
|
|
|
@ -464,7 +464,7 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
|
||||||
pos += 8;
|
pos += 8;
|
||||||
|
|
||||||
if (tkip_replay_check(iv32, iv16, tkey->rx_iv32, tkey->rx_iv16)) {
|
if (tkip_replay_check(iv32, iv16, tkey->rx_iv32, tkey->rx_iv16)) {
|
||||||
if (net_ratelimit()) {
|
if (ieee80211_ratelimit_debug(IEEE80211_DL_DROP)) {
|
||||||
IEEE80211_DEBUG_DROP("TKIP: replay detected: STA=%s"
|
IEEE80211_DEBUG_DROP("TKIP: replay detected: STA=%s"
|
||||||
" previous TSC %08x%04x received TSC "
|
" previous TSC %08x%04x received TSC "
|
||||||
"%08x%04x\n", print_mac(mac, hdr->addr2),
|
"%08x%04x\n", print_mac(mac, hdr->addr2),
|
||||||
|
@ -504,7 +504,7 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv)
|
||||||
* it needs to be recalculated for the next packet. */
|
* it needs to be recalculated for the next packet. */
|
||||||
tkey->rx_phase1_done = 0;
|
tkey->rx_phase1_done = 0;
|
||||||
}
|
}
|
||||||
if (net_ratelimit()) {
|
if (ieee80211_ratelimit_debug(IEEE80211_DL_DROP)) {
|
||||||
IEEE80211_DEBUG_DROP("TKIP: ICV error detected: STA="
|
IEEE80211_DEBUG_DROP("TKIP: ICV error detected: STA="
|
||||||
"%s\n", print_mac(mac, hdr->addr2));
|
"%s\n", print_mac(mac, hdr->addr2));
|
||||||
}
|
}
|
||||||
|
|
|
@ -267,6 +267,17 @@ static int ieee80211_open(struct net_device *dev)
|
||||||
tasklet_enable(&local->tasklet);
|
tasklet_enable(&local->tasklet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* set_multicast_list will be invoked by the networking core
|
||||||
|
* which will check whether any increments here were done in
|
||||||
|
* error and sync them down to the hardware as filter flags.
|
||||||
|
*/
|
||||||
|
if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
|
||||||
|
atomic_inc(&local->iff_allmultis);
|
||||||
|
|
||||||
|
if (sdata->flags & IEEE80211_SDATA_PROMISC)
|
||||||
|
atomic_inc(&local->iff_promiscs);
|
||||||
|
|
||||||
local->open_count++;
|
local->open_count++;
|
||||||
|
|
||||||
netif_start_queue(dev);
|
netif_start_queue(dev);
|
||||||
|
@ -284,6 +295,18 @@ static int ieee80211_stop(struct net_device *dev)
|
||||||
|
|
||||||
netif_stop_queue(dev);
|
netif_stop_queue(dev);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Don't count this interface for promisc/allmulti while it
|
||||||
|
* is down. dev_mc_unsync() will invoke set_multicast_list
|
||||||
|
* on the master interface which will sync these down to the
|
||||||
|
* hardware as filter flags.
|
||||||
|
*/
|
||||||
|
if (sdata->flags & IEEE80211_SDATA_ALLMULTI)
|
||||||
|
atomic_dec(&local->iff_allmultis);
|
||||||
|
|
||||||
|
if (sdata->flags & IEEE80211_SDATA_PROMISC)
|
||||||
|
atomic_dec(&local->iff_promiscs);
|
||||||
|
|
||||||
dev_mc_unsync(local->mdev, dev);
|
dev_mc_unsync(local->mdev, dev);
|
||||||
|
|
||||||
/* down all dependent devices, that is VLANs */
|
/* down all dependent devices, that is VLANs */
|
||||||
|
@ -366,8 +389,8 @@ static void ieee80211_set_multicast_list(struct net_device *dev)
|
||||||
|
|
||||||
allmulti = !!(dev->flags & IFF_ALLMULTI);
|
allmulti = !!(dev->flags & IFF_ALLMULTI);
|
||||||
promisc = !!(dev->flags & IFF_PROMISC);
|
promisc = !!(dev->flags & IFF_PROMISC);
|
||||||
sdata_allmulti = sdata->flags & IEEE80211_SDATA_ALLMULTI;
|
sdata_allmulti = !!(sdata->flags & IEEE80211_SDATA_ALLMULTI);
|
||||||
sdata_promisc = sdata->flags & IEEE80211_SDATA_PROMISC;
|
sdata_promisc = !!(sdata->flags & IEEE80211_SDATA_PROMISC);
|
||||||
|
|
||||||
if (allmulti != sdata_allmulti) {
|
if (allmulti != sdata_allmulti) {
|
||||||
if (dev->flags & IFF_ALLMULTI)
|
if (dev->flags & IFF_ALLMULTI)
|
||||||
|
|
|
@ -2647,7 +2647,7 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw)
|
||||||
local->sta_scanning = 0;
|
local->sta_scanning = 0;
|
||||||
|
|
||||||
if (ieee80211_hw_config(local))
|
if (ieee80211_hw_config(local))
|
||||||
printk(KERN_DEBUG "%s: failed to restore operational"
|
printk(KERN_DEBUG "%s: failed to restore operational "
|
||||||
"channel after scan\n", dev->name);
|
"channel after scan\n", dev->name);
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue