mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
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>
This commit is contained in:
parent
7ac25eacc6
commit
171fe76877
3 changed files with 14 additions and 4 deletions
|
@ -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[] = {
|
||||||
.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)
|
||||||
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,
|
||||||
*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,
|
||||||
*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
|
||||||
|
|
Loading…
Add table
Reference in a new issue