Set wifi country code from kernel command line
Introduce two kernel cmdline args bcmdhd.wl_country_para
and bcmdhd.wl_country_rev.
Default value are 'US' and 140.
Bug: 70135717, Bug: 69175538
Test: connect to wifi network using 5500MHz band
Change-Id: I430b5ea7d401882ab8c97983df9e22665369a5c5
Signed-off-by:Tian Yang <yang.tian@nxp.com>
diff --git a/drivers/net/wireless/bcmdhd/dhd_linux.c b/drivers/net/wireless/bcmdhd/dhd_linux.c
index 9855280..652765c 100644
--- a/drivers/net/wireless/bcmdhd/dhd_linux.c
+++ b/drivers/net/wireless/bcmdhd/dhd_linux.c
@@ -10540,6 +10540,17 @@ dhd_enable_adps(dhd_pub_t *dhd, uint8 on)
}
#endif /* WLADPS || WLADPS_PRIVATE_CMD */
+ /* Usage: passing 'bcmdhd.wl_country_para=$CUSTOMIZED_COUNTRY bcmdhd.wl_country_rev=$CUSTOMIZED_REV'
+ * from kernel command line */
+ static char wl_country_para[WLC_CNTRY_BUF_SZ] = {'U', 'S'};
+ static int wl_country_rev = 140;
+
+ module_param_string(wl_country_para, wl_country_para, sizeof(wl_country_para), 0644);
+ MODULE_PARM_DESC(wl_country_para,"String of country_para:VALUE for country code.");
+
+ module_param(wl_country_rev, int, 0644);
+ MODULE_PARM_DESC(wl_country_rev,"String of country_para:VALUE for country code rev.");
+
int
dhd_preinit_ioctls(dhd_pub_t *dhd)
{
@@ -10985,6 +10996,9 @@ dhd_preinit_ioctls(dhd_pub_t *dhd)
dhd->info->rxthread_enabled = TRUE;
#endif
/* Set Country code */
+ strcpy(dhd->conf->cspec.ccode, wl_country_para);
+ dhd->conf->cspec.rev = wl_country_rev;
+
if (dhd->dhd_cspec.ccode[0] != 0) {
printf("Set country %s, revision %d\n", dhd->dhd_cspec.ccode, dhd->dhd_cspec.rev);
ret = dhd_iovar(dhd, 0, "country", (char *)&dhd->dhd_cspec, sizeof(wl_country_t),