diff options
author | Zhao Xuewen <zhaoxuewen@huawei.com> | 2016-07-12 16:46:05 +0800 |
---|---|---|
committer | Zhao Xuewen <zhaoxuewen@huawei.com> | 2016-07-12 16:46:05 +0800 |
commit | 9461c8b1ae16c749345d355989bfd108c1bcb4ce (patch) | |
tree | bdf7b06599a7a2cb809fa43092b958c3fc38f525 | |
parent | b6a9b11d2a7a964ac218368fdcbe222b2dc2ca04 (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.c | 30 |
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 */ |