All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] mac80211: Advertise dtim period to all drivers
@ 2012-04-17 14:40 Piotr.Nakraszewicz
  2012-04-17 15:23 ` Johannes Berg
  0 siblings, 1 reply; 2+ messages in thread
From: Piotr.Nakraszewicz @ 2012-04-17 14:40 UTC (permalink / raw)
  To: linux-wireless; +Cc: johannes

Hi,

Don't look for IEEE80211_HW_NEED_DTIM_PERIOD flag after association finishes and advertise DTIM period to all drivers.

Signed-off-by: Piotr Nakraszewicz <piotr.nakraszewicz@tieto.com>
---
 include/net/mac80211.h |    4 +---
 net/mac80211/mlme.c    |    6 +-----
 2 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index bebd89f..436267f 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -230,9 +230,7 @@ enum ieee80211_rssi_event {
  *	if the hardware cannot handle this it must set the
  *	IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE hardware flag
  * @dtim_period: num of beacons before the next DTIM, for beaconing,
- *	valid in station mode only while @assoc is true and if also
- *	requested by %IEEE80211_HW_NEED_DTIM_PERIOD (cf. also hw conf
- *	@ps_dtim_period)
+ *	valid in station mode only while @assoc is true
  * @last_tsf: last beacon's/probe response's TSF timestamp (could be old
  *	as it may have been received during scanning long ago)
  * @beacon_int: beacon interval
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index c8836fa..39e0912 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1290,11 +1290,7 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
 
 	ieee80211_led_assoc(local, 1);
 
-	if (local->hw.flags & IEEE80211_HW_NEED_DTIM_PERIOD)
-		bss_conf->dtim_period = bss->dtim_period;
-	else
-		bss_conf->dtim_period = 0;
-
+	bss_conf->dtim_period = bss->dtim_period;
 	bss_conf->assoc = 1;
 
 	/* Tell the driver to monitor connection quality (if supported) */
-- 
1.7.0.4


IEEE80211_HW_NEED_DTIM_PERIOD description says:
*	This device needs to know the DTIM period for the BSS before
*	associating.

This patch is helpful for drivers that don't need to know DTIM period before association, but need it after association for power save reasons and can't accept roaming delays.

I can see that I am not the only one that had such problems:
http://article.gmane.org/gmane.linux.kernel.wireless.general/60959
http://article.gmane.org/gmane.linux.kernel.wireless.general/62266

Pozdrawiam / Best regards,
Piotr


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [RFC] mac80211: Advertise dtim period to all drivers
  2012-04-17 14:40 [RFC] mac80211: Advertise dtim period to all drivers Piotr.Nakraszewicz
@ 2012-04-17 15:23 ` Johannes Berg
  0 siblings, 0 replies; 2+ messages in thread
From: Johannes Berg @ 2012-04-17 15:23 UTC (permalink / raw)
  To: Piotr.Nakraszewicz; +Cc: linux-wireless

On 4/17/2012 7:40 AM, Piotr.Nakraszewicz@tieto.com wrote:
> Hi,
>
> Don't look for IEEE80211_HW_NEED_DTIM_PERIOD flag after association finishes and advertise DTIM period to all drivers.

This is not possible. If you don't set the flag, we don't necessarily 
*know* the DTIM period since we might not ever have received a beacon 
from the AP.

johannes

> Signed-off-by: Piotr Nakraszewicz<piotr.nakraszewicz@tieto.com>
> ---
>   include/net/mac80211.h |    4 +---
>   net/mac80211/mlme.c    |    6 +-----
>   2 files changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/include/net/mac80211.h b/include/net/mac80211.h
> index bebd89f..436267f 100644
> --- a/include/net/mac80211.h
> +++ b/include/net/mac80211.h
> @@ -230,9 +230,7 @@ enum ieee80211_rssi_event {
>    *	if the hardware cannot handle this it must set the
>    *	IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE hardware flag
>    * @dtim_period: num of beacons before the next DTIM, for beaconing,
> - *	valid in station mode only while @assoc is true and if also
> - *	requested by %IEEE80211_HW_NEED_DTIM_PERIOD (cf. also hw conf
> - *	@ps_dtim_period)
> + *	valid in station mode only while @assoc is true
>    * @last_tsf: last beacon's/probe response's TSF timestamp (could be old
>    *	as it may have been received during scanning long ago)
>    * @beacon_int: beacon interval
> diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
> index c8836fa..39e0912 100644
> --- a/net/mac80211/mlme.c
> +++ b/net/mac80211/mlme.c
> @@ -1290,11 +1290,7 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
>
>   	ieee80211_led_assoc(local, 1);
>
> -	if (local->hw.flags&  IEEE80211_HW_NEED_DTIM_PERIOD)
> -		bss_conf->dtim_period = bss->dtim_period;
> -	else
> -		bss_conf->dtim_period = 0;
> -
> +	bss_conf->dtim_period = bss->dtim_period;
>   	bss_conf->assoc = 1;
>
>   	/* Tell the driver to monitor connection quality (if supported) */


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-04-17 15:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-17 14:40 [RFC] mac80211: Advertise dtim period to all drivers Piotr.Nakraszewicz
2012-04-17 15:23 ` Johannes Berg

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.