rockchip64: consolidation for uwe5622 driver, v6.1 kernel compatibility (#4766)

This commit is contained in:
Paolo
2023-01-30 17:28:37 +01:00
committed by GitHub
parent 3e6188f5ed
commit 79019296d8
15 changed files with 11646 additions and 430964 deletions

View File

@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 6.1.4 Kernel Configuration
# Linux/arm64 6.1.8 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="aarch64-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)) 8.3.0"
CONFIG_CC_IS_GCC=y
@@ -164,6 +164,7 @@ CONFIG_GENERIC_SCHED_CLOCK=y
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_CC_HAS_INT128=y
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
CONFIG_GCC12_NO_ARRAY_BOUNDS=y
CONFIG_ARCH_SUPPORTS_INT128=y
CONFIG_NUMA_BALANCING=y
@@ -3467,6 +3468,23 @@ CONFIG_ZD1211RW=m
CONFIG_WLAN_VENDOR_QUANTENNA=y
CONFIG_QTNFMAC=m
CONFIG_QTNFMAC_PCIE=m
CONFIG_SPARD_WLAN_SUPPORT=y
#
# UNISOC WCN Device Drivers(for new chip...)
#
# CONFIG_SC23XX is not set
CONFIG_WCN_BSP_DRIVER_BUILDIN=y
CONFIG_RK_WIFI_DEVICE_UWE5621=y
CONFIG_RK_WIFI_DEVICE_UWE5622=y
# CONFIG_AW_WIFI_DEVICE_UWE5622 is not set
# end of UNISOC WCN Device Drivers(for new chip...)
CONFIG_WLAN_UWE5621=m
CONFIG_WLAN_UWE5622=m
CONFIG_SPRDWL_NG=m
CONFIG_UNISOC_WIFI_PS=y
CONFIG_TTY_OVERY_SDIO=m
CONFIG_MAC80211_HWSIM=m
CONFIG_USB_NET_RNDIS_WLAN=m
CONFIG_VIRT_WIFI=m

View File

@@ -522,18 +522,25 @@ driver_rtl8822BS()
driver_uwe5622_allwinner()
{
# Unisoc uwe5622 wireless Support
if linux-version compare "${version}" ge 4.4 && linux-version compare "${version}" le 6.1 && [[ "$LINUXFAMILY" == sunxi* ]]; then
if linux-version compare "${version}" ge 4.4 && linux-version compare "${version}" le 6.2 && [[ "$LINUXFAMILY" == sunxi* || "$LINUXFAMILY" == rockchip64 ]]; then
display_alert "Adding" "Drivers for Unisoc uwe5622 found on some Allwinner and Rockchip boards" "info"
process_patch_file "${SRC}/patch/misc/wireless-driver-for-uwe5622-allwinner.patch" "applying"
process_patch_file "${SRC}/patch/misc/wireless-driver-for-uwe5622-allwinner-bugfix.patch" "applying"
process_patch_file "${SRC}/patch/misc/wireless-driver-for-uwe5622-warnings.patch" "applying"
# Add to section Makefile
echo "obj-\$(CONFIG_SPARD_WLAN_SUPPORT) += uwe5622/" >> "$kerneldir/drivers/net/wireless/Makefile"
if linux-version compare "${version}" lt 6.1; then
process_patch_file "${SRC}/patch/misc/wireless-driver-for-uwe5622-park-link-pre-v6.1.patch" "applying"
process_patch_file "${SRC}/patch/misc/wireless-driver-for-uwe5622-allwinner-bt-fix.patch" "applying"
fi
if linux-version compare "${version}" ge 6.1; then
process_patch_file "${SRC}/patch/misc/wireless-driver-for-uwe5622-park-link-v6.1-post.patch" "applying"
process_patch_file "${SRC}/patch/misc/wireless-driver-for-uwe5622-v6.1.patch" "applying"
fi
fi
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,201 +0,0 @@
From b758478655da935b50a973b0aa2ddbc20893b789 Mon Sep 17 00:00:00 2001
From: Paolo Sabatino <paolo.sabatino@gmail.com>
Date: Sun, 12 Jun 2022 14:33:59 +0000
Subject: [PATCH] uwe5622: various warning and firmware path fixes
---
drivers/net/wireless/uwe5622/Makefile | 2 +-
.../uwe5622/unisocwcn/platform/rdc_debug.c | 4 +-
.../uwe5622/unisocwcn/platform/wcn_boot.c | 2 -
.../unisocwcn/platform/wcn_parn_parser.c | 2 +-
.../uwe5622/unisocwcn/sdio/sdiohal_ctl.c | 42 ++++++-------------
.../wireless/uwe5622/unisocwifi/cfg80211.c | 4 --
6 files changed, 17 insertions(+), 39 deletions(-)
diff --git a/drivers/net/wireless/uwe5622/Makefile b/drivers/net/wireless/uwe5622/Makefile
index 71c863c1017..d2210439f3c 100644
--- a/drivers/net/wireless/uwe5622/Makefile
+++ b/drivers/net/wireless/uwe5622/Makefile
@@ -6,5 +6,5 @@ UNISOCWCN_DIR := $(shell cd $(src)/unisocwcn/ && /bin/pwd)
UNISOC_BSP_INCLUDE := $(UNISOCWCN_DIR)/include
export UNISOC_BSP_INCLUDE
-UNISOC_FW_PATH_CONFIG := "/lib/firmware/"
+UNISOC_FW_PATH_CONFIG := "/lib/firmware/uwe5622/"
export UNISOC_FW_PATH_CONFIG
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c
index 86fa3b103ad..1343cb98362 100755
--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c
+++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/rdc_debug.c
@@ -41,13 +41,13 @@ static unsigned int wcn_cp2_file_max_num = UNISOC_DBG_FILENUM_DEFAULT;
*/
static unsigned int wcn_cp2_log_cover_old = 1;
/* path of config file unisoc_cp2log_config.txt */
-#define WCN_DEBUG_CFG_MAX_PATH_NUM 0
+#define WCN_DEBUG_CFG_MAX_PATH_NUM 2
static char *wcn_cp2_config_path[WCN_DEBUG_CFG_MAX_PATH_NUM] = {
"/data/unisoc_cp2log_config.txt",
"/vendor/etc/wifi/unisoc_cp2log_config.txt"
};
/* path of cp2 log and mem files. */
-#define WCN_UNISOC_DBG_MAX_PATH_NUM 0
+#define WCN_UNISOC_DBG_MAX_PATH_NUM 3
static char *wcn_unisoc_dbg_path[WCN_UNISOC_DBG_MAX_PATH_NUM] = {
UNISOC_DBG_PATH_DEFAULT,/* most of projects */
"/data", /* amlogic s905w... */
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c
index d82f56357f3..58b9d290f23 100755
--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c
+++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_boot.c
@@ -325,8 +325,6 @@ static struct regmap *reg_map;
#define AFC_CALI_READ_FINISH 0x12121212
#define WCN_AFC_CALI_PATH "/productinfo/wcn/tsx_bt_data.txt"
-#define BIT(nr) (1UL << (nr))
-
#ifdef CONFIG_WCN_DOWNLOAD_FIRMWARE_FROM_HEX
#define POWER_WQ_DELAYED_MS 0
#else
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c
index 9abcd326972..c1557dcce3f 100755
--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c
+++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c
@@ -183,7 +183,7 @@ int parse_firmware_path(char *firmware_path)
continue;
}
memset(fstab_name, 0, sizeof(fstab_name));
- strncpy(fstab_name, fstab_dir[loop], sizeof(fstab_dir[loop]));
+ strncpy(fstab_name, fstab_dir[loop], sizeof(fstab_name));
if (strlen(fstab_name) > 1)
fstab_name[strlen(fstab_name)] = '/';
iterate_dir(file1, &ctx);
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c
index b426bf89cd9..8000bfea378 100755
--- a/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c
+++ b/drivers/net/wireless/uwe5622/unisocwcn/sdio/sdiohal_ctl.c
@@ -9,6 +9,7 @@
#include <linux/uaccess.h>
#include <linux/version.h>
#include <linux/vmalloc.h>
+#include <linux/ktime.h>
#include <wcn_bus.h>
#include "sdiohal.h"
@@ -96,8 +97,10 @@ char *tp_tx_buf[TP_TX_BUF_CNT];
struct mchn_ops_t at_tx_ops;
struct mchn_ops_t at_rx_ops;
-struct timeval tp_tx_start_time;
-struct timeval tp_tx_stop_time;
+ktime_t tp_tx_start_time;
+ktime_t tp_tx_stop_time;
+ktime_t tp_rx_start_time;
+ktime_t tp_rx_stop_time;
int tp_tx_cnt;
int tp_tx_flag;
int tp_tx_buf_cnt = TP_TX_BUF_CNT;
@@ -222,7 +225,6 @@ static int sdiohal_throughput_tx(void)
static void sdiohal_throughput_tx_compute_time(void)
{
static signed long long times_count;
- struct timespec64 now;
if (tp_tx_flag != 1)
return;
@@ -230,17 +232,12 @@ static void sdiohal_throughput_tx_compute_time(void)
/* throughput test */
tp_tx_cnt++;
if (tp_tx_cnt % 500 == 0) {
- getnstimeofday(&now);
- tp_tx_stop_time.tv_sec = now.tv_sec;
- tp_tx_stop_time.tv_usec = now.tv_nsec/1000;
- times_count = timeval_to_ns(&tp_tx_stop_time) -
- timeval_to_ns(&tp_tx_start_time);
+ tp_tx_stop_time = ktime_get();
+ times_count = tp_tx_stop_time - tp_tx_start_time;
sdiohal_info("tx->times(500c) is %lldns, tx %d, rx %d\n",
times_count, tp_tx_cnt, rx_pop_cnt);
tp_tx_cnt = 0;
- getnstimeofday(&now);
- tp_tx_start_time.tv_sec = now.tv_sec;
- tp_tx_start_time.tv_usec = now.tv_nsec/1000;
+ tp_tx_start_time = ktime_get();
}
sdiohal_throughput_tx();
}
@@ -544,14 +541,10 @@ int at_list_tx_pop(int channel, struct mbuf_t *head,
}
int tp_rx_cnt;
-struct timeval tp_rx_start_time;
-struct timeval tp_rx_stop_time;
-struct timespec tp_tm_begin;
int at_list_rx_pop(int channel, struct mbuf_t *head,
struct mbuf_t *tail, int num)
{
- static signed long long times_count;
- struct timespec64 now;
+ ktime_t times_count;
sdiohal_debug("%s channel:%d head:%p tail:%p num:%d\n",
__func__, channel, head, tail, num);
@@ -568,19 +561,13 @@ int at_list_rx_pop(int channel, struct mbuf_t *head,
/* throughput test */
tp_rx_cnt += num;
if (tp_rx_cnt / (500*64) == 1) {
- getnstimeofday(&now);
- tp_rx_stop_time.tv_sec = now.tv_sec;
- tp_rx_stop_time.tv_usec = now.tv_nsec/1000;
- times_count = timeval_to_ns(&tp_rx_stop_time)
- - timeval_to_ns(&tp_rx_start_time);
+ tp_rx_stop_time = ktime_get();
+ times_count = tp_rx_stop_time - tp_rx_start_time;
sdiohal_info("rx->times(%dc) is %lldns, tx %d, rx %d\n",
tp_rx_cnt, times_count, tp_tx_cnt, rx_pop_cnt);
tp_rx_cnt = 0;
- getnstimeofday(&now);
- tp_rx_start_time.tv_sec = now.tv_sec;
- tp_rx_start_time.tv_usec = now.tv_nsec/1000;
+ tp_rx_start_time = ktime_get();
}
- getnstimeofday(&tp_tm_begin);
return 0;
}
@@ -834,7 +821,6 @@ static ssize_t at_cmd_write(struct file *filp,
long int long_data;
int ret;
unsigned char *send_buf = NULL;
- struct timespec64 now;
if (count > SDIOHAL_WRITE_SIZE) {
sdiohal_err("%s write size > %d\n",
@@ -1127,9 +1113,7 @@ static ssize_t at_cmd_write(struct file *filp,
__func__, tp_tx_buf_cnt, tp_tx_buf_len);
tp_tx_flag = 1;
tp_tx_cnt = 0;
- getnstimeofday(&now);
- tp_tx_start_time.tv_sec = now.tv_sec;
- tp_tx_start_time.tv_usec = now.tv_nsec/1000;
+ tp_tx_start_time = ktime_get();
if ((tp_tx_buf_cnt <= TP_TX_BUF_CNT) &&
(tp_tx_buf_len <= TP_TX_BUF_LEN)) {
sprdwcn_bus_chn_deinit(&at_tx_ops);
diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
index 5d86a5cc435..f26113c08af 100755
--- a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
+++ b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
@@ -1747,10 +1747,6 @@ static int sprdwl_cfg80211_disconnect(struct wiphy *wiphy,
struct sprdwl_vif *vif = netdev_priv(ndev);
enum sm_state old_state = vif->sm_state;
int ret;
-#ifdef SYNC_DISCONNECT
- u32 msec;
- ktime_t kt;
-#endif
#ifdef STA_SOFTAP_SCC_MODE
struct sprdwl_intf *intf = (struct sprdwl_intf *)vif->priv->hw_priv;
intf->sta_home_channel = 0;
--
2.30.2

View File

@@ -1,37 +0,0 @@
From a7451e5b9003df20defc0bb44b340bb5c3bdb0e2 Mon Sep 17 00:00:00 2001
From: Paolo Sabatino <paolo.sabatino@gmail.com>
Date: Thu, 9 Jun 2022 16:29:12 +0000
Subject: [PATCH] makefile uwe5622
---
drivers/net/wireless/Kconfig | 1 +
drivers/net/wireless/Makefile | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 69b324914c9..01059193fda 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -46,6 +46,7 @@ source "drivers/net/wireless/rtl8189fs/Kconfig"
source "drivers/net/wireless/rtl8189es/Kconfig"
source "drivers/net/wireless/zydas/Kconfig"
source "drivers/net/wireless/quantenna/Kconfig"
+source "drivers/net/wireless/uwe5622/Kconfig"
config PCMCIA_RAYCS
tristate "Aviator/Raytheon 2.4GHz wireless support"
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
index ef463da4b6a..f9a48ef07ff 100644
--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_WLAN_VENDOR_TI) += ti/
obj-$(CONFIG_HFLPS170) += hflps170/
obj-$(CONFIG_WLAN_VENDOR_ZYDAS) += zydas/
obj-$(CONFIG_WLAN_VENDOR_QUANTENNA) += quantenna/
+obj-$(CONFIG_SPARD_WLAN_SUPPORT) += uwe5622/
# 16-bit wireless PCMCIA client drivers
obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o
--
2.30.2

View File

@@ -1,37 +0,0 @@
From a7451e5b9003df20defc0bb44b340bb5c3bdb0e2 Mon Sep 17 00:00:00 2001
From: Paolo Sabatino <paolo.sabatino@gmail.com>
Date: Thu, 9 Jun 2022 16:29:12 +0000
Subject: [PATCH] makefile uwe5622
---
drivers/net/wireless/Kconfig | 1 +
drivers/net/wireless/Makefile | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 69b324914c9..01059193fda 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -46,6 +46,7 @@ source "drivers/net/wireless/rtl8189fs/Kconfig"
source "drivers/net/wireless/rtl8189es/Kconfig"
source "drivers/net/wireless/zydas/Kconfig"
source "drivers/net/wireless/quantenna/Kconfig"
+source "drivers/net/wireless/uwe5622/Kconfig"
config PCMCIA_RAYCS
tristate "Aviator/Raytheon 2.4GHz wireless support"
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
index ef463da4b6a..f9a48ef07ff 100644
--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_WLAN_VENDOR_TI) += ti/
obj-$(CONFIG_WLAN_VENDOR_TI) += ti/
obj-$(CONFIG_HFLPS170) += hflps170/
obj-$(CONFIG_WLAN_VENDOR_ZYDAS) += zydas/
+obj-$(CONFIG_SPARD_WLAN_SUPPORT) += uwe5622/
# 16-bit wireless PCMCIA client drivers
obj-$(CONFIG_PCMCIA_RAYCS) += ray_cs.o
--
2.30.2

File diff suppressed because it is too large Load Diff

View File

@@ -1,28 +0,0 @@
From 70a0c21f9bc1eed754cce584fe382883dc412db0 Mon Sep 17 00:00:00 2001
From: afaulkner420 <afaulkner420@gmail.com>
Date: Fri, 25 Mar 2022 20:31:26 +0000
Subject: [PATCH 08/11] uwe5622: bluetooth: Fix firmware init fail
---
net/bluetooth/hci_core.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index c67390367..b2ee9b6a8 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -932,7 +932,11 @@ static int __hci_init(struct hci_dev *hdev)
err = __hci_req_sync(hdev, hci_init3_req, 0, HCI_INIT_TIMEOUT, NULL);
if (err < 0)
+#if defined(CONFIG_RK_WIFI_DEVICE_UWE5621) || defined(CONFIG_AW_WIFI_DEVICE_UWE5622)
+ ;
+#else
return err;
+#endif
err = __hci_req_sync(hdev, hci_init4_req, 0, HCI_INIT_TIMEOUT, NULL);
if (err < 0)
--
2.25.1

View File

@@ -166534,9 +166534,9 @@ index 000000000..920645b2b
+extern void sdio_set_max_reqsz(unsigned int size);
+#endif
+
+#ifdef CONFIG_RK_BOARD
+extern int rockchip_wifi_set_carddetect(int val);
+#endif
+//#ifdef CONFIG_RK_BOARD
+//extern int rockchip_wifi_set_carddetect(int val);
+//#endif
+
+#ifdef CONFIG_AW_BOARD
+extern int sunxi_wlan_get_bus_index(void);
@@ -168577,9 +168577,9 @@ index 000000000..920645b2b
+ sdiohal_set_card_present(0);
+#endif
+
+#ifdef CONFIG_RK_BOARD
+ rockchip_wifi_set_carddetect(0);
+#endif
+//#ifdef CONFIG_RK_BOARD
+// rockchip_wifi_set_carddetect(0);
+//#endif
+
+#ifdef CONFIG_AW_BOARD
+// sunxi_mmc_rescan_card(wlan_bus_index);
@@ -168679,9 +168679,9 @@ index 000000000..920645b2b
+ sdiohal_set_card_present(1);
+#endif
+
+#ifdef CONFIG_RK_BOARD
+ rockchip_wifi_set_carddetect(1);
+#endif
+//#ifdef CONFIG_RK_BOARD
+// rockchip_wifi_set_carddetect(1);
+//#endif
+
+#if 0
+ wlan_bus_index = sunxi_wlan_get_bus_index();

View File

@@ -1,7 +1,7 @@
From 682121f340fe0b8ec885f9b628e754d2298a32a2 Mon Sep 17 00:00:00 2001
From 67b790ecbeab3f5493dc8306e87e503e1bb7bcdc Mon Sep 17 00:00:00 2001
From: Paolo Sabatino <paolo.sabatino@gmail.com>
Date: Thu, 16 Jun 2022 19:52:20 +0000
Subject: [PATCH] fix spreadtrum (sprd) broken bluetooth park link status
Date: Sun, 29 Jan 2023 13:43:27 +0000
Subject: [PATCH] fix spreadtrum (sprd) bluetooth broken park link status
---
drivers/bluetooth/hci_ldisc.c | 6 ++++++
@@ -10,10 +10,10 @@ Subject: [PATCH] fix spreadtrum (sprd) broken bluetooth park link status
3 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c
index f537673ede1..a3222cb727e 100644
index 865112e96ff..61ccf31ee71 100644
--- a/drivers/bluetooth/hci_ldisc.c
+++ b/drivers/bluetooth/hci_ldisc.c
@@ -655,6 +655,12 @@ static int hci_uart_register_dev(struct hci_uart *hu)
@@ -658,6 +658,12 @@ static int hci_uart_register_dev(struct hci_uart *hu)
hdev->setup = hci_uart_setup;
SET_HCIDEV_DEV(hdev, hu->tty->dev);
@@ -27,27 +27,27 @@ index f537673ede1..a3222cb727e 100644
set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 656b609cb68..d2dc448501c 100644
index 9f6f52d368a..b69f6be67d3 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -281,6 +281,12 @@ enum {
@@ -301,6 +301,12 @@ enum {
* during the hdev->setup vendor callback.
*/
HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN,
+
HCI_QUIRK_BROKEN_MWS_TRANSPORT_CONFIG,
+
+ /*
+ * Device declares that support Park link status, but it really
+ * does not support it and fails to initialize
+ */
+ HCI_QUIRK_BROKEN_PARK_LINK_STATUS,
+ * Device declares that support Park link status, but it really
+ * does not support it and fails to initialize
+ */
+ HCI_QUIRK_BROKEN_PARK_LINK_STATUS
};
/* HCI device flags */
diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
index 13600bf120b..a6437cd0935 100644
index 8d6c8cbfe1d..9a743e597bb 100644
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
@@ -3171,7 +3171,7 @@ static int hci_setup_link_policy_sync(struct hci_dev *hdev)
@@ -3760,7 +3760,7 @@ static int hci_setup_link_policy_sync(struct hci_dev *hdev)
link_policy |= HCI_LP_HOLD;
if (lmp_sniff_capable(hdev))
link_policy |= HCI_LP_SNIFF;
@@ -57,5 +57,5 @@ index 13600bf120b..a6437cd0935 100644
cp.policy = cpu_to_le16(link_policy);
--
2.30.2
2.34.1

View File

@@ -0,0 +1,65 @@
From 7c0e3b529afd31f99baf78be10b5d71d9086789a Mon Sep 17 00:00:00 2001
From: Paolo Sabatino <paolo.sabatino@gmail.com>
Date: Sun, 29 Jan 2023 15:53:20 +0000
Subject: [PATCH] port uwe5622 driver to kernel 6.1
---
drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
index 294f19e1f6c..9dcdee02cb9 100755
--- a/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
+++ b/drivers/net/wireless/uwe5622/unisocwifi/cfg80211.c
@@ -703,7 +703,7 @@ static int sprdwl_add_cipher_key(struct sprdwl_vif *vif, bool pairwise,
}
static int sprdwl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
- u8 key_index, bool pairwise,
+ int link_id, u8 key_index, bool pairwise,
const u8 *mac_addr,
struct key_params *params)
{
@@ -725,7 +725,7 @@ static int sprdwl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
}
static int sprdwl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
- u8 key_index, bool pairwise,
+ int link_id, u8 key_index, bool pairwise,
const u8 *mac_addr)
{
struct sprdwl_vif *vif = netdev_priv(ndev);
@@ -755,7 +755,7 @@ static int sprdwl_cfg80211_del_key(struct wiphy *wiphy, struct net_device *ndev,
static int sprdwl_cfg80211_set_default_key(struct wiphy *wiphy,
struct net_device *ndev,
- u8 key_index, bool unicast,
+ int link_id, u8 key_index, bool unicast,
bool multicast)
{
struct sprdwl_vif *vif = netdev_priv(ndev);
@@ -2383,7 +2383,7 @@ void sprdwl_report_connection(struct sprdwl_vif *vif,
conn_info->status == SPRDWL_ROAM_SUCCESS){
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
struct cfg80211_roam_info roam_info = {
- .bss = bss,
+ .links[0].bss = bss,
.req_ie = conn_info->req_ie,
.req_ie_len = conn_info->req_ie_len,
.resp_ie = conn_info->resp_ie,
--
2.34.1
diff --git a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c
index 0aa765ad839..20aea5e7366 100644
--- a/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c
+++ b/drivers/net/wireless/uwe5622/unisocwcn/platform/wcn_parn_parser.c
@@ -143,7 +143,7 @@ static int prefixcmp(const char *str, const char *prefix)
}
#if KERNEL_VERSION(3, 19, 0) <= LINUX_VERSION_CODE
-static int find_callback(struct dir_context *ctx, const char *name, int namlen,
+static bool find_callback(struct dir_context *ctx, const char *name, int namlen,
loff_t offset, u64 ino, unsigned int d_type)
#else
static int find_callback(void *ctx, const char *name, int namlen,

View File

@@ -196,6 +196,27 @@ index 5d86a5cc435..f26113c08af 100755
#ifdef STA_SOFTAP_SCC_MODE
struct sprdwl_intf *intf = (struct sprdwl_intf *)vif->priv->hw_priv;
intf->sta_home_channel = 0;
--
2.30.2
diff --git a/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c b/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c
index ad310450e79..206824604ec 100755
--- a/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c
+++ b/drivers/net/wireless/uwe5622/unisocwifi/wl_core.c
@@ -628,12 +628,12 @@ static int sprdwl_probe(struct platform_device *pdev)
ret = -ENXIO;
goto err_core_create;
}
- memcpy(priv->wl_ver.kernel_ver, utsname()->release,
- strlen(utsname()->release));
- memcpy(priv->wl_ver.drv_ver, SPRDWL_DRIVER_VERSION,
- strlen(SPRDWL_DRIVER_VERSION));
- memcpy(priv->wl_ver.update, SPRDWL_UPDATE, strlen(SPRDWL_UPDATE));
- memcpy(priv->wl_ver.reserve, SPRDWL_RESERVE, strlen(SPRDWL_RESERVE));
+ strncpy(priv->wl_ver.kernel_ver, utsname()->release,
+ sizeof(priv->wl_ver.kernel_ver));
+ strncpy(priv->wl_ver.drv_ver, SPRDWL_DRIVER_VERSION,
+ sizeof(priv->wl_ver.drv_ver));
+ strncpy(priv->wl_ver.update, SPRDWL_UPDATE, sizeof(priv->wl_ver.update));
+ strncpy(priv->wl_ver.reserve, SPRDWL_RESERVE, sizeof(priv->wl_ver.reserve));
wl_info("Spreadtrum WLAN Version:");
wl_info("Kernel:%s,Driver:%s,update:%s,reserved:%s\n",
utsname()->release, SPRDWL_DRIVER_VERSION,