aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath6kl/cfg80211.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/cfg80211.c')
-rw-r--r--drivers/net/wireless/ath/ath6kl/cfg80211.c22
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
3329static 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
3329static const struct ieee80211_txrx_stypes 3350static const struct ieee80211_txrx_stypes
3330ath6kl_mgmt_stypes[NUM_NL80211_IFTYPES] = { 3351ath6kl_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
3397void ath6kl_cfg80211_stop(struct ath6kl_vif *vif) 3419void ath6kl_cfg80211_stop(struct ath6kl_vif *vif)