2009-07-03 07:14:08

by Reiner Herrmann

[permalink] [raw]
Subject: mac80211: Force beacon update?

Hi,

I want to attach a custom IE to beacons, but some drivers (like b43)
are fetching their beacons via ieee80211_beacon_get() only once and
retransmit this beacon every time.
Some other drivers (like mac80211_hwsim, ath9k) are calling it
before every beacon transmission.

Is there a general way to make all drivers generate new beacons instead
of caching them or would I have to adapt them?
If adapting drivers is the only way, do you have any suggestions on
how to do that?

Thank you for your answers.

Regards,
Reiner


2009-07-03 08:00:19

by Johannes Berg

[permalink] [raw]
Subject: Re: mac80211: Force beacon update?

On Fri, 2009-07-03 at 09:15 +0200, Reiner Herrmann wrote:

> I want to attach a custom IE to beacons,

Umm, afaik you can configure that in hostapd, if not then you need to
hack hostapd.

johannes


Attachments:
signature.asc (801.00 B)
This is a digitally signed message part

2009-07-03 07:26:53

by Iwo Mergler

[permalink] [raw]
Subject: Re: mac80211: Force beacon update?

Reiner Herrmann wrote:
> Hi,
>
> I want to attach a custom IE to beacons, but some drivers (like b43)
> are fetching their beacons via ieee80211_beacon_get() only once and
> retransmit this beacon every time.
> Some other drivers (like mac80211_hwsim, ath9k) are calling it
> before every beacon transmission.
>
> Is there a general way to make all drivers generate new beacons instead
> of caching them or would I have to adapt them?
> If adapting drivers is the only way, do you have any suggestions on
> how to do that?

Hi Reiner

the drivers that call ieee80211_beacon_get() only once, have
hardware that transmits beacons automatically. That is, the
beacon template from ieee80211_beacon_get() is stored in the
hardware and the hardware then automatically sends that while
updating a few fields as needed.

In other words, the driver doesn't know anything about the
beacons after the initial setup, and thus can't call ieee80211_beacon_get().
No caching is involved. :-)

So to do what you want, you need to disable the automatic
beaconing and use packet injection and send your beacons
as raw frames.


Best regards,

Iwo