mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
rtl8852ce: realtek driver update to v126-16
----------------------------------
rtl8852ce release notes for Nvidia
----------------------------------
v1.19.16_nv-126-16-gbf1934e39.20250910_Certified_Module_beta
* fix scan issue in roaming test
==================================================================
v1.19.16_nv-126-15-ge5204803f.20250827_Certified_Module_beta
* Fix bug of 802.11d CC scan mechanism
[Description]
The 11d CC scan result may sometimes be overwritten by other scans.
==================================================================
v1.19.16_nv-126-14-g196875f8d.20250821_Certified_Module_beta
* fix 6G MBSSID disconnect problem
[Description]
Fix the issue where RSSI was not updated in non-transmitted BSSID, which could
cause disconnection due to incorrect RSSI values.
==================================================================
v1.19.16_nv-126-13-g7a2b96406.20250813_Certified_Module_beta
* fix 6G Enhanced open mode not work
[Description]
(1) Parse capabilities in MBSSID
e.g. Vendor Specific OUI WMM IE
Non-Inheritance IE
(2) Handle MBSSID sets
(3) Adjust MAX IE size from 768 to 1840 defined in WIFI Alliance
Bug 5422314
Bug 5226667
Change-Id: I63802c34fdc6e189566843d11992ff64b8e404fa
Signed-off-by: Narayana Reddy P <narayanr@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3450784
Reviewed-by: Shobek Attupurath <sattupurath@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Bitan Biswas <bbiswas@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
5ef68aa58f
commit
232b194aec
@@ -14,9 +14,6 @@ EXTRA_CFLAGS += -Wno-unused-label
|
|||||||
#EXTRA_CFLAGS += -Wno-unused-function
|
#EXTRA_CFLAGS += -Wno-unused-function
|
||||||
EXTRA_CFLAGS += -Wno-unused
|
EXTRA_CFLAGS += -Wno-unused
|
||||||
#EXTRA_CFLAGS += -Wno-uninitialized
|
#EXTRA_CFLAGS += -Wno-uninitialized
|
||||||
EXTRA_CFLAGS += -Wno-missing-prototypes
|
|
||||||
EXTRA_CFLAGS += -Wno-missing-declarations
|
|
||||||
EXTRA_CFLAGS += -Wno-enum-conversion
|
|
||||||
|
|
||||||
############ ANDROID COMMON KERNEL ############
|
############ ANDROID COMMON KERNEL ############
|
||||||
# clang
|
# clang
|
||||||
@@ -38,8 +35,7 @@ ifeq ($(GCC_VER_49),1)
|
|||||||
EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later
|
EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later
|
||||||
endif
|
endif
|
||||||
|
|
||||||
SOURCETREE = $(srctree.nvidia-oot)/drivers/net/wireless/realtek/rtl8852ce
|
EXTRA_CFLAGS += -I$(src)/include
|
||||||
EXTRA_CFLAGS += -I$(SOURCETREE)/include
|
|
||||||
|
|
||||||
EXTRA_LDFLAGS += --strip-debug
|
EXTRA_LDFLAGS += --strip-debug
|
||||||
|
|
||||||
@@ -165,8 +161,8 @@ endif
|
|||||||
CONFIG_RTW_DEBUG = y
|
CONFIG_RTW_DEBUG = y
|
||||||
# default log level is _DRV_INFO_ = 4,
|
# default log level is _DRV_INFO_ = 4,
|
||||||
# please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.
|
# please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.
|
||||||
CONFIG_RTW_LOG_LEVEL = 0
|
CONFIG_RTW_LOG_LEVEL = 4
|
||||||
CONFIG_RTW_PHL_LOG_LEVEL = 0
|
CONFIG_RTW_PHL_LOG_LEVEL = 3
|
||||||
|
|
||||||
# CONFIG_RTW_APPEND_LOGLEVEL decide if append kernel log level to each messages.
|
# CONFIG_RTW_APPEND_LOGLEVEL decide if append kernel log level to each messages.
|
||||||
# default "n" for don't append.
|
# default "n" for don't append.
|
||||||
@@ -242,8 +238,7 @@ CONFIG_ROAMING_FLAG = 0x3f
|
|||||||
CONFIG_ROAM_SCAN_ORDER = 526
|
CONFIG_ROAM_SCAN_ORDER = 526
|
||||||
|
|
||||||
###################### Platform Related #######################
|
###################### Platform Related #######################
|
||||||
CONFIG_PLATFORM_TEGRA = y
|
CONFIG_PLATFORM_I386_PC = y
|
||||||
CONFIG_PLATFORM_I386_PC = n
|
|
||||||
CONFIG_PLATFORM_RTL8198D = n
|
CONFIG_PLATFORM_RTL8198D = n
|
||||||
CONFIG_PLATFORM_ANDROID_X86 = n
|
CONFIG_PLATFORM_ANDROID_X86 = n
|
||||||
CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
|
CONFIG_PLATFORM_ANDROID_INTEL_X86 = n
|
||||||
@@ -773,16 +768,6 @@ ifeq ($(CONFIG_DBG_AX_CAM), y)
|
|||||||
EXTRA_CFLAGS += -DCONFIG_DBG_AX_CAM
|
EXTRA_CFLAGS += -DCONFIG_DBG_AX_CAM
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_PLATFORM_TEGRA), y)
|
|
||||||
ARCH = arm64
|
|
||||||
KVER := $(shell uname -r)
|
|
||||||
KSRC := /lib/modules/$(KVER)/build
|
|
||||||
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
|
|
||||||
EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT
|
|
||||||
EXTRA_CFLAGS += -Wno-error=date-time
|
|
||||||
MODULE_NAME = rtl8852ce
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_I386_BUILD_VERIFY), y)
|
ifeq ($(CONFIG_I386_BUILD_VERIFY), y)
|
||||||
EXTRA_CFLAGS += -DCONFIG_I386_BUILD_VERIFY
|
EXTRA_CFLAGS += -DCONFIG_I386_BUILD_VERIFY
|
||||||
endif
|
endif
|
||||||
@@ -799,18 +784,8 @@ endif
|
|||||||
include $(wildcard $(DRV_PATH)/platform/*.mk)
|
include $(wildcard $(DRV_PATH)/platform/*.mk)
|
||||||
|
|
||||||
# Import platform specific compile options
|
# Import platform specific compile options
|
||||||
EXTRA_CFLAGS += -I$(SOURCETREE)/platform
|
EXTRA_CFLAGS += -I$(src)/platform
|
||||||
#_PLATFORM_FILES := platform/platform_ops.o
|
#_PLATFORM_FILES := platform/platform_ops.o
|
||||||
ifeq ($(CONFIG_PCI_HCI), y)
|
|
||||||
EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS
|
|
||||||
_PLATFORM_FILES := platform/platform_linux_pc_pci.o
|
|
||||||
OBJS += $(_PLATFORM_FILES)
|
|
||||||
# Core Config
|
|
||||||
CONFIG_MSG_NUM = 128
|
|
||||||
EXTRA_CFLAGS += -DCONFIG_MSG_NUM=$(CONFIG_MSG_NUM)
|
|
||||||
#EXTRA_CFLAGS += -DCONFIG_TX_SKB_ORPHAN
|
|
||||||
endif
|
|
||||||
_PLATFORM_FILES += platform/platform_ops.o
|
|
||||||
OBJS += $(_PLATFORM_FILES)
|
OBJS += $(_PLATFORM_FILES)
|
||||||
|
|
||||||
########### CUSTOMER ################################
|
########### CUSTOMER ################################
|
||||||
@@ -830,7 +805,7 @@ endif
|
|||||||
|
|
||||||
ifneq ($(KERNELRELEASE),)
|
ifneq ($(KERNELRELEASE),)
|
||||||
########### COMMON #################################
|
########### COMMON #################################
|
||||||
include $(SOURCETREE)/common.mk
|
include $(src)/common.mk
|
||||||
|
|
||||||
EXTRA_CFLAGS += -DPHL_PLATFORM_LINUX
|
EXTRA_CFLAGS += -DPHL_PLATFORM_LINUX
|
||||||
EXTRA_CFLAGS += -DCONFIG_PHL_ARCH
|
EXTRA_CFLAGS += -DCONFIG_PHL_ARCH
|
||||||
@@ -851,10 +826,11 @@ ifeq ($(DIRTY_FOR_WORK), y)
|
|||||||
EXTRA_CFLAGS += -DDIRTY_FOR_WORK
|
EXTRA_CFLAGS += -DDIRTY_FOR_WORK
|
||||||
endif
|
endif
|
||||||
|
|
||||||
include $(SOURCETREE)/phl/phl.mk
|
include $(src)/phl/phl.mk
|
||||||
|
|
||||||
obj-m := $(MODULE_NAME).o
|
|
||||||
|
|
||||||
|
obj-$(CONFIG_RTL8852CE) := $(MODULE_NAME).o
|
||||||
|
obj-$(CONFIG_RTL8852CE) := $(MODULE_NAME).o
|
||||||
$(MODULE_NAME)-y = $(OBJS)
|
$(MODULE_NAME)-y = $(OBJS)
|
||||||
|
|
||||||
############# MEMORY MANAGMENT #############
|
############# MEMORY MANAGMENT #############
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ _CORE_FILES := core/rtw_fsm.o \
|
|||||||
_CORE_FILES += core/rtw_phl.o \
|
_CORE_FILES += core/rtw_phl.o \
|
||||||
core/rtw_phl_cmd.o
|
core/rtw_phl_cmd.o
|
||||||
|
|
||||||
EXTRA_CFLAGS += -I$(SOURCETREE)/core/crypto
|
EXTRA_CFLAGS += -I$(src)/core/crypto
|
||||||
_CORE_FILES += core/crypto/aes-internal.o \
|
_CORE_FILES += core/crypto/aes-internal.o \
|
||||||
core/crypto/aes-internal-enc.o \
|
core/crypto/aes-internal-enc.o \
|
||||||
core/crypto/aes-gcm.o \
|
core/crypto/aes-gcm.o \
|
||||||
|
|||||||
@@ -1487,12 +1487,13 @@ static const enum rtw_env_t _reg_info_to_env[] = {
|
|||||||
#define reg_info_to_env(reg_info) (((reg_info) >= CIS_6G_REG_NUM) ? _reg_info_to_env[CIS_6G_REG_NUM] : _reg_info_to_env[(reg_info)])
|
#define reg_info_to_env(reg_info) (((reg_info) >= CIS_6G_REG_NUM) ? _reg_info_to_env[CIS_6G_REG_NUM] : _reg_info_to_env[(reg_info)])
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void cis_scan_stat_clr(struct cis_scan_stat_t *stat)
|
static void cis_scan_stat_clr(struct cis_scan_stat_t *stat, bool lock)
|
||||||
{
|
{
|
||||||
_list *list, *head;
|
_list *list, *head;
|
||||||
struct cis_scan_stat_ent *ent;
|
struct cis_scan_stat_ent *ent;
|
||||||
|
|
||||||
_rtw_mutex_lock(&stat->lock);
|
if (lock)
|
||||||
|
_rtw_mutex_lock(&stat->lock);
|
||||||
|
|
||||||
head = &stat->ent;
|
head = &stat->ent;
|
||||||
list = get_next(head);
|
list = get_next(head);
|
||||||
@@ -1506,7 +1507,8 @@ static void cis_scan_stat_clr(struct cis_scan_stat_t *stat)
|
|||||||
stat->ent_num = 0;
|
stat->ent_num = 0;
|
||||||
CIS_SCAN_STAT_SET_MAJORITY(stat, NULL);
|
CIS_SCAN_STAT_SET_MAJORITY(stat, NULL);
|
||||||
|
|
||||||
_rtw_mutex_unlock(&stat->lock);
|
if (lock)
|
||||||
|
_rtw_mutex_unlock(&stat->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cis_scan_stat_add(struct cis_scan_stat_t *stat, const struct country_ie_slave_record *cisr)
|
static void cis_scan_stat_add(struct cis_scan_stat_t *stat, const struct country_ie_slave_record *cisr)
|
||||||
@@ -1559,12 +1561,12 @@ check_order:
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if CONFIG_80211D_ENV_BSS_MAJORITY
|
#if CONFIG_80211D_ENV_BSS_MAJORITY
|
||||||
static struct cis_scan_stat_ent *cis_scan_stat_update_majority(struct cis_scan_stat_t *stat, bool disable)
|
static void cis_scan_stat_update_majority(struct cis_scan_stat_t *stat)
|
||||||
{
|
{
|
||||||
_list *list, *head;
|
_list *list, *head;
|
||||||
struct cis_scan_stat_ent *ent, *m = NULL;
|
struct cis_scan_stat_ent *ent, *m = NULL;
|
||||||
|
|
||||||
if (stat->ent_num == 0 || disable)
|
if (stat->ent_num == 0)
|
||||||
goto update;
|
goto update;
|
||||||
|
|
||||||
head = &stat->ent;
|
head = &stat->ent;
|
||||||
@@ -1581,7 +1583,6 @@ static struct cis_scan_stat_ent *cis_scan_stat_update_majority(struct cis_scan_s
|
|||||||
|
|
||||||
update:
|
update:
|
||||||
CIS_SCAN_STAT_SET_MAJORITY(stat, m);
|
CIS_SCAN_STAT_SET_MAJORITY(stat, m);
|
||||||
return CIS_SCAN_STAT_GET_MAJORITY(stat);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1595,15 +1596,19 @@ static void cis_scan_stat_init(struct cis_scan_stat_t *stat)
|
|||||||
|
|
||||||
static void cis_scan_stat_deinit(struct cis_scan_stat_t *stat)
|
static void cis_scan_stat_deinit(struct cis_scan_stat_t *stat)
|
||||||
{
|
{
|
||||||
cis_scan_stat_clr(stat);
|
cis_scan_stat_clr(stat, true);
|
||||||
_rtw_mutex_free(&stat->lock);
|
_rtw_mutex_free(&stat->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dump_cis_scan_stat(void *sel, struct cis_scan_stat_t *stat)
|
static void dump_cis_scan_stat(void *sel, struct rf_ctl_t *rfctl)
|
||||||
{
|
{
|
||||||
|
struct cis_scan_stat_t *stat = &rfctl->cis_scan_stat;
|
||||||
_list *list, *head;
|
_list *list, *head;
|
||||||
struct cis_scan_stat_ent *ent;
|
struct cis_scan_stat_ent *ent;
|
||||||
|
|
||||||
|
RTW_PRINT_SEL(sel, "ENV_BSS (updated %u sec ago)\n"
|
||||||
|
, rtw_get_passing_time_ms(rfctl->cis_scan_last_complete_time) / 1000);
|
||||||
|
|
||||||
_rtw_mutex_lock(&stat->lock);
|
_rtw_mutex_lock(&stat->lock);
|
||||||
|
|
||||||
head = &stat->ent;
|
head = &stat->ent;
|
||||||
@@ -1612,7 +1617,7 @@ static void dump_cis_scan_stat(void *sel, struct cis_scan_stat_t *stat)
|
|||||||
ent = LIST_CONTAINOR(list, struct cis_scan_stat_ent, list);
|
ent = LIST_CONTAINOR(list, struct cis_scan_stat_ent, list);
|
||||||
list = get_next(list);
|
list = get_next(list);
|
||||||
RTW_PRINT_SEL(sel, "%c"ALPHA2_FMT" %u\n"
|
RTW_PRINT_SEL(sel, "%c"ALPHA2_FMT" %u\n"
|
||||||
, stat->majority == ent ? '*' : ' '
|
, RFCTL_GET_CIS_MAJORITY(rfctl) == ent ? '*' : ' '
|
||||||
, ALPHA2_ARG(ent->cisr.alpha2), ent->count);
|
, ALPHA2_ARG(ent->cisr.alpha2), ent->count);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1682,8 +1687,8 @@ void dump_country_ie_slave_records(void *sel, struct rf_ctl_t *rfctl, bool skip_
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (rfctl->cis_flags & CISF_ENV_BSS) {
|
if (rfctl->cis_flags & CISF_ENV_BSS) {
|
||||||
RTW_PRINT_SEL(sel, "\nENV_BSS\n");
|
RTW_PRINT_SEL(sel, "\n");
|
||||||
dump_cis_scan_stat(sel, &rfctl->cis_scan_stat);
|
dump_cis_scan_stat(sel, rfctl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2511,7 +2516,7 @@ static bool rtw_rfctl_update_extra_alpha2_req(struct rf_ctl_t *rfctl, const char
|
|||||||
|
|
||||||
static bool rtw_rfctl_extra_alpha2_req_needed(struct rf_ctl_t *rfctl)
|
static bool rtw_rfctl_extra_alpha2_req_needed(struct rf_ctl_t *rfctl)
|
||||||
{
|
{
|
||||||
if (CIS_SCAN_STAT_GET_MAJORITY(&rfctl->cis_scan_stat))
|
if (RFCTL_GET_CIS_MAJORITY(rfctl))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (rfctl->regd_src == REGD_SRC_RTK_PRIV) {
|
if (rfctl->regd_src == REGD_SRC_RTK_PRIV) {
|
||||||
@@ -3368,60 +3373,28 @@ static bool rtw_regd_req_list_add_country_ie_req_from_per_link_cisr(struct rf_ct
|
|||||||
return effected;
|
return effected;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool rtw_regd_req_list_add_country_ie_req_from_scanned_network_cisr(_adapter *adapter)
|
static bool rtw_regd_req_list_add_country_ie_req_from_scan_stat_cisr(struct rf_ctl_t *rfctl)
|
||||||
{
|
{
|
||||||
struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter);
|
|
||||||
struct mlme_priv *mlme = &adapter->mlmepriv;
|
|
||||||
_queue *queue = &mlme->scanned_queue;
|
|
||||||
_list *list, *head;
|
|
||||||
struct wlan_network *scanned;
|
|
||||||
bool effected = false;
|
|
||||||
struct cis_scan_stat_t *stat = &rfctl->cis_scan_stat;
|
struct cis_scan_stat_t *stat = &rfctl->cis_scan_stat;
|
||||||
#if CONFIG_80211D_ENV_BSS_MAJORITY
|
_list *list, *head;
|
||||||
struct cis_scan_stat_ent *majority;
|
struct cis_scan_stat_ent *ent;
|
||||||
#endif
|
bool effected = false;
|
||||||
|
|
||||||
_rtw_mutex_lock(&stat->lock);
|
_rtw_mutex_lock(&stat->lock);
|
||||||
|
|
||||||
_rtw_spinlock_bh(&queue->lock);
|
/* follow all ENV BSS */
|
||||||
|
head = &stat->ent;
|
||||||
/* loop scan queue for stat */
|
|
||||||
head = get_list_head(queue);
|
|
||||||
list = get_next(head);
|
list = get_next(head);
|
||||||
while (!rtw_end_of_queue_search(head, list)) {
|
while (!rtw_end_of_queue_search(head, list)) {
|
||||||
scanned = LIST_CONTAINOR(list, struct wlan_network, list);
|
ent = LIST_CONTAINOR(list, struct cis_scan_stat_ent, list);
|
||||||
list = get_next(list);
|
list = get_next(list);
|
||||||
|
|
||||||
if (scanned->cisr.status == COUNTRY_IE_SLAVE_NOCOUNTRY
|
if (ent->cisr.status == COUNTRY_IE_SLAVE_NOCOUNTRY
|
||||||
|| scanned->cisr.status == COUNTRY_IE_SLAVE_UNKNOWN)
|
|| ent->cisr.status == COUNTRY_IE_SLAVE_UNKNOWN)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
cis_scan_stat_add(stat, &scanned->cisr);
|
effected |= rtw_regd_req_list_add_country_ie_req(rfctl, &ent->cisr, false);
|
||||||
}
|
}
|
||||||
#if CONFIG_80211D_ENV_BSS_MAJORITY
|
|
||||||
majority = cis_scan_stat_update_majority(stat, !(rfctl->cis_flags & CISF_ENV_BSS_MAJ));
|
|
||||||
if (majority) {
|
|
||||||
/* single majority exist, follow */
|
|
||||||
effected |= rtw_regd_req_list_add_country_ie_req(rfctl, &majority->cisr, false);
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
/* follow all ENV BSS */
|
|
||||||
head = get_list_head(queue);
|
|
||||||
list = get_next(head);
|
|
||||||
while (!rtw_end_of_queue_search(head, list)) {
|
|
||||||
scanned = LIST_CONTAINOR(list, struct wlan_network, list);
|
|
||||||
list = get_next(list);
|
|
||||||
|
|
||||||
if (scanned->cisr.status == COUNTRY_IE_SLAVE_NOCOUNTRY
|
|
||||||
|| scanned->cisr.status == COUNTRY_IE_SLAVE_UNKNOWN)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
effected |= rtw_regd_req_list_add_country_ie_req(rfctl, &scanned->cisr, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_rtw_spinunlock_bh(&queue->lock);
|
|
||||||
|
|
||||||
_rtw_mutex_unlock(&stat->lock);
|
_rtw_mutex_unlock(&stat->lock);
|
||||||
|
|
||||||
@@ -3500,15 +3473,16 @@ static bool rtw_chplan_rtk_priv_req_prehdl_country_ie(_adapter *adapter, struct
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (rfctl->regd_src == REGD_SRC_RTK_PRIV) {
|
if (rfctl->regd_src == REGD_SRC_RTK_PRIV) {
|
||||||
cis_scan_stat_clr(&rfctl->cis_scan_stat);
|
|
||||||
|
|
||||||
rtw_regd_req_list_clear_ref_cnt_by_inr(rfctl, RTW_REGD_SET_BY_COUNTRY_IE);
|
rtw_regd_req_list_clear_ref_cnt_by_inr(rfctl, RTW_REGD_SET_BY_COUNTRY_IE);
|
||||||
|
|
||||||
if (rfctl->cis_enabled) {
|
if (rfctl->cis_enabled) {
|
||||||
if (rfctl->cis_flags & CISF_ENV_BSS)
|
if (RFCTL_GET_CIS_MAJORITY(rfctl))
|
||||||
effected |= rtw_regd_req_list_add_country_ie_req_from_scanned_network_cisr(adapter);
|
effected |= rtw_regd_req_list_add_country_ie_req(rfctl, &RFCTL_GET_CIS_MAJORITY(rfctl)->cisr, false);
|
||||||
if (!CIS_SCAN_STAT_GET_MAJORITY(&rfctl->cis_scan_stat))
|
else {
|
||||||
effected |= rtw_regd_req_list_add_country_ie_req_from_per_link_cisr(rfctl);
|
effected |= rtw_regd_req_list_add_country_ie_req_from_per_link_cisr(rfctl);
|
||||||
|
if (rfctl->cis_flags & CISF_ENV_BSS)
|
||||||
|
effected |= rtw_regd_req_list_add_country_ie_req_from_scan_stat_cisr(rfctl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
effected |= rtw_regd_req_list_clear_zero_ref_req_by_inr(rfctl, RTW_REGD_SET_BY_COUNTRY_IE);
|
effected |= rtw_regd_req_list_clear_zero_ref_req_by_inr(rfctl, RTW_REGD_SET_BY_COUNTRY_IE);
|
||||||
@@ -5010,11 +4984,52 @@ void rtw_cis_scan_idle_check(struct rf_ctl_t *rfctl)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool rtw_cis_scan_stat_update(_adapter *adapter)
|
||||||
|
{
|
||||||
|
struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter);
|
||||||
|
struct mlme_priv *mlme = &adapter->mlmepriv;
|
||||||
|
_queue *queue = &mlme->scanned_queue;
|
||||||
|
_list *list, *head;
|
||||||
|
struct wlan_network *scanned;
|
||||||
|
bool effected = false;
|
||||||
|
struct cis_scan_stat_t *stat = &rfctl->cis_scan_stat;
|
||||||
|
|
||||||
|
_rtw_mutex_lock(&stat->lock);
|
||||||
|
|
||||||
|
cis_scan_stat_clr(stat, false);
|
||||||
|
|
||||||
|
_rtw_spinlock_bh(&queue->lock);
|
||||||
|
|
||||||
|
/* loop scan queue for stat */
|
||||||
|
head = get_list_head(queue);
|
||||||
|
list = get_next(head);
|
||||||
|
while (!rtw_end_of_queue_search(head, list)) {
|
||||||
|
scanned = LIST_CONTAINOR(list, struct wlan_network, list);
|
||||||
|
list = get_next(list);
|
||||||
|
|
||||||
|
if (scanned->cisr.status == COUNTRY_IE_SLAVE_NOCOUNTRY
|
||||||
|
|| scanned->cisr.status == COUNTRY_IE_SLAVE_UNKNOWN)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
cis_scan_stat_add(stat, &scanned->cisr);
|
||||||
|
}
|
||||||
|
#if CONFIG_80211D_ENV_BSS_MAJORITY
|
||||||
|
cis_scan_stat_update_majority(stat);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
_rtw_spinunlock_bh(&queue->lock);
|
||||||
|
|
||||||
|
_rtw_mutex_unlock(&stat->lock);
|
||||||
|
|
||||||
|
return effected;
|
||||||
|
}
|
||||||
|
|
||||||
void rtw_cis_scan_complete_hdl(_adapter *adapter)
|
void rtw_cis_scan_complete_hdl(_adapter *adapter)
|
||||||
{
|
{
|
||||||
struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter);
|
struct rf_ctl_t *rfctl = adapter_to_rfctl(adapter);
|
||||||
|
|
||||||
if (rfctl->cis_enabled && (rfctl->cis_flags & CISF_ENV_BSS)) {
|
if (rfctl->cis_enabled && (rfctl->cis_flags & CISF_ENV_BSS)) {
|
||||||
|
rtw_cis_scan_stat_update(adapter);
|
||||||
rfctl->cis_scan_last_complete_time = rtw_get_current_time();
|
rfctl->cis_scan_last_complete_time = rtw_get_current_time();
|
||||||
|
|
||||||
/* 802.11d scan has done complete, trigger regulation selection */
|
/* 802.11d scan has done complete, trigger regulation selection */
|
||||||
|
|||||||
@@ -502,7 +502,7 @@ u8 rtw_ies_update_ie(u8 *ies, uint *ies_len, uint ies_offset, u8 eid, const u8 *
|
|||||||
search_len = *ies_len - ies_offset;
|
search_len = *ies_len - ies_offset;
|
||||||
|
|
||||||
target_ie = rtw_get_ie(start, eid, &target_ielen, search_len);
|
target_ie = rtw_get_ie(start, eid, &target_ielen, search_len);
|
||||||
if (target_ie && target_ielen) {
|
if (target_ie) {
|
||||||
if (target_ielen != content_len) {
|
if (target_ielen != content_len) {
|
||||||
remain_ies = target_ie + 2 + target_ielen;
|
remain_ies = target_ie + 2 + target_ielen;
|
||||||
remain_len = search_len - (remain_ies - start);
|
remain_len = search_len - (remain_ies - start);
|
||||||
|
|||||||
@@ -177,8 +177,8 @@ sint _rtw_init_mlme_priv(_adapter *padapter)
|
|||||||
#else
|
#else
|
||||||
#define RTW_ROAM_SCAN_RESULT_EXP_MS (10*1000)
|
#define RTW_ROAM_SCAN_RESULT_EXP_MS (10*1000)
|
||||||
#endif
|
#endif
|
||||||
#define RTW_ROAM_SCAN_INTERVAL (2) /* 5*(2 second)*/
|
#define RTW_ROAM_SCAN_INTERVAL (5) /* 5*(2 second)*/
|
||||||
#define RTW_ROAM_RSSI_THRESHOLD 45
|
#define RTW_ROAM_RSSI_THRESHOLD 30
|
||||||
|
|
||||||
#define RTW_ROAM_RSSI_IDLE_TH RTW_ROAM_RSSI_THRESHOLD
|
#define RTW_ROAM_RSSI_IDLE_TH RTW_ROAM_RSSI_THRESHOLD
|
||||||
#define RTW_ROAM_RSSI_BUSY_TH RTW_ROAM_RSSI_THRESHOLD + 5
|
#define RTW_ROAM_RSSI_BUSY_TH RTW_ROAM_RSSI_THRESHOLD + 5
|
||||||
|
|||||||
@@ -5797,9 +5797,16 @@ u8 *rtw_build_probersp_ies(_adapter *padapter, struct _ADAPTER_LINK *padapter_li
|
|||||||
u8 *ssid_ie;
|
u8 *ssid_ie;
|
||||||
sint ssid_ielen;
|
sint ssid_ielen;
|
||||||
sint ssid_ielen_diff;
|
sint ssid_ielen_diff;
|
||||||
u8 buf[MAX_IE_SZ];
|
u8 *buf;
|
||||||
u8 *ies = pframe_start;
|
u8 *ies = pframe_start;
|
||||||
|
|
||||||
|
buf = rtw_zmalloc(MAX_IE_SZ);
|
||||||
|
if(!buf) {
|
||||||
|
RTW_ERR(FUNC_ADPT_FMT" buffer alloc fail\n",
|
||||||
|
FUNC_ADPT_ARG(padapter));
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
ssid_ie = rtw_get_ie(ies + _FIXED_IE_LENGTH_, _SSID_IE_, &ssid_ielen,
|
ssid_ie = rtw_get_ie(ies + _FIXED_IE_LENGTH_, _SSID_IE_, &ssid_ielen,
|
||||||
(pframe - ies) - _FIXED_IE_LENGTH_);
|
(pframe - ies) - _FIXED_IE_LENGTH_);
|
||||||
|
|
||||||
@@ -5824,6 +5831,7 @@ u8 *rtw_build_probersp_ies(_adapter *padapter, struct _ADAPTER_LINK *padapter_li
|
|||||||
pframe += ssid_ielen_diff;
|
pframe += ssid_ielen_diff;
|
||||||
pattrib->pktlen += ssid_ielen_diff;
|
pattrib->pktlen += ssid_ielen_diff;
|
||||||
}
|
}
|
||||||
|
rtw_mfree((void *)buf, MAX_IE_SZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_APPEND_VENDOR_IE_ENABLE
|
#ifdef CONFIG_APPEND_VENDOR_IE_ENABLE
|
||||||
@@ -9738,7 +9746,7 @@ void report_survey_event(_adapter *padapter, union recv_frame *precv_frame)
|
|||||||
struct cmd_priv *pcmdpriv;
|
struct cmd_priv *pcmdpriv;
|
||||||
struct survey_event *psurvey_evt;
|
struct survey_event *psurvey_evt;
|
||||||
#else
|
#else
|
||||||
struct survey_event psurvey_evt;
|
struct survey_event *psurvey_evt;
|
||||||
#endif
|
#endif
|
||||||
WLAN_BSSID_EX *bssid;
|
WLAN_BSSID_EX *bssid;
|
||||||
struct mlme_ext_priv *pmlmeext;
|
struct mlme_ext_priv *pmlmeext;
|
||||||
@@ -9790,13 +9798,21 @@ void report_survey_event(_adapter *padapter, union recv_frame *precv_frame)
|
|||||||
psurvey_evt = (struct survey_event *)(pevtcmd + sizeof(struct rtw_evt_header));
|
psurvey_evt = (struct survey_event *)(pevtcmd + sizeof(struct rtw_evt_header));
|
||||||
bssid = (WLAN_BSSID_EX *)&psurvey_evt->bss;
|
bssid = (WLAN_BSSID_EX *)&psurvey_evt->bss;
|
||||||
#else
|
#else
|
||||||
bssid = (WLAN_BSSID_EX *)&psurvey_evt.bss;
|
psurvey_evt = (struct survey_event *)rtw_zmalloc(sizeof(struct survey_event));
|
||||||
|
if (!psurvey_evt) {
|
||||||
|
RTW_ERR(FUNC_ADPT_FMT" buffer alloc fail\n", FUNC_ADPT_ARG(padapter));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bssid = (WLAN_BSSID_EX *)&psurvey_evt->bss;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (collect_bss_info(padapter, precv_frame, bssid) == _FAIL) {
|
if (collect_bss_info(padapter, precv_frame, bssid) == _FAIL) {
|
||||||
#ifdef CONFIG_SCAN_REPORT_ENQUEUE
|
#ifdef CONFIG_SCAN_REPORT_ENQUEUE
|
||||||
rtw_mfree((u8 *)pcmd_obj, sizeof(struct cmd_obj));
|
rtw_mfree((u8 *)pcmd_obj, sizeof(struct cmd_obj));
|
||||||
rtw_mfree((u8 *)pevtcmd, cmdsz);
|
rtw_mfree((u8 *)pevtcmd, cmdsz);
|
||||||
|
#else
|
||||||
|
rtw_mfree((void *)psurvey_evt, sizeof(struct survey_event));
|
||||||
#endif
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -9839,6 +9855,7 @@ void report_survey_event(_adapter *padapter, union recv_frame *precv_frame)
|
|||||||
rtw_enqueue_cmd(pcmdpriv, pcmd_obj);
|
rtw_enqueue_cmd(pcmdpriv, pcmd_obj);
|
||||||
#else
|
#else
|
||||||
rtw_survey_event_callback(padapter, (u8 *)bssid);
|
rtw_survey_event_callback(padapter, (u8 *)bssid);
|
||||||
|
rtw_mfree((void *)psurvey_evt, sizeof(struct survey_event));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pmlmeext->sitesurvey_res.bss_cnt++;
|
pmlmeext->sitesurvey_res.bss_cnt++;
|
||||||
|
|||||||
@@ -559,7 +559,7 @@ static void init_mp_data(_adapter *padapter)
|
|||||||
|
|
||||||
u32 mp_join(_adapter *padapter, u8 mode)
|
u32 mp_join(_adapter *padapter, u8 mode)
|
||||||
{
|
{
|
||||||
WLAN_BSSID_EX bssid;
|
WLAN_BSSID_EX *bssid;
|
||||||
struct sta_info *psta;
|
struct sta_info *psta;
|
||||||
u32 length;
|
u32 length;
|
||||||
s32 res = _SUCCESS;
|
s32 res = _SUCCESS;
|
||||||
@@ -577,31 +577,37 @@ u32 mp_join(_adapter *padapter, u8 mode)
|
|||||||
void *phl = GET_PHL_INFO(adapter_to_dvobj(padapter));
|
void *phl = GET_PHL_INFO(adapter_to_dvobj(padapter));
|
||||||
|
|
||||||
/* 1. initialize a new WLAN_BSSID_EX */
|
/* 1. initialize a new WLAN_BSSID_EX */
|
||||||
_rtw_memset(&bssid, 0, sizeof(WLAN_BSSID_EX));
|
bssid = (WLAN_BSSID_EX *)rtw_zmalloc(sizeof(WLAN_BSSID_EX));
|
||||||
|
if (!bssid) {
|
||||||
|
RTW_ERR(FUNC_ADPT_FMT" buffer alloc fail\n", FUNC_ADPT_ARG(padapter));
|
||||||
|
res = _FAIL;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
RTW_INFO("%s ,pmppriv->network_macaddr=%x %x %x %x %x %x\n", __func__,
|
RTW_INFO("%s ,pmppriv->network_macaddr=%x %x %x %x %x %x\n", __func__,
|
||||||
pmppriv->network_macaddr[0], pmppriv->network_macaddr[1], pmppriv->network_macaddr[2], pmppriv->network_macaddr[3], pmppriv->network_macaddr[4],
|
pmppriv->network_macaddr[0], pmppriv->network_macaddr[1], pmppriv->network_macaddr[2], pmppriv->network_macaddr[3], pmppriv->network_macaddr[4],
|
||||||
pmppriv->network_macaddr[5]);
|
pmppriv->network_macaddr[5]);
|
||||||
_rtw_memcpy(bssid.MacAddress, pmppriv->network_macaddr, ETH_ALEN);
|
_rtw_memcpy(bssid->MacAddress, pmppriv->network_macaddr, ETH_ALEN);
|
||||||
|
|
||||||
if (mode == WIFI_FW_ADHOC_STATE) {
|
if (mode == WIFI_FW_ADHOC_STATE) {
|
||||||
bssid.Ssid.SsidLength = strlen("mp_pseudo_adhoc");
|
bssid->Ssid.SsidLength = strlen("mp_pseudo_adhoc");
|
||||||
_rtw_memcpy(bssid.Ssid.Ssid, (u8 *)"mp_pseudo_adhoc", bssid.Ssid.SsidLength);
|
_rtw_memcpy(bssid->Ssid.Ssid, (u8 *)"mp_pseudo_adhoc", bssid->Ssid.SsidLength);
|
||||||
bssid.InfrastructureMode = Ndis802_11IBSS;
|
bssid->InfrastructureMode = Ndis802_11IBSS;
|
||||||
bssid.IELength = 0;
|
bssid->IELength = 0;
|
||||||
bssid.Configuration.DSConfig = pmppriv->channel;
|
bssid->Configuration.DSConfig = pmppriv->channel;
|
||||||
|
|
||||||
} else if (mode == WIFI_FW_STATION_STATE) {
|
} else if (mode == WIFI_FW_STATION_STATE) {
|
||||||
bssid.Ssid.SsidLength = strlen("mp_pseudo_STATION");
|
bssid->Ssid.SsidLength = strlen("mp_pseudo_STATION");
|
||||||
_rtw_memcpy(bssid.Ssid.Ssid, (u8 *)"mp_pseudo_STATION", bssid.Ssid.SsidLength);
|
_rtw_memcpy(bssid->Ssid.Ssid, (u8 *)"mp_pseudo_STATION", bssid->Ssid.SsidLength);
|
||||||
bssid.InfrastructureMode = Ndis802_11Infrastructure;
|
bssid->InfrastructureMode = Ndis802_11Infrastructure;
|
||||||
bssid.IELength = 0;
|
bssid->IELength = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
length = get_WLAN_BSSID_EX_sz(&bssid);
|
length = get_WLAN_BSSID_EX_sz(bssid);
|
||||||
if (length % 4)
|
if (length % 4)
|
||||||
bssid.Length = ((length >> 2) + 1) << 2; /* round up to multiple of 4 bytes. */
|
bssid->Length = ((length >> 2) + 1) << 2; /* round up to multiple of 4 bytes. */
|
||||||
else
|
else
|
||||||
bssid.Length = length;
|
bssid->Length = length;
|
||||||
|
|
||||||
_rtw_spinlock_bh(&pmlmepriv->lock);
|
_rtw_spinlock_bh(&pmlmepriv->lock);
|
||||||
|
|
||||||
@@ -642,14 +648,14 @@ u32 mp_join(_adapter *padapter, u8 mode)
|
|||||||
if (psta)
|
if (psta)
|
||||||
rtw_free_mld_stainfo(padapter, psta->phl_sta->mld);
|
rtw_free_mld_stainfo(padapter, psta->phl_sta->mld);
|
||||||
/* ToDo CONFIG_RTW_MLD: MLD MAC Address */
|
/* ToDo CONFIG_RTW_MLD: MLD MAC Address */
|
||||||
pmld = rtw_phl_alloc_mld(GET_PHL_INFO(adapter_to_dvobj(padapter)), padapter->phl_role, bssid.MacAddress, DTYPE);
|
pmld = rtw_phl_alloc_mld(GET_PHL_INFO(adapter_to_dvobj(padapter)), padapter->phl_role, bssid->MacAddress, DTYPE);
|
||||||
if (pmld == NULL) {
|
if (pmld == NULL) {
|
||||||
init_fwstate(pmlmepriv, pmppriv->prev_fw_state);
|
init_fwstate(pmlmepriv, pmppriv->prev_fw_state);
|
||||||
res = _FAIL;
|
res = _FAIL;
|
||||||
goto end_of_mp_start_test;
|
goto end_of_mp_start_test;
|
||||||
}
|
}
|
||||||
/* main_id is don't care for self */
|
/* main_id is don't care for self */
|
||||||
psta = rtw_alloc_stainfo(&padapter->stapriv, bssid.MacAddress, DTYPE, 0, padapter_link->wrlink->id, PHL_CMD_DIRECTLY);
|
psta = rtw_alloc_stainfo(&padapter->stapriv, bssid->MacAddress, DTYPE, 0, padapter_link->wrlink->id, PHL_CMD_DIRECTLY);
|
||||||
if (psta == NULL) {
|
if (psta == NULL) {
|
||||||
/*pmlmepriv->fw_state = pmppriv->prev_fw_state;*/
|
/*pmlmepriv->fw_state = pmppriv->prev_fw_state;*/
|
||||||
init_fwstate(pmlmepriv, pmppriv->prev_fw_state);
|
init_fwstate(pmlmepriv, pmppriv->prev_fw_state);
|
||||||
@@ -664,7 +670,7 @@ u32 mp_join(_adapter *padapter, u8 mode)
|
|||||||
tgt_network->join_res = 1;
|
tgt_network->join_res = 1;
|
||||||
tgt_network->aid = psta->phl_sta->aid = 1;
|
tgt_network->aid = psta->phl_sta->aid = 1;
|
||||||
|
|
||||||
_rtw_memcpy(&padapter->registrypriv.dev_network, &bssid, length);
|
_rtw_memcpy(&padapter->registrypriv.dev_network, bssid, length);
|
||||||
rtw_update_registrypriv_dev_network(padapter);
|
rtw_update_registrypriv_dev_network(padapter);
|
||||||
_rtw_memcpy(&tgt_network->network, &padapter->registrypriv.dev_network, padapter->registrypriv.dev_network.Length);
|
_rtw_memcpy(&tgt_network->network, &padapter->registrypriv.dev_network, padapter->registrypriv.dev_network.Length);
|
||||||
_rtw_memcpy(pnetwork, &padapter->registrypriv.dev_network, padapter->registrypriv.dev_network.Length);
|
_rtw_memcpy(pnetwork, &padapter->registrypriv.dev_network, padapter->registrypriv.dev_network.Length);
|
||||||
@@ -693,6 +699,7 @@ end_of_mp_start_test:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rtw_mfree((void *)bssid, sizeof(WLAN_BSSID_EX));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
/* This function initializes the DUT to the MP test mode */
|
/* This function initializes the DUT to the MP test mode */
|
||||||
|
|||||||
@@ -1258,126 +1258,316 @@ static inline void rtw_gen_new_bssid(const u8 *bssid, u8 max_bssid_ind,
|
|||||||
/*RTW_INFO("%s, %02x,%02x,%02x,%02x,%02x,%02x \n", __func__, new_bssid[0], new_bssid[1], new_bssid[2], new_bssid[3], new_bssid[4], new_bssid[5]);*/
|
/*RTW_INFO("%s, %02x,%02x,%02x,%02x,%02x,%02x \n", __func__, new_bssid[0], new_bssid[1], new_bssid[2], new_bssid[3], new_bssid[4], new_bssid[5]);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_mbssid_network(_adapter *padapter, WLAN_BSSID_EX *ref_bss)
|
static inline u8 rtw_find_nt_bssid(WLAN_BSSID_EX *ref_bss, u16 *mbssid_addr,
|
||||||
|
u16 *mbssid_len, u16 *mbssid_total_len)
|
||||||
|
{
|
||||||
|
u16 shift = 0;
|
||||||
|
u8 mbssid_count = 0;
|
||||||
|
sint mbssid_len_tmp = 0;
|
||||||
|
u8 *mbssid_ie;
|
||||||
|
|
||||||
|
while (1) {
|
||||||
|
mbssid_ie = rtw_get_ie(ref_bss->IEs + _BEACON_IE_OFFSET_ + shift,
|
||||||
|
WLAN_EID_MULTIPLE_BSSID,
|
||||||
|
&mbssid_len_tmp,
|
||||||
|
(ref_bss->IELength - _BEACON_IE_OFFSET_ - shift));
|
||||||
|
RTW_DBG("%s, mbssid_len_tmp=%d\n", __func__, mbssid_len_tmp);
|
||||||
|
if (!mbssid_ie || mbssid_count >= MBSSID_MAX_CNT) {
|
||||||
|
RTW_DBG("%s, mbssid_ie is NULL or mbssid_count exceeds \n", __func__);
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
/*RTW_DBG("%s, ref_bss->IEs = %llx \n", __func__, ref_bss->IEs);*/
|
||||||
|
/*RTW_DBG("%s, mbssid_ie = %llx \n", __func__, mbssid_ie);*/
|
||||||
|
mbssid_addr[mbssid_count] = mbssid_ie - ref_bss->IEs;
|
||||||
|
RTW_DBG("%s, mbssid_addr=%d\n", __func__, mbssid_addr[mbssid_count]);
|
||||||
|
shift = mbssid_ie - ref_bss->IEs - _BEACON_IE_OFFSET_ + mbssid_len_tmp + 2;
|
||||||
|
RTW_DBG("%s, shift=%d\n", __func__, shift);
|
||||||
|
mbssid_len[mbssid_count] = mbssid_len_tmp;
|
||||||
|
mbssid_count++;
|
||||||
|
*mbssid_total_len = *mbssid_total_len + mbssid_len_tmp + 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return mbssid_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void rtw_gen_pure_ref_bss(WLAN_BSSID_EX *prbss, WLAN_BSSID_EX *ref_bss,
|
||||||
|
u16 *mbssid_addr, u16 mbssid_total_len)
|
||||||
|
{
|
||||||
|
_rtw_memcpy(prbss, ref_bss, sizeof(WLAN_BSSID_EX));
|
||||||
|
_rtw_memset(prbss->IEs, 0, MAX_IE_SZ);
|
||||||
|
|
||||||
|
/* cpy the remaining ie before mbssid */
|
||||||
|
_rtw_memcpy(prbss->IEs, ref_bss->IEs, mbssid_addr[0]);
|
||||||
|
|
||||||
|
/* cpy the remaining ie */
|
||||||
|
_rtw_memcpy(prbss->IEs + mbssid_addr[0],
|
||||||
|
ref_bss->IEs + mbssid_addr[0] + mbssid_total_len,
|
||||||
|
ref_bss->IELength - mbssid_total_len - mbssid_addr[0]);
|
||||||
|
|
||||||
|
prbss->IELength = ref_bss->IELength - mbssid_total_len;
|
||||||
|
RTW_DBG_DUMP("A ref_bss->IEs: ", (const u8 *)ref_bss->IEs, ref_bss->IELength);
|
||||||
|
RTW_DBG_DUMP("B prbss->IEs: ", (const u8 *)prbss->IEs, prbss->IELength);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void rtw_update_ntbss_ie(WLAN_BSSID_EX *ntbss, PNDIS_802_11_VARIABLE_IEs sub_pie)
|
||||||
|
{
|
||||||
|
RTW_DBG("%s, sub_pie->Length=%d\n", __func__, sub_pie->Length);
|
||||||
|
RTW_DBG_DUMP("WLAN_EID: ", (const u8 *)sub_pie->data, sub_pie->Length);
|
||||||
|
RTW_DBG_DUMP("B ntbss->IEs: ", (const u8 *)ntbss->IEs, ntbss->IELength);
|
||||||
|
|
||||||
|
/* update ie in ntbss, or append to the end */
|
||||||
|
if (!rtw_ies_update_ie(ntbss->IEs, &ntbss->IELength,
|
||||||
|
_BEACON_IE_OFFSET_, sub_pie->ElementID,
|
||||||
|
sub_pie->data, sub_pie->Length)) {
|
||||||
|
|
||||||
|
_rtw_memcpy(ntbss->IEs + ntbss->IELength,
|
||||||
|
&sub_pie->ElementID, sub_pie->Length + 2);
|
||||||
|
ntbss->IELength = ntbss->IELength + sub_pie->Length + 2;
|
||||||
|
|
||||||
|
}
|
||||||
|
RTW_DBG_DUMP("C ntbss->IEs: ", (const u8 *)ntbss->IEs, ntbss->IELength);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void rtw_update_ntbss_ext_ie(WLAN_BSSID_EX *ntbss, PNDIS_802_11_VARIABLE_IEs sub_pie)
|
||||||
|
{
|
||||||
|
u8 i, j;
|
||||||
|
|
||||||
|
RTW_DBG_DUMP("WLAN_EID_EXTENSION: ", (const u8 *)sub_pie->data, sub_pie->Length);
|
||||||
|
RTW_DBG_DUMP("B ntbss->IEs: ", (const u8 *)ntbss->IEs, ntbss->IELength);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove non inheritance ie
|
||||||
|
* | Element ID extension | Ext. tag length | Ext. tag number: Non-Inherence|
|
||||||
|
* | Element ID List (Length, Element ID 1~n)|
|
||||||
|
* | Element ID Extension List (Length, Element ID Extension 1~n)|
|
||||||
|
* Note: The minimum Ext. tag length is 3 (Length, 0, 0)
|
||||||
|
*/
|
||||||
|
if (sub_pie->data[0] == WLAN_EID_EXT_NON_INHERITANCE && sub_pie->Length > 3) {
|
||||||
|
|
||||||
|
for (i = 1; i <= sub_pie->data[1]; i++)
|
||||||
|
rtw_ies_remove_ie(ntbss->IEs, &ntbss->IELength, _BEACON_IE_OFFSET_,
|
||||||
|
sub_pie->data[1 + i], NULL, 0);
|
||||||
|
for (j = 1; j <= sub_pie->data[1 + i]; j++)
|
||||||
|
rtw_ies_remove_ie(ntbss->IEs, &ntbss->IELength, _BEACON_IE_OFFSET_,
|
||||||
|
WLAN_EID_EXTENSION, &sub_pie->data[1 + i + j], 1);
|
||||||
|
|
||||||
|
/* update ext ie in ntbss, or append to the end */
|
||||||
|
} else if (!rtw_ies_update_ie_ex(ntbss->IEs, &ntbss->IELength,
|
||||||
|
_BEACON_IE_OFFSET_, sub_pie->data[0],
|
||||||
|
&sub_pie->ElementID, sub_pie->Length + 2)) {
|
||||||
|
|
||||||
|
_rtw_memcpy(ntbss->IEs + ntbss->IELength,
|
||||||
|
&sub_pie->ElementID, sub_pie->Length + 2);
|
||||||
|
ntbss->IELength = ntbss->IELength + sub_pie->Length + 2;
|
||||||
|
|
||||||
|
}
|
||||||
|
RTW_DBG_DUMP("C ntbss->IEs: ", (const u8 *)ntbss->IEs, ntbss->IELength);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void rtw_update_ntbss_vendor_ie(WLAN_BSSID_EX *ntbss, PNDIS_802_11_VARIABLE_IEs sub_pie)
|
||||||
|
{
|
||||||
|
RTW_DBG_DUMP("WLAN_EID_VENDOR_SPECIFIC: ", (const u8 *)sub_pie->data, sub_pie->Length);
|
||||||
|
RTW_DBG_DUMP("B ntbss->IEs: ", (const u8 *)ntbss->IEs, ntbss->IELength);
|
||||||
|
|
||||||
|
/* update wmm ie and oui ie in ntbss */
|
||||||
|
if (RTW_GET_BE24(sub_pie->data) == OUI_MICROSOFT)
|
||||||
|
rtw_ies_remove_ie(ntbss->IEs, &ntbss->IELength, _BEACON_IE_OFFSET_,
|
||||||
|
WLAN_EID_VENDOR_SPECIFIC, sub_pie->data, 4);
|
||||||
|
else
|
||||||
|
rtw_ies_remove_ie(ntbss->IEs, &ntbss->IELength, _BEACON_IE_OFFSET_,
|
||||||
|
WLAN_EID_VENDOR_SPECIFIC, sub_pie->data, sub_pie->Length);
|
||||||
|
|
||||||
|
_rtw_memcpy(ntbss->IEs + ntbss->IELength, &sub_pie->ElementID, sub_pie->Length + 2);
|
||||||
|
ntbss->IELength = ntbss->IELength + sub_pie->Length + 2;
|
||||||
|
RTW_DBG_DUMP("C ntbss->IEs: ", (const u8 *)ntbss->IEs, ntbss->IELength);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline u8 __rtw_gen_ntbss(_adapter *padapter, WLAN_BSSID_EX *prbss, WLAN_BSSID_EX *ref_bss,
|
||||||
|
WLAN_BSSID_EX **ntbss, PNDIS_802_11_VARIABLE_IEs pIE, u8 max_bssid_indicator)
|
||||||
{
|
{
|
||||||
WLAN_BSSID_EX *pbss;
|
|
||||||
u32 sub_ies_len;
|
u32 sub_ies_len;
|
||||||
u8 *mbssid_ie_ptr = NULL;
|
int j;
|
||||||
PNDIS_802_11_VARIABLE_IEs pIE, sub_pie;
|
PNDIS_802_11_VARIABLE_IEs sub_pie;
|
||||||
u8 max_bssid_indicator;
|
|
||||||
int i,j;
|
|
||||||
u8* mbssid_ie;
|
|
||||||
sint mbssid_len;
|
|
||||||
u8 mbssid_index;
|
|
||||||
u8 copy_ie_offset;
|
|
||||||
u32 copy_ie_len = 0;
|
u32 copy_ie_len = 0;
|
||||||
|
u8 copy_ie_offset;
|
||||||
|
u8 mbssid_index;
|
||||||
struct wlan_network *pnetwork = NULL;
|
struct wlan_network *pnetwork = NULL;
|
||||||
struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
|
struct mlme_priv *pmlmepriv = &(padapter->mlmepriv);
|
||||||
|
|
||||||
mbssid_ie = rtw_get_ie(ref_bss->IEs + _BEACON_IE_OFFSET_
|
sub_ies_len = pIE->Length;
|
||||||
, WLAN_EID_MULTIPLE_BSSID
|
|
||||||
, &mbssid_len
|
RTW_DBG("%s, sub_ies_len=%d\n", __func__, sub_ies_len);
|
||||||
, (ref_bss->IELength- _BEACON_IE_OFFSET_));
|
for (j = 0; j + 1 < sub_ies_len;) {
|
||||||
if (!mbssid_ie)
|
sub_pie = (PNDIS_802_11_VARIABLE_IEs)(pIE->data + j);
|
||||||
return;
|
RTW_DBG("%s, sub_pie->ElementID=%d\n", __func__, sub_pie->ElementID);
|
||||||
#if 0
|
switch (sub_pie->ElementID) {
|
||||||
else
|
case WLAN_EID_NON_TX_BSSID_CAP:
|
||||||
RTW_PRINT_DUMP("mbssid_ie: ", (const u8 *)mbssid_ie, mbssid_len);
|
/* with mbssid and need to add_network */
|
||||||
|
*ntbss = (WLAN_BSSID_EX *)rtw_zmalloc(sizeof(WLAN_BSSID_EX));
|
||||||
|
if (!*ntbss)
|
||||||
|
return _FALSE;
|
||||||
|
|
||||||
|
_rtw_memcpy(*ntbss, prbss, sizeof(WLAN_BSSID_EX));
|
||||||
|
_rtw_memset((*ntbss)->IEs, 0, MAX_IE_SZ);
|
||||||
|
copy_ie_len = _TIMESTAMP_ + _BEACON_ITERVAL_;
|
||||||
|
_rtw_memcpy((*ntbss)->IEs, prbss->IEs, copy_ie_len);
|
||||||
|
(*ntbss)->is_mbssid = _TRUE;
|
||||||
|
|
||||||
|
RTW_DBG_DUMP("B ntbss->IEs: ", (const u8 *)(*ntbss)->IEs, (*ntbss)->IELength);
|
||||||
|
RTW_DBG("%s, sub_pie->Length=%d\n", __func__, sub_pie->Length);
|
||||||
|
RTW_DBG_DUMP("WLAN_EID_NON_TX_BSSID_CAP: ", (const u8 *)sub_pie->data, sub_pie->Length);
|
||||||
|
copy_ie_offset = _TIMESTAMP_ + _BEACON_ITERVAL_;
|
||||||
|
_rtw_memcpy((*ntbss)->IEs + copy_ie_offset, sub_pie->data, sub_pie->Length);
|
||||||
|
copy_ie_offset = copy_ie_offset + _CAPABILITY_;
|
||||||
|
_rtw_memcpy((*ntbss)->IEs + copy_ie_offset, prbss->IEs + copy_ie_offset, prbss->IELength - copy_ie_offset);
|
||||||
|
RTW_DBG_DUMP("C ntbss->IEs: ", (const u8 *)(*ntbss)->IEs, (*ntbss)->IELength);
|
||||||
|
break;
|
||||||
|
case WLAN_EID_SSID:
|
||||||
|
RTW_DBG_DUMP("WLAN_EID_SSID: ", (const u8 *)sub_pie->data, sub_pie->Length);
|
||||||
|
RTW_DBG("%s, ref_bss->IELength=%d\n", __func__, ref_bss->IELength);
|
||||||
|
RTW_DBG_DUMP("A ref_bss->IEs: ", (const u8 *)ref_bss->IEs, ref_bss->IELength);
|
||||||
|
rtw_ies_update_ie((*ntbss)->IEs, &(*ntbss)->IELength,
|
||||||
|
_BEACON_IE_OFFSET_, WLAN_EID_SSID,
|
||||||
|
sub_pie->data, sub_pie->Length);
|
||||||
|
RTW_DBG_DUMP("B ntbss->IEs: ", (const u8 *)(*ntbss)->IEs, (*ntbss)->IELength);
|
||||||
|
_rtw_memset((*ntbss)->Ssid.Ssid, 0, (*ntbss)->Ssid.SsidLength);
|
||||||
|
_rtw_memcpy((*ntbss)->Ssid.Ssid, sub_pie->data, sub_pie->Length);
|
||||||
|
(*ntbss)->Ssid.SsidLength = sub_pie->Length;
|
||||||
|
break;
|
||||||
|
case WLAN_EID_MULTI_BSSID_IDX:
|
||||||
|
RTW_DBG("%s, sub_pie->Length=%d\n", __func__, sub_pie->Length);
|
||||||
|
RTW_DBG_DUMP("WLAN_EID_MULTI_BSSID_IDX: ", (const u8 *)sub_pie->data, sub_pie->Length);
|
||||||
|
mbssid_index = GET_MULTIPLE_BSSID_IDX_INDEX((u8 *)sub_pie);
|
||||||
|
RTW_DBG("%s,mbssid_index=%d\n", __func__, mbssid_index);
|
||||||
|
rtw_gen_new_bssid(ref_bss->MacAddress, max_bssid_indicator,
|
||||||
|
mbssid_index, (*ntbss)->MacAddress);
|
||||||
|
(*ntbss)->mbssid_index = mbssid_index;
|
||||||
|
_rtw_memcpy((*ntbss)->mbsMacAddress, ref_bss->MacAddress, ETH_ALEN);
|
||||||
|
break;
|
||||||
|
case WLAN_EID_EXTENSION:
|
||||||
|
rtw_update_ntbss_ext_ie(*ntbss, sub_pie);
|
||||||
|
break;
|
||||||
|
case WLAN_EID_VENDOR_SPECIFIC:
|
||||||
|
rtw_update_ntbss_vendor_ie(*ntbss, sub_pie);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
rtw_update_ntbss_ie(*ntbss, sub_pie);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
j += (sub_pie->Length + WLAN_IE_ID_LEN + WLAN_IE_LEN_LEN);
|
||||||
|
RTW_DBG("%s(%d), j=%d\n", __func__, __LINE__, j);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* detects that there are no more ie for the current or last mbssid, so add network */
|
||||||
|
RTW_DBG_DUMP("pIE->data: ", (const u8 *)(pIE->data + j), 6);
|
||||||
|
if (*(pIE->data + j) == WLAN_EID_MULTIPLE_BSSID &&
|
||||||
|
*(pIE->data + j + 3) == MBSSID_NONTRANSMITTED_BSSID_PROFILE_ID &&
|
||||||
|
*(pIE->data + j + 5) != WLAN_EID_NON_TX_BSSID_CAP)
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
if (*(pIE->data + j) == MBSSID_NONTRANSMITTED_BSSID_PROFILE_ID &&
|
||||||
|
*(pIE->data + j + 2) != WLAN_EID_NON_TX_BSSID_CAP)
|
||||||
|
goto exit;
|
||||||
|
|
||||||
|
if ((*ntbss)->is_mbssid == _TRUE) {
|
||||||
|
RTW_DBG_DUMP("Add ntbss->IEs: ", (const u8 *)(*ntbss)->IEs, (*ntbss)->IELength);
|
||||||
|
pnetwork = add_network(padapter, (*ntbss));
|
||||||
|
#ifdef CONFIG_RTW_FSM_BTM
|
||||||
|
if (padapter->fsmpriv.btmpriv.btm && pnetwork) {
|
||||||
|
/* check SSID */
|
||||||
|
if (((*ntbss)->Ssid.SsidLength == pmlmepriv->dev_cur_network.network.Ssid.SsidLength) &&
|
||||||
|
_rtw_memcmp((*ntbss)->Ssid.Ssid, pmlmepriv->dev_cur_network.network.Ssid.Ssid,
|
||||||
|
(*ntbss)->Ssid.SsidLength))
|
||||||
|
rtw_btm_notify_scan_found_candidate(padapter->fsmpriv.btmpriv.btm, pnetwork);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
rtw_mfree((void *)*ntbss, sizeof(WLAN_BSSID_EX));
|
||||||
|
}
|
||||||
|
|
||||||
mbssid_ie_ptr = mbssid_ie;
|
exit:
|
||||||
max_bssid_indicator = GET_MBSSID_MAX_BSSID_INDOCATOR(mbssid_ie_ptr);
|
return _SUCCESS;
|
||||||
/*RTW_INFO("%s, max_bssid_indicator=%d\n", __func__, max_bssid_indicator);*/
|
}
|
||||||
mbssid_ie_ptr = mbssid_ie_ptr + MBSSID_MAX_BSSID_INDICATOR_OFFSET;
|
|
||||||
|
|
||||||
for (i = 0; i + 1 < mbssid_len;) {
|
static inline u8 _rtw_gen_ntbss(_adapter *padapter, WLAN_BSSID_EX *prbss, WLAN_BSSID_EX *ref_bss,
|
||||||
pIE = (PNDIS_802_11_VARIABLE_IEs)(mbssid_ie_ptr + i);
|
WLAN_BSSID_EX **ntbss, u16 *mbssid_addr, u16 *mbssid_len, int idx)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
bool ret = _SUCCESS;
|
||||||
|
PNDIS_802_11_VARIABLE_IEs pIE;
|
||||||
|
u8 max_bssid_indicator;
|
||||||
|
|
||||||
|
for (i = 0; i + 1 < mbssid_len[idx];) {
|
||||||
|
max_bssid_indicator = GET_MBSSID_MAX_BSSID_INDOCATOR(ref_bss->IEs + mbssid_addr[idx]);
|
||||||
|
pIE = (PNDIS_802_11_VARIABLE_IEs)(ref_bss->IEs + mbssid_addr[idx] + i + MBSSID_MAX_BSSID_INDICATOR_OFFSET);
|
||||||
|
|
||||||
switch (pIE->ElementID) {
|
switch (pIE->ElementID) {
|
||||||
case MBSSID_NONTRANSMITTED_BSSID_PROFILE_ID:
|
case MBSSID_NONTRANSMITTED_BSSID_PROFILE_ID:
|
||||||
sub_ies_len = pIE->Length;
|
ret = __rtw_gen_ntbss(padapter, prbss, ref_bss, ntbss, pIE, max_bssid_indicator);
|
||||||
pbss = (WLAN_BSSID_EX *)rtw_zmalloc(sizeof(WLAN_BSSID_EX));
|
|
||||||
if (pbss) {
|
|
||||||
_rtw_memcpy(pbss, ref_bss, sizeof(WLAN_BSSID_EX));
|
|
||||||
_rtw_memset(pbss->IEs, 0, MAX_IE_SZ);
|
|
||||||
copy_ie_len = _TIMESTAMP_ + _BEACON_ITERVAL_;
|
|
||||||
_rtw_memcpy(pbss->IEs, ref_bss->IEs, copy_ie_len);
|
|
||||||
} else {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (j = 0; j + 1 < sub_ies_len;) {
|
|
||||||
sub_pie = (PNDIS_802_11_VARIABLE_IEs)(pIE->data + j);
|
|
||||||
switch (sub_pie->ElementID) {
|
|
||||||
case WLAN_EID_NON_TX_BSSID_CAP:
|
|
||||||
/*RTW_INFO("%s, sub_pie->Length=%d\n", __func__, sub_pie->Length);*/
|
|
||||||
/*RTW_PRINT_DUMP("WLAN_EID_NON_TX_BSSID_CAP: ", (const u8 *)sub_pie->data, sub_pie->Length);*/
|
|
||||||
copy_ie_offset = _TIMESTAMP_ + _BEACON_ITERVAL_;
|
|
||||||
_rtw_memcpy(pbss->IEs + copy_ie_offset, sub_pie->data, sub_pie->Length);
|
|
||||||
break;
|
|
||||||
case WLAN_EID_SSID:
|
|
||||||
/*RTW_PRINT_DUMP("WLAN_EID_SSID: ", (const u8 *)sub_pie->data, sub_pie->Length);*/
|
|
||||||
/*RTW_INFO("%s, ref_bss->IELength=%d\n", __func__, ref_bss->IELength);*/
|
|
||||||
/*RTW_PRINT_DUMP("A ref_bss->IEs: ", (const u8 *)ref_bss->IEs, ref_bss->IELength);*/
|
|
||||||
copy_ie_offset = _TIMESTAMP_ + _BEACON_ITERVAL_ + _CAPABILITY_;
|
|
||||||
copy_ie_len = WLAN_IE_ID_LEN + WLAN_IE_LEN_LEN;
|
|
||||||
_rtw_memcpy(pbss->IEs + copy_ie_offset, sub_pie, copy_ie_len);
|
|
||||||
|
|
||||||
copy_ie_offset = copy_ie_offset + WLAN_IE_ID_LEN + WLAN_IE_LEN_LEN;
|
|
||||||
_rtw_memcpy(pbss->IEs + copy_ie_offset, sub_pie->data, sub_pie->Length);
|
|
||||||
_rtw_memcpy(pbss->IEs + copy_ie_offset + sub_pie->Length
|
|
||||||
, ref_bss->IEs + copy_ie_offset + ref_bss->Ssid.SsidLength
|
|
||||||
, ref_bss->IELength - (copy_ie_offset + ref_bss->Ssid.SsidLength));
|
|
||||||
|
|
||||||
pbss->IELength = ref_bss->IELength + (sub_pie->Length - ref_bss->Ssid.SsidLength);
|
|
||||||
/*RTW_INFO("%s, ref_bss->Ssid.SsidLength=%d\n", __func__, ref_bss->Ssid.SsidLength);*/
|
|
||||||
/*RTW_INFO("%s, sub_pie->Length=%d\n", __func__, sub_pie->Length);*/
|
|
||||||
/*RTW_INFO("%s, pbss->IELength=%d\n", __func__, pbss->IELength);*/
|
|
||||||
/*RTW_PRINT_DUMP("B pbss->IEs: ", (const u8 *)pbss->IEs, pbss->IELength);*/
|
|
||||||
|
|
||||||
_rtw_memset(pbss->Ssid.Ssid, 0, pbss->Ssid.SsidLength);
|
|
||||||
_rtw_memcpy(pbss->Ssid.Ssid, sub_pie->data, sub_pie->Length);
|
|
||||||
pbss->Ssid.SsidLength = sub_pie->Length;
|
|
||||||
break;
|
|
||||||
case WLAN_EID_MULTI_BSSID_IDX:
|
|
||||||
/*RTW_INFO("%s, sub_pie->Length=%d\n", __func__, sub_pie->Length);*/
|
|
||||||
/*RTW_PRINT_DUMP("WLAN_EID_MULTI_BSSID_IDX: ", (const u8 *)sub_pie->data, sub_pie->Length);*/
|
|
||||||
mbssid_index = GET_MULTIPLE_BSSID_IDX_INDEX((u8 *)sub_pie);
|
|
||||||
/*RTW_INFO("%s,mbssid_index=%d\n", __func__, mbssid_index);*/
|
|
||||||
rtw_gen_new_bssid(ref_bss->MacAddress, max_bssid_indicator
|
|
||||||
, mbssid_index, pbss->MacAddress);
|
|
||||||
pbss->mbssid_index = mbssid_index;
|
|
||||||
_rtw_memcpy(pbss->mbsMacAddress, ref_bss->MacAddress, ETH_ALEN);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
j += (sub_pie->Length + WLAN_IE_ID_LEN + WLAN_IE_LEN_LEN);
|
|
||||||
/*RTW_INFO("%s, j=%d\n", __func__, j);*/
|
|
||||||
}
|
|
||||||
pbss->is_mbssid = _TRUE;
|
|
||||||
pnetwork = add_network(padapter, pbss);
|
|
||||||
#ifdef CONFIG_RTW_FSM_BTM
|
|
||||||
if (padapter->fsmpriv.btmpriv.btm && pnetwork) {
|
|
||||||
/* check SSID */
|
|
||||||
if ((pbss->Ssid.SsidLength == pmlmepriv->dev_cur_network.network.Ssid.SsidLength) &&
|
|
||||||
_rtw_memcmp(pbss->Ssid.Ssid, pmlmepriv->dev_cur_network.network.Ssid.Ssid,
|
|
||||||
pbss->Ssid.SsidLength))
|
|
||||||
rtw_btm_notify_scan_found_candidate(padapter->fsmpriv.btmpriv.btm, pnetwork);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
rtw_mfree((u8 *)pbss, sizeof(WLAN_BSSID_EX));
|
|
||||||
break;
|
|
||||||
case MBSSID_VENDOR_SPECIFIC_ID:
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (!ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
RTW_DBG("%s, pIE->ElementID=%d\n", __func__, pIE->ElementID);
|
||||||
i += (pIE->Length + WLAN_IE_ID_LEN + WLAN_IE_LEN_LEN);
|
i += (pIE->Length + WLAN_IE_ID_LEN + WLAN_IE_LEN_LEN);
|
||||||
/*RTW_INFO("%s, i=%d\n", __func__, i);*/
|
RTW_DBG("%s(%d), i=%d\n", __func__, __LINE__, i);
|
||||||
}
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline u8 rtw_gen_ntbss(_adapter *padapter, WLAN_BSSID_EX *prbss, WLAN_BSSID_EX *ref_bss,
|
||||||
|
u8 mbssid_count, u16 *mbssid_addr, u16 *mbssid_len)
|
||||||
|
{
|
||||||
|
int idx;
|
||||||
|
bool ret = _SUCCESS;
|
||||||
|
WLAN_BSSID_EX *ntbss = NULL;
|
||||||
|
|
||||||
|
for (idx = 0; idx < mbssid_count; idx++) {
|
||||||
|
|
||||||
|
RTW_DBG("%s, Multiple BSSID IDX=%d\n", __func__, idx);
|
||||||
|
ret = _rtw_gen_ntbss(padapter, prbss, ref_bss, &ntbss, mbssid_addr, mbssid_len, idx);
|
||||||
|
if (!ret)
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
u8 add_mbssid_network(_adapter *padapter, WLAN_BSSID_EX *ref_bss)
|
||||||
|
{
|
||||||
|
WLAN_BSSID_EX *prbss;
|
||||||
|
u8 mbssid_count = 0;
|
||||||
|
u16 mbssid_addr[MBSSID_MAX_CNT];
|
||||||
|
u16 mbssid_len[MBSSID_MAX_CNT];
|
||||||
|
bool ret = _FALSE;
|
||||||
|
u16 mbssid_total_len = 0;
|
||||||
|
|
||||||
|
/* find all nontransmitted bssids */
|
||||||
|
mbssid_count = rtw_find_nt_bssid(ref_bss, mbssid_addr, mbssid_len,
|
||||||
|
&mbssid_total_len);
|
||||||
|
RTW_DBG("%s, Multiple BSSID total length=%d\n", __func__, mbssid_total_len);
|
||||||
|
|
||||||
|
if (!mbssid_count)
|
||||||
|
return _FALSE;
|
||||||
|
|
||||||
|
/* generate a pure reference bss and add network */
|
||||||
|
prbss = (WLAN_BSSID_EX *)rtw_zmalloc(sizeof(WLAN_BSSID_EX));
|
||||||
|
if(!prbss)
|
||||||
|
return _FALSE;
|
||||||
|
|
||||||
|
rtw_gen_pure_ref_bss(prbss, ref_bss, mbssid_addr, mbssid_total_len);
|
||||||
|
add_network(padapter, prbss);
|
||||||
|
|
||||||
|
|
||||||
|
/* parsing nontransmitted bssid in mbssid set */
|
||||||
|
ret = rtw_gen_ntbss(padapter, prbss, ref_bss, mbssid_count, mbssid_addr, mbssid_len);
|
||||||
|
if (!ret)
|
||||||
|
return _FALSE;
|
||||||
|
RTW_DBG("%s, ret=%d\n", __func__, ret);
|
||||||
|
rtw_mfree((void *)prbss, sizeof(WLAN_BSSID_EX));
|
||||||
|
return _TRUE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1428,20 +1618,22 @@ void rtw_survey_event_callback(_adapter *adapter, u8 *pbuf)
|
|||||||
if ((check_fwstate(pmlmepriv, WIFI_UNDER_LINKING)) == _FALSE) {
|
if ((check_fwstate(pmlmepriv, WIFI_UNDER_LINKING)) == _FALSE) {
|
||||||
struct wlan_network *pnetwork;
|
struct wlan_network *pnetwork;
|
||||||
|
|
||||||
if (bss->Ssid.Ssid[0] == 0)
|
#ifdef CONFIG_STA_MULTIPLE_BSSID
|
||||||
bss->Ssid.SsidLength = 0;
|
if (add_mbssid_network(adapter, bss) == _FALSE)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
if (bss->Ssid.Ssid[0] == 0)
|
||||||
|
bss->Ssid.SsidLength = 0;
|
||||||
|
|
||||||
pnetwork = add_network(adapter, bss);
|
pnetwork = add_network(adapter, bss);
|
||||||
if (pnetwork && bss->InfrastructureMode == Ndis802_11Infrastructure) {
|
if (pnetwork && bss->InfrastructureMode == Ndis802_11Infrastructure) {
|
||||||
if (MLME_IS_SCAN(adapter)) {
|
if (MLME_IS_SCAN(adapter)) {
|
||||||
adapter->mlmeextpriv.sitesurvey_res.activate_ch_cnt
|
adapter->mlmeextpriv.sitesurvey_res.activate_ch_cnt
|
||||||
+= rtw_process_beacon_hint(adapter_to_rfctl(adapter), pnetwork);
|
+= rtw_process_beacon_hint(adapter_to_rfctl(adapter), pnetwork);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_STA_MULTIPLE_BSSID
|
|
||||||
add_mbssid_network(adapter, bss);
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_RTW_FSM_BTM
|
#ifdef CONFIG_RTW_FSM_BTM
|
||||||
if (adapter->fsmpriv.btmpriv.btm) {
|
if (adapter->fsmpriv.btmpriv.btm) {
|
||||||
/* check SSID */
|
/* check SSID */
|
||||||
|
|||||||
@@ -1519,9 +1519,15 @@ void rtw_absorb_ssid_ifneed(_adapter *padapter, WLAN_BSSID_EX *bssid, u8 *pframe
|
|||||||
u8 *mac;
|
u8 *mac;
|
||||||
sint ssid_len_ori;
|
sint ssid_len_ori;
|
||||||
u32 remain_len = 0;
|
u32 remain_len = 0;
|
||||||
u8 backupIE[MAX_IE_SZ];
|
u8 *backupIE;
|
||||||
u16 subtype;
|
u16 subtype;
|
||||||
|
|
||||||
|
backupIE = rtw_zmalloc(MAX_IE_SZ);
|
||||||
|
if(!backupIE) {
|
||||||
|
RTW_ERR(FUNC_ADPT_FMT" buffer alloc fail\n", FUNC_ADPT_ARG(padapter));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mac = get_addr2_ptr(pframe);
|
mac = get_addr2_ptr(pframe);
|
||||||
subtype = get_frame_sub_type(pframe);
|
subtype = get_frame_sub_type(pframe);
|
||||||
|
|
||||||
@@ -1545,6 +1551,7 @@ void rtw_absorb_ssid_ifneed(_adapter *padapter, WLAN_BSSID_EX *bssid, u8 *pframe
|
|||||||
_rtw_spinlock_bh(&padapter->mlmepriv.scanned_queue.lock);
|
_rtw_spinlock_bh(&padapter->mlmepriv.scanned_queue.lock);
|
||||||
scanned = _rtw_find_network(&padapter->mlmepriv.scanned_queue, mac);
|
scanned = _rtw_find_network(&padapter->mlmepriv.scanned_queue, mac);
|
||||||
if (!scanned) {
|
if (!scanned) {
|
||||||
|
rtw_mfree((void *)backupIE, MAX_IE_SZ);
|
||||||
_rtw_spinunlock_bh(&padapter->mlmepriv.scanned_queue.lock);
|
_rtw_spinunlock_bh(&padapter->mlmepriv.scanned_queue.lock);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1554,6 +1561,7 @@ void rtw_absorb_ssid_ifneed(_adapter *padapter, WLAN_BSSID_EX *bssid, u8 *pframe
|
|||||||
if (hidden_ssid_ap(snetwork) && !hidden_ssid_ap(bssid)) {
|
if (hidden_ssid_ap(snetwork) && !hidden_ssid_ap(bssid)) {
|
||||||
p = rtw_get_ie(snetwork->IEs+ie_offset, _SSID_IE_, &ssid_len_ori, snetwork->IELength-ie_offset);
|
p = rtw_get_ie(snetwork->IEs+ie_offset, _SSID_IE_, &ssid_len_ori, snetwork->IELength-ie_offset);
|
||||||
if (!p) {
|
if (!p) {
|
||||||
|
rtw_mfree((void *)backupIE, MAX_IE_SZ);
|
||||||
_rtw_spinunlock_bh(&padapter->mlmepriv.scanned_queue.lock);
|
_rtw_spinunlock_bh(&padapter->mlmepriv.scanned_queue.lock);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1569,6 +1577,7 @@ void rtw_absorb_ssid_ifneed(_adapter *padapter, WLAN_BSSID_EX *bssid, u8 *pframe
|
|||||||
_rtw_memcpy(p+2+bssid->Ssid.SsidLength, backupIE, remain_len);
|
_rtw_memcpy(p+2+bssid->Ssid.SsidLength, backupIE, remain_len);
|
||||||
snetwork->IELength += bssid->Ssid.SsidLength;
|
snetwork->IELength += bssid->Ssid.SsidLength;
|
||||||
}
|
}
|
||||||
|
rtw_mfree((void *)backupIE, MAX_IE_SZ);
|
||||||
_rtw_spinunlock_bh(&padapter->mlmepriv.scanned_queue.lock);
|
_rtw_spinunlock_bh(&padapter->mlmepriv.scanned_queue.lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1146,6 +1146,12 @@ struct rf_ctl_t {
|
|||||||
#define RFCTL_REG_EN_11BE(rfctl) false
|
#define RFCTL_REG_EN_11BE(rfctl) false
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_80211D
|
||||||
|
#define RFCTL_GET_CIS_MAJORITY(rfctl) (((rfctl)->cis_flags & CISF_ENV_BSS_MAJ) ? CIS_SCAN_STAT_GET_MAJORITY(&(rfctl)->cis_scan_stat) : NULL)
|
||||||
|
#else
|
||||||
|
#define RFCTL_GET_CIS_MAJORITY(rfctl) NULL
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_80211D) && CONFIG_IEEE80211_BAND_6GHZ
|
#if defined(CONFIG_80211D) && CONFIG_IEEE80211_BAND_6GHZ
|
||||||
#define RFCTL_RECV_6G_REG_INFO(rfctl, iface_id, alink_id) ((rfctl)->recv_6g_reg_info[iface_id][alink_id])
|
#define RFCTL_RECV_6G_REG_INFO(rfctl, iface_id, alink_id) ((rfctl)->recv_6g_reg_info[iface_id][alink_id])
|
||||||
#else
|
#else
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
#define DRIVERVERSION "v1.19.16_nv-126-10-g6784793e9.20250808_Certified_Module_beta"
|
#define DRIVERVERSION "v1.19.16_nv-126-16-gbf1934e39.20250910_Certified_Module_beta"
|
||||||
|
|||||||
@@ -1304,6 +1304,7 @@ struct rtw_regulatory {
|
|||||||
LE_BITS_TO_1BYTE((_pEleStart) + 2, 0, 8)
|
LE_BITS_TO_1BYTE((_pEleStart) + 2, 0, 8)
|
||||||
|
|
||||||
#define MBSSID_MAX_BSSID_INDICATOR_OFFSET 3
|
#define MBSSID_MAX_BSSID_INDICATOR_OFFSET 3
|
||||||
|
#define MBSSID_MAX_CNT 10
|
||||||
|
|
||||||
#define GET_MULTIPLE_BSSID_IDX_INDEX(_pEleStart) \
|
#define GET_MULTIPLE_BSSID_IDX_INDEX(_pEleStart) \
|
||||||
LE_BITS_TO_1BYTE((_pEleStart) + 2, 0, 8)
|
LE_BITS_TO_1BYTE((_pEleStart) + 2, 0, 8)
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
#define __WLAN_BSSDEF_H__
|
#define __WLAN_BSSDEF_H__
|
||||||
|
|
||||||
|
|
||||||
#define MAX_IE_SZ 768
|
#define MAX_IE_SZ 1840 /* mbssid in beacon defined in WIFI Alliance */
|
||||||
|
|
||||||
|
|
||||||
#ifdef PLATFORM_LINUX
|
#ifdef PLATFORM_LINUX
|
||||||
|
|||||||
@@ -688,7 +688,7 @@ exit:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAX_BSSINFO_LEN 1000
|
#define MAX_BSSINFO_LEN 2072 /* MAX_IE_SZ + 232 */
|
||||||
struct cfg80211_bss *rtw_cfg80211_inform_bss(_adapter *padapter, struct wlan_network *pnetwork)
|
struct cfg80211_bss *rtw_cfg80211_inform_bss(_adapter *padapter, struct wlan_network *pnetwork)
|
||||||
{
|
{
|
||||||
struct ieee80211_channel *notify_channel;
|
struct ieee80211_channel *notify_channel;
|
||||||
@@ -2898,22 +2898,22 @@ void rtw_cfg80211_unlink_bss(_adapter *padapter, struct wlan_network *pnetwork)
|
|||||||
struct wireless_dev *pwdev = padapter->rtw_wdev;
|
struct wireless_dev *pwdev = padapter->rtw_wdev;
|
||||||
struct wiphy *wiphy = pwdev->wiphy;
|
struct wiphy *wiphy = pwdev->wiphy;
|
||||||
struct cfg80211_bss *bss = NULL;
|
struct cfg80211_bss *bss = NULL;
|
||||||
WLAN_BSSID_EX select_network = pnetwork->network;
|
WLAN_BSSID_EX *select_network = &pnetwork->network;
|
||||||
|
|
||||||
bss = cfg80211_get_bss(wiphy, NULL/*notify_channel*/,
|
bss = cfg80211_get_bss(wiphy, NULL/*notify_channel*/,
|
||||||
select_network.MacAddress, select_network.Ssid.Ssid,
|
select_network->MacAddress, select_network->Ssid.Ssid,
|
||||||
select_network.Ssid.SsidLength,
|
select_network->Ssid.SsidLength,
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)
|
||||||
select_network.InfrastructureMode == Ndis802_11Infrastructure?IEEE80211_BSS_TYPE_ESS:IEEE80211_BSS_TYPE_IBSS,
|
select_network->InfrastructureMode == Ndis802_11Infrastructure?IEEE80211_BSS_TYPE_ESS:IEEE80211_BSS_TYPE_IBSS,
|
||||||
IEEE80211_PRIVACY(select_network.Privacy));
|
IEEE80211_PRIVACY(select_network->Privacy));
|
||||||
#else
|
#else
|
||||||
select_network.InfrastructureMode == Ndis802_11Infrastructure?WLAN_CAPABILITY_ESS:WLAN_CAPABILITY_IBSS,
|
select_network->InfrastructureMode == Ndis802_11Infrastructure?WLAN_CAPABILITY_ESS:WLAN_CAPABILITY_IBSS,
|
||||||
select_network.InfrastructureMode == Ndis802_11Infrastructure?WLAN_CAPABILITY_ESS:WLAN_CAPABILITY_IBSS);
|
select_network->InfrastructureMode == Ndis802_11Infrastructure?WLAN_CAPABILITY_ESS:WLAN_CAPABILITY_IBSS);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (bss) {
|
if (bss) {
|
||||||
cfg80211_unlink_bss(wiphy, bss);
|
cfg80211_unlink_bss(wiphy, bss);
|
||||||
RTW_INFO("%s(): cfg80211_unlink %s!!\n", __func__, select_network.Ssid.Ssid);
|
RTW_INFO("%s(): cfg80211_unlink %s!!\n", __func__, select_network->Ssid.Ssid);
|
||||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
|
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
|
||||||
cfg80211_put_bss(padapter->rtw_wdev->wiphy, bss);
|
cfg80211_put_bss(padapter->rtw_wdev->wiphy, bss);
|
||||||
#else
|
#else
|
||||||
@@ -3503,8 +3503,15 @@ bypass_p2p_chk:
|
|||||||
ret = -EBUSY;
|
ret = -EBUSY;
|
||||||
goto check_need_indicate_scan_done;
|
goto check_need_indicate_scan_done;
|
||||||
|
|
||||||
case SS_DENY_SELF_AP_UNDER_SURVEY:
|
|
||||||
case SS_DENY_SELF_STA_UNDER_SURVEY:
|
case SS_DENY_SELF_STA_UNDER_SURVEY:
|
||||||
|
#ifdef CONFIG_RTW_FSM_BTM
|
||||||
|
if (padapter->fsmpriv.btmpriv.btm) {
|
||||||
|
ret = -EBUSY;
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
|
fallthrough;
|
||||||
|
#endif
|
||||||
|
case SS_DENY_SELF_AP_UNDER_SURVEY:
|
||||||
if (rtw_cfg80211_scan_via_auto_scan(padapter, request) == _FALSE)
|
if (rtw_cfg80211_scan_via_auto_scan(padapter, request) == _FALSE)
|
||||||
need_indicate_scan_done = _TRUE;
|
need_indicate_scan_done = _TRUE;
|
||||||
goto check_need_indicate_scan_done;
|
goto check_need_indicate_scan_done;
|
||||||
|
|||||||
@@ -7,10 +7,10 @@
|
|||||||
|
|
||||||
ifeq ($(CONFIG_PHL_ARCH), y)
|
ifeq ($(CONFIG_PHL_ARCH), y)
|
||||||
phl_path := phl/$(HAL)
|
phl_path := phl/$(HAL)
|
||||||
phl_path_d1 := $(SOURCETREE)/phl/$(HAL)
|
phl_path_d1 := $(src)/phl/$(HAL)
|
||||||
else
|
else
|
||||||
phl_path := $(HAL)
|
phl_path := $(HAL)
|
||||||
phl_path_d1 := $(SOURCETREE)/$(HAL)
|
phl_path_d1 := $(src)/$(HAL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Base directory
|
# Base directory
|
||||||
|
|||||||
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
ifeq ($(CONFIG_PHL_ARCH), y)
|
ifeq ($(CONFIG_PHL_ARCH), y)
|
||||||
phl_path := phl/
|
phl_path := phl/
|
||||||
phl_path_d1 := $(SOURCETREE)/phl/$(HAL)
|
phl_path_d1 := $(src)/phl/$(HAL)
|
||||||
else
|
else
|
||||||
phl_path :=
|
phl_path :=
|
||||||
phl_path_d1 := $(SOURCETREE)/$(HAL)
|
phl_path_d1 := $(src)/$(HAL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
_HAL_FILES := $(phl_path)$(HAL)/hal_api_mac.o \
|
_HAL_FILES := $(phl_path)$(HAL)/hal_api_mac.o \
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ HAL = hal_g6
|
|||||||
|
|
||||||
ifeq ($(CONFIG_PHL_ARCH), y)
|
ifeq ($(CONFIG_PHL_ARCH), y)
|
||||||
phl_path := phl/hal_g6
|
phl_path := phl/hal_g6
|
||||||
phl_path_d1 := $(SOURCETREE)/phl/$(HAL)
|
phl_path_d1 := $(src)/phl/$(HAL)
|
||||||
else
|
else
|
||||||
phl_path := hal_g6
|
phl_path := hal_g6
|
||||||
phl_path_d1 := $(SOURCETREE)/$(HAL)
|
phl_path_d1 := $(src)/$(HAL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Base directory
|
# Base directory
|
||||||
|
|||||||
@@ -7,10 +7,10 @@
|
|||||||
|
|
||||||
ifeq ($(CONFIG_PHL_ARCH), y)
|
ifeq ($(CONFIG_PHL_ARCH), y)
|
||||||
phl_path := phl/$(HAL)
|
phl_path := phl/$(HAL)
|
||||||
phl_path_d1 := $(SOURCETREE)/phl/$(HAL)
|
phl_path_d1 := $(src)/phl/$(HAL)
|
||||||
else
|
else
|
||||||
phl_path := $(HAL)
|
phl_path := $(HAL)
|
||||||
phl_path_d1 := $(SOURCETREE)/$(HAL)
|
phl_path_d1 := $(src)/$(HAL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Base directory
|
# Base directory
|
||||||
|
|||||||
@@ -7,10 +7,10 @@
|
|||||||
|
|
||||||
ifeq ($(CONFIG_PHL_ARCH), y)
|
ifeq ($(CONFIG_PHL_ARCH), y)
|
||||||
phl_path := phl/$(HAL)
|
phl_path := phl/$(HAL)
|
||||||
phl_path_d1 := $(SOURCETREE)/phl/$(HAL)
|
phl_path_d1 := $(src)/phl/$(HAL)
|
||||||
else
|
else
|
||||||
phl_path := $(HAL)
|
phl_path := $(HAL)
|
||||||
phl_path_d1 := $(SOURCETREE)/$(HAL)
|
phl_path_d1 := $(src)/$(HAL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Base directory
|
# Base directory
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ endif
|
|||||||
|
|
||||||
ifeq ($(CONFIG_PHL_ARCH), y)
|
ifeq ($(CONFIG_PHL_ARCH), y)
|
||||||
phl_path := phl/
|
phl_path := phl/
|
||||||
phl_path_d1 := $(SOURCETREE)/phl/$(HAL)
|
phl_path_d1 := $(src)/phl/$(HAL)
|
||||||
else
|
else
|
||||||
phl_path :=
|
phl_path :=
|
||||||
phl_path_d1 := $(SOURCETREE)/$(HAL)
|
phl_path_d1 := $(src)/$(HAL)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
_PHL_FILES := $(phl_path)phl_init.o \
|
_PHL_FILES := $(phl_path)phl_init.o \
|
||||||
|
|||||||
@@ -343,12 +343,12 @@ next_ch:
|
|||||||
goto next_ch;
|
goto next_ch;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PHL_INFO("%s: scan done\n", __func__);
|
printk("%s: scan done\n", __func__);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
param->done_num = param->ch_num - sctrl->chlist.cnt;
|
param->done_num = param->ch_num - sctrl->chlist.cnt;
|
||||||
PHL_INFO("%s:[%d] idx=%d, r=%d, ch=%d, p=%d\n", __func__,
|
printk("%s:[%d] idx=%d, r=%d, ch=%d, p=%d\n", __func__,
|
||||||
band_idx, sctrl->ch_idx, sctrl->chlist.cnt, sctrl->scan_ch->channel,
|
band_idx, sctrl->ch_idx, sctrl->chlist.cnt, sctrl->scan_ch->channel,
|
||||||
phl_get_passing_time_ms(param->start_time));
|
phl_get_passing_time_ms(param->start_time));
|
||||||
|
|
||||||
|
|||||||
@@ -26,14 +26,14 @@
|
|||||||
#define __PHL_GIT_INFO_H__
|
#define __PHL_GIT_INFO_H__
|
||||||
/*@--------------------------[Define] ---------------------------------------*/
|
/*@--------------------------[Define] ---------------------------------------*/
|
||||||
|
|
||||||
#define RTK_CORE_SHA1 "6784793e97c8520c94a2fb213397e109827325ec"
|
#define RTK_CORE_SHA1 "bf1934e39d7842ed35fa61ef726cc2d4b7b2029e"
|
||||||
#define RTK_PHL_SHA1 "981191b0a91d583e48282299b55d86f768f4b98b"
|
#define RTK_PHL_SHA1 "981191b0a91d583e48282299b55d86f768f4b98b"
|
||||||
#define RTK_HALMAC_SHA1 "a8003e258e7ceec767c2e329732e7e3b63934473"
|
#define RTK_HALMAC_SHA1 "a8003e258e7ceec767c2e329732e7e3b63934473"
|
||||||
#define RTK_HALBB_SHA1 "8f07cd65ef4ef6867255f3a95706e417c8d31bf3"
|
#define RTK_HALBB_SHA1 "8f07cd65ef4ef6867255f3a95706e417c8d31bf3"
|
||||||
#define RTK_HALRF_SHA1 "01c1864e02ade0c1d1482c85d6bb0fa0f4799651"
|
#define RTK_HALRF_SHA1 "01c1864e02ade0c1d1482c85d6bb0fa0f4799651"
|
||||||
#define RTK_BTC_SHA1 "33bcdb9f10f24aa8b92ee86a7076f89faf6ccbed"
|
#define RTK_BTC_SHA1 "33bcdb9f10f24aa8b92ee86a7076f89faf6ccbed"
|
||||||
|
|
||||||
#define RTK_CORE_TAGINFO "v1.19.16_nv-126-10-g6784793e9"
|
#define RTK_CORE_TAGINFO "v1.19.16_nv-126-16-gbf1934e39"
|
||||||
#define RTK_PHL_TAGINFO "PHL_1_19_111_0100-94-g981191b0a"
|
#define RTK_PHL_TAGINFO "PHL_1_19_111_0100-94-g981191b0a"
|
||||||
#define RTK_HALMAC_TAGINFO "HALMAC_0_29_95_0-1-ga8003e258e"
|
#define RTK_HALMAC_TAGINFO "HALMAC_0_29_95_0-1-ga8003e258e"
|
||||||
#define RTK_HALBB_TAGINFO "HALBB_029_167_15-2-g8f07cd65"
|
#define RTK_HALBB_TAGINFO "HALBB_029_167_15-2-g8f07cd65"
|
||||||
|
|||||||
Reference in New Issue
Block a user