On Thu, 2011-01-06 at 22:46 +0100, Christian Lamparter wrote: > Ideally, you should assign a proper sequence # to beacon frames too. > (802.11-2007 7.1.3.4.1) > > But as before, the long time between the upload and the actual beacon > xmit by the hardware make things really difficult. If you just call > "create_tx_desc_seq" right now, "theoretically" you have to buffer > all management and other Non-QoS data frames until the beacon was sent. > > However, no one would do that :D. Either the hardware/firmware > controls the sequence counter or it's simply not implemented > (and nobody cares ;) ). Yeah ... it turns out that nobody cares. It's probably easier/better to actually send beacons with seqno 0 instead of trying to hack around it. > diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h > index c47d7c0..f71ed31 100644 > --- a/net/mac80211/ieee80211_i.h > +++ b/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/net/mac80211/tx.c b/net/mac80211/tx.c > index 5950e3a..26b688b 100644 > --- a/net/mac80211/tx.c > +++ b/net/mac80211/tx.c > @@ -2178,6 +2178,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 > @@ -2540,7 +2542,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 */ Hmm, interesting. That makes some sense I guess. Luckily, I have hardware offload for this (extra queue) so I don't have to worry about it :-) johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html