All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Berg <johannes@sipsolutions.net>
To: Arik Nemtsov <arik@wizery.com>
Cc: linux-wireless@vger.kernel.org, Luciano Coelho <coelho@ti.com>
Subject: Re: [PATCH 06/10] mac80211: add HW flag for disabling auto link-PS in AP mode
Date: Sun, 16 Jan 2011 09:50:29 +0100	[thread overview]
Message-ID: <1295167829.3574.10.camel@jlt3.sipsolutions.net> (raw)
In-Reply-To: <1295156534-4178-7-git-send-email-arik@wizery.com>

On Sun, 2011-01-16 at 07:42 +0200, Arik Nemtsov wrote:
> When operating in AP mode the wl1271 hardware filters our null-data
> packets as well as management packets. This makes it impossible for
> mac80211 to monitor the PS mode by using the PM bit of incoming frames.
> 
> Implement a HW flag to indicate that mac80211 should ignore the PM bit.
> In addition, expose ieee80211_start_ps()/ieee80211_end_ps() to make
> low-level drivers capable of controlling PS-mode.
> 
> Signed-off-by: Arik Nemtsov <arik@wizery.com>
> ---
>  include/net/mac80211.h |   38 ++++++++++++++++++++++++++++++++++++++
>  net/mac80211/rx.c      |   19 ++++++++++++++++++-
>  2 files changed, 56 insertions(+), 1 deletions(-)
> 
> diff --git a/include/net/mac80211.h b/include/net/mac80211.h
> index 62c0ce2..26a8cfb 100644
> --- a/include/net/mac80211.h
> +++ b/include/net/mac80211.h
> @@ -1069,6 +1069,13 @@ enum ieee80211_tkip_key_type {
>   *	to decrypt group addressed frames, then IBSS RSN support is still
>   *	possible but software crypto will be used. Advertise the wiphy flag
>   *	only in that case.
> + *
> + * @IEEE80211_HW_AP_LINK_PS: When operating in AP mode the device
> + *	autonomously manages the PS status of connected stations. When
> + *	this flag is set mac80211 will not trigger PS mode for connected
> + *	stations based on the PM bit of incoming frames.
> + *	Use ieee80211_start_ps()/ieee8021_end_ps() to manually configure
> + *	the PS mode of connected stations.
>   */
>  enum ieee80211_hw_flags {
>  	IEEE80211_HW_HAS_RATE_CONTROL			= 1<<0,
> @@ -1093,6 +1100,7 @@ enum ieee80211_hw_flags {
>  	IEEE80211_HW_CONNECTION_MONITOR			= 1<<19,
>  	IEEE80211_HW_SUPPORTS_CQM_RSSI			= 1<<20,
>  	IEEE80211_HW_SUPPORTS_PER_STA_GTK		= 1<<21,
> +	IEEE80211_HW_AP_LINK_PS				= 1<<22,
>  };
>  
>  /**
> @@ -2113,6 +2121,36 @@ static inline void ieee80211_rx_ni(struct ieee80211_hw *hw,
>  	local_bh_enable();
>  }
>  
> +/**
> + * ieee80211_start_ps - start PS for connected sta
> + *
> + * When operating in AP mode, use this function to inform mac80211
> + * about a station entering PS mode.
> + * Note that by default mac80211 will automatically call the internal
> + * equivalent of this function according to the PM bit of incoming frames.
> + * Use the IEEE80211_HW_AP_LINK_PS flag to change this.

I think that explanation should be clearer and say that you must call
this only when the flag is set and vice versa. Also, there should be a 

WARN_ON(hw->flags & HW_AP_LINK_PS)

in the functions.

Also, maybe just a single function with a bool argument would be more
appropriate? Call it "ieee80211_sta_ps_transition()" or something like
that. You should also remove the text about calling the internal
equivalent -- the internal details might change at any time but the API
should be documented in a way that makes sense without the internal
details for the benefit of both sides -- people implementing a driver
don't need to know about the internal details, and people changing the
internal details know what semantics to keep.

> + * This function may not be called in IRQ context or process context.

This can't be true -- the latter part you must mean "or with softirqs
enabled".


Also, I'm worried about races between this and RX. All of the RX path
assumes that it is running at the same time. The ap_sta_ps_{start,end}
functions won't be called from the RX path when the flag is set, and
this is dependent on setting the flag, but is there really nothing in
them that could race?

Finally, I'm worried about this calling back into the driver's
sta_notify callback. If that is to remain that way, it needs to be
*very* clearly documented, I'd *much* prefer it not doing that but
handing off to a work struct or so internally.

johannes


  reply	other threads:[~2011-01-16  8:50 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-16  5:42 [PATCH 00/10] wl12xx: AP-mode per link PSM Arik Nemtsov
2011-01-16  5:42 ` [PATCH 01/10] wl12xx: fix potential race condition with TX queue watermark Arik Nemtsov
2011-01-16  5:42 ` [PATCH 02/10] wl12xx: AP-mode - fix race condition on sta connection Arik Nemtsov
2011-01-26 14:01   ` Luciano Coelho
2011-01-26 20:04     ` Arik Nemtsov
2011-01-26 21:28       ` Luciano Coelho
2011-01-26 21:33   ` Johannes Berg
2011-01-26 21:44     ` Arik Nemtsov
2011-01-26 21:54       ` Johannes Berg
2011-01-26 22:02         ` Arik Nemtsov
2011-01-26 22:08           ` Johannes Berg
2011-01-26 22:16             ` Arik Nemtsov
2011-01-26 23:11               ` Johannes Berg
2011-01-27  0:20             ` Jouni Malinen
2011-01-27  8:21               ` Johannes Berg
2011-01-16  5:42 ` [PATCH 03/10] wl12xx: AP-mode - TX queue per link in AC Arik Nemtsov
2011-01-16  5:42 ` [PATCH 04/10] mac80211: do not calc frame duration when using HW rate-control Arik Nemtsov
2011-01-16  8:34   ` Johannes Berg
2011-01-16  5:42 ` [PATCH 05/10] wl12xx: report invalid TX rate when returning non-TX-ed skbs Arik Nemtsov
2011-01-27  9:51   ` Luciano Coelho
2011-01-27 10:33     ` Johannes Berg
2011-01-30  6:57       ` Arik Nemtsov
2011-01-16  5:42 ` [PATCH 06/10] mac80211: add HW flag for disabling auto link-PS in AP mode Arik Nemtsov
2011-01-16  8:50   ` Johannes Berg [this message]
     [not found]     ` <AANLkTik=WDsehr0EgW7QemfdmokvaLzg1ugASwiuCOXt@mail.gmail.com>
2011-01-16 21:53       ` Fwd: " Arik Nemtsov
2011-01-17  9:35         ` Johannes Berg
2011-01-17 22:47           ` Arik Nemtsov
2011-01-18  9:05             ` Johannes Berg
2011-01-18 19:17               ` Arik Nemtsov
2011-01-27 11:39   ` Luciano Coelho
2011-01-16  5:42 ` [PATCH 07/10] wl12xx: AP-mode - support HW based link PS monitoring Arik Nemtsov
2011-01-27 11:41   ` Luciano Coelho
2011-01-16  5:42 ` [PATCH 08/10] wl12xx: AP mode - fix bug in cleanup of wl1271_op_sta_add() Arik Nemtsov
2011-01-16  5:42 ` [PATCH 09/10] wl12xx: AP-mode - count free FW TX blocks per link Arik Nemtsov
2011-01-16  5:42 ` [PATCH 10/10] wl12xx: AP-mode - management of links in PS-mode Arik Nemtsov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1295167829.3574.10.camel@jlt3.sipsolutions.net \
    --to=johannes@sipsolutions.net \
    --cc=arik@wizery.com \
    --cc=coelho@ti.com \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.