build/patch/kernel/archive/sunxi-6.5/patches.megous/net-wireless-Port-bcmdhd-to-Linux-6.5.patch

821 lines
30 KiB
Diff

From 1aed8f08f6d0a220eee651fb246225d579a235c1 Mon Sep 17 00:00:00 2001
From: Ondrej Jirman <megi@xff.cz>
Date: Mon, 24 Jul 2023 01:35:00 +0200
Subject: [PATCH 461/464] net: wireless: Port bcmdhd to Linux 6.5
This makes it compile and not crash the kernel. Not working, yet.
Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
drivers/net/wireless/broadcom/Kconfig | 1 +
drivers/net/wireless/broadcom/Makefile | 2 +
drivers/net/wireless/broadcom/bcmdhd/Kconfig | 3 +-
drivers/net/wireless/broadcom/bcmdhd/Makefile | 38 +---
.../wireless/broadcom/bcmdhd/bcm_app_utils.c | 4 +-
.../broadcom/bcmdhd/bcmwifi_channels.c | 6 +-
.../net/wireless/broadcom/bcmdhd/dhd_gpio.c | 173 ++----------------
.../net/wireless/broadcom/bcmdhd/dhd_linux.c | 16 +-
.../wireless/broadcom/bcmdhd/dhd_pcie_linux.c | 4 +-
.../net/wireless/broadcom/bcmdhd/linux_osl.c | 1 +
.../broadcom/bcmdhd/rk_dhd_pcie_linux.h | 4 +-
.../net/wireless/broadcom/bcmdhd/wl_android.c | 6 +-
.../wireless/broadcom/bcmdhd/wl_android_ext.c | 2 +-
.../wireless/broadcom/bcmdhd/wl_cfg80211.c | 12 +-
.../net/wireless/broadcom/bcmdhd/wl_cfgscan.c | 1 +
.../wireless/broadcom/bcmdhd/wl_cfgvendor.c | 1 +
.../net/wireless/broadcom/bcmdhd/wl_cfgvif.c | 13 +-
.../net/wireless/broadcom/bcmdhd/wl_cfgvif.h | 4 +-
drivers/net/wireless/broadcom/bcmdhd/wl_iw.h | 2 +-
19 files changed, 69 insertions(+), 224 deletions(-)
diff --git a/drivers/net/wireless/broadcom/Kconfig b/drivers/net/wireless/broadcom/Kconfig
index f74333366a90..13e31496e0ec 100644
--- a/drivers/net/wireless/broadcom/Kconfig
+++ b/drivers/net/wireless/broadcom/Kconfig
@@ -15,5 +15,6 @@ if WLAN_VENDOR_BROADCOM
source "drivers/net/wireless/broadcom/b43/Kconfig"
source "drivers/net/wireless/broadcom/b43legacy/Kconfig"
source "drivers/net/wireless/broadcom/brcm80211/Kconfig"
+source "drivers/net/wireless/broadcom/bcmdhd/Kconfig"
endif # WLAN_VENDOR_BROADCOM
diff --git a/drivers/net/wireless/broadcom/Makefile b/drivers/net/wireless/broadcom/Makefile
index 1a8384daed2c..38b4358ef48f 100644
--- a/drivers/net/wireless/broadcom/Makefile
+++ b/drivers/net/wireless/broadcom/Makefile
@@ -4,3 +4,5 @@ obj-$(CONFIG_B43LEGACY) += b43legacy/
obj-$(CONFIG_BRCMFMAC) += brcm80211/
obj-$(CONFIG_BRCMSMAC) += brcm80211/
+
+#obj-$(CONFIG_BCMDHD) += bcmdhd/
diff --git a/drivers/net/wireless/broadcom/bcmdhd/Kconfig b/drivers/net/wireless/broadcom/bcmdhd/Kconfig
index ec992ef39eaf..900fdb1e659d 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/Kconfig
+++ b/drivers/net/wireless/broadcom/bcmdhd/Kconfig
@@ -1,5 +1,5 @@
config BCMDHD
- tristate "Broadcom FullMAC wireless cards support"
+ tristate "BCMDHD - Broadcom FullMAC wireless cards support"
help
This module adds support for wireless adapters based on
Broadcom FullMAC chipset.
@@ -50,7 +50,6 @@ choice
config BCMDHD_OOB
depends on BCMDHD && BCMDHD_SDIO
bool "Out-of-Band Interrupt"
- default y
help
Interrupt from WL_HOST_WAKE.
config BCMDHD_SDIO_IRQ
diff --git a/drivers/net/wireless/broadcom/bcmdhd/Makefile b/drivers/net/wireless/broadcom/bcmdhd/Makefile
index f48764851554..cf19c21e9025 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/Makefile
+++ b/drivers/net/wireless/broadcom/bcmdhd/Makefile
@@ -6,10 +6,10 @@ MODULE_NAME := bcmdhd
else
MODULE_NAME := bcmdhd_pcie
endif
-CONFIG_BCMDHD = m
+CONFIG_BCMDHD = y
#CONFIG_BCMDHD_SDIO := y
-#CONFIG_BCMDHD_PCIE := y
+CONFIG_BCMDHD_PCIE := y
#CONFIG_BCMDHD_USB := y
CONFIG_BCMDHD_OOB := y
@@ -38,7 +38,6 @@ CONFIG_MACH_PLATFORM := y
DHDCFLAGS = -Wall -Wstrict-prototypes -Wno-date-time \
-Wno-implicit-fallthrough -Wno-declaration-after-statement \
- -Wno-fortify-source \
-Dlinux -DLINUX -DBCMDRIVER \
-DBCMDONGLEHOST -DBCMDMA32 -DBCMFILEIMAGE \
-DDHDTHREAD -DDHD_DEBUG -DSHOW_EVENTS -DGET_OTP_MAC_ENABLE \
@@ -51,6 +50,7 @@ DHDCFLAGS = -Wall -Wstrict-prototypes -Wno-date-time \
-DUSE_NEW_RSPEC_DEFS \
-DWL_EXT_IAPSTA -DWL_ESCAN -DCCODE_LIST -DSUSPEND_EVENT \
-DKEY_INSTALL_CHECK \
+ -DCFG80211_BKPORT_MLO \
-DENABLE_INSMOD_NO_FW_LOAD
DHDOFILES = aiutils.o siutils.o sbutils.o \
@@ -301,7 +301,7 @@ ifneq ($(CONFIG_BCMDHD_SDIO),)
endif
ifneq ($(CONFIG_BCMDHD_PCIE),)
DHDCFLAGS += -DDHD_LB_TXP_DEFAULT_ENAB
- DHDCFLAGS += -DSET_RPS_CPUS -DSET_XPS_CPUS
+# DHDCFLAGS += -DSET_RPS_CPUS -DSET_XPS_CPUS
DHDCFLAGS += -DDHD_LB_PRIMARY_CPUS=0xF0 -DDHD_LB_SECONDARY_CPUS=0x0E
endif
endif
@@ -386,7 +386,7 @@ ifeq ($(CONFIG_BCMDHD_STATIC_BUF_IN_DHD),y)
DHDOFILES += dhd_static_buf.o
DHDCFLAGS += -DDHD_STATIC_IN_DRIVER
else
- obj-m += dhd_static_buf.o
+ obj-y += dhd_static_buf.o
endif
DHDCFLAGS += -DSTATIC_WL_PRIV_STRUCT -DENHANCED_STATIC_BUF
DHDCFLAGS += -DCONFIG_DHD_USE_STATIC_BUF
@@ -396,34 +396,12 @@ ifneq ($(CONFIG_BCMDHD_PCIE),)
endif
endif
-ARCH ?= arm64
-BCMDHD_ROOT = $(src)
-#$(warning "BCMDHD_ROOT=$(BCMDHD_ROOT)")
+BCMDHD_ROOT = $(srctree)/$(src)
+$(warning "BCMDHD_ROOT=$(BCMDHD_ROOT)")
EXTRA_CFLAGS = $(DHDCFLAGS)
EXTRA_CFLAGS += -DDHD_COMPILED=\"$(BCMDHD_ROOT)\"
EXTRA_CFLAGS += -I$(BCMDHD_ROOT)/include/ -I$(BCMDHD_ROOT)/
-ifeq ($(CONFIG_BCMDHD),m)
-EXTRA_LDFLAGS += --strip-debug
-endif
-obj-m += $(MODULE_NAME).o
+obj-y += $(MODULE_NAME).o
$(MODULE_NAME)-objs += $(DHDOFILES)
ccflags-y := $(EXTRA_CFLAGS)
-
-all: bcmdhd_pcie bcmdhd_sdio bcmdhd_usb
-
-bcmdhd_pcie:
- $(warning "building BCMDHD_PCIE..........")
- $(MAKE) -C $(LINUXDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules CONFIG_BCMDHD=m CONFIG_BCMDHD_PCIE=y
-
-bcmdhd_sdio:
- $(warning "building BCMDHD_SDIO..........")
- $(MAKE) -C $(LINUXDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules CONFIG_BCMDHD=m CONFIG_BCMDHD_SDIO=y
-
-bcmdhd_usb:
- $(warning "building BCMDHD_USB..........")
- $(MAKE) -C $(LINUXDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) modules CONFIG_BCMDHD=m CONFIG_BCMDHD_USB=y
-
-clean:
- rm -rf *.o *.ko *.mod.c *~ .*.cmd *.o.cmd .*.o.cmd *.mod \
- Module.symvers modules.order .tmp_versions modules.builtin
diff --git a/drivers/net/wireless/broadcom/bcmdhd/bcm_app_utils.c b/drivers/net/wireless/broadcom/bcmdhd/bcm_app_utils.c
index 62d050739ea8..c50573f313bb 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/bcm_app_utils.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/bcm_app_utils.c
@@ -27,8 +27,8 @@
#ifdef BCMDRIVER
#include <osl.h>
-#define strtoul(nptr, endptr, base) bcm_strtoul((nptr), (endptr), (base))
-#define tolower(c) (bcm_isupper((c)) ? ((c) + 'a' - 'A') : (c))
+//#define strtoul(nptr, endptr, base) bcm_strtoul((nptr), (endptr), (base))
+//#define tolower(c) (bcm_isupper((c)) ? ((c) + 'a' - 'A') : (c))
#else /* BCMDRIVER */
#include <stdio.h>
#include <string.h>
diff --git a/drivers/net/wireless/broadcom/bcmdhd/bcmwifi_channels.c b/drivers/net/wireless/broadcom/bcmdhd/bcmwifi_channels.c
index 938720710a2b..70dac773deff 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/bcmwifi_channels.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/bcmwifi_channels.c
@@ -28,8 +28,8 @@
#ifdef BCMDRIVER
#include <osl.h>
-#define strtoul(nptr, endptr, base) bcm_strtoul((nptr), (endptr), (base))
-#define tolower(c) (bcm_isupper((c)) ? ((c) + 'a' - 'A') : (c))
+//#define strtoul(nptr, endptr, base) bcm_strtoul((nptr), (endptr), (base))
+//#define tolower(c) (bcm_isupper((c)) ? ((c) + 'a' - 'A') : (c))
#else
#include <stdio.h>
#include <stdlib.h>
@@ -568,7 +568,7 @@ read_uint(const char **p, unsigned int *num)
unsigned long val;
char *endp = NULL;
- val = strtoul(*p, &endp, 10);
+ val = bcm_strtoul(*p, &endp, 10);
/* if endp is the initial pointer value, then a number was not read */
if (endp == *p)
return 0;
diff --git a/drivers/net/wireless/broadcom/bcmdhd/dhd_gpio.c b/drivers/net/wireless/broadcom/bcmdhd/dhd_gpio.c
index 40490bdf7982..5f08b8f0fc2e 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/dhd_gpio.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/dhd_gpio.c
@@ -2,22 +2,10 @@
#include <osl.h>
#include <dhd_linux.h>
#include <linux/gpio.h>
-#ifdef BCMDHD_DTS
#include <linux/of_gpio.h>
-#endif
#ifdef BCMDHD_PLATDEV
#include <linux/platform_device.h>
#endif
-#ifdef CUSTOMER_HW_ROCKCHIP
-#include <linux/rfkill-wlan.h>
-#endif
-
-#if defined(BUS_POWER_RESTORE) && defined(BCMSDIO)
-#include <linux/mmc/core.h>
-#include <linux/mmc/card.h>
-#include <linux/mmc/host.h>
-#include <linux/mmc/sdio_func.h>
-#endif /* defined(BUS_POWER_RESTORE) && defined(BCMSDIO) */
#ifdef CONFIG_DHD_USE_STATIC_BUF
#ifdef DHD_STATIC_IN_DRIVER
@@ -31,13 +19,7 @@ extern void *dhd_wlan_mem_prealloc(uint bus_type, int index,
extern void *dhd_wlan_mem_prealloc(int section, unsigned long size);
#endif
#endif /* CONFIG_DHD_USE_STATIC_BUF */
-#ifdef CUSTOMER_HW_ROCKCHIP
-#ifdef BCMPCIE
-//extern void rk_pcie_power_on_atu_fixup(void);
-#endif
-#endif
-#ifdef BCMDHD_DTS
/* This is sample code in dts file.
bcmdhd_wlan {
compatible = "android,bcmdhd_wlan";
@@ -48,7 +30,6 @@ bcmdhd_wlan {
#define DHD_DT_COMPAT_ENTRY "android,bcmdhd_wlan"
#define GPIO_WL_REG_ON_PROPNAME "gpio_wl_reg_on"
#define GPIO_WL_HOST_WAKE_PROPNAME "gpio_wl_host_wake"
-#endif
static int
dhd_wlan_set_power(int on, wifi_adapter_info_t *adapter)
@@ -56,6 +37,8 @@ dhd_wlan_set_power(int on, wifi_adapter_info_t *adapter)
int gpio_wl_reg_on = adapter->gpio_wl_reg_on;
int err = 0;
+ return 0;
+
if (on) {
printf("======== PULL WL_REG_ON(%d) HIGH! ========\n", gpio_wl_reg_on);
if (gpio_wl_reg_on >= 0) {
@@ -65,22 +48,9 @@ dhd_wlan_set_power(int on, wifi_adapter_info_t *adapter)
return -EIO;
}
}
-#ifdef CUSTOMER_HW_ROCKCHIP
- rockchip_wifi_power(1);
-#ifdef BCMPCIE
//rk_pcie_power_on_atu_fixup();
-#endif
-#endif
+
#ifdef BUS_POWER_RESTORE
-#ifdef BCMSDIO
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0)
- if (adapter->sdio_func && adapter->sdio_func->card && adapter->sdio_func->card->host) {
- mdelay(100);
- printf("======== mmc_power_restore_host! ========\n");
- mmc_power_restore_host(adapter->sdio_func->card->host);
- }
-#endif
-#elif defined(BCMPCIE)
if (adapter->pci_dev) {
mdelay(100);
printf("======== pci_set_power_state PCI_D0! ========\n");
@@ -93,20 +63,11 @@ dhd_wlan_set_power(int on, wifi_adapter_info_t *adapter)
printf("%s: PCI enable device failed", __FUNCTION__);
pci_set_master(adapter->pci_dev);
}
-#endif /* BCMPCIE */
#endif /* BUS_POWER_RESTORE */
/* Lets customer power to get stable */
mdelay(100);
} else {
#ifdef BUS_POWER_RESTORE
-#ifdef BCMSDIO
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 32) && LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0)
- if (adapter->sdio_func && adapter->sdio_func->card && adapter->sdio_func->card->host) {
- printf("======== mmc_power_save_host! ========\n");
- mmc_power_save_host(adapter->sdio_func->card->host);
- }
-#endif
-#elif defined(BCMPCIE)
if (adapter->pci_dev) {
printf("======== pci_set_power_state PCI_D3hot! ========\n");
pci_save_state(adapter->pci_dev);
@@ -115,7 +76,6 @@ dhd_wlan_set_power(int on, wifi_adapter_info_t *adapter)
pci_disable_device(adapter->pci_dev);
pci_set_power_state(adapter->pci_dev, PCI_D3hot);
}
-#endif /* BCMPCIE */
#endif /* BUS_POWER_RESTORE */
printf("======== PULL WL_REG_ON(%d) LOW! ========\n", gpio_wl_reg_on);
if (gpio_wl_reg_on >= 0) {
@@ -125,9 +85,6 @@ dhd_wlan_set_power(int on, wifi_adapter_info_t *adapter)
return -EIO;
}
}
-#ifdef CUSTOMER_HW_ROCKCHIP
- rockchip_wifi_power(0);
-#endif
}
return err;
@@ -146,29 +103,9 @@ dhd_wlan_set_carddetect(int present)
#if !defined(BUS_POWER_RESTORE)
if (present) {
-#if defined(BCMSDIO)
- printf("======== Card detection to detect SDIO card! ========\n");
-#ifdef CUSTOMER_HW_PLATFORM
- err = sdhci_force_presence_change(&sdmmc_channel, 1);
-#endif /* CUSTOMER_HW_PLATFORM */
-#ifdef CUSTOMER_HW_ROCKCHIP
- rockchip_wifi_set_carddetect(1);
-#endif
-#elif defined(BCMPCIE)
printf("======== Card detection to detect PCIE card! ========\n");
-#endif
} else {
-#if defined(BCMSDIO)
- printf("======== Card detection to remove SDIO card! ========\n");
-#ifdef CUSTOMER_HW_PLATFORM
- err = sdhci_force_presence_change(&sdmmc_channel, 0);
-#endif /* CUSTOMER_HW_PLATFORM */
-#ifdef CUSTOMER_HW_ROCKCHIP
- rockchip_wifi_set_carddetect(0);
-#endif
-#elif defined(BCMPCIE)
printf("======== Card detection to remove PCIE card! ========\n");
-#endif
}
#endif /* BUS_POWER_RESTORE */
@@ -178,41 +115,16 @@ dhd_wlan_set_carddetect(int present)
static int
dhd_wlan_get_mac_addr(unsigned char *buf, int ifidx)
{
- int err = 0;
-
if (ifidx == 1) {
-#ifdef EXAMPLE_GET_MAC
struct ether_addr ea_example = {{0x00, 0x11, 0x22, 0x33, 0x44, 0xFF}};
bcopy((char *)&ea_example, buf, sizeof(struct ether_addr));
-#endif /* EXAMPLE_GET_MAC */
} else {
-#ifdef EXAMPLE_GET_MAC
struct ether_addr ea_example = {{0x02, 0x11, 0x22, 0x33, 0x44, 0x55}};
bcopy((char *)&ea_example, buf, sizeof(struct ether_addr));
-#endif /* EXAMPLE_GET_MAC */
-#ifdef CUSTOMER_HW_ROCKCHIP
- err = rockchip_wifi_mac_addr(buf);
-#endif
+ //err = rockchip_wifi_mac_addr(buf);
}
-#ifdef EXAMPLE_GET_MAC_VER2
- /* EXAMPLE code */
- {
- char macpad[56]= {
- 0x00,0xaa,0x9c,0x84,0xc7,0xbc,0x9b,0xf6,
- 0x02,0x33,0xa9,0x4d,0x5c,0xb4,0x0a,0x5d,
- 0xa8,0xef,0xb0,0xcf,0x8e,0xbf,0x24,0x8a,
- 0x87,0x0f,0x6f,0x0d,0xeb,0x83,0x6a,0x70,
- 0x4a,0xeb,0xf6,0xe6,0x3c,0xe7,0x5f,0xfc,
- 0x0e,0xa7,0xb3,0x0f,0x00,0xe4,0x4a,0xaf,
- 0x87,0x08,0x16,0x6d,0x3a,0xe3,0xc7,0x80};
- bcopy(macpad, buf+6, sizeof(macpad));
- }
-#endif /* EXAMPLE_GET_MAC_VER2 */
-
- printf("======== %s err=%d ========\n", __FUNCTION__, err);
-
- return err;
+ return 0;
}
static struct cntry_locales_custom brcm_wlan_translate_custom_table[] = {
@@ -277,10 +189,8 @@ struct wifi_platform_data dhd_wlan_control = {
static int
dhd_wlan_init_gpio(wifi_adapter_info_t *adapter)
{
-#ifdef BCMDHD_DTS
char wlan_node[32];
struct device_node *root_node = NULL;
-#endif
int err = 0;
int gpio_wl_reg_on = -1;
#ifdef CUSTOMER_OOB
@@ -297,32 +207,16 @@ dhd_wlan_init_gpio(wifi_adapter_info_t *adapter)
/* Please check your schematic and fill right GPIO number which connected to
* WL_REG_ON and WL_HOST_WAKE.
*/
-#ifdef BCMDHD_DTS
-#ifdef BCMDHD_PLATDEV
- if (adapter->pdev) {
- root_node = adapter->pdev->dev.of_node;
- strcpy(wlan_node, root_node->name);
- } else {
- printf("%s: adapter->pdev is NULL\n", __FUNCTION__);
- return -1;
- }
-#else
strcpy(wlan_node, DHD_DT_COMPAT_ENTRY);
root_node = of_find_compatible_node(NULL, NULL, wlan_node);
-#endif
+
printf("======== Get GPIO from DTS(%s) ========\n", wlan_node);
if (root_node) {
gpio_wl_reg_on = of_get_named_gpio(root_node, GPIO_WL_REG_ON_PROPNAME, 0);
-#ifdef CUSTOMER_OOB
gpio_wl_host_wake = of_get_named_gpio(root_node, GPIO_WL_HOST_WAKE_PROPNAME, 0);
-#endif
- } else
-#endif
- {
+ } else {
gpio_wl_reg_on = -1;
-#ifdef CUSTOMER_OOB
gpio_wl_host_wake = -1;
-#endif
}
if (gpio_wl_reg_on >= 0) {
@@ -359,9 +253,6 @@ dhd_wlan_init_gpio(wifi_adapter_info_t *adapter)
return -1;
}
}
-#ifdef CUSTOMER_HW_ROCKCHIP
- host_oob_irq = rockchip_wifi_get_oob_irq();
-#endif
#ifdef HW_OOB
#ifdef HW_OOB_LOW_LEVEL
@@ -369,16 +260,6 @@ dhd_wlan_init_gpio(wifi_adapter_info_t *adapter)
#else
host_oob_irq_flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL | IORESOURCE_IRQ_SHAREABLE;
#endif
-#ifdef CUSTOMER_HW_ROCKCHIP
- host_oob_irq_flags = IORESOURCE_IRQ | IORESOURCE_IRQ_SHAREABLE;
- irq_flags = rockchip_wifi_get_oob_irq_flag();
- if (irq_flags == 1)
- host_oob_irq_flags |= IORESOURCE_IRQ_HIGHLEVEL;
- else if (irq_flags == 0)
- host_oob_irq_flags |= IORESOURCE_IRQ_LOWLEVEL;
- else
- pr_warn("%s: unknown oob irqflags !\n", __func__);
-#endif
#else
host_oob_irq_flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_SHAREABLE;
#endif
@@ -420,37 +301,13 @@ dhd_wlan_deinit_gpio(wifi_adapter_info_t *adapter)
static void
dhd_wlan_init_adapter(wifi_adapter_info_t *adapter)
{
-#ifdef ADAPTER_IDX
- if (ADAPTER_IDX == 0) {
- adapter->bus_num = 1;
- adapter->slot_num = 1;
- } else if (ADAPTER_IDX == 1) {
- adapter->bus_num = 2;
- adapter->slot_num = 1;
- }
- adapter->index = ADAPTER_IDX;
-#ifdef BCMSDIO
- adapter->bus_type = SDIO_BUS;
-#elif defined(BCMPCIE)
+ adapter->bus_num = 1;
+ adapter->slot_num = 1;
+ adapter->index = 0;
adapter->bus_type = PCI_BUS;
-#elif defined(BCMDBUS)
- adapter->bus_type = USB_BUS;
-#endif
+
printf("bus_type=%d, bus_num=%d, slot_num=%d\n",
adapter->bus_type, adapter->bus_num, adapter->slot_num);
-#endif /* ADAPTER_IDX */
-
-#ifdef DHD_STATIC_IN_DRIVER
- adapter->index = 0;
-#elif !defined(ADAPTER_IDX)
-#ifdef BCMSDIO
- adapter->index = 0;
-#elif defined(BCMPCIE)
- adapter->index = 1;
-#elif defined(BCMDBUS)
- adapter->index = 2;
-#endif
-#endif /* DHD_STATIC_IN_DRIVER */
}
#endif /* BCMDHD_MDRIVER */
@@ -463,9 +320,9 @@ dhd_wlan_init_plat_data(wifi_adapter_info_t *adapter)
dhd_wlan_init_adapter(adapter);
#endif /* BCMDHD_MDRIVER */
- err = dhd_wlan_init_gpio(adapter);
- if (err)
- goto exit;
+ //err = dhd_wlan_init_gpio(adapter);
+ //if (err)
+ //goto exit;
#ifdef DHD_STATIC_IN_DRIVER
err = dhd_static_buf_init();
@@ -481,5 +338,5 @@ dhd_wlan_deinit_plat_data(wifi_adapter_info_t *adapter)
#ifdef DHD_STATIC_IN_DRIVER
dhd_static_buf_exit();
#endif
- dhd_wlan_deinit_gpio(adapter);
+ //dhd_wlan_deinit_gpio(adapter);
}
diff --git a/drivers/net/wireless/broadcom/bcmdhd/dhd_linux.c b/drivers/net/wireless/broadcom/bcmdhd/dhd_linux.c
index 1dccb0e74d8a..3b66ed0fd2ce 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/dhd_linux.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/dhd_linux.c
@@ -32,6 +32,8 @@
#include <event_log.h>
#endif /* SHOW_LOGTRACE */
+#include <linux/sched/clock.h>
+
#if defined(PCIE_FULL_DONGLE) || defined(SHOW_LOGTRACE)
#include <bcmmsgbuf.h>
#endif /* PCIE_FULL_DONGLE */
@@ -793,8 +795,6 @@ module_param(instance_base, int, 0644);
*
* Device drivers are strongly advised to not use bigger value than NAPI_POLL_WEIGHT
*/
-static int dhd_napi_weight = NAPI_POLL_WEIGHT;
-module_param(dhd_napi_weight, int, 0644);
#endif /* DHD_LB_RXP && PCIE_FULL_DONGLE */
#ifdef PCIE_FULL_DONGLE
@@ -3062,7 +3062,7 @@ _dhd_set_multicast_list(dhd_info_t *dhd, int ifidx)
}
int
-_dhd_set_mac_address(dhd_info_t *dhd, int ifidx, uint8 *addr, bool skip_stop)
+_dhd_set_mac_address(dhd_info_t *dhd, int ifidx, const uint8 *addr, bool skip_stop)
{
int ret;
@@ -9472,10 +9472,10 @@ dhd_open(struct net_device *net)
dhd->rx_napi_netdev = dhd->iflist[ifidx]->net;
memset(&dhd->rx_napi_struct, 0, sizeof(struct napi_struct));
netif_napi_add(dhd->rx_napi_netdev, &dhd->rx_napi_struct,
- dhd_napi_poll, dhd_napi_weight);
- DHD_INFO(("%s napi<%p> enabled ifp->net<%p,%s> dhd_napi_weight: %d\n",
+ dhd_napi_poll);
+ DHD_INFO(("%s napi<%p> enabled ifp->net<%p,%s>\n",
__FUNCTION__, &dhd->rx_napi_struct, net,
- net->name, dhd_napi_weight));
+ net->name));
napi_enable(&dhd->rx_napi_struct);
DHD_INFO(("%s load balance init rx_napi_struct\n", __FUNCTION__));
skb_queue_head_init(&dhd->rx_napi_queue);
@@ -12779,8 +12779,8 @@ dhd_bus_start(dhd_pub_t *dhdp)
#endif /* BT_OVER_PCIE */
#if defined(CUSTOMER_HW_ROCKCHIP) && defined(BCMPCIE)
- if (IS_ENABLED(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION))
- rk_dhd_bus_l1ss_enable_rc_ep(dhdp->bus, TRUE);
+ //if (IS_ENABLED(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION))
+ //rk_dhd_bus_l1ss_enable_rc_ep(dhdp->bus, TRUE);
#endif /* CUSTOMER_HW_ROCKCHIP && BCMPCIE */
#if defined(CONFIG_ARCH_EXYNOS) && defined(BCMPCIE)
diff --git a/drivers/net/wireless/broadcom/bcmdhd/dhd_pcie_linux.c b/drivers/net/wireless/broadcom/bcmdhd/dhd_pcie_linux.c
index 6a5ec4db66e7..00713a40ce78 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/dhd_pcie_linux.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/dhd_pcie_linux.c
@@ -621,8 +621,8 @@ dhd_bus_is_rc_ep_l1ss_capable(dhd_bus_t *bus)
uint32 ep_l1ss_cap;
#ifdef CUSTOMER_HW_ROCKCHIP
- if (IS_ENABLED(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION))
- return rk_dhd_bus_is_rc_ep_l1ss_capable(bus);
+ //if (IS_ENABLED(CONFIG_PCIEASPM_ROCKCHIP_WIFI_EXTENSION))
+ //return rk_dhd_bus_is_rc_ep_l1ss_capable(bus);
#endif
/* RC Extendend Capacility */
rc_l1ss_cap = dhdpcie_access_cap(bus->rc_dev, PCIE_EXTCAP_ID_L1SS,
diff --git a/drivers/net/wireless/broadcom/bcmdhd/linux_osl.c b/drivers/net/wireless/broadcom/bcmdhd/linux_osl.c
index 2dd9b384e51f..488fc54045a6 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/linux_osl.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/linux_osl.c
@@ -33,6 +33,7 @@
#endif /* __ARM_ARCH_7A__ && !DHD_USE_COHERENT_MEM_FOR_RING */
#include <linux/random.h>
+#include <linux/sched/clock.h>
#include <osl.h>
#include <bcmutils.h>
diff --git a/drivers/net/wireless/broadcom/bcmdhd/rk_dhd_pcie_linux.h b/drivers/net/wireless/broadcom/bcmdhd/rk_dhd_pcie_linux.h
index c6fedf9fb78b..e0836f729cad 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/rk_dhd_pcie_linux.h
+++ b/drivers/net/wireless/broadcom/bcmdhd/rk_dhd_pcie_linux.h
@@ -12,8 +12,9 @@
#include <sbchipc.h>
#include <pcie_core.h>
#include <dhd_pcie.h>
-#include <linux/aspm_ext.h>
+//#include <linux/aspm_ext.h>
+#if 0
static inline void
rk_dhd_bus_l1ss_enable_rc_ep(dhd_bus_t *bus, bool enable)
{
@@ -32,5 +33,6 @@ rk_dhd_bus_is_rc_ep_l1ss_capable(dhd_bus_t *bus)
{
return pcie_aspm_ext_is_rc_ep_l1ss_capable(bus->dev, bus->rc_dev);
}
+#endif
#endif /* __RK_DHD_PCIE_LINUX_H__ */
diff --git a/drivers/net/wireless/broadcom/bcmdhd/wl_android.c b/drivers/net/wireless/broadcom/bcmdhd/wl_android.c
index ec37154b69f4..dfcd00181ab4 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/wl_android.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/wl_android.c
@@ -450,8 +450,8 @@ typedef struct android_wifi_af_params {
#define BUFSZ 8
#define BUFSZN BUFSZ + 1
-#define _S(x) #x
-#define S(x) _S(x)
+#define _SS(x) #x
+#define S(x) _SS(x)
#define MAXBANDS 2 /**< Maximum #of bands */
#define BAND_2G_INDEX 1
@@ -12209,7 +12209,7 @@ wl_handle_private_cmd(struct net_device *net, char *command, u32 cmd_len)
if ((rev_info_delim) &&
(strnicmp(rev_info_delim, CMD_COUNTRY_DELIMITER,
strlen(CMD_COUNTRY_DELIMITER)) == 0) &&
- (rev_info_delim + 1)) {
+ *(rev_info_delim + 1)) {
revinfo = bcm_atoi(rev_info_delim + 1);
} else {
revinfo = 0;
diff --git a/drivers/net/wireless/broadcom/bcmdhd/wl_android_ext.c b/drivers/net/wireless/broadcom/bcmdhd/wl_android_ext.c
index 75aacebf118d..7b120af2b1e1 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/wl_android_ext.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/wl_android_ext.c
@@ -2592,7 +2592,7 @@ wl_ext_get_country(struct net_device *dev, char *data, char *command,
char *rev_info_delim = country_code + 2; /* 2 bytes of country code */
int revinfo = 0;
if ((rev_info_delim) &&
- (strnicmp(rev_info_delim, "/", strlen("/")) == 0) && (rev_info_delim + 1)) {
+ (strnicmp(rev_info_delim, "/", strlen("/")) == 0) && *(rev_info_delim + 1)) {
revinfo = bcm_atoi(rev_info_delim + 1);
}
#ifdef WL_CFG80211
diff --git a/drivers/net/wireless/broadcom/bcmdhd/wl_cfg80211.c b/drivers/net/wireless/broadcom/bcmdhd/wl_cfg80211.c
index a1cb125967b8..0e53a9d51d9f 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/wl_cfg80211.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/wl_cfg80211.c
@@ -1241,8 +1241,8 @@ static const rsn_akm_wpa_auth_entry_t rsn_akm_wpa_auth_lookup_tbl[] = {
#define BUFSZ 8
#define BUFSZN BUFSZ + 1
-#define _S(x) #x
-#define S(x) _S(x)
+//#define _S(x) #x
+//#define S(x) _S(x)
#define SOFT_AP_IF_NAME "swlan0"
@@ -10736,17 +10736,13 @@ void wl_config_custom_regulatory(struct wiphy *wiphy)
#if defined(WL_SELF_MANAGED_REGDOM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
/* Use self managed regulatory domain */
- wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED |
- REGULATORY_IGNORE_STALE_KICKOFF;
+ wiphy->regulatory_flags |= REGULATORY_WIPHY_SELF_MANAGED;
WL_DBG(("Self managed regdom\n"));
return;
#else /* WL_SELF_MANAGED_REGDOM && KERNEL >= 4.0 */
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
wiphy->regulatory_flags |=
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0))
- REGULATORY_IGNORE_STALE_KICKOFF |
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) */
REGULATORY_CUSTOM_REG;
#else /* KERNEL VER >= 3.14 */
wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY;
@@ -21739,7 +21735,7 @@ wl_cfg80211_sup_event_handler(struct bcm_cfg80211 *cfg, bcm_struct_cfgdev *cfgde
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0))
/* NL80211_CMD_PORT_AUTHORIZED supported above >= 4.15 */
cfg80211_port_authorized(ndev, (u8 *)wl_read_prof(cfg, ndev, WL_PROF_BSSID),
- GFP_KERNEL);
+ NULL, 0, GFP_KERNEL);
WL_INFORM_MEM(("4way HS finished. port authorized event sent\n"));
#elif ((LINUX_VERSION_CODE > KERNEL_VERSION(3, 14, 0)) || defined(WL_VENDOR_EXT_SUPPORT))
err = wl_cfgvendor_send_async_event(bcmcfg_to_wiphy(cfg), ndev,
diff --git a/drivers/net/wireless/broadcom/bcmdhd/wl_cfgscan.c b/drivers/net/wireless/broadcom/bcmdhd/wl_cfgscan.c
index 606f32767ce8..85b09a860ffc 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/wl_cfgscan.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/wl_cfgscan.c
@@ -25,6 +25,7 @@
#include <linuxver.h>
#include <osl.h>
#include <linux/kernel.h>
+#include <linux/sched/clock.h>
#include <bcmutils.h>
#include <bcmstdlib_s.h>
diff --git a/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvendor.c b/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvendor.c
index 480dc1faf0a0..8b5f9c9e56b2 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvendor.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvendor.c
@@ -31,6 +31,7 @@
#include <osl.h>
#include <linux/kernel.h>
#include <linux/vmalloc.h>
+#include <linux/sched/clock.h>
#include <bcmutils.h>
#include <bcmwifi_channels.h>
diff --git a/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvif.c b/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvif.c
index e94dcaba1096..06df99f7be6e 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvif.c
+++ b/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvif.c
@@ -875,7 +875,7 @@ wl_cfg80211_handle_if_role_conflict(struct bcm_cfg80211 *cfg,
#endif /* WL_IFACE_MGMT */
s32
-wl_release_vif_macaddr(struct bcm_cfg80211 *cfg, u8 *mac_addr, u16 wl_iftype)
+wl_release_vif_macaddr(struct bcm_cfg80211 *cfg, const u8 *mac_addr, u16 wl_iftype)
{
struct net_device *ndev = bcmcfg_to_prmry_ndev(cfg);
u16 org_toggle_bytes;
@@ -4792,6 +4792,13 @@ static void wl_tdls_enable(struct bcm_cfg80211 *cfg)
#endif /* WLTDLS */
+
+
+ int (*tdls_mgmt)(struct wiphy *wiphy, struct net_device *dev,
+ const u8 *peer, u8 action_code, u8 dialog_token,
+ u16 status_code, u32 peer_capability,
+ bool initiator, const u8 *buf, size_t len);
+
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3, 2, 0)) || \
defined(WL_COMPAT_WIRELESS)
s32
@@ -4807,7 +4814,7 @@ wl_cfg80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev,
u32 peer_capability, const u8 *buf, size_t len)
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
wl_cfg80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev,
- const u8 *peer, u8 action_code, u8 dialog_token, u16 status_code,
+ const u8 *peer, int link_id, u8 action_code, u8 dialog_token, u16 status_code,
u32 peer_capability, bool initiator, const u8 *buf, size_t len)
#else /* CONFIG_ARCH_MSM && TDLS_MGMT_VERSION2 */
wl_cfg80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev,
@@ -5249,7 +5256,7 @@ wl_cfg80211_ch_switch_notify(struct net_device *dev, uint16 chanspec, struct wip
#if (LINUX_VERSION_CODE >= KERNEL_VERSION (3, 8, 0))
freq = chandef.chan ? chandef.chan->center_freq : chandef.center_freq1;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2) || defined(CFG80211_BKPORT_MLO)
- cfg80211_ch_switch_notify(dev, &chandef, 0);
+ cfg80211_ch_switch_notify(dev, &chandef, 0, 0);
#else
cfg80211_ch_switch_notify(dev, &chandef);
#endif
diff --git a/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvif.h b/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvif.h
index e7daeec18374..bd3cc705fe98 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvif.h
+++ b/drivers/net/wireless/broadcom/bcmdhd/wl_cfgvif.h
@@ -126,7 +126,7 @@ extern wl_iftype_t wl_cfg80211_get_sec_iface(struct bcm_cfg80211 *cfg);
#endif /* WL_IFACE_MGMT */
extern s32 wl_get_vif_macaddr(struct bcm_cfg80211 *cfg, u16 wl_iftype, u8 *mac_addr);
-extern s32 wl_release_vif_macaddr(struct bcm_cfg80211 *cfg, u8 *mac_addr, u16 wl_iftype);
+extern s32 wl_release_vif_macaddr(struct bcm_cfg80211 *cfg, const u8 *mac_addr, u16 wl_iftype);
int wl_cfg80211_set_he_mode(struct net_device *dev, struct bcm_cfg80211 *cfg,
s32 bssidx, u32 interface_type, bool set);
@@ -159,7 +159,7 @@ extern s32 wl_cfg80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev,
u32 peer_capability, const u8 *buf, size_t len);
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
extern s32 wl_cfg80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev,
- const u8 *peer, u8 action_code, u8 dialog_token, u16 status_code,
+ const u8 *peer, int link_id, u8 action_code, u8 dialog_token, u16 status_code,
u32 peer_capability, bool initiator, const u8 *buf, size_t len);
#else /* CONFIG_ARCH_MSM && TDLS_MGMT_VERSION2 */
extern s32 wl_cfg80211_tdls_mgmt(struct wiphy *wiphy, struct net_device *dev,
diff --git a/drivers/net/wireless/broadcom/bcmdhd/wl_iw.h b/drivers/net/wireless/broadcom/bcmdhd/wl_iw.h
index e161006a2bd6..f7bd60ca25c6 100644
--- a/drivers/net/wireless/broadcom/bcmdhd/wl_iw.h
+++ b/drivers/net/wireless/broadcom/bcmdhd/wl_iw.h
@@ -83,7 +83,7 @@ typedef struct wl_iw_extra_params {
#define WL_IW_RSSI_INVALID 0 /* invalid RSSI value */
#define MAX_WX_STRING 80
#define SSID_FMT_BUF_LEN ((4 * 32) + 1)
-#define isprint(c) bcm_isprint(c)
+//#define isprint(c) bcm_isprint(c)
#define WL_IW_SET_ACTIVE_SCAN (SIOCIWFIRSTPRIV+1)
#define WL_IW_GET_RSSI (SIOCIWFIRSTPRIV+3)
#define WL_IW_SET_PASSIVE_SCAN (SIOCIWFIRSTPRIV+5)
--
2.34.1