RE: [PATCH] mac80211: don't look at the PM bit of BAR frames

2017-06-21 Thread Grumbach, Emmanuel
> 
> On 06/08/2017 04:00 AM, Emmanuel Grumbach wrote:
> > When a peer sends a BAR frame with PM bit clear, we should not modify
> > its PM state as madated by the spec in
> > 802.11-20012 10.2.1.2.
> >
> > Signed-off-by: Emmanuel Grumbach
> > 
> > ---
> >   net/mac80211/rx.c | 6 +-
> >   1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index
> > e48724a6725e..bb1e4bbf55e2 100644
> > --- a/net/mac80211/rx.c
> > +++ b/net/mac80211/rx.c
> > @@ -1558,12 +1558,16 @@ ieee80211_rx_h_sta_process(struct
> ieee80211_rx_data *rx)
> >  */
> > if (!ieee80211_hw_check(>local->hw, AP_LINK_PS) &&
> > !ieee80211_has_morefrags(hdr->frame_control) &&
> > +   !ieee80211_is_back_req(hdr->frame_control) &&
> 
> BTW latest spec also notes that PSPOLL frame has PM bit reserved too,
> because it may not result in ACK frame from AP.

PS poll are already handled before in the flow and don't reach this code.


> 
> > !(status->rx_flags & IEEE80211_RX_DEFERRED_RELEASE) &&
> > (rx->sdata->vif.type == NL80211_IFTYPE_AP ||
> >  rx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) &&
> > -   /* PM bit is only checked in frames where it isn't reserved,
> > +   /*
> > +* PM bit is only checked in frames where it isn't reserved,
> >  * in AP mode it's reserved in non-bufferable management frames
> >  * (cf. IEEE 802.11-2012 8.2.4.1.7 Power Management field)
> > +* BAR frames should be ignored as specified in
> > +* IEEE 802.11-2012 10.2.1.2.
> 
> Comment placement is a little confusing IMO. Maybe move
> ieee80211_is_back_req() check to this position?
> 

Don't know. It's been merged already. So you'd need to send a patch fixing this 
if you want :)


Re: [PATCH] mac80211: don't look at the PM bit of BAR frames

2017-06-20 Thread Igor Mitsyanko

On 06/08/2017 04:00 AM, Emmanuel Grumbach wrote:

When a peer sends a BAR frame with PM bit clear, we should
not modify its PM state as madated by the spec in
802.11-20012 10.2.1.2.

Signed-off-by: Emmanuel Grumbach 

---
  net/mac80211/rx.c | 6 +-
  1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index e48724a6725e..bb1e4bbf55e2 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1558,12 +1558,16 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx)
 */
if (!ieee80211_hw_check(>local->hw, AP_LINK_PS) &&
!ieee80211_has_morefrags(hdr->frame_control) &&
+   !ieee80211_is_back_req(hdr->frame_control) &&


BTW latest spec also notes that PSPOLL frame has PM bit reserved too, 
because it may not result in ACK frame from AP.



!(status->rx_flags & IEEE80211_RX_DEFERRED_RELEASE) &&
(rx->sdata->vif.type == NL80211_IFTYPE_AP ||
 rx->sdata->vif.type == NL80211_IFTYPE_AP_VLAN) &&
-   /* PM bit is only checked in frames where it isn't reserved,
+   /*
+* PM bit is only checked in frames where it isn't reserved,
 * in AP mode it's reserved in non-bufferable management frames
 * (cf. IEEE 802.11-2012 8.2.4.1.7 Power Management field)
+* BAR frames should be ignored as specified in
+* IEEE 802.11-2012 10.2.1.2.


Comment placement is a little confusing IMO. Maybe move 
ieee80211_is_back_req() check to this position?



 */
(!ieee80211_is_mgmt(hdr->frame_control) ||
 ieee80211_is_bufferable_mmpdu(hdr->frame_control))) {