From e3e12f52b214121840b44c91de5b3e5af5d3eb84 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 06 Nov 2023 03:04:41 +0000 Subject: [PATCH] rk3568 rt init --- kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_cfgvendor.c | 41 ++++++++++++++++++++++++++++++++--------- 1 files changed, 32 insertions(+), 9 deletions(-) diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_cfgvendor.c b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_cfgvendor.c index ab7e073..480dc1f 100644 --- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_cfgvendor.c +++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_cfgvendor.c @@ -6860,11 +6860,13 @@ cca_congest_ext_channel_req_v2_t *per_chspec_stats = NULL; uint per_chspec_stats_size = 0; cca_congest_ext_channel_req_v3_t *all_chan_results; - cca_congest_ext_channel_req_v3_t all_chan_req; + cca_congest_ext_channel_req_v3_t *all_chan_req = NULL; + uint all_chan_req_size = sizeof(cca_congest_ext_channel_req_v3_t); #else /* cca_get_stats_ext iovar for Wifi channel statics */ struct cca_congest_ext_channel_req_v2 *cca_v2_results; - struct cca_congest_ext_channel_req_v2 cca_v2_req; + struct cca_congest_ext_channel_req_v2 *cca_v2_req = NULL; + uint cca_v2_req_size = sizeof(cca_congest_ext_channel_req_v2_t); #endif /* CHAN_STATS_SUPPORT */ const wl_cnt_wlc_t *wlc_cnt; scb_val_t scbval; @@ -7025,10 +7027,16 @@ #ifdef CHAN_STATS_SUPPORT /* Option to get all channel statistics */ - all_chan_req.num_of_entries = 0; - all_chan_req.ver = WL_CCA_EXT_REQ_VER_V3; + all_chan_req = (void *)MALLOCZ(cfg->osh, all_chan_req_size); + if (all_chan_req == NULL) { + err = BCME_NOMEM; + WL_ERR(("all_chan_req alloc failed\n")); + goto exit; + } + all_chan_req->num_of_entries = 0; + all_chan_req->ver = WL_CCA_EXT_REQ_VER_V3; err = wldev_iovar_getbuf(bcmcfg_to_prmry_ndev(cfg), "cca_get_stats_ext", - &all_chan_req, sizeof(all_chan_req), iovar_buf, WLC_IOCTL_MAXLEN, NULL); + all_chan_req, all_chan_req_size, iovar_buf, WLC_IOCTL_MAXLEN, NULL); if (err != BCME_OK && err != BCME_UNSUPPORTED) { WL_ERR(("cca_get_stats_ext iovar err = %d\n", err)); @@ -7089,12 +7097,18 @@ } } #else - cca_v2_req.ver = WL_CCA_EXT_REQ_VER_V2; - cca_v2_req.chanspec = + cca_v2_req = (void *)MALLOCZ(cfg->osh, cca_v2_req_size); + if (cca_v2_req == NULL) { + err = BCME_NOMEM; + WL_ERR(("cca_v2_req alloc failed\n")); + goto exit; + } + cca_v2_req->ver = WL_CCA_EXT_REQ_VER_V2; + cca_v2_req->chanspec = wl_chspec_host_to_driver(wf_chspec_primary20_chspec(cur_chanspec)); - err = wldev_iovar_getbuf(bcmcfg_to_prmry_ndev(cfg), "cca_get_stats_ext", &cca_v2_req, - sizeof(cca_v2_req), iovar_buf, WLC_IOCTL_MAXLEN, NULL); + err = wldev_iovar_getbuf(bcmcfg_to_prmry_ndev(cfg), "cca_get_stats_ext", cca_v2_req, + cca_v2_req_size, iovar_buf, WLC_IOCTL_MAXLEN, NULL); if (err != BCME_OK && err != BCME_UNSUPPORTED) { WL_ERR(("cca_get_stats_ext iovar err = %d\n", err)); @@ -7300,6 +7314,15 @@ WL_ERR(("Vendor Command reply failed ret:%d \n", err)); exit: +#ifdef CHAN_STATS_SUPPORT + if (all_chan_req) { + MFREE(cfg->osh, all_chan_req, all_chan_req_size); + } +#else + if (cca_v2_req) { + MFREE(cfg->osh, cca_v2_req, cca_v2_req_size); + } +#endif /* CHAN_STATS_SUPPORT */ if (outdata) { MFREE(cfg->osh, outdata, WLC_IOCTL_MAXLEN); } -- Gitblit v1.6.2