diff options
| author | Johannes Berg <johannes.berg@intel.com> | 2014-11-11 06:48:42 -0500 |
|---|---|---|
| committer | Johannes Berg <johannes.berg@intel.com> | 2014-12-15 06:34:45 -0500 |
| commit | 848955ccf0bdf42fff33e021a76f6daec98fe59b (patch) | |
| tree | f4d17dc5c3f732ad016152ba509b4bc681526ec2 | |
| parent | 4bcc56bb3a9622e877772598d1cac124266b2b8a (diff) | |
mac80211: move U-APSD enablement to vif flags
In order to let drivers have more dynamic U-APSD support,
move the enablement flag to the virtual interface driver
flags. This lets drivers not only set it up differently
for different interfaces, but also enable/disable on the
fly if needed.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
| -rw-r--r-- | drivers/net/wireless/ath/ath10k/mac.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/cw1200/main.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/cw1200/sta.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac80211.c | 13 | ||||
| -rw-r--r-- | drivers/net/wireless/ti/wl1251/main.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/ti/wlcore/main.c | 2 | ||||
| -rw-r--r-- | include/net/mac80211.h | 15 | ||||
| -rw-r--r-- | net/mac80211/debugfs.c | 2 | ||||
| -rw-r--r-- | net/mac80211/main.c | 4 | ||||
| -rw-r--r-- | net/mac80211/mlme.c | 7 |
10 files changed, 25 insertions, 28 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index c4005670cba2..2619db1e3e74 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c | |||
| @@ -2871,6 +2871,8 @@ static int ath10k_add_interface(struct ieee80211_hw *hw, | |||
| 2871 | int bit; | 2871 | int bit; |
| 2872 | u32 vdev_param; | 2872 | u32 vdev_param; |
| 2873 | 2873 | ||
| 2874 | vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD; | ||
| 2875 | |||
| 2874 | mutex_lock(&ar->conf_mutex); | 2876 | mutex_lock(&ar->conf_mutex); |
| 2875 | 2877 | ||
| 2876 | memset(arvif, 0, sizeof(*arvif)); | 2878 | memset(arvif, 0, sizeof(*arvif)); |
| @@ -5024,7 +5026,6 @@ int ath10k_mac_register(struct ath10k *ar) | |||
| 5024 | ar->hw->flags = IEEE80211_HW_SIGNAL_DBM | | 5026 | ar->hw->flags = IEEE80211_HW_SIGNAL_DBM | |
| 5025 | IEEE80211_HW_SUPPORTS_PS | | 5027 | IEEE80211_HW_SUPPORTS_PS | |
| 5026 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS | | 5028 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS | |
| 5027 | IEEE80211_HW_SUPPORTS_UAPSD | | ||
| 5028 | IEEE80211_HW_MFP_CAPABLE | | 5029 | IEEE80211_HW_MFP_CAPABLE | |
| 5029 | IEEE80211_HW_REPORTS_TX_ACK_STATUS | | 5030 | IEEE80211_HW_REPORTS_TX_ACK_STATUS | |
| 5030 | IEEE80211_HW_HAS_RATE_CONTROL | | 5031 | IEEE80211_HW_HAS_RATE_CONTROL | |
diff --git a/drivers/net/wireless/cw1200/main.c b/drivers/net/wireless/cw1200/main.c index 3e78cc3ccb78..0da6e423da63 100644 --- a/drivers/net/wireless/cw1200/main.c +++ b/drivers/net/wireless/cw1200/main.c | |||
| @@ -282,7 +282,6 @@ static struct ieee80211_hw *cw1200_init_common(const u8 *macaddr, | |||
| 282 | IEEE80211_HW_SUPPORTS_PS | | 282 | IEEE80211_HW_SUPPORTS_PS | |
| 283 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS | | 283 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS | |
| 284 | IEEE80211_HW_REPORTS_TX_ACK_STATUS | | 284 | IEEE80211_HW_REPORTS_TX_ACK_STATUS | |
| 285 | IEEE80211_HW_SUPPORTS_UAPSD | | ||
| 286 | IEEE80211_HW_CONNECTION_MONITOR | | 285 | IEEE80211_HW_CONNECTION_MONITOR | |
| 287 | IEEE80211_HW_AMPDU_AGGREGATION | | 286 | IEEE80211_HW_AMPDU_AGGREGATION | |
| 288 | IEEE80211_HW_TX_AMPDU_SETUP_IN_HW | | 287 | IEEE80211_HW_TX_AMPDU_SETUP_IN_HW | |
diff --git a/drivers/net/wireless/cw1200/sta.c b/drivers/net/wireless/cw1200/sta.c index 5b84664db13b..a1e3237c0be8 100644 --- a/drivers/net/wireless/cw1200/sta.c +++ b/drivers/net/wireless/cw1200/sta.c | |||
| @@ -213,6 +213,7 @@ int cw1200_add_interface(struct ieee80211_hw *dev, | |||
| 213 | /* __le32 auto_calibration_mode = __cpu_to_le32(1); */ | 213 | /* __le32 auto_calibration_mode = __cpu_to_le32(1); */ |
| 214 | 214 | ||
| 215 | vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | | 215 | vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | |
| 216 | IEEE80211_VIF_SUPPORTS_UAPSD | | ||
| 216 | IEEE80211_VIF_SUPPORTS_CQM_RSSI; | 217 | IEEE80211_VIF_SUPPORTS_CQM_RSSI; |
| 217 | 218 | ||
| 218 | mutex_lock(&priv->conf_mutex); | 219 | mutex_lock(&priv->conf_mutex); |
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index 31a5b3f4266c..346331d3c696 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c | |||
| @@ -326,6 +326,8 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) | |||
| 326 | hw->radiotap_vht_details |= IEEE80211_RADIOTAP_VHT_KNOWN_STBC | | 326 | hw->radiotap_vht_details |= IEEE80211_RADIOTAP_VHT_KNOWN_STBC | |
| 327 | IEEE80211_RADIOTAP_VHT_KNOWN_BEAMFORMED; | 327 | IEEE80211_RADIOTAP_VHT_KNOWN_BEAMFORMED; |
| 328 | hw->rate_control_algorithm = "iwl-mvm-rs"; | 328 | hw->rate_control_algorithm = "iwl-mvm-rs"; |
| 329 | hw->uapsd_queues = IWL_MVM_UAPSD_QUEUES; | ||
| 330 | hw->uapsd_max_sp_len = IWL_UAPSD_MAX_SP; | ||
| 329 | 331 | ||
| 330 | /* | 332 | /* |
| 331 | * Enable 11w if advertised by firmware and software crypto | 333 | * Enable 11w if advertised by firmware and software crypto |
| @@ -336,13 +338,6 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm) | |||
| 336 | !iwlwifi_mod_params.sw_crypto) | 338 | !iwlwifi_mod_params.sw_crypto) |
| 337 | hw->flags |= IEEE80211_HW_MFP_CAPABLE; | 339 | hw->flags |= IEEE80211_HW_MFP_CAPABLE; |
| 338 | 340 | ||
| 339 | if (mvm->fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT && | ||
| 340 | !iwlwifi_mod_params.uapsd_disable) { | ||
| 341 | hw->flags |= IEEE80211_HW_SUPPORTS_UAPSD; | ||
| 342 | hw->uapsd_queues = IWL_MVM_UAPSD_QUEUES; | ||
| 343 | hw->uapsd_max_sp_len = IWL_UAPSD_MAX_SP; | ||
| 344 | } | ||
| 345 | |||
| 346 | if (mvm->fw->ucode_capa.api[0] & IWL_UCODE_TLV_API_LMAC_SCAN || | 341 | if (mvm->fw->ucode_capa.api[0] & IWL_UCODE_TLV_API_LMAC_SCAN || |
| 347 | mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN) { | 342 | mvm->fw->ucode_capa.capa[0] & IWL_UCODE_TLV_CAPA_UMAC_SCAN) { |
| 348 | hw->flags |= IEEE80211_SINGLE_HW_SCAN_ON_ALL_BANDS; | 343 | hw->flags |= IEEE80211_SINGLE_HW_SCAN_ON_ALL_BANDS; |
| @@ -1147,6 +1142,10 @@ static int iwl_mvm_mac_add_interface(struct ieee80211_hw *hw, | |||
| 1147 | mvm->bf_allowed_vif = mvmvif; | 1142 | mvm->bf_allowed_vif = mvmvif; |
| 1148 | vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | | 1143 | vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | |
| 1149 | IEEE80211_VIF_SUPPORTS_CQM_RSSI; | 1144 | IEEE80211_VIF_SUPPORTS_CQM_RSSI; |
| 1145 | if (mvm->fw->ucode_capa.flags & | ||
| 1146 | IWL_UCODE_TLV_FLAGS_UAPSD_SUPPORT && | ||
| 1147 | !iwlwifi_mod_params.uapsd_disable) | ||
| 1148 | vif->driver_flags |= IEEE80211_VIF_SUPPORTS_UAPSD; | ||
| 1150 | } | 1149 | } |
| 1151 | 1150 | ||
| 1152 | /* | 1151 | /* |
diff --git a/drivers/net/wireless/ti/wl1251/main.c b/drivers/net/wireless/ti/wl1251/main.c index 0b30a7b4d663..d4ba009ac9aa 100644 --- a/drivers/net/wireless/ti/wl1251/main.c +++ b/drivers/net/wireless/ti/wl1251/main.c | |||
| @@ -500,6 +500,7 @@ static int wl1251_op_add_interface(struct ieee80211_hw *hw, | |||
| 500 | int ret = 0; | 500 | int ret = 0; |
| 501 | 501 | ||
| 502 | vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | | 502 | vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | |
| 503 | IEEE80211_VIF_SUPPORTS_UAPSD | | ||
| 503 | IEEE80211_VIF_SUPPORTS_CQM_RSSI; | 504 | IEEE80211_VIF_SUPPORTS_CQM_RSSI; |
| 504 | 505 | ||
| 505 | wl1251_debug(DEBUG_MAC80211, "mac80211 add interface type %d mac %pM", | 506 | wl1251_debug(DEBUG_MAC80211, "mac80211 add interface type %d mac %pM", |
| @@ -1480,9 +1481,7 @@ int wl1251_init_ieee80211(struct wl1251 *wl) | |||
| 1480 | /* unit us */ | 1481 | /* unit us */ |
| 1481 | /* FIXME: find a proper value */ | 1482 | /* FIXME: find a proper value */ |
| 1482 | 1483 | ||
| 1483 | wl->hw->flags = IEEE80211_HW_SIGNAL_DBM | | 1484 | wl->hw->flags = IEEE80211_HW_SIGNAL_DBM | IEEE80211_HW_SUPPORTS_PS; |
| 1484 | IEEE80211_HW_SUPPORTS_PS | | ||
| 1485 | IEEE80211_HW_SUPPORTS_UAPSD; | ||
| 1486 | 1485 | ||
| 1487 | wl->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | | 1486 | wl->hw->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | |
| 1488 | BIT(NL80211_IFTYPE_ADHOC); | 1487 | BIT(NL80211_IFTYPE_ADHOC); |
diff --git a/drivers/net/wireless/ti/wlcore/main.c b/drivers/net/wireless/ti/wlcore/main.c index 6ad3fcedab9b..2a99456b6b8f 100644 --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c | |||
| @@ -2508,6 +2508,7 @@ static int wl1271_op_add_interface(struct ieee80211_hw *hw, | |||
| 2508 | } | 2508 | } |
| 2509 | 2509 | ||
| 2510 | vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | | 2510 | vif->driver_flags |= IEEE80211_VIF_BEACON_FILTER | |
| 2511 | IEEE80211_VIF_SUPPORTS_UAPSD | | ||
| 2511 | IEEE80211_VIF_SUPPORTS_CQM_RSSI; | 2512 | IEEE80211_VIF_SUPPORTS_CQM_RSSI; |
| 2512 | 2513 | ||
| 2513 | wl1271_debug(DEBUG_MAC80211, "mac80211 add interface type %d mac %pM", | 2514 | wl1271_debug(DEBUG_MAC80211, "mac80211 add interface type %d mac %pM", |
| @@ -5776,7 +5777,6 @@ static int wl1271_init_ieee80211(struct wl1271 *wl) | |||
| 5776 | wl->hw->flags = IEEE80211_HW_SIGNAL_DBM | | 5777 | wl->hw->flags = IEEE80211_HW_SIGNAL_DBM | |
| 5777 | IEEE80211_HW_SUPPORTS_PS | | 5778 | IEEE80211_HW_SUPPORTS_PS | |
| 5778 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS | | 5779 | IEEE80211_HW_SUPPORTS_DYNAMIC_PS | |
| 5779 | IEEE80211_HW_SUPPORTS_UAPSD | | ||
| 5780 | IEEE80211_HW_HAS_RATE_CONTROL | | 5780 | IEEE80211_HW_HAS_RATE_CONTROL | |
| 5781 | IEEE80211_HW_CONNECTION_MONITOR | | 5781 | IEEE80211_HW_CONNECTION_MONITOR | |
| 5782 | IEEE80211_HW_REPORTS_TX_ACK_STATUS | | 5782 | IEEE80211_HW_REPORTS_TX_ACK_STATUS | |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index b24ef577aed9..4913c00539fb 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
| @@ -1187,10 +1187,15 @@ struct ieee80211_channel_switch { | |||
| 1187 | * monitoring on this virtual interface -- i.e. it can monitor | 1187 | * monitoring on this virtual interface -- i.e. it can monitor |
| 1188 | * connection quality related parameters, such as the RSSI level and | 1188 | * connection quality related parameters, such as the RSSI level and |
| 1189 | * provide notifications if configured trigger levels are reached. | 1189 | * provide notifications if configured trigger levels are reached. |
| 1190 | * @IEEE80211_VIF_SUPPORTS_UAPSD: The device can do U-APSD for this | ||
| 1191 | * interface. This flag should be set during interface addition, | ||
| 1192 | * but may be set/cleared as late as authentication to an AP. It is | ||
| 1193 | * only valid for managed/station mode interfaces. | ||
| 1190 | */ | 1194 | */ |
| 1191 | enum ieee80211_vif_flags { | 1195 | enum ieee80211_vif_flags { |
| 1192 | IEEE80211_VIF_BEACON_FILTER = BIT(0), | 1196 | IEEE80211_VIF_BEACON_FILTER = BIT(0), |
| 1193 | IEEE80211_VIF_SUPPORTS_CQM_RSSI = BIT(1), | 1197 | IEEE80211_VIF_SUPPORTS_CQM_RSSI = BIT(1), |
| 1198 | IEEE80211_VIF_SUPPORTS_UAPSD = BIT(2), | ||
| 1194 | }; | 1199 | }; |
| 1195 | 1200 | ||
| 1196 | /** | 1201 | /** |
| @@ -1589,11 +1594,6 @@ struct ieee80211_tx_control { | |||
| 1589 | * @IEEE80211_HW_MFP_CAPABLE: | 1594 | * @IEEE80211_HW_MFP_CAPABLE: |
| 1590 | * Hardware supports management frame protection (MFP, IEEE 802.11w). | 1595 | * Hardware supports management frame protection (MFP, IEEE 802.11w). |
| 1591 | * | 1596 | * |
| 1592 | * @IEEE80211_HW_SUPPORTS_UAPSD: | ||
| 1593 | * Hardware supports Unscheduled Automatic Power Save Delivery | ||
| 1594 | * (U-APSD) in managed mode. The mode is configured with | ||
| 1595 | * conf_tx() operation. | ||
| 1596 | * | ||
| 1597 | * @IEEE80211_HW_REPORTS_TX_ACK_STATUS: | 1597 | * @IEEE80211_HW_REPORTS_TX_ACK_STATUS: |
| 1598 | * Hardware can provide ack status reports of Tx frames to | 1598 | * Hardware can provide ack status reports of Tx frames to |
| 1599 | * the stack. | 1599 | * the stack. |
| @@ -1679,8 +1679,7 @@ enum ieee80211_hw_flags { | |||
| 1679 | IEEE80211_HW_MFP_CAPABLE = 1<<13, | 1679 | IEEE80211_HW_MFP_CAPABLE = 1<<13, |
| 1680 | IEEE80211_HW_WANT_MONITOR_VIF = 1<<14, | 1680 | IEEE80211_HW_WANT_MONITOR_VIF = 1<<14, |
| 1681 | IEEE80211_HW_NO_AUTO_VIF = 1<<15, | 1681 | IEEE80211_HW_NO_AUTO_VIF = 1<<15, |
| 1682 | /* free slot */ | 1682 | /* free slots */ |
| 1683 | IEEE80211_HW_SUPPORTS_UAPSD = 1<<17, | ||
| 1684 | IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, | 1683 | IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, |
| 1685 | IEEE80211_HW_CONNECTION_MONITOR = 1<<19, | 1684 | IEEE80211_HW_CONNECTION_MONITOR = 1<<19, |
| 1686 | IEEE80211_HW_QUEUE_CONTROL = 1<<20, | 1685 | IEEE80211_HW_QUEUE_CONTROL = 1<<20, |
| @@ -2032,7 +2031,7 @@ void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb); | |||
| 2032 | * enabled whenever user has enabled powersave. | 2031 | * enabled whenever user has enabled powersave. |
| 2033 | * | 2032 | * |
| 2034 | * Driver informs U-APSD client support by enabling | 2033 | * Driver informs U-APSD client support by enabling |
| 2035 | * %IEEE80211_HW_SUPPORTS_UAPSD flag. The mode is configured through the | 2034 | * %IEEE80211_VIF_SUPPORTS_UAPSD flag. The mode is configured through the |
| 2036 | * uapsd parameter in conf_tx() operation. Hardware needs to send the QoS | 2035 | * uapsd parameter in conf_tx() operation. Hardware needs to send the QoS |
| 2037 | * Nullfunc frames and stay awake until the service period has ended. To | 2036 | * Nullfunc frames and stay awake until the service period has ended. To |
| 2038 | * utilize U-APSD, dynamic powersave is disabled for voip AC and all frames | 2037 | * utilize U-APSD, dynamic powersave is disabled for voip AC and all frames |
diff --git a/net/mac80211/debugfs.c b/net/mac80211/debugfs.c index 54a189f0393e..eeb0bbd69d98 100644 --- a/net/mac80211/debugfs.c +++ b/net/mac80211/debugfs.c | |||
| @@ -303,8 +303,6 @@ static ssize_t hwflags_read(struct file *file, char __user *user_buf, | |||
| 303 | sf += scnprintf(buf + sf, mxln - sf, "SUPPORTS_DYNAMIC_PS\n"); | 303 | sf += scnprintf(buf + sf, mxln - sf, "SUPPORTS_DYNAMIC_PS\n"); |
| 304 | if (local->hw.flags & IEEE80211_HW_MFP_CAPABLE) | 304 | if (local->hw.flags & IEEE80211_HW_MFP_CAPABLE) |
| 305 | sf += scnprintf(buf + sf, mxln - sf, "MFP_CAPABLE\n"); | 305 | sf += scnprintf(buf + sf, mxln - sf, "MFP_CAPABLE\n"); |
| 306 | if (local->hw.flags & IEEE80211_HW_SUPPORTS_UAPSD) | ||
| 307 | sf += scnprintf(buf + sf, mxln - sf, "SUPPORTS_UAPSD\n"); | ||
| 308 | if (local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS) | 306 | if (local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS) |
| 309 | sf += scnprintf(buf + sf, mxln - sf, | 307 | sf += scnprintf(buf + sf, mxln - sf, |
| 310 | "REPORTS_TX_ACK_STATUS\n"); | 308 | "REPORTS_TX_ACK_STATUS\n"); |
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index 6ab99da38db9..d9ce33663c73 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
| @@ -916,10 +916,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) | |||
| 916 | } | 916 | } |
| 917 | } | 917 | } |
| 918 | 918 | ||
| 919 | WARN((local->hw.flags & IEEE80211_HW_SUPPORTS_UAPSD) | ||
| 920 | && (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK), | ||
| 921 | "U-APSD not supported with HW_PS_NULLFUNC_STACK\n"); | ||
| 922 | |||
| 923 | /* | 919 | /* |
| 924 | * Calculate scan IE length -- we need this to alloc | 920 | * Calculate scan IE length -- we need this to alloc |
| 925 | * memory and to subtract from the driver limit. It | 921 | * memory and to subtract from the driver limit. It |
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 75a9bf50207e..f495b800b92c 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
| @@ -4667,8 +4667,13 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata, | |||
| 4667 | ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; | 4667 | ifmgd->flags |= IEEE80211_STA_DISABLE_VHT; |
| 4668 | rcu_read_unlock(); | 4668 | rcu_read_unlock(); |
| 4669 | 4669 | ||
| 4670 | if (WARN((sdata->vif.driver_flags & IEEE80211_VIF_SUPPORTS_UAPSD) && | ||
| 4671 | (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK), | ||
| 4672 | "U-APSD not supported with HW_PS_NULLFUNC_STACK\n")) | ||
| 4673 | sdata->vif.driver_flags &= ~IEEE80211_VIF_SUPPORTS_UAPSD; | ||
| 4674 | |||
| 4670 | if (bss->wmm_used && bss->uapsd_supported && | 4675 | if (bss->wmm_used && bss->uapsd_supported && |
| 4671 | (sdata->local->hw.flags & IEEE80211_HW_SUPPORTS_UAPSD)) { | 4676 | (sdata->vif.driver_flags & IEEE80211_VIF_SUPPORTS_UAPSD)) { |
| 4672 | assoc_data->uapsd = true; | 4677 | assoc_data->uapsd = true; |
| 4673 | ifmgd->flags |= IEEE80211_STA_UAPSD_ENABLED; | 4678 | ifmgd->flags |= IEEE80211_STA_UAPSD_ENABLED; |
| 4674 | } else { | 4679 | } else { |
