ath6kl: fix link speed when using sgi

The MSB of rate index from FW is used for sgi. But the ath6kl_wmi_get_rate
doesn't handle it. The access to wmi_rate_tbl array may be out of range
if sgi is 1. This may cause the return value of ath6kl_wmi_get_rate()
function is incorrect link rate. We add sgi adjustment to avoid such case.

kvalo: change patch title

Signed-off-by: Dengke Qiu <dqiu@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
这个提交包含在:
Dengke Qiu
2012-08-28 15:33:42 +08:00
提交者 Kalle Valo
父节点 3814264481
当前提交 83685091ac
修改 2 个文件,包含 15 行新增1 行删除

查看文件

@@ -3263,10 +3263,21 @@ int ath6kl_wmi_set_regdomain_cmd(struct wmi *wmi, const char *alpha2)
s32 ath6kl_wmi_get_rate(s8 rate_index)
{
u8 sgi = 0;
if (rate_index == RATE_AUTO)
return 0;
return wmi_rate_tbl[(u32) rate_index][0];
/* SGI is stored as the MSB of the rate_index */
if (rate_index & RATE_INDEX_MSB) {
rate_index &= RATE_INDEX_WITHOUT_SGI_MASK;
sgi = 1;
}
if (WARN_ON(rate_index > RATE_MCS_7_40))
rate_index = RATE_MCS_7_40;
return wmi_rate_tbl[(u32) rate_index][sgi];
}
static int ath6kl_wmi_get_pmkid_list_event_rx(struct wmi *wmi, u8 *datap,