mac80211: allow using AP_LINK_PS with mac80211-generated TIM IE
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 15 Sep 2016 13:30:02 +0000 (16:30 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 16 Sep 2016 12:49:23 +0000 (14:49 +0200)
In 46fa38e84b65 ("mac80211: allow software PS-Poll/U-APSD with
AP_LINK_PS"), Johannes allowed to use mac80211's code for handling
stations that go to PS or send PS-Poll / uAPSD trigger frames for
devices that enable RSS.

This means that mac80211 doesn't look at frames anymore but rather
relies on a notification that will come from the device when a PS
transition occurs or when a PS-Poll / trigger frame is detected by
the device.

iwlwifi will need this capability but still needs mac80211 to take
care of the TIM IE. Today, if a driver sets AP_LINK_PS, mac80211
will not update the TIM IE. Change mac80211 to check existence of
the set_tim driver callback rather than using AP_LINK_PS to decide
if the driver handles the TIM IE internally or not.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
[reword commit message a bit]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/sta_info.c

index 5e70fa52e1ff8ec7e2dd123db396013dfffb7d21..1b1b28ff4fdb5bbefad5e61783eac4e53da06a60 100644 (file)
@@ -690,7 +690,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 (!local->ops->set_tim)
                return;
 
        if (sta->dead)