diff options
author | Jouni Malinen <jouni@qca.qualcomm.com> | 2011-08-30 14:57:56 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2011-08-31 03:13:00 -0400 |
commit | 8a6c8060c0b166ce5ce4a3563b511b1f641dbea8 (patch) | |
tree | 35d7531a3295885238be83ff50a9895bc7154b2a /drivers/net/wireless/ath/ath6kl/cfg80211.c | |
parent | 63fa1e0ca7a2c1e0cbf5f39b866340127ddc1480 (diff) |
ath6kl: Implement mgmt_tx
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/cfg80211.c')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/cfg80211.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c index 6745bf203ec5..5c98de36d163 100644 --- a/drivers/net/wireless/ath/ath6kl/cfg80211.c +++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c | |||
@@ -1687,6 +1687,29 @@ static int ath6kl_cancel_remain_on_channel(struct wiphy *wiphy, | |||
1687 | return ath6kl_wmi_cancel_remain_on_chnl_cmd(ar->wmi); | 1687 | return ath6kl_wmi_cancel_remain_on_chnl_cmd(ar->wmi); |
1688 | } | 1688 | } |
1689 | 1689 | ||
1690 | static int ath6kl_mgmt_tx(struct wiphy *wiphy, struct net_device *dev, | ||
1691 | struct ieee80211_channel *chan, bool offchan, | ||
1692 | enum nl80211_channel_type channel_type, | ||
1693 | bool channel_type_valid, unsigned int wait, | ||
1694 | const u8 *buf, size_t len, u64 *cookie) | ||
1695 | { | ||
1696 | struct ath6kl *ar = ath6kl_priv(dev); | ||
1697 | u32 id; | ||
1698 | |||
1699 | id = ar->send_action_id++; | ||
1700 | if (id == 0) { | ||
1701 | /* | ||
1702 | * 0 is a reserved value in the WMI command and shall not be | ||
1703 | * used for the command. | ||
1704 | */ | ||
1705 | id = ar->send_action_id++; | ||
1706 | } | ||
1707 | |||
1708 | *cookie = id; | ||
1709 | return ath6kl_wmi_send_action_cmd(ar->wmi, id, chan->center_freq, wait, | ||
1710 | buf, len); | ||
1711 | } | ||
1712 | |||
1690 | static struct cfg80211_ops ath6kl_cfg80211_ops = { | 1713 | static struct cfg80211_ops ath6kl_cfg80211_ops = { |
1691 | .change_virtual_intf = ath6kl_cfg80211_change_iface, | 1714 | .change_virtual_intf = ath6kl_cfg80211_change_iface, |
1692 | .scan = ath6kl_cfg80211_scan, | 1715 | .scan = ath6kl_cfg80211_scan, |
@@ -1716,6 +1739,7 @@ static struct cfg80211_ops ath6kl_cfg80211_ops = { | |||
1716 | .change_station = ath6kl_change_station, | 1739 | .change_station = ath6kl_change_station, |
1717 | .remain_on_channel = ath6kl_remain_on_channel, | 1740 | .remain_on_channel = ath6kl_remain_on_channel, |
1718 | .cancel_remain_on_channel = ath6kl_cancel_remain_on_channel, | 1741 | .cancel_remain_on_channel = ath6kl_cancel_remain_on_channel, |
1742 | .mgmt_tx = ath6kl_mgmt_tx, | ||
1719 | }; | 1743 | }; |
1720 | 1744 | ||
1721 | struct wireless_dev *ath6kl_cfg80211_init(struct device *dev) | 1745 | struct wireless_dev *ath6kl_cfg80211_init(struct device *dev) |