aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhao Xuewen <zhaoxuewen@huawei.com>2016-07-12 16:46:05 +0800
committerZhao Xuewen <zhaoxuewen@huawei.com>2016-07-12 16:46:05 +0800
commit9461c8b1ae16c749345d355989bfd108c1bcb4ce (patch)
treebdf7b06599a7a2cb809fa43092b958c3fc38f525
parentb6a9b11d2a7a964ac218368fdcbe222b2dc2ca04 (diff)
bcmdhd: Sync country code to wifi chip when wifi down/up.android-wear-6.0.1_r0.25
Save the country code in wifi driver and sync it to wifi chip when wifi down/up. Change-Id: I04f392740f48452190587fbb57a727dbd29771d9 Signed-off-by: LiuTan <liutan1@huawei.com>
-rw-r--r--drivers/net/wireless/bcmdhd/dhd_linux.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/drivers/net/wireless/bcmdhd/dhd_linux.c b/drivers/net/wireless/bcmdhd/dhd_linux.c
index 1d511136b82d..05c2e9a45cb0 100644
--- a/drivers/net/wireless/bcmdhd/dhd_linux.c
+++ b/drivers/net/wireless/bcmdhd/dhd_linux.c
@@ -3853,7 +3853,7 @@ exit:
dhd->pub.hang_was_sent = 0;
/* Clear country spec for for built-in type driver */
-#ifndef CUSTOM_COUNTRY_CODE
+#ifdef CUSTOM_COUNTRY_CODE
if (!dhd_download_fw_on_driverload) {
dhd->pub.dhd_cspec.country_abbrev[0] = 0x00;
dhd->pub.dhd_cspec.rev = 0;
@@ -5774,11 +5774,35 @@ dhd_preinit_ioctls(dhd_pub_t *dhd)
#ifndef DISABLE_11N
bcm_mkiovar("ampdu_hostreorder", (char *)&hostreorder, 4, iovbuf, sizeof(iovbuf));
if ((ret2 = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0)) < 0) {
- DHD_ERROR(("%s wl ampdu_hostreorder failed %d\n", __FUNCTION__, ret2));
+ DHD_ERROR(("%s wl ampdu_hostreorder set failed, ret:%d\n", __FUNCTION__, ret2));
if (ret2 != BCME_UNSUPPORTED)
ret = ret2;
- if (ret2 != BCME_OK)
+ if (ret == BCME_NOTDOWN) {
+ uint wl_down = 1;
+ ret2 = dhd_wl_ioctl_cmd(dhd, WLC_DOWN, (char *)&wl_down,
+ sizeof(wl_down), TRUE, 0);
+ if (BCME_OK != ret2) {
+ DHD_ERROR(("%s wl ampdu_hostreorder WL_DOWN fail ret:%d, hostreorder:%d\n",
+ __FUNCTION__, ret2, hostreorder));
+ } else {
+
+ bcm_mkiovar("ampdu_hostreorder", (char *)&hostreorder, 4,
+ iovbuf, sizeof(iovbuf));
+ ret2 = dhd_wl_ioctl_cmd(dhd, WLC_SET_VAR, iovbuf, sizeof(iovbuf), TRUE, 0);
+ if (BCME_OK != ret2) {
+ DHD_ERROR(("%s wl ampdu_hostreorder also fail with wl down. ret:%d\n",
+ __FUNCTION__, ret2));
+ } else {
+ DHD_ERROR(("%s wl ampdu_hostreorder set success with wl down.\n",
+ __FUNCTION__));
+ }
+ }
+ if (ret2 != BCME_UNSUPPORTED)
+ ret = ret2;
+ }
+ if (ret2 != BCME_OK) {
hostreorder = 0;
+ }
}
#endif /* DISABLE_11N */