ath6kl: Fix target minimum length requirement for WMI_SEND_PROBE_RESPONSE_CMDID
authorAarthi Thiruvengadam <athiruve@qca.qualcomm.com>
Wed, 9 Nov 2011 18:05:56 +0000 (10:05 -0800)
committerKalle Valo <kvalo@qca.qualcomm.com>
Sun, 13 Nov 2011 10:31:50 +0000 (12:31 +0200)
The firmware expects the minimum length of
WMI_SEND_PROBE_RESPONSE_CMDID to be 13. However, when the device is a
P2P GO and it needs to send a probe response to a non-P2P client,
there are no P2P IEs to be added, and therefore the length of the WMI
command is 12. This command gets rejected by the firmware. To fix
this, add an extra byte to satisfy the minimum length requirement.

Signed-off-by: Aarthi Thiruvengadam <athiruve@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath6kl/wmi.c

index 922344d3b26259b040dd8c7ec9f642d8a692f7e4..f1d53d089c7eeee62e5b2b4df5002a80e5d094ec 100644 (file)
@@ -3024,8 +3024,12 @@ int ath6kl_wmi_send_probe_response_cmd(struct wmi *wmi, u8 if_idx, u32 freq,
 {
        struct sk_buff *skb;
        struct wmi_p2p_probe_response_cmd *p;
+       size_t cmd_len = sizeof(*p) + data_len;
 
-       skb = ath6kl_wmi_get_new_buf(sizeof(*p) + data_len);
+       if (data_len == 0)
+               cmd_len++; /* work around target minimum length requirement */
+
+       skb = ath6kl_wmi_get_new_buf(cmd_len);
        if (!skb)
                return -ENOMEM;