diff options
author | PixelBot AutoMerger <android-nexus-securitybot@system.gserviceaccount.com> | 2023-12-03 18:53:51 -0800 |
---|---|---|
committer | SecurityBot <android-nexus-securitybot@system.gserviceaccount.com> | 2023-12-03 18:53:51 -0800 |
commit | e152f4aa12826009720f0325f076260fb834ca5d (patch) | |
tree | 1a040818fa74928ef14953b66323768a4c99eb66 | |
parent | 512f13bfa0cbeddaf79a81a4483999c75a4e4a32 (diff) | |
parent | c6b6411e0e6f013f060103689205ba7c713f3cd8 (diff) | |
download | bcm4389-e152f4aa12826009720f0325f076260fb834ca5d.tar.gz |
Merge android13-gs-pixel-5.10-24Q1 into android13-gs-pixel-5.10android-u-qpr3-beta-2_r0.7android-u-qpr3-beta-2_r0.6android-u-qpr3-beta-2_r0.5android-u-qpr3-beta-2_r0.4android-u-qpr3-beta-2_r0.3android-u-qpr3-beta-2_r0.2android-u-qpr3-beta-2.1_r0.7android-u-qpr3-beta-2.1_r0.5android-u-qpr3-beta-2.1_r0.4android-u-qpr3-beta-2.1_r0.3android-u-qpr3-beta-2.1_r0.2android-u-qpr3-beta-2.1_r0.1android-u-qpr3-beta-1_r0.7android-u-qpr3-beta-1_r0.5android-u-qpr3-beta-1_r0.4android-u-qpr3-beta-1_r0.3android-u-qpr3-beta-1_r0.2android-u-qpr3-beta-1_r0.1android-15-dp-2_r0.6android-15-dp-2_r0.5android-15-dp-2_r0.4android-15-dp-2_r0.3android-15-dp-2_r0.2android-15-dp-2_r0.1android-15-dp-1_r0.7android-15-dp-1_r0.5android-15-dp-1_r0.4android-15-dp-1_r0.3android-15-dp-1_r0.2android-15-dp-1_r0.1android-15-beta-2_r0.6android-15-beta-2_r0.4android-15-beta-2_r0.3android-15-beta-1_r0.6android-15-beta-1_r0.5android-15-beta-1_r0.4android-15-beta-1_r0.3android-15-beta-1_r0.2android-15-beta-1_r0.1android-gs-tangorpro-5.10-android15-dpandroid-gs-tangorpro-5.10-android15-betaandroid-gs-tangorpro-5.10-android14-qpr3-betaandroid-gs-raviole-5.10-android15-dpandroid-gs-raviole-5.10-android14-qpr3-betaandroid-gs-pantah-5.10-android15-dpandroid-gs-pantah-5.10-android15-betaandroid-gs-pantah-5.10-android14-qpr3-betaandroid-gs-lynx-5.10-android15-dpandroid-gs-lynx-5.10-android15-betaandroid-gs-lynx-5.10-android14-qpr3-betaandroid-gs-felix-5.10-android15-dpandroid-gs-felix-5.10-android14-qpr3-betaandroid-gs-bluejay-5.10-android15-dpandroid-gs-bluejay-5.10-android14-qpr3-beta
SBMerger: 571992243
Change-Id: Ib45fc3e4fd5a1db37f1c4cd4d394df1e96215ef6
Signed-off-by: SecurityBot <android-nexus-securitybot@system.gserviceaccount.com>
-rw-r--r-- | Kbuild | 4 | ||||
-rw-r--r-- | wl_android.c | 74 | ||||
-rw-r--r-- | wl_android.h | 4 | ||||
-rw-r--r-- | wl_cfg80211.c | 20 | ||||
-rwxr-xr-x | wl_cfgvendor.c | 10 |
5 files changed, 94 insertions, 18 deletions
@@ -298,12 +298,12 @@ DHDCFLAGS += -DDHD_HAL_RING_DUMP_MEMDUMP DHDCFLAGS += -DDHD_DUMP_START_COMMAND # Enable pktid logging DHDCFLAGS += -DDHD_MAP_PKTID_LOGGING +# Skip coredump for certain health check traps +DHDCFLAGS += -DDHD_SKIP_COREDUMP_ON_HC else DHDCFLAGS += -DDHD_FILE_DUMP_EVENT # The debug dump file path is blank in DHD, it is defined in HAL. DHDCFLAGS += -DDHD_COMMON_DUMP_PATH="\"/\"" -# Skip coredump for certain health check traps -DHDCFLAGS += -DDHD_SKIP_COREDUMP_ON_HC endif DHDCFLAGS := $(filter-out -DDHD_DUMP_FILE_WRITE_FROM_KERNEL ,$(DHDCFLAGS)) endif diff --git a/wl_android.c b/wl_android.c index 3aa7844..6569172 100644 --- a/wl_android.c +++ b/wl_android.c @@ -15094,3 +15094,77 @@ exit: return bytes_written; } #endif /* SUPPORT_AP_INIT_BWCONF */ + +s32 +wl_android_set_blacklist_bssid(struct net_device *dev, maclist_t *blacklist, + uint32 len, uint32 flush) +{ + s32 err; + s32 macmode; + + if (blacklist) { + err = wldev_ioctl_set(dev, WLC_SET_MACLIST, (u8 *)blacklist, len); + if (err != BCME_OK) { + WL_ERR(("WLC_SET_MACLIST failed %d\n", err)); + return err; + } + } + /* By default programming blacklist flushes out old values */ + macmode = (flush && !blacklist) ? WLC_MACMODE_DISABLED : WLC_MACMODE_DENY; + err = wldev_ioctl_set(dev, WLC_SET_MACMODE, (u8 *)&macmode, sizeof(macmode)); + if (err != BCME_OK) { + WL_ERR(("WLC_SET_MACMODE %d failed %d\n", macmode, err)); + } else { + WL_INFORM_MEM(("WLC_SET_MACMODE %d applied\n", macmode)); + } + return err; +} + +s32 +wl_android_set_whitelist_ssid(struct net_device *dev, wl_ssid_whitelist_t *ssid_whitelist, + uint32 len, uint32 flush) +{ + s32 err; + u8 *buf; + u32 buf_len = WLC_IOCTL_MEDLEN; + wl_ssid_whitelist_t whitelist_ssid_flush; + struct bcm_cfg80211 *cfg = wl_get_cfg(dev); + + if (!ssid_whitelist) { + if (flush) { + ssid_whitelist = &whitelist_ssid_flush; + ssid_whitelist->ssid_count = 0; + } else { + WL_ERR(("%s : Nothing to do here\n", __FUNCTION__)); + return BCME_BADARG; + } + } + + buf = (char *)MALLOC(cfg->osh, buf_len); + if (buf == NULL) { + WL_ERR(("failed to allocated memory %d bytes\n", + WLC_IOCTL_MEDLEN)); + return -ENOMEM; + } + + if ((len + strlen("roam_exp_ssid_whitelist")) >= buf_len) { + WL_ERR(("unexpected len for ssid blklist:%d\n", len)); + err = -EINVAL; + goto exit; + } + + ssid_whitelist->version = SSID_WHITELIST_VERSION_1; + ssid_whitelist->flags = flush ? ROAM_EXP_CLEAR_SSID_WHITELIST : 0; + err = wldev_iovar_setbuf(dev, "roam_exp_ssid_whitelist", + (u8 *)ssid_whitelist, len, buf, buf_len, NULL); + if (err != BCME_OK) { + if (err == BCME_UNSUPPORTED) { + WL_ERR(("roam_exp_bssid_pref, UNSUPPORTED \n")); + } else { + WL_ERR(("Failed to execute roam_exp_bssid_pref %d\n", err)); + } + } +exit: + MFREE(cfg->osh, buf, buf_len); + return err; +} diff --git a/wl_android.h b/wl_android.h index 5e330f3..5120c41 100644 --- a/wl_android.h +++ b/wl_android.h @@ -156,6 +156,10 @@ s32 wl_netlink_send_msg(int pid, int type, int seq, const void *data, size_t siz #define APCS_DEFAULT_5G_CH 149 #define APCS_DEFAULT_6G_CH 5 +extern int wl_android_set_whitelist_ssid(struct net_device *dev, + wl_ssid_whitelist_t *ssid_whitelist, uint32 len, uint32 flush); +extern int wl_android_set_blacklist_bssid(struct net_device *dev, maclist_t *blacklist, + uint32 len, uint32 flush); int wl_android_set_ap_mac_list(struct net_device *dev, int macmode, struct maclist *maclist); #ifdef WL_BCNRECV extern int wl_android_bcnrecv_config(struct net_device *ndev, char *data, diff --git a/wl_cfg80211.c b/wl_cfg80211.c index d655e1b..3802ed0 100644 --- a/wl_cfg80211.c +++ b/wl_cfg80211.c @@ -6132,17 +6132,6 @@ wl_do_preassoc_ops(struct bcm_cfg80211 *cfg, wl_restore_ap_bw(cfg); } #endif /* SUPPORT_AP_BWCTRL */ -#if defined(ROAMEXP_SUPPORT) - /* Clear Blacklist bssid and Whitelist ssid list before join issue - * This is temporary fix since currently firmware roaming is not - * disabled by android framework before SSID join from framework - */ - /* Flush blacklist bssid content */ - dhd_dev_set_blacklist_bssid(dev, NULL, 0, true); - /* Flush whitelist ssid content */ - dhd_dev_set_whitelist_ssid(dev, NULL, 0, true); -#endif /* ROAMEXP_SUPPORT */ - WL_DBG(("SME IE : len=%zu\n", sme->ie_len)); if (sme->ie != NULL && sme->ie_len > 0 && (wl_dbg_level & WL_DBG_DBG)) { prhex(NULL, sme->ie, sme->ie_len); @@ -12845,6 +12834,13 @@ wl_post_linkdown_ops(struct bcm_cfg80211 *cfg, } #endif /* SUPPORT_SET_TID */ +#if defined(ROAMEXP_SUPPORT) + /* Flush blacklist bssid content */ + wl_android_set_blacklist_bssid(ndev, NULL, 0, TRUE); + /* Flush whitelist ssid content */ + wl_android_set_whitelist_ssid(ndev, NULL, 0, TRUE); +#endif /* ROAMEXP_SUPPORT */ + return ret; } @@ -25722,7 +25718,7 @@ int wl_get_usable_channels(struct bcm_cfg80211 *cfg, usable_channel_info_t *u_in } /* Supplicant does scan passive channel but not for DFS channel */ - if (!(chaninfo & WL_CHAN_RADAR) && !ch_160mhz_5g && + if (!restrict_chan && !ch_160mhz_5g && !CHSPEC_IS6G(chspec) && (!is_unii4)) { mask |= (1 << WIFI_INTERFACE_P2P_CLIENT); } diff --git a/wl_cfgvendor.c b/wl_cfgvendor.c index da8ee12..91bcbcc 100755 --- a/wl_cfgvendor.c +++ b/wl_cfgvendor.c @@ -2845,6 +2845,7 @@ wl_cfgvendor_set_bssid_blacklist(struct wiphy *wiphy, err = -EINVAL; goto exit; } + WL_INFORM_MEM(("blacklist_flush:%d\n", flush)); break; case GSCAN_ATTRIBUTE_BLACKLIST_BSSID: if (num == 0 || !blacklist) { @@ -2863,8 +2864,9 @@ wl_cfgvendor_set_bssid_blacklist(struct wiphy *wiphy, err = -EINVAL; goto exit; } - memcpy(&(blacklist->ea[blacklist->count]), nla_data(iter), - ETHER_ADDR_LEN); + WL_INFORM_MEM(("blacklist mac_addr:" MACDBG "\n", + MAC2STRDBG(nla_data(iter)))); + eacopy(nla_data(iter), &(blacklist->ea[blacklist->count])); blacklist->count++; break; default: @@ -2880,8 +2882,8 @@ wl_cfgvendor_set_bssid_blacklist(struct wiphy *wiphy, goto exit; } - err = dhd_dev_set_blacklist_bssid(bcmcfg_to_prmry_ndev(cfg), - blacklist, mem_needed, flush); + err = wl_android_set_blacklist_bssid(wdev_to_ndev(wdev), blacklist, + mem_needed, flush); exit: MFREE(cfg->osh, blacklist, mem_needed); return err; |