From f57d886d39455fc319a4930d75f0c618ade12d41 Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Mon, 31 Jan 2011 20:48:44 +0200 Subject: [PATCH] --- yaml --- r: 237033 b: refs/heads/master c: 512119b36f7945a650877cbc7e9b5f4cc4d92e4c h: refs/heads/master i: 237031: 6bf8a7b33de7a1582790f90bc2394454e8d0d875 v: v3 --- [refs] | 2 +- trunk/net/mac80211/ieee80211_i.h | 1 + trunk/net/mac80211/tx.c | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 603a86dbef51..deafcd2d7721 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4099e2f4404762add8ef2b0dadef3c5122117210 +refs/heads/master: 512119b36f7945a650877cbc7e9b5f4cc4d92e4c diff --git a/trunk/net/mac80211/ieee80211_i.h b/trunk/net/mac80211/ieee80211_i.h index c47d7c0e48a4..f71ed31d176a 100644 --- a/trunk/net/mac80211/ieee80211_i.h +++ b/trunk/net/mac80211/ieee80211_i.h @@ -225,6 +225,7 @@ struct ieee80211_if_ap { struct sk_buff_head ps_bc_buf; atomic_t num_sta_ps; /* number of stations in PS mode */ int dtim_count; + bool dtim_bc_mc; }; struct ieee80211_if_wds { diff --git a/trunk/net/mac80211/tx.c b/trunk/net/mac80211/tx.c index 8fbbc7a816d6..bf67a223cd60 100644 --- a/trunk/net/mac80211/tx.c +++ b/trunk/net/mac80211/tx.c @@ -2179,6 +2179,8 @@ static void ieee80211_beacon_add_tim(struct ieee80211_if_ap *bss, if (bss->dtim_count == 0 && !skb_queue_empty(&bss->ps_bc_buf)) aid0 = 1; + bss->dtim_bc_mc = aid0 == 1; + if (have_bits) { /* Find largest even number N1 so that bits numbered 1 through * (N1 x 8) - 1 in the bitmap are 0 and number N2 so that bits @@ -2549,7 +2551,7 @@ ieee80211_get_buffered_bc(struct ieee80211_hw *hw, if (sdata->vif.type != NL80211_IFTYPE_AP || !beacon || !beacon->head) goto out; - if (bss->dtim_count != 0) + if (bss->dtim_count != 0 || !bss->dtim_bc_mc) goto out; /* send buffered bc/mc only after DTIM beacon */ while (1) {