mirror of
https://github.com/hardkernel/linux.git
synced 2026-04-11 15:38:07 +09:00
net: wireless: rockchip_wlan: fix country code setup failed
Change-Id: I8cc1b7c3bfd6dc941e0f6f771fcfd3f7eb15cc8e Signed-off-by: Alex Zhao <zzc@rock-chips.com>
This commit is contained in:
@@ -17,8 +17,7 @@ DHDCFLAGS = -Wall -Wstrict-prototypes -Dlinux -DBCMDRIVER -DSDTEST \
|
||||
-DWIFI_ACT_FRAME -DARP_OFFLOAD_SUPPORT -DSUPPORT_PM2_ONLY \
|
||||
-DKEEP_ALIVE -DPKT_FILTER_SUPPORT -DPNO_SUPPORT -DDHDTCPACK_SUPPRESS \
|
||||
-DDHD_DONOT_FORWARD_BCMEVENT_AS_NETWORK_PKT -DRXFRAME_THREAD \
|
||||
-DTSQ_MULTIPLIER -DMFP \
|
||||
-DBCMSDIOH_TXGLOM_EXT -DWL_EXT_IAPSTA \
|
||||
-DTSQ_MULTIPLIER -DMFP -DWL_EXT_IAPSTA \
|
||||
-DENABLE_INSMOD_NO_FW_LOAD \
|
||||
-Idrivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd \
|
||||
-Idrivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/include
|
||||
@@ -32,7 +31,7 @@ DHDOFILES = aiutils.o siutils.o sbutils.o bcmutils.o bcmwifi_channels.o \
|
||||
ifneq ($(CONFIG_BCMDHD_SDIO),)
|
||||
DHDCFLAGS += \
|
||||
-DBCMSDIO -DMMC_SDIO_ABORT -DBCMLXSDMMC -DUSE_SDIOFIFO_IOVAR \
|
||||
-DBDC -DDHD_USE_IDLECOUNT -DBCMSDIOH_TXGLOM \
|
||||
-DBDC -DDHD_USE_IDLECOUNT -DBCMSDIOH_TXGLOM -DBCMSDIOH_TXGLOM_EXT \
|
||||
-DCUSTOM_SDIO_F2_BLKSIZE=256
|
||||
|
||||
DHDOFILES += bcmsdh.o bcmsdh_linux.o bcmsdh_sdmmc.o bcmsdh_sdmmc_linux.o \
|
||||
|
||||
@@ -514,8 +514,7 @@ dhd_conf_set_fw_name_by_chip(dhd_pub_t *dhd, char *fw_path, char *nv_path)
|
||||
if (chiprev == BCM43455C0_CHIP_REV) {
|
||||
strcpy(&fw_path[i+1], FW_BCM43455C0);
|
||||
strcpy(&nv_path[j + 1], "nvram_ap6255.txt");
|
||||
}
|
||||
else if (chiprev == BCM43455C5_CHIP_REV) {
|
||||
} else if (chiprev == BCM43456C5_CHIP_REV) {
|
||||
strcpy(&fw_path[i+1], FW_BCM43456C5);
|
||||
}
|
||||
break;
|
||||
@@ -730,7 +729,7 @@ dhd_conf_set_conf_name_by_chip(dhd_pub_t *dhd, char *conf_path)
|
||||
case BCM4345_CHIP_ID:
|
||||
if (chiprev == BCM43455C0_CHIP_REV)
|
||||
strcpy(&conf_path[i+1], CONFIG_BCM43455C0);
|
||||
else if (chiprev == BCM43455C5_CHIP_REV)
|
||||
else if (chiprev == BCM43456C5_CHIP_REV)
|
||||
strcpy(&conf_path[i+1], CONFIG_BCM43456C5);
|
||||
break;
|
||||
case BCM4339_CHIP_ID:
|
||||
@@ -1160,7 +1159,7 @@ void
|
||||
dhd_conf_add_pkt_filter(dhd_pub_t *dhd)
|
||||
{
|
||||
int i, j;
|
||||
char str[12];
|
||||
char str[16];
|
||||
#define MACS "%02x%02x%02x%02x%02x%02x"
|
||||
|
||||
/*
|
||||
@@ -1181,17 +1180,17 @@ dhd_conf_add_pkt_filter(dhd_pub_t *dhd)
|
||||
}
|
||||
dhd->pktfilter_count += i;
|
||||
|
||||
for(i=0; i<dhd->conf->magic_pkt_filter_add.count; i++) {
|
||||
strcat(&dhd->conf->magic_pkt_filter_add.filter[i][0], " 0x");
|
||||
strcat(&dhd->conf->magic_pkt_filter_add.filter[i][0], "FFFFFFFFFFFF");
|
||||
if (dhd->conf->magic_pkt_filter_add) {
|
||||
strcat(dhd->conf->magic_pkt_filter_add, " 0x");
|
||||
strcat(dhd->conf->magic_pkt_filter_add, "FFFFFFFFFFFF");
|
||||
for (j=0; j<16; j++)
|
||||
strcat(&dhd->conf->magic_pkt_filter_add.filter[i][0], "FFFFFFFFFFFF");
|
||||
strcat(&dhd->conf->magic_pkt_filter_add.filter[i][0], " 0x");
|
||||
strcat(&dhd->conf->magic_pkt_filter_add.filter[i][0], "FFFFFFFFFFFF");
|
||||
strcat(dhd->conf->magic_pkt_filter_add, "FFFFFFFFFFFF");
|
||||
strcat(dhd->conf->magic_pkt_filter_add, " 0x");
|
||||
strcat(dhd->conf->magic_pkt_filter_add, "FFFFFFFFFFFF");
|
||||
sprintf(str, MACS, MAC2STRDBG(dhd->mac.octet));
|
||||
for (j=0; j<16; j++)
|
||||
strcat(&dhd->conf->magic_pkt_filter_add.filter[i][0], str);
|
||||
dhd->pktfilter[i+dhd->pktfilter_count] = dhd->conf->magic_pkt_filter_add.filter[i];
|
||||
strncat(dhd->conf->magic_pkt_filter_add, str, 12);
|
||||
dhd->pktfilter[dhd->pktfilter_count] = dhd->conf->magic_pkt_filter_add;
|
||||
dhd->pktfilter_count += 1;
|
||||
}
|
||||
}
|
||||
@@ -1839,16 +1838,12 @@ dhd_conf_read_pkt_filter(dhd_pub_t *dhd, char *full_param, uint len_param)
|
||||
printf("\n");
|
||||
}
|
||||
else if (!strncmp("magic_pkt_filter_add=", full_param, len_param)) {
|
||||
pick_tmp = data;
|
||||
pch = bcmstrtok(&pick_tmp, ",.-", 0);
|
||||
i=0;
|
||||
while (pch != NULL && i<DHD_CONF_FILTER_MAX) {
|
||||
strcpy(&conf->magic_pkt_filter_add.filter[i][0], pch);
|
||||
printf("%s: magic_pkt_filter_add[%d][] = %s\n", __FUNCTION__, i, &conf->magic_pkt_filter_add.filter[i][0]);
|
||||
pch = bcmstrtok(&pick_tmp, ",.-", 0);
|
||||
i++;
|
||||
if (!(conf->magic_pkt_filter_add = kmalloc(MAGIC_PKT_FILTER_LEN, GFP_KERNEL))) {
|
||||
CONFIG_ERROR(("%s: kmalloc failed\n", __FUNCTION__));
|
||||
} else {
|
||||
strcpy(conf->magic_pkt_filter_add, data);
|
||||
printf("%s: magic_pkt_filter_add = %s\n", __FUNCTION__, conf->magic_pkt_filter_add);
|
||||
}
|
||||
conf->magic_pkt_filter_add.count = i;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
@@ -2043,10 +2038,7 @@ dhd_conf_read_sdio_params(dhd_pub_t *dhd, char *full_param, uint len_param)
|
||||
printf("%s: deferred_tx_len = %d\n", __FUNCTION__, conf->deferred_tx_len);
|
||||
}
|
||||
else if (!strncmp("txctl_tmo_fix=", full_param, len_param)) {
|
||||
if (!strncmp(data, "0", 1))
|
||||
conf->txctl_tmo_fix = FALSE;
|
||||
else
|
||||
conf->txctl_tmo_fix = TRUE;
|
||||
conf->txctl_tmo_fix = (int)simple_strtol(data, NULL, 10);
|
||||
printf("%s: txctl_tmo_fix = %d\n", __FUNCTION__, conf->txctl_tmo_fix);
|
||||
}
|
||||
else if (!strncmp("tx_in_rx=", full_param, len_param)) {
|
||||
@@ -2470,6 +2462,8 @@ dhd_conf_preinit(dhd_pub_t *dhd)
|
||||
dhd_conf_free_mac_list(&conf->nv_by_mac);
|
||||
dhd_conf_free_chip_nv_path_list(&conf->nv_by_chip);
|
||||
#endif
|
||||
if (conf->magic_pkt_filter_add)
|
||||
kfree(conf->magic_pkt_filter_add);
|
||||
memset(&conf->country_list, 0, sizeof(conf_country_list_t));
|
||||
conf->band = -1;
|
||||
conf->mimo_bw_cap = -1;
|
||||
@@ -2526,7 +2520,6 @@ dhd_conf_preinit(dhd_pub_t *dhd)
|
||||
#ifdef PKT_FILTER_SUPPORT
|
||||
memset(&conf->pkt_filter_add, 0, sizeof(conf_pkt_filter_add_t));
|
||||
memset(&conf->pkt_filter_del, 0, sizeof(conf_pkt_filter_del_t));
|
||||
memset(&conf->magic_pkt_filter_add, 0, sizeof(conf_pkt_filter_del_t));
|
||||
#endif
|
||||
conf->srl = -1;
|
||||
conf->lrl = -1;
|
||||
@@ -2641,6 +2634,8 @@ dhd_conf_reset(dhd_pub_t *dhd)
|
||||
dhd_conf_free_mac_list(&dhd->conf->nv_by_mac);
|
||||
dhd_conf_free_chip_nv_path_list(&dhd->conf->nv_by_chip);
|
||||
#endif
|
||||
if (dhd->conf->magic_pkt_filter_add)
|
||||
kfree(dhd->conf->magic_pkt_filter_add);
|
||||
memset(dhd->conf, 0, sizeof(dhd_conf_t));
|
||||
return 0;
|
||||
}
|
||||
@@ -2684,6 +2679,8 @@ dhd_conf_detach(dhd_pub_t *dhd)
|
||||
dhd_conf_free_mac_list(&dhd->conf->nv_by_mac);
|
||||
dhd_conf_free_chip_nv_path_list(&dhd->conf->nv_by_chip);
|
||||
#endif
|
||||
if (dhd->conf->magic_pkt_filter_add)
|
||||
kfree(dhd->conf->magic_pkt_filter_add);
|
||||
MFREE(dhd->osh, dhd->conf, sizeof(dhd_conf_t));
|
||||
}
|
||||
dhd->conf = NULL;
|
||||
|
||||
@@ -31,7 +31,7 @@ extern uint dhd_slpauto;
|
||||
#define BCM4335A0_CHIP_REV 2
|
||||
#define BCM4339A0_CHIP_REV 1
|
||||
#define BCM43455C0_CHIP_REV 6
|
||||
#define BCM43455C5_CHIP_REV 9
|
||||
#define BCM43456C5_CHIP_REV 9
|
||||
#define BCM4354A1_CHIP_REV 1
|
||||
#define BCM4359B1_CHIP_REV 5
|
||||
#define BCM4359C0_CHIP_REV 9
|
||||
@@ -82,6 +82,7 @@ typedef struct wmes_param {
|
||||
#ifdef PKT_FILTER_SUPPORT
|
||||
#define DHD_CONF_FILTER_MAX 8
|
||||
#define PKT_FILTER_LEN 300
|
||||
#define MAGIC_PKT_FILTER_LEN 450
|
||||
typedef struct conf_pkt_filter_add {
|
||||
uint32 count;
|
||||
char filter[DHD_CONF_FILTER_MAX][PKT_FILTER_LEN];
|
||||
@@ -127,7 +128,7 @@ typedef struct dhd_conf {
|
||||
#ifdef PKT_FILTER_SUPPORT
|
||||
conf_pkt_filter_add_t pkt_filter_add;
|
||||
conf_pkt_filter_del_t pkt_filter_del;
|
||||
conf_pkt_filter_add_t magic_pkt_filter_add;
|
||||
char *magic_pkt_filter_add;
|
||||
#endif
|
||||
int srl;
|
||||
int lrl;
|
||||
|
||||
@@ -170,14 +170,18 @@ static int dhd_wlan_get_mac_addr(unsigned char *buf)
|
||||
|
||||
static struct cntry_locales_custom brcm_wlan_translate_custom_table[] = {
|
||||
/* Table should be filled out based on custom platform regulatory requirement */
|
||||
#ifdef EXAMPLE_TABLE
|
||||
{"", "XT", 49}, /* Universal if Country code is unknown or empty */
|
||||
{"US", "US", 0},
|
||||
#endif /* EXMAPLE_TABLE */
|
||||
};
|
||||
|
||||
#ifdef CUSTOM_FORCE_NODFS_FLAG
|
||||
struct cntry_locales_custom brcm_wlan_translate_nodfs_table[] = {
|
||||
#ifdef EXAMPLE_TABLE
|
||||
{"", "XT", 50}, /* Universal if Country code is unknown or empty */
|
||||
{"US", "US", 0},
|
||||
#endif /* EXMAPLE_TABLE */
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -3778,7 +3778,7 @@ wl_customer6_legacy_chip_check(struct bcm_cfg80211 *cfg,
|
||||
dtoh32(revinfo.deviceid), dtoh32(revinfo.vendorid), dtoh32(revinfo.chipnum)));
|
||||
chipnum = revinfo.chipnum;
|
||||
if ((chipnum == BCM4350_CHIP_ID) || (chipnum == BCM4355_CHIP_ID) ||
|
||||
(chipnum == BCM4345_CHIP_ID)) {
|
||||
(chipnum == BCM4345_CHIP_ID) || (chipnum == BCM43430_CHIP_ID)) {
|
||||
/* WAR required */
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user