提交 171fe768 编写于 作者: M Mohammed Shafi Shajakhan 提交者: Kalle Valo

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: NBen Gray <ben.r.gray@gmail.com>
Reported-by: NBen Gray <ben.r.gray@gmail.com>
Signed-off-by: NMohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
Signed-off-by: NKalle Valo <kvalo@qca.qualcomm.com>
上级 7ac25eac
...@@ -151,6 +151,7 @@ struct ath6kl_fw_ie { ...@@ -151,6 +151,7 @@ struct ath6kl_fw_ie {
enum ath6kl_hw_flags { enum ath6kl_hw_flags {
ATH6KL_HW_64BIT_RATES = BIT(0), ATH6KL_HW_64BIT_RATES = BIT(0),
ATH6KL_HW_AP_INACTIVITY_MINS = BIT(1), ATH6KL_HW_AP_INACTIVITY_MINS = BIT(1),
ATH6KL_HW_MAP_LP_ENDPOINT = BIT(2),
}; };
#define ATH6KL_FW_API2_FILE "fw-2.bin" #define ATH6KL_FW_API2_FILE "fw-2.bin"
......
...@@ -155,7 +155,8 @@ static const struct ath6kl_hw hw_list[] = { ...@@ -155,7 +155,8 @@ static const struct ath6kl_hw hw_list[] = {
.refclk_hz = 40000000, .refclk_hz = 40000000,
.uarttx_pin = 11, .uarttx_pin = 11,
.flags = ATH6KL_HW_64BIT_RATES | .flags = ATH6KL_HW_64BIT_RATES |
ATH6KL_HW_AP_INACTIVITY_MINS, ATH6KL_HW_AP_INACTIVITY_MINS |
ATH6KL_HW_MAP_LP_ENDPOINT,
.fw = { .fw = {
.dir = AR6004_HW_1_3_FW_DIR, .dir = AR6004_HW_1_3_FW_DIR,
...@@ -360,7 +361,7 @@ static int ath6kl_init_service_ep(struct ath6kl *ar) ...@@ -360,7 +361,7 @@ static int ath6kl_init_service_ep(struct ath6kl *ar)
if (ath6kl_connectservice(ar, &connect, "WMI DATA BK")) if (ath6kl_connectservice(ar, &connect, "WMI DATA BK"))
return -EIO; return -EIO;
/* connect to Video service, map this to to HI PRI */ /* connect to Video service, map this to HI PRI */
connect.svc_id = WMI_DATA_VI_SVC; connect.svc_id = WMI_DATA_VI_SVC;
if (ath6kl_connectservice(ar, &connect, "WMI DATA VI")) if (ath6kl_connectservice(ar, &connect, "WMI DATA VI"))
return -EIO; return -EIO;
......
...@@ -805,7 +805,11 @@ static int ath6kl_usb_map_service_pipe(struct ath6kl *ar, u16 svc_id, ...@@ -805,7 +805,11 @@ static int ath6kl_usb_map_service_pipe(struct ath6kl *ar, u16 svc_id,
*dl_pipe = ATH6KL_USB_PIPE_RX_DATA; *dl_pipe = ATH6KL_USB_PIPE_RX_DATA;
break; break;
case WMI_DATA_VI_SVC: case WMI_DATA_VI_SVC:
*ul_pipe = ATH6KL_USB_PIPE_TX_DATA_MP;
if (ar->hw.flags & ATH6KL_HW_MAP_LP_ENDPOINT)
*ul_pipe = ATH6KL_USB_PIPE_TX_DATA_LP;
else
*ul_pipe = ATH6KL_USB_PIPE_TX_DATA_MP;
/* /*
* Disable rxdata2 directly, it will be enabled * Disable rxdata2 directly, it will be enabled
* if FW enable rxdata2 * if FW enable rxdata2
...@@ -813,7 +817,11 @@ static int ath6kl_usb_map_service_pipe(struct ath6kl *ar, u16 svc_id, ...@@ -813,7 +817,11 @@ static int ath6kl_usb_map_service_pipe(struct ath6kl *ar, u16 svc_id,
*dl_pipe = ATH6KL_USB_PIPE_RX_DATA; *dl_pipe = ATH6KL_USB_PIPE_RX_DATA;
break; break;
case WMI_DATA_VO_SVC: case WMI_DATA_VO_SVC:
*ul_pipe = ATH6KL_USB_PIPE_TX_DATA_HP;
if (ar->hw.flags & ATH6KL_HW_MAP_LP_ENDPOINT)
*ul_pipe = ATH6KL_USB_PIPE_TX_DATA_LP;
else
*ul_pipe = ATH6KL_USB_PIPE_TX_DATA_MP;
/* /*
* Disable rxdata2 directly, it will be enabled * Disable rxdata2 directly, it will be enabled
* if FW enable rxdata2 * if FW enable rxdata2
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册