diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/cfg80211.c')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/cfg80211.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c index a624a0c5e5f..0194617ff30 100644 --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c | |||
@@ -3326,6 +3326,27 @@ static int ath6kl_cfg80211_set_bitrate(struct wiphy *wiphy, | |||
3326 | mask); | 3326 | mask); |
3327 | } | 3327 | } |
3328 | 3328 | ||
3329 | static int ath6kl_cfg80211_set_txe_config(struct wiphy *wiphy, | ||
3330 | struct net_device *dev, | ||
3331 | u32 rate, u32 pkts, u32 intvl) | ||
3332 | { | ||
3333 | struct ath6kl *ar = ath6kl_priv(dev); | ||
3334 | struct ath6kl_vif *vif = netdev_priv(dev); | ||
3335 | |||
3336 | if (vif->nw_type != INFRA_NETWORK || | ||
3337 | !test_bit(ATH6KL_FW_CAPABILITY_TX_ERR_NOTIFY, ar->fw_capabilities)) | ||
3338 | return -EOPNOTSUPP; | ||
3339 | |||
3340 | if (vif->sme_state != SME_CONNECTED) | ||
3341 | return -ENOTCONN; | ||
3342 | |||
3343 | /* save this since the firmware won't report the interval */ | ||
3344 | vif->txe_intvl = intvl; | ||
3345 | |||
3346 | return ath6kl_wmi_set_txe_notify(ar->wmi, vif->fw_vif_idx, | ||
3347 | rate, pkts, intvl); | ||
3348 | } | ||
3349 | |||
3329 | static const struct ieee80211_txrx_stypes | 3350 | static const struct ieee80211_txrx_stypes |
3330 | ath6kl_mgmt_stypes[NUM_NL80211_IFTYPES] = { | 3351 | ath6kl_mgmt_stypes[NUM_NL80211_IFTYPES] = { |
3331 | [NL80211_IFTYPE_STATION] = { | 3352 | [NL80211_IFTYPE_STATION] = { |
@@ -3392,6 +3413,7 @@ static struct cfg80211_ops ath6kl_cfg80211_ops = { | |||
3392 | .sched_scan_start = ath6kl_cfg80211_sscan_start, | 3413 | .sched_scan_start = ath6kl_cfg80211_sscan_start, |
3393 | .sched_scan_stop = ath6kl_cfg80211_sscan_stop, | 3414 | .sched_scan_stop = ath6kl_cfg80211_sscan_stop, |
3394 | .set_bitrate_mask = ath6kl_cfg80211_set_bitrate, | 3415 | .set_bitrate_mask = ath6kl_cfg80211_set_bitrate, |
3416 | .set_cqm_txe_config = ath6kl_cfg80211_set_txe_config, | ||
3395 | }; | 3417 | }; |
3396 | 3418 | ||
3397 | void ath6kl_cfg80211_stop(struct ath6kl_vif *vif) | 3419 | void ath6kl_cfg80211_stop(struct ath6kl_vif *vif) |