From bedbef8ad3e75a304af6361af235302bcc61d06b Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Tue, 14 May 2024 06:39:01 +0000
Subject: [PATCH] 修改内核路径

---
 kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_escan.c |  108 +++++++++++++++++++++++++++--------------------------
 1 files changed, 55 insertions(+), 53 deletions(-)

diff --git a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_escan.c b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_escan.c
old mode 100644
new mode 100755
index 01a9e02..3311f4c
--- a/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_escan.c
+++ b/kernel/drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd/wl_escan.c
@@ -1,5 +1,4 @@
 /* SPDX-License-Identifier: GPL-2.0 */
-
 #if defined(WL_ESCAN)
 #include <bcmendian.h>
 #include <linux/if_arp.h>
@@ -42,11 +41,11 @@
 #define dtohchanspec(i) (i)
 #define WL_EXTRA_BUF_MAX 2048
 
-#define wl_escan_get_buf(a) ((wl_scan_results_v109_t *) (a)->escan_buf)
+#define wl_escan_get_buf(a) ((wl_scan_results_t *) (a)->escan_buf)
 
 #if defined(WL_WIRELESS_EXT)
 extern int wl_iw_handle_scanresults_ies(char **event_p, char *end,
-	struct iw_request_info *info, wl_bss_info_v109_t *bi);
+	struct iw_request_info *info, wl_bss_info_t *bi);
 #define for_each_bss_wext(list, bss, __i)	\
 	for (__i = 0; __i < list->count && __i < IW_MAX_AP; __i++, bss = next_bss(list, bss))
 #endif
@@ -206,7 +205,7 @@
 	return wl_chspec_host_to_driver(ioctl_ver, chanspec);
 }
 
-static inline struct wl_bss_info *next_bss(wl_scan_results_v109_t *list,
+static inline struct wl_bss_info *next_bss(wl_scan_results_t *list,
 	struct wl_bss_info *bss)
 {
 	return bss = bss ?
@@ -217,7 +216,7 @@
 #ifndef BSSCACHE
 static void
 wl_escan_dump_bss(struct net_device *dev, struct wl_escan_info *escan,
-	wl_bss_info_v109_t *bi)
+	wl_bss_info_t *bi)
 {
 	int16 rssi;
 	int channel;
@@ -245,9 +244,9 @@
 static s32
 wl_escan_inform_bss(struct net_device *dev, struct wl_escan_info *escan)
 {
-	wl_scan_results_v109_t *bss_list;
+	wl_scan_results_t *bss_list;
 #ifndef BSSCACHE
-	wl_bss_info_v109_t *bi = NULL;	/* must be initialized */
+	wl_bss_info_t *bi = NULL;	/* must be initialized */
 	s32 i;
 #endif
 	s32 err = 0;
@@ -284,14 +283,14 @@
 	wl_reset_bss_cache(&escan->g_bss_cache_ctrl);
 	if (escan->autochannel)
 		wl_ext_get_best_channel(dev, &escan->g_bss_cache_ctrl,
-			&escan->best_2g_ch, &escan->best_5g_ch, &escan->best_6g_ch);
+			escan->ioctl_ver, &escan->best_2g_ch, &escan->best_5g_ch, &escan->best_6g_ch);
 #else
 	bi = next_bss(bss_list, bi);
 	for_each_bss(bss_list, bi, i) {
 		wl_escan_dump_bss(dev, escan, bi);
 	}
 	if (escan->autochannel)
-		wl_ext_get_best_channel(dev, bss_list,
+		wl_ext_get_best_channel(dev, bss_list, escan->ioctl_ver,
 			&escan->best_2g_ch, &escan->best_5g_ch, &escan->best_6g_ch);
 #endif
 
@@ -299,19 +298,19 @@
 }
 #endif /* ESCAN_RESULT_PATCH */
 
-static wl_scan_params_v1_t *
+static wl_scan_params_t *
 wl_escan_alloc_params(struct net_device *dev, struct wl_escan_info *escan,
 	int channel, int nprobes, int *out_params_size)
 {
-	wl_scan_params_v1_t *params;
+	wl_scan_params_t *params;
 	int params_size;
 	int num_chans;
 
 	*out_params_size = 0;
 
 	/* Our scan params only need space for 1 channel and 0 ssids */
-	params_size = WL_SCAN_PARAMS_V1_FIXED_SIZE + 1 * sizeof(uint16);
-	params = (wl_scan_params_v1_t*) kzalloc(params_size, GFP_KERNEL);
+	params_size = WL_SCAN_PARAMS_FIXED_SIZE + 1 * sizeof(uint16);
+	params = (wl_scan_params_t*) kzalloc(params_size, GFP_KERNEL);
 	if (params == NULL) {
 		ESCAN_ERROR(dev->name, "mem alloc failed (%d bytes)\n", params_size);
 		return params;
@@ -344,7 +343,7 @@
 static void
 wl_escan_abort(struct net_device *dev, struct wl_escan_info *escan)
 {
-	wl_scan_params_v1_t *params = NULL;
+	wl_scan_params_t *params = NULL;
 	s32 params_size = 0;
 	s32 err = BCME_OK;
 	if (!in_atomic()) {
@@ -417,7 +416,7 @@
 #ifdef ESCAN_BUF_OVERFLOW_MGMT
 static void
 wl_escan_find_removal_candidate(struct wl_escan_info *escan,
-	wl_bss_info_v109_t *bss, removal_element_t *candidate)
+	wl_bss_info_t *bss, removal_element_t *candidate)
 {
 	int idx;
 	for (idx = 0; idx < BUF_OVERFLOW_MGMT_COUNT; idx++) {
@@ -436,17 +435,17 @@
 
 static void
 wl_escan_remove_lowRSSI_info(struct net_device *dev, struct wl_escan_info *escan,
-	wl_scan_results_v109_t *list, removal_element_t *candidate, wl_bss_info_v109_t *bi)
+	wl_scan_results_t *list, removal_element_t *candidate, wl_bss_info_t *bi)
 {
 	int idx1, idx2;
 	int total_delete_len = 0;
 	for (idx1 = 0; idx1 < BUF_OVERFLOW_MGMT_COUNT; idx1++) {
-		int cur_len = WL_SCAN_RESULTS_V109_FIXED_SIZE;
-		wl_bss_info_v109_t *bss = NULL;
+		int cur_len = WL_SCAN_RESULTS_FIXED_SIZE;
+		wl_bss_info_t *bss = NULL;
 		if (candidate[idx1].RSSI >= bi->RSSI)
 			continue;
 		for (idx2 = 0; idx2 < list->count; idx2++) {
-			bss = bss ? (wl_bss_info_v109_t *)((uintptr)bss + dtoh32(bss->length)) :
+			bss = bss ? (wl_bss_info_t *)((uintptr)bss + dtoh32(bss->length)) :
 				list->bss_info;
 			if (!bcmp(&candidate[idx1].BSSID, &bss->BSSID, ETHER_ADDR_LEN) &&
 				candidate[idx1].RSSI == bss->RSSI &&
@@ -479,16 +478,16 @@
 {
 	struct wl_escan_info *escan = (struct wl_escan_info *)argu;
 	s32 status = ntoh32(e->status);
-	wl_bss_info_v109_t *bi;
-	wl_escan_result_v109_t *escan_result;
-	wl_bss_info_v109_t *bss = NULL;
-	wl_scan_results_v109_t *list;
+	wl_bss_info_t *bi;
+	wl_escan_result_t *escan_result;
+	wl_bss_info_t *bss = NULL;
+	wl_scan_results_t *list;
 	u32 bi_length;
 	u32 i;
 	u16 channel;
 
 	mutex_lock(&escan->usr_sync);
-	escan_result = (wl_escan_result_v109_t *)data;
+	escan_result = (wl_escan_result_t *)data;
 
 	if (escan->escan_state != ESCAN_STATE_SCANING) {
 		ESCAN_DBG(dev->name, "Not my scan\n");
@@ -515,7 +514,7 @@
 			goto exit;
 		}
 		bi_length = dtoh32(bi->length);
-		if (bi_length != (dtoh32(escan_result->buflen) - WL_ESCAN_RESULTS_V109_FIXED_SIZE)) {
+		if (bi_length != (dtoh32(escan_result->buflen) - WL_ESCAN_RESULTS_FIXED_SIZE)) {
 			ESCAN_ERROR(dev->name, "Invalid bss_info length %d: ignoring\n",
 				bi_length);
 			goto exit;
@@ -530,7 +529,7 @@
 		/* ----- terence 20130524: skip invalid bss */
 
 		{
-			int cur_len = WL_SCAN_RESULTS_V109_FIXED_SIZE;
+			int cur_len = WL_SCAN_RESULTS_FIXED_SIZE;
 #ifdef ESCAN_BUF_OVERFLOW_MGMT
 			removal_element_t candidate[BUF_OVERFLOW_MGMT_COUNT];
 			int remove_lower_rssi = FALSE;
@@ -547,7 +546,7 @@
 			ESCAN_DBG(dev->name, "%s(%pM) RSSI %d flags 0x%x length %d\n",
 				bi->SSID, &bi->BSSID, bi->RSSI, bi->flags, bi->length);
 			for (i = 0; i < list->count; i++) {
-				bss = bss ? (wl_bss_info_v109_t *)((uintptr)bss + dtoh32(bss->length))
+				bss = bss ? (wl_bss_info_t *)((uintptr)bss + dtoh32(bss->length))
 					: list->bss_info;
 #ifdef ESCAN_BUF_OVERFLOW_MGMT
 				ESCAN_DBG(dev->name,
@@ -691,15 +690,16 @@
 	wl_uint32_list_t *list, void *scan_params, wl_scan_info_t *scan_info)
 {
 	int err = 0;
-	wl_scan_results_v109_t *results;
+	wl_scan_results_t *results;
 	char *ptr;
 	int i = 0, j = 0;
 	wlc_ssid_t ssid_tmp;
 	u32 n_channels = 0;
 	chanspec_t chanspec;
 	u32 n_ssids = 0;
-	wl_scan_params_v1_t *params = NULL;
+	wl_scan_params_t *params = NULL;
 	wl_scan_params_v2_t *params_v2 = NULL;
+	u32 scan_param_size = 0;
 	u32 channel_offset = 0;
 	u32 cur_offset;
 	uint16 *chan_list = NULL;
@@ -707,7 +707,7 @@
 	results = wl_escan_get_buf(escan);
 	results->version = 0;
 	results->count = 0;
-	results->buflen = WL_SCAN_RESULTS_V109_FIXED_SIZE;
+	results->buflen = WL_SCAN_RESULTS_FIXED_SIZE;
 	escan->escan_state = ESCAN_STATE_SCANING;
 
 	/* Arm scan timeout timer */
@@ -715,10 +715,12 @@
 
 	if (escan->scan_params_v2) {
 		params_v2 = (wl_scan_params_v2_t *)scan_params;
+		scan_param_size = sizeof(wl_scan_params_v2_t);
 		channel_offset = offsetof(wl_scan_params_v2_t, channel_list);
 	} else {
-		params = (wl_scan_params_v1_t *)scan_params;
-		channel_offset = offsetof(wl_scan_params_v1_t, channel_list);
+		params = (wl_scan_params_t *)scan_params;
+		scan_param_size = sizeof(wl_scan_params_t);
+		channel_offset = offsetof(wl_scan_params_t, channel_list);
 	}
 
 	if (params_v2) {
@@ -841,7 +843,7 @@
 {
 	wl_event_msg_t msg;
 	struct wl_escan_info *escan = (struct wl_escan_info *)data;
-	wl_scan_results_v109_t *bss_list;
+	wl_scan_results_t *bss_list;
 	struct wl_bss_info *bi = NULL;
 	s32 i;
 	u32 channel;
@@ -881,10 +883,11 @@
 	struct dhd_pub *dhdp = dhd_get_pub(dev);
 	struct wl_escan_info *escan = dhdp->escan;
 	s32 err = BCME_OK;
-	wl_escan_params_v1_t *eparams = NULL;
+	wl_escan_params_t *eparams = NULL;
 	wl_escan_params_v2_t *eparams_v2 = NULL;
-	u8 *scan_params = NULL, *params = NULL;
+	u8 *scan_params = NULL;
 	s32 params_size;
+	wl_escan_params_t *params = NULL;
 	u32 n_channels = 0;
 	wl_uint32_list_t *list;
 	u8 valid_chan_list[sizeof(u32)*(MAX_CTRL_CHANSPECS + 1)];
@@ -915,8 +918,8 @@
 		params_size = (WL_SCAN_PARAMS_V2_FIXED_SIZE +
 			OFFSETOF(wl_escan_params_v2_t, params));
 	} else {
-		params_size = (WL_SCAN_PARAMS_V1_FIXED_SIZE +
-			OFFSETOF(wl_escan_params_v1_t, params));
+		params_size = (WL_SCAN_PARAMS_FIXED_SIZE +
+			OFFSETOF(wl_escan_params_t, params));
 	}
 
 	/* if scan request is not empty parse scan request paramters */
@@ -934,7 +937,7 @@
 	}
 
 	n_channels = list->count;
-	/* Allocate space for populating ssids in wl_escan_params_v1_t struct */
+	/* Allocate space for populating ssids in wl_escan_params_t struct */
 	if (list->count % 2)
 		/* If n_channels is odd, add a padd of u16 */
 		params_size += sizeof(u16) * (n_channels + 1);
@@ -944,7 +947,7 @@
 		params_size += sizeof(struct wlc_ssid) * 2;
 	}
 
-	params = kzalloc(params_size, GFP_KERNEL);
+	params = (wl_escan_params_t *) kzalloc(params_size, GFP_KERNEL);
 	if (params == NULL) {
 		ESCAN_ERROR(dev->name, "kzalloc failed\n");
 		err = -ENOMEM;
@@ -956,14 +959,13 @@
 		scan_params = (u8 *)&eparams_v2->params;
 		eparams_v2->version = htod32(ESCAN_REQ_VERSION_V2);
 		eparams_v2->action =  htod16(WL_SCAN_ACTION_START);
-		wl_escan_set_sync_id(eparams_v2->sync_id);
 	} else {
-		eparams = (wl_escan_params_v1_t *)params;
+		eparams = (wl_escan_params_t *)params;
 		scan_params = (u8 *)&eparams->params;
-		eparams->version = htod32(ESCAN_REQ_VERSION_V1);
+		eparams->version = htod32(ESCAN_REQ_VERSION);
 		eparams->action =  htod16(WL_SCAN_ACTION_START);
-		wl_escan_set_sync_id(eparams->sync_id);
 	}
+	wl_escan_set_sync_id(params->sync_id);
 
 	wl_escan_prep(dev, escan, list, scan_params, scan_info);
 
@@ -1012,7 +1014,7 @@
 
 static int
 wl_escan_merge_scan_results(struct net_device *dev, struct wl_escan_info *escan,
-	struct iw_request_info *info, char *extra, wl_bss_info_v109_t *bi, int *len, int max_size)
+	struct iw_request_info *info, char *extra, wl_bss_info_t *bi, int *len, int max_size)
 {
 	s32 err = BCME_OK;
 	struct iw_event	iwe;
@@ -1135,8 +1137,8 @@
 	s32 err = BCME_OK;
 	int i = 0, cnt = 0;
 	int len_prep = 0;
-	wl_bss_info_v109_t *bi = NULL;
-	wl_scan_results_v109_t *bss_list;
+	wl_bss_info_t *bi = NULL;
+	wl_scan_results_t *bss_list;
 	__u16 buflen_from_user = dwrq->length;
 
 	bss_list = escan->bss_list;
@@ -1172,8 +1174,8 @@
 	s32 err = BCME_OK;
 	int i = 0, cnt = 0;
 	int len_prep = 0;
-	wl_bss_info_v109_t *bi = NULL;
-	wl_scan_results_v109_t *bss_list;
+	wl_bss_info_t *bi = NULL;
+	wl_scan_results_t *bss_list;
 	__u16 buflen_from_user = dwrq->length;
 	wl_bss_cache_t *node;
 
@@ -1217,7 +1219,7 @@
 	int cache_cnt = 0;
 #endif
 	int len_prep = 0, len_ret = 0;
-	wl_bss_info_v109_t *bi = NULL;
+	wl_bss_info_t *bi = NULL;
 	__u16 buflen_from_user = dwrq->length;
 	char *buf = NULL;
 	struct ether_addr cur_bssid;
@@ -1374,8 +1376,8 @@
 	struct ether_addr *peer_bssid, struct wl_mesh_params *mesh_info)
 {
 	int i = 0;
-	wl_bss_info_v109_t *bi = NULL;
-	wl_scan_results_v109_t *bss_list;
+	wl_bss_info_t *bi = NULL;
+	wl_scan_results_t *bss_list;
 	int16 bi_rssi, bi_chan;
 	wlc_ssid_t bi_meshid;
 	bool is_mesh_peer = FALSE, found = FALSE;
@@ -1446,8 +1448,8 @@
 	struct wl_mesh_params *mesh_info)
 {
 	int i = 0;
-	wl_bss_info_v109_t *bi = NULL;
-	wl_scan_results_v109_t *bss_list;
+	wl_bss_info_t *bi = NULL;
+	wl_scan_results_t *bss_list;
 	int16 bi_rssi, bi_chan, max_rssi = -100;
 	uint min_hop_cnt = 255;
 	wlc_ssid_t bi_meshid;

--
Gitblit v1.6.2