Merge branch 'fixes-davem' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
This commit is contained in:
Коммит
53438e5d04
|
@ -115,8 +115,16 @@ extern u32 ieee80211_debug_level;
|
|||
do { if (ieee80211_debug_level & (level)) \
|
||||
printk(KERN_DEBUG "ieee80211: %c %s " fmt, \
|
||||
in_interrupt() ? 'I' : 'U', __FUNCTION__ , ## args); } while (0)
|
||||
static inline bool ieee80211_ratelimit_debug(u32 level)
|
||||
{
|
||||
return (ieee80211_debug_level & level) && net_ratelimit();
|
||||
}
|
||||
#else
|
||||
#define IEEE80211_DEBUG(level, fmt, args...) do {} while (0)
|
||||
static inline bool ieee80211_ratelimit_debug(u32 level)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211_DEBUG */
|
||||
|
||||
/* 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;
|
||||
|
||||
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 "
|
||||
"previous PN %02x%02x%02x%02x%02x%02x "
|
||||
"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;
|
||||
|
||||
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"
|
||||
" previous TSC %08x%04x received TSC "
|
||||
"%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. */
|
||||
tkey->rx_phase1_done = 0;
|
||||
}
|
||||
if (net_ratelimit()) {
|
||||
if (ieee80211_ratelimit_debug(IEEE80211_DL_DROP)) {
|
||||
IEEE80211_DEBUG_DROP("TKIP: ICV error detected: STA="
|
||||
"%s\n", print_mac(mac, hdr->addr2));
|
||||
}
|
||||
|
|
|
@ -267,6 +267,17 @@ static int ieee80211_open(struct net_device *dev)
|
|||
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++;
|
||||
|
||||
netif_start_queue(dev);
|
||||
|
@ -284,6 +295,18 @@ static int ieee80211_stop(struct net_device *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);
|
||||
|
||||
/* 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);
|
||||
promisc = !!(dev->flags & IFF_PROMISC);
|
||||
sdata_allmulti = sdata->flags & IEEE80211_SDATA_ALLMULTI;
|
||||
sdata_promisc = sdata->flags & IEEE80211_SDATA_PROMISC;
|
||||
sdata_allmulti = !!(sdata->flags & IEEE80211_SDATA_ALLMULTI);
|
||||
sdata_promisc = !!(sdata->flags & IEEE80211_SDATA_PROMISC);
|
||||
|
||||
if (allmulti != sdata_allmulti) {
|
||||
if (dev->flags & IFF_ALLMULTI)
|
||||
|
|
|
@ -2647,7 +2647,7 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw)
|
|||
local->sta_scanning = 0;
|
||||
|
||||
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);
|
||||
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче