diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/wmi.c')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/wmi.c | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/wmi.c b/drivers/net/wireless/ath/ath6kl/wmi.c index bbbe0a74d3c3..fce29f7f2e5c 100644 --- a/drivers/net/wireless/ath/ath6kl/wmi.c +++ b/drivers/net/wireless/ath/ath6kl/wmi.c | |||
@@ -3182,8 +3182,9 @@ int ath6kl_wmi_remain_on_chnl_cmd(struct wmi *wmi, u8 if_idx, u32 freq, u32 dur) | |||
3182 | * ath6kl_wmi_send_mgmt_cmd instead. The new function supports P2P | 3182 | * ath6kl_wmi_send_mgmt_cmd instead. The new function supports P2P |
3183 | * mgmt operations using station interface. | 3183 | * mgmt operations using station interface. |
3184 | */ | 3184 | */ |
3185 | int ath6kl_wmi_send_action_cmd(struct wmi *wmi, u8 if_idx, u32 id, u32 freq, | 3185 | static int ath6kl_wmi_send_action_cmd(struct wmi *wmi, u8 if_idx, u32 id, |
3186 | u32 wait, const u8 *data, u16 data_len) | 3186 | u32 freq, u32 wait, const u8 *data, |
3187 | u16 data_len) | ||
3187 | { | 3188 | { |
3188 | struct sk_buff *skb; | 3189 | struct sk_buff *skb; |
3189 | struct wmi_send_action_cmd *p; | 3190 | struct wmi_send_action_cmd *p; |
@@ -3219,9 +3220,9 @@ int ath6kl_wmi_send_action_cmd(struct wmi *wmi, u8 if_idx, u32 id, u32 freq, | |||
3219 | NO_SYNC_WMIFLAG); | 3220 | NO_SYNC_WMIFLAG); |
3220 | } | 3221 | } |
3221 | 3222 | ||
3222 | int ath6kl_wmi_send_mgmt_cmd(struct wmi *wmi, u8 if_idx, u32 id, u32 freq, | 3223 | static int __ath6kl_wmi_send_mgmt_cmd(struct wmi *wmi, u8 if_idx, u32 id, |
3223 | u32 wait, const u8 *data, u16 data_len, | 3224 | u32 freq, u32 wait, const u8 *data, |
3224 | u32 no_cck) | 3225 | u16 data_len, u32 no_cck) |
3225 | { | 3226 | { |
3226 | struct sk_buff *skb; | 3227 | struct sk_buff *skb; |
3227 | struct wmi_send_mgmt_cmd *p; | 3228 | struct wmi_send_mgmt_cmd *p; |
@@ -3258,6 +3259,32 @@ int ath6kl_wmi_send_mgmt_cmd(struct wmi *wmi, u8 if_idx, u32 id, u32 freq, | |||
3258 | NO_SYNC_WMIFLAG); | 3259 | NO_SYNC_WMIFLAG); |
3259 | } | 3260 | } |
3260 | 3261 | ||
3262 | int ath6kl_wmi_send_mgmt_cmd(struct wmi *wmi, u8 if_idx, u32 id, u32 freq, | ||
3263 | u32 wait, const u8 *data, u16 data_len, | ||
3264 | u32 no_cck) | ||
3265 | { | ||
3266 | int status; | ||
3267 | struct ath6kl *ar = wmi->parent_dev; | ||
3268 | |||
3269 | if (test_bit(ATH6KL_FW_CAPABILITY_STA_P2PDEV_DUPLEX, | ||
3270 | ar->fw_capabilities)) { | ||
3271 | /* | ||
3272 | * If capable of doing P2P mgmt operations using | ||
3273 | * station interface, send additional information like | ||
3274 | * supported rates to advertise and xmit rates for | ||
3275 | * probe requests | ||
3276 | */ | ||
3277 | status = __ath6kl_wmi_send_mgmt_cmd(ar->wmi, if_idx, id, freq, | ||
3278 | wait, data, data_len, | ||
3279 | no_cck); | ||
3280 | } else { | ||
3281 | status = ath6kl_wmi_send_action_cmd(ar->wmi, if_idx, id, freq, | ||
3282 | wait, data, data_len); | ||
3283 | } | ||
3284 | |||
3285 | return status; | ||
3286 | } | ||
3287 | |||
3261 | int ath6kl_wmi_send_probe_response_cmd(struct wmi *wmi, u8 if_idx, u32 freq, | 3288 | int ath6kl_wmi_send_probe_response_cmd(struct wmi *wmi, u8 if_idx, u32 freq, |
3262 | const u8 *dst, const u8 *data, | 3289 | const u8 *dst, const u8 *data, |
3263 | u16 data_len) | 3290 | u16 data_len) |