lkml.org 
[lkml]   [2017]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH review for 4.4 05/26] mac80211: fix power saving clients handling in iwlwifi
    Date
    From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>

    [ Upstream commit d98937f4ea713d21e0fcc345919f86c877dd8d6f ]

    iwlwifi now supports RSS and can't let mac80211 track the
    PS state based on the Rx frames since they can come out of
    order. iwlwifi is now advertising AP_LINK_PS, and uses
    explicit notifications to teach mac80211 about the PS state
    of the stations and the PS poll / uAPSD trigger frames
    coming our way from the peers.

    Because of that, the TIM stopped being maintained in
    mac80211. I tried to fix this in commit c68df2e7be0c
    ("mac80211: allow using AP_LINK_PS with mac80211-generated TIM IE")
    but that was later reverted by Felix in commit 6c18a6b4e799
    ("Revert "mac80211: allow using AP_LINK_PS with mac80211-generated TIM IE")
    since it broke drivers that do not implement set_tim.

    Since none of the drivers that set AP_LINK_PS have the
    set_tim() handler set besides iwlwifi, I can bail out in
    __sta_info_recalc_tim if AP_LINK_PS AND .set_tim is not
    implemented.

    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    ---
    net/mac80211/sta_info.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
    index 63ea6cbac5ad..7e7b9ef29d8d 100644
    --- a/net/mac80211/sta_info.c
    +++ b/net/mac80211/sta_info.c
    @@ -661,7 +661,7 @@ static void __sta_info_recalc_tim(struct sta_info *sta, bool ignore_pending)
    }

    /* No need to do anything if the driver does all */
    - if (ieee80211_hw_check(&local->hw, AP_LINK_PS))
    + if (ieee80211_hw_check(&local->hw, AP_LINK_PS) && !local->ops->set_tim)
    return;

    if (sta->dead)
    --
    2.11.0
    \
     
     \ /
      Last update: 2017-09-25 03:24    [W:2.305 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site