diff options
author | Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com> | 2012-09-27 08:49:52 -0400 |
---|---|---|
committer | Kalle Valo <kvalo@qca.qualcomm.com> | 2012-10-24 04:49:57 -0400 |
commit | 171fe76877d3d8071a901e64eb63eeee6c7760a2 (patch) | |
tree | 3a76fe85cc2e72d0a58fb120e5824d550a3f2205 /drivers/net/wireless/ath/ath6kl | |
parent | 7ac25eacc6766617edaac69d928f431a9983ccf2 (diff) |
ath6kl: Fix mapping uplink endpoint for AR6004
AR6004(UB134) firmware supports only LP Endpoint, So map
all Access Categories to Low Priority endpoints. This fixes a WPA2
connection issue as the uplink(tx) endpoint is appropriately
mapped in sync with the firmware.
Tested-by: Ben Gray <ben.r.gray@gmail.com>
Reported-by: Ben Gray <ben.r.gray@gmail.com>
Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl')
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/core.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/init.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath6kl/usb.c | 12 |
3 files changed, 14 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/core.h b/drivers/net/wireless/ath/ath6kl/core.h index 95fc9b37e6a..1778bd3c732 100644 --- a/drivers/net/wireless/ath/ath6kl/core.h +++ b/drivers/net/wireless/ath/ath6kl/core.h | |||
@@ -151,6 +151,7 @@ struct ath6kl_fw_ie { | |||
151 | enum ath6kl_hw_flags { | 151 | enum ath6kl_hw_flags { |
152 | ATH6KL_HW_64BIT_RATES = BIT(0), | 152 | ATH6KL_HW_64BIT_RATES = BIT(0), |
153 | ATH6KL_HW_AP_INACTIVITY_MINS = BIT(1), | 153 | ATH6KL_HW_AP_INACTIVITY_MINS = BIT(1), |
154 | ATH6KL_HW_MAP_LP_ENDPOINT = BIT(2), | ||
154 | }; | 155 | }; |
155 | 156 | ||
156 | #define ATH6KL_FW_API2_FILE "fw-2.bin" | 157 | #define ATH6KL_FW_API2_FILE "fw-2.bin" |
diff --git a/drivers/net/wireless/ath/ath6kl/init.c b/drivers/net/wireless/ath/ath6kl/init.c index 7ffb8533986..bb6aeea1c87 100644 --- a/drivers/net/wireless/ath/ath6kl/init.c +++ b/drivers/net/wireless/ath/ath6kl/init.c | |||
@@ -155,7 +155,8 @@ static const struct ath6kl_hw hw_list[] = { | |||
155 | .refclk_hz = 40000000, | 155 | .refclk_hz = 40000000, |
156 | .uarttx_pin = 11, | 156 | .uarttx_pin = 11, |
157 | .flags = ATH6KL_HW_64BIT_RATES | | 157 | .flags = ATH6KL_HW_64BIT_RATES | |
158 | ATH6KL_HW_AP_INACTIVITY_MINS, | 158 | ATH6KL_HW_AP_INACTIVITY_MINS | |
159 | ATH6KL_HW_MAP_LP_ENDPOINT, | ||
159 | 160 | ||
160 | .fw = { | 161 | .fw = { |
161 | .dir = AR6004_HW_1_3_FW_DIR, | 162 | .dir = AR6004_HW_1_3_FW_DIR, |
@@ -360,7 +361,7 @@ static int ath6kl_init_service_ep(struct ath6kl *ar) | |||
360 | if (ath6kl_connectservice(ar, &connect, "WMI DATA BK")) | 361 | if (ath6kl_connectservice(ar, &connect, "WMI DATA BK")) |
361 | return -EIO; | 362 | return -EIO; |
362 | 363 | ||
363 | /* connect to Video service, map this to to HI PRI */ | 364 | /* connect to Video service, map this to HI PRI */ |
364 | connect.svc_id = WMI_DATA_VI_SVC; | 365 | connect.svc_id = WMI_DATA_VI_SVC; |
365 | if (ath6kl_connectservice(ar, &connect, "WMI DATA VI")) | 366 | if (ath6kl_connectservice(ar, &connect, "WMI DATA VI")) |
366 | return -EIO; | 367 | return -EIO; |
diff --git a/drivers/net/wireless/ath/ath6kl/usb.c b/drivers/net/wireless/ath/ath6kl/usb.c index 2014fac4274..62bcc0d5bc2 100644 --- a/drivers/net/wireless/ath/ath6kl/usb.c +++ b/drivers/net/wireless/ath/ath6kl/usb.c | |||
@@ -805,7 +805,11 @@ static int ath6kl_usb_map_service_pipe(struct ath6kl *ar, u16 svc_id, | |||
805 | *dl_pipe = ATH6KL_USB_PIPE_RX_DATA; | 805 | *dl_pipe = ATH6KL_USB_PIPE_RX_DATA; |
806 | break; | 806 | break; |
807 | case WMI_DATA_VI_SVC: | 807 | case WMI_DATA_VI_SVC: |
808 | *ul_pipe = ATH6KL_USB_PIPE_TX_DATA_MP; | 808 | |
809 | if (ar->hw.flags & ATH6KL_HW_MAP_LP_ENDPOINT) | ||
810 | *ul_pipe = ATH6KL_USB_PIPE_TX_DATA_LP; | ||
811 | else | ||
812 | *ul_pipe = ATH6KL_USB_PIPE_TX_DATA_MP; | ||
809 | /* | 813 | /* |
810 | * Disable rxdata2 directly, it will be enabled | 814 | * Disable rxdata2 directly, it will be enabled |
811 | * if FW enable rxdata2 | 815 | * if FW enable rxdata2 |
@@ -813,7 +817,11 @@ static int ath6kl_usb_map_service_pipe(struct ath6kl *ar, u16 svc_id, | |||
813 | *dl_pipe = ATH6KL_USB_PIPE_RX_DATA; | 817 | *dl_pipe = ATH6KL_USB_PIPE_RX_DATA; |
814 | break; | 818 | break; |
815 | case WMI_DATA_VO_SVC: | 819 | case WMI_DATA_VO_SVC: |
816 | *ul_pipe = ATH6KL_USB_PIPE_TX_DATA_HP; | 820 | |
821 | if (ar->hw.flags & ATH6KL_HW_MAP_LP_ENDPOINT) | ||
822 | *ul_pipe = ATH6KL_USB_PIPE_TX_DATA_LP; | ||
823 | else | ||
824 | *ul_pipe = ATH6KL_USB_PIPE_TX_DATA_MP; | ||
817 | /* | 825 | /* |
818 | * Disable rxdata2 directly, it will be enabled | 826 | * Disable rxdata2 directly, it will be enabled |
819 | * if FW enable rxdata2 | 827 | * if FW enable rxdata2 |