diff --git a/drivers/net/wireless/realtek/rtl8822ce/Makefile b/drivers/net/wireless/realtek/rtl8822ce/Makefile index 3cab6b3b..20c90fec 100755 --- a/drivers/net/wireless/realtek/rtl8822ce/Makefile +++ b/drivers/net/wireless/realtek/rtl8822ce/Makefile @@ -14,15 +14,13 @@ EXTRA_CFLAGS += -Wno-unused-variable #EXTRA_CFLAGS += -Wno-unused-function #EXTRA_CFLAGS += -Wno-unused #EXTRA_CFLAGS += -Wno-uninitialized -EXTRA_CFLAGS += -Wno-missing-prototypes GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc ) ifeq ($(GCC_VER_49),1) EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later endif -SOURCETREE = $(srctree.nvidia-oot)/drivers/net/wireless/realtek/rtl8822ce -EXTRA_CFLAGS += -I$(SOURCETREE)/include +EXTRA_CFLAGS += -I$(src)/include EXTRA_LDFLAGS += --strip-debug @@ -109,7 +107,7 @@ endif CONFIG_RTW_DEBUG = y # default log level is _DRV_INFO_ = 4, # 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 # enable /proc/net/rtlxxxx/ debug interfaces CONFIG_PROC_DEBUG = y @@ -149,8 +147,7 @@ CONFIG_SECURITY_MEM = n CONFIG_SECURITY_MEM_ADDR = 0 CONFIG_SECURITY_MEM_SIZE = 3686400 ###################### Platform Related ####################### -CONFIG_PLATFORM_TEGRA = y -CONFIG_PLATFORM_I386_PC = n +CONFIG_PLATFORM_I386_PC = y CONFIG_PLATFORM_ANDROID_X86 = n CONFIG_PLATFORM_ANDROID_INTEL_X86 = n CONFIG_PLATFORM_JB_X86 = n @@ -283,10 +280,10 @@ _HAL_INTFS_FILES := hal/hal_intf.o \ hal/led/hal_$(HCI_NAME)_led.o -EXTRA_CFLAGS += -I$(SOURCETREE)/platform +EXTRA_CFLAGS += -I$(src)/platform _PLATFORM_FILES := platform/platform_ops.o -EXTRA_CFLAGS += -I$(SOURCETREE)/hal/btc +EXTRA_CFLAGS += -I$(src)/hal/btc ########### HAL_RTL8188E ################################# ifeq ($(CONFIG_RTL8188E), y) @@ -1368,16 +1365,6 @@ EXTRA_CFLAGS += -DSECURITY_MEM_ADDR=$(CONFIG_SECURITY_MEM_ADDR) EXTRA_CFLAGS += -DSECURITY_MEM_SIZE=$(CONFIG_SECURITY_MEM_SIZE) endif -ifeq ($(CONFIG_PLATFORM_TEGRA), y) -ARCH = arm -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 = rtl8822ce -endif - ifeq ($(CONFIG_PLATFORM_I386_PC), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT @@ -2379,7 +2366,7 @@ endif ifneq ($(KERNELRELEASE),) ########### this part for *.mk ############################ -include $(SOURCETREE)/hal/phydm/phydm.mk +include $(src)/hal/phydm/phydm.mk ########### HAL_RTL8822B ################################# ifeq ($(CONFIG_RTL8822B), y) @@ -2393,7 +2380,7 @@ endif ########### HAL_RTL8822C ################################# ifeq ($(CONFIG_RTL8822C), y) -include $(SOURCETREE)/rtl8822c.mk +include $(src)/rtl8822c.mk endif ########### HAL_RTL8814B ################################# @@ -2456,7 +2443,7 @@ ifeq ($(CONFIG_SDIO_HCI), y) rtk_core += core/rtw_sdio.o endif -EXTRA_CFLAGS += -I$(SOURCETREE)/core/crypto +EXTRA_CFLAGS += -I$(src)/core/crypto rtk_core += \ core/crypto/aes-internal.o \ core/crypto/aes-internal-enc.o \ @@ -2490,7 +2477,7 @@ ifeq ($(CONFIG_RTL8723B), y) $(MODULE_NAME)-$(CONFIG_MP_INCLUDED)+= core/rtw_bt_mp.o endif -obj-m := $(MODULE_NAME).o +obj-$(CONFIG_RTL8822CE) := $(MODULE_NAME).o else diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/mesh/rtw_mesh.c b/drivers/net/wireless/realtek/rtl8822ce/core/mesh/rtw_mesh.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_ap.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_ap.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_btcoex.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_btcoex.c index c11e79f6..be3a9f71 100644 --- a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_btcoex.c +++ b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_btcoex.c @@ -1814,9 +1814,12 @@ void rtw_btcoex_connect_notify(PADAPTER padapter, u8 join_type) pHalData = GET_HAL_DATA(padapter); - if (pHalData->EEPROMBluetoothCoexist == _TRUE) + if (pHalData->EEPROMBluetoothCoexist == _TRUE) { _rtw_btcoex_connect_notify(padapter, join_type ? _FALSE : _TRUE); - else + + if (join_type) + rtw_btcoex_SpecialPacketNotify(padapter, PACKET_EAPOL); + } else #endif /* CONFIG_BT_COEXIST */ rtw_btcoex_wifionly_connect_notify(padapter); } diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_debug.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_debug.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_ft.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_ft.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_ieee80211.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_ieee80211.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mbo.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mbo.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mlme.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mlme.c old mode 100644 new mode 100755 index 71436ea1..5dfdab7f --- a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mlme.c +++ b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mlme.c @@ -144,13 +144,13 @@ sint _rtw_init_mlme_priv(_adapter *padapter) #endif #ifdef CONFIG_LAYER2_ROAMING -#define RTW_ROAM_SCAN_RESULT_EXP_MS (10*1000) +#define RTW_ROAM_SCAN_RESULT_EXP_MS (5*1000) #define RTW_ROAM_IDLE_RSSI_DIFF_TH 5 #define RTW_ROAM_BUSY_RSSI_DIFF_TH 10 -#define RTW_ROAM_SCAN_INTERVAL (2) /* 5*(2 second)*/ -#define RTW_ROAM_IDLE_RSSI_THRESHOLD 40 -#define RTW_ROAM_BUSY_RSSI_THRESHOLD 40 -#define RTW_ROAM_DICONNECT_DELAY 20 +#define RTW_ROAM_SCAN_INTERVAL (5) /* 5*(2 second)*/ +#define RTW_ROAM_IDLE_RSSI_THRESHOLD 35 +#define RTW_ROAM_BUSY_RSSI_THRESHOLD 30 +#define RTW_ROAM_DICONNECT_DELAY 50 _rtw_spinlock_init(&pmlmepriv->clnt_auth_lock); pmlmepriv->roam_flags = CONFIG_ROAMING_FLAG; @@ -1845,16 +1845,30 @@ void rtw_survey_event_callback(_adapter *adapter, u8 *pbuf) goto exit; } } - rtw_check_roaming_candidate(pmlmepriv, &candidate, pnetwork, 0); + candidate = pmlmepriv->roam_network; /* backup */ + rtw_check_roaming_candidate(pmlmepriv, &pmlmepriv->roam_network, pnetwork, 0); - if (candidate) { - pmlmepriv->roam_network = candidate; + if (pnetwork == pmlmepriv->roam_network) { + /* we got a new candidate */ + if (candidate) + candidate->fixed = _FALSE; + + pmlmepriv->roam_network->fixed = _TRUE; RTW_INFO("%s() found a roaming candidate. abort scan\n", __func__); rtw_scan_abort_no_wait(adapter); - } - /* find second best candidate */ - if (!candidate && IS_5G_BSS(pnetwork->network)) + + } else if (IS_5G_BSS(pnetwork->network)) { + candidate = pmlmepriv->candidate_5G; /* backup */ + /* find second best candidate */ rtw_check_roaming_candidate(pmlmepriv, &pmlmepriv->candidate_5G, pnetwork, 1); + + if (pnetwork == pmlmepriv->candidate_5G) { + /* we got a new 5G candidate */ + if (candidate) + candidate->fixed = _FALSE; + pmlmepriv->candidate_5G->fixed = _TRUE; + } + } } #endif } @@ -3311,11 +3325,12 @@ void rtw_stadel_event_callback(_adapter *adapter, u8 *pbuf) u8 diconnect_delay = RTW_ROAM_DICONNECT_DELAY; RTW_INFO("%s(mac_id=%d)=" MAC_FMT "\n", __func__, pstadel->mac_id, MAC_ARG(pstadel->macaddr)); + + rtw_sta_mstatus_disc_rpt(adapter, pstadel->mac_id); #ifdef CONFIG_LAYER2_ROAMING if (pmlmepriv->roam_network) rtw_hal_set_hwreg(adapter, HW_VAR_CHECK_TXBUF, &diconnect_delay); #endif - rtw_sta_mstatus_disc_rpt(adapter, pstadel->mac_id); #ifdef CONFIG_MCC_MODE rtw_hal_mcc_update_macid_bitmap(adapter, pstadel->mac_id, _FALSE); @@ -4133,6 +4148,9 @@ int rtw_select_roaming_candidate(struct mlme_priv *mlme) mlme->roam_network = NULL; mlme->candidate_5G = NULL; + if (candidate) candidate->fixed = _FALSE; + if (candidate_5G) candidate_5G->fixed = _FALSE; + if (mlme->cur_network_scanned == NULL) { rtw_warn_on(1); goto exit; diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mlme_ext.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mlme_ext.c old mode 100644 new mode 100755 index 02a7149b..7f1bb0f2 --- a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mlme_ext.c +++ b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mlme_ext.c @@ -12192,9 +12192,11 @@ no_external_auth: recv_ack(padapter, true); issue_auth(padapter, NULL, 0); +#ifdef CONFIG_RTW_80211R if (rtw_ft_roam(padapter)) set_link_timer(pmlmeext, REAUTH_FT_TO); else +#endif set_link_timer(pmlmeext, REAUTH_TO); } @@ -13689,14 +13691,13 @@ bypass_active_keep_alive: void roamed_status_chk(_adapter *padapter, u8 from_timer) { - struct mlme_priv *pmlmepriv = &padapter->mlmepriv; -#if defined(CONFIG_LAYER2_ROAMING) && defined(CONFIG_RTW_80211K) + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; +#ifdef CONFIG_LAYER2_ROAMING struct wlan_network *ap = pmlmepriv->cur_network_scanned; - int wait_times = 10; /* unit 10ms */ - struct roam_nb_info *pnb = &(pmlmepriv->nb_info); - struct recv_priv *precvpriv = &padapter->recvpriv; u8 roam_cur_rssi_th; u8 roam_cur_rssi_diff, pulse_cur_rssi_diff; + int wait_times = 10; /* unit 10ms */ + struct recv_priv *precvpriv = &padapter->recvpriv; u8 int_facotr = 1, skip_time_chk = 0, skip_rssi_chk = 0; u8 reason = RTW_AUTO_SCAN_REASON_ROAM; u32 wait_ms = 0, pass_ms = 0, remain_ms = 0; @@ -13774,7 +13775,8 @@ void roamed_status_chk(_adapter *padapter, u8 from_timer) pmlmepriv->roam_try_cnt = 0; } } -#endif +#endif /* CONFIG_RTW_PREFER_5G */ + /* extend roam scan interval */ if (pmlmepriv->roam_try_cnt > pmlmepriv->roam_scan_round3) { wait_ms = pmlmepriv->roam_scan_int3 * 2000; @@ -15024,7 +15026,6 @@ static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel struct rtw_ieee80211_channel out5_noir[MAX_CHANNEL_NUM_5G]; struct rtw_ieee80211_channel out_roam[RTW_MAX_NB_RPT_NUM]; - /* clear first */ _rtw_memset(out, 0, sizeof(struct rtw_ieee80211_channel) * out_num); _rtw_memset(out2, 0, sizeof(out2)); @@ -15058,15 +15059,25 @@ static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel if (set_idx < 0) continue; + chan = rfctl->channel_set[set_idx].ChannelNum; + if (rfctl->channel_set[set_idx].band == BAND_ON_5G) { if (rfctl->channel_set[set_idx].flags & (RTW_CHF_NO_IR /*| RTW_CHF_DFS*/)) { + /* 5G DFS and NO_IR */ + if (rtw_chlist_search_ch(out5_noir, k, chan) != -1) + continue; + _rtw_memcpy(&out5_noir[k], &in[i], sizeof(struct rtw_ieee80211_channel)); out5_noir[k].flags |= RTW_IEEE80211_CHAN_PASSIVE_SCAN; k++; } else { + /* 5G Active channel */ + if (rtw_chlist_search_ch(out5, j, chan) != -1) + continue; + _rtw_memcpy(&out5[j], &in[i], sizeof(struct rtw_ieee80211_channel)); j++; } @@ -15074,12 +15085,20 @@ static int rtw_scan_ch_decision(_adapter *padapter, struct rtw_ieee80211_channel } else { /* 2G */ if (rfctl->channel_set[set_idx].flags & (RTW_CHF_NO_IR /*| RTW_CHF_DFS*/)) { + /* 2G NO_IR */ + if (rtw_chlist_search_ch(out2_noir, m, chan) != -1) + continue; + _rtw_memcpy(&out2_noir[m], &in[i], sizeof(struct rtw_ieee80211_channel)); out2_noir[m].flags |= RTW_IEEE80211_CHAN_PASSIVE_SCAN; m++; } else { + /* 2G Active channel */ + if (rtw_chlist_search_ch(out2, l, chan) != -1) + continue; + _rtw_memcpy(&out2[l], &in[i], sizeof(struct rtw_ieee80211_channel)); l++; } @@ -15973,8 +15992,9 @@ operation_by_state: rtw_rx_ampdu_apply(padapter); /* clear HW TX queue before scan */ +#ifdef CONFIG_SCAN_FLUSH_TX_FIFO rtw_hal_set_hwreg(padapter, HW_VAR_CHECK_TXBUF, 0); - +#endif rtw_hal_macid_sleep_all_used(padapter); /* power save state announcement */ @@ -16188,8 +16208,9 @@ operation_by_state: */ /* clear HW TX queue before scan */ +#ifdef CONFIG_SCAN_FLUSH_TX_FIFO rtw_hal_set_hwreg(padapter, HW_VAR_CHECK_TXBUF, 0); - +#endif rtw_hal_macid_sleep_all_used(padapter); if (mlmeext_chk_scan_backop_flags(pmlmeext, SS_BACKOP_PS_ANNC) && rtw_ps_annc(padapter, 1) diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mp.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_mp.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_pwrctrl.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_pwrctrl.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_recv.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_recv.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_vht.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_vht.c old mode 100644 new mode 100755 index cd35aebd..8d857736 --- a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_vht.c +++ b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_vht.c @@ -1266,15 +1266,13 @@ void rtw_reattach_vht_ies(_adapter *padapter, WLAN_BSSID_EX *pnetwork) RTW_INFO(FUNC_ADPT_FMT"\n", FUNC_ADPT_ARG(padapter)); - if (pnetwork->IEs != NULL) { - vht_op_ie = rtw_set_ie(vht_cap_ie, EID_VHTCapability, VHT_CAP_IE_LEN, - pvhtpriv->vht_cap_ie_backup, &(pnetwork->IELength)); + vht_op_ie = rtw_set_ie(vht_cap_ie, EID_VHTCapability, VHT_CAP_IE_LEN, + pvhtpriv->vht_cap_ie_backup, &(pnetwork->IELength)); - rtw_set_ie(vht_op_ie, EID_VHTOperation, VHT_OP_IE_LEN, - pvhtpriv->vht_op_ie_backup, &(pnetwork->IELength)); + rtw_set_ie(vht_op_ie, EID_VHTOperation, VHT_OP_IE_LEN, + pvhtpriv->vht_op_ie_backup, &(pnetwork->IELength)); - rtw_set_vht_ext_cap(padapter, pnetwork); - } + rtw_set_vht_ext_cap(padapter, pnetwork); pmlmepriv->vhtpriv.vht_option = _TRUE; } diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_wlan_util.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_wlan_util.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/core/rtw_wnm.c b/drivers/net/wireless/realtek/rtl8822ce/core/rtw_wnm.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtc8822c.c b/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtc8822c.c index 89ad4670..831424df 100644 --- a/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtc8822c.c +++ b/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtc8822c.c @@ -61,7 +61,8 @@ static const struct btc_coex_table_para table_sant_8822c[] = { {0xdaffdaff, 0xdaffdaff}, {0x6a555a5a, 0x5a5a5a5a}, {0xe5555555, 0xe5555555}, /*case-35*/ - {0xea5a5a5a, 0xea5a5a5a} }; + {0xea5a5a5a, 0xea5a5a5a}, + {0x55555555, 0xaa5a5aaa} }; /*case-37*/ /* Non-Shared-Antenna Coex Table */ static const struct btc_coex_table_para table_nsant_8822c[] = { @@ -120,7 +121,9 @@ static const struct btc_tdma_para tdma_sant_8822c[] = { { {0x65, 0x10, 0x03, 0x11, 0x10} }, { {0x51, 0x10, 0x03, 0x10, 0x51} }, /*case-25*/ { {0x51, 0x08, 0x03, 0x10, 0x50} }, - { {0x61, 0x08, 0x03, 0x11, 0x11} } }; + { {0x61, 0x08, 0x03, 0x11, 0x11} }, + { {0x61, 0x45, 0x03, 0x11, 0x11} }, /*case-28*/ + { {0x61, 0x55, 0x03, 0x11, 0x11} } };/*case-29*/ /* Non-Shared-Antenna TDMA*/ @@ -214,7 +217,7 @@ const struct btc_5g_afh_map afh_5g_8822c[] = { {0, 0, 0} }; const struct btc_chip_para btc_chip_para_8822c = { "8822c", /*.chip_name */ - 20240125, /*.para_ver_date */ + 20240327, /*.para_ver_date */ 0x27, /*.para_ver */ 0x20, /* bt_desired_ver */ 0x7001c, /* wl_desired_ver */ diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtc8822c.h b/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtc8822c.h old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtc8822cwifionly.c b/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtc8822cwifionly.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtc8822cwifionly.h b/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtc8822cwifionly.h old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtccommon.c b/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtccommon.c index e87b90ea..e304602f 100644 --- a/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtccommon.c +++ b/drivers/net/wireless/realtek/rtl8822ce/hal/btc/halbtccommon.c @@ -18,7 +18,7 @@ #if (BT_SUPPORT == 1 && COEX_SUPPORT == 1) static u8 *trace_buf = &gl_btc_trace_buf[0]; -static const u32 coex_ver_date = 20240125; +static const u32 coex_ver_date = 20240327; static const u32 coex_ver = 0x27; static u8 @@ -2403,8 +2403,8 @@ static void rtw_btc_action_bt_idle(struct btc_coexist *btc) #endif if (btc->board_info.btdm_ant_num == 1) { /* Shared-Ant */ if (!coex_sta->wl_gl_busy) { - table_case = 10; - tdma_case = 3; + table_case = 3; + tdma_case = 29; } else if (coex_sta->bt_mesh) { table_case = 26; tdma_case = 7; @@ -2417,8 +2417,8 @@ static void rtw_btc_action_bt_idle(struct btc_coexist *btc) else tdma_case = 7; } else { - table_case = 12; - tdma_case = 7; + table_case = 15; + tdma_case = 29; } } else { /* Non-Shared-Ant */ if (!coex_sta->wl_gl_busy) { @@ -2603,8 +2603,8 @@ static void rtw_btc_action_bt_hid(struct btc_coexist *btc) } else #endif if (coex_sta->bt_ble_exist) { /* RCU */ - table_case = 26; - tdma_case = 2; + table_case = 12; + tdma_case = 3; } else { /* Legacy HID */ if (coex_sta->bt_profile_num == 1 && (coex_sta->bt_multi_link || @@ -2616,26 +2616,26 @@ static void rtw_btc_action_bt_hid(struct btc_coexist *btc) if (coex_sta->wl_gl_busy && (coex_sta->wl_rx_rate <= 3 || coex_sta->wl_rts_rx_rate <= 3)) - table_case = 13; + table_case = 12; else table_case = 12; - tdma_case = 26; + tdma_case = 3; } else if (coex_sta->bt_a2dp_active) { table_case = 9; tdma_case = 18; } else if (coex_sta->bt_418_hid_exist && coex_sta->wl_gl_busy) { slot_type = TDMA_4SLOT; - table_case = 32; - tdma_case = 27; + table_case = 12; + tdma_case = 3; } else if (coex_sta->bt_ble_hid_exist && coex_sta->wl_gl_busy) { - table_case = 32; - tdma_case = 9; + table_case = 12; + tdma_case = 3; } else { - table_case = 9; - tdma_case = 9; + table_case = 12; + tdma_case = 3; } } } else { /* Non-Shared-Ant */ @@ -3084,14 +3084,14 @@ static void rtw_btc_action_wl_linkscan(struct btc_coexist *btc) tdma_case = 11; } else if (coex_sta->bt_hid_exist) { if (link_info_ext->is_connected) { - table_case = 36; + table_case = 11; } else { - table_case = 35; + table_case = 11; } - tdma_case = 5; + tdma_case = 1; } else { - table_case = 9; - tdma_case = 7; + table_case = 3; + tdma_case = 29; } } else { /* Non-Shared-Ant */ if (coex_sta->bt_pan_exist) { @@ -3578,13 +3578,6 @@ static void rtw_btc_run_coex(struct btc_coexist *btc, u8 reason) goto exit; } - if ((coex_dm->bt_status == BTC_BTSTATUS_NCON_IDLE || - coex_dm->bt_status == BTC_BTSTATUS_CON_IDLE) && - link_info_ext->is_connected) { - rtw_btc_action_bt_idle(btc); - goto exit; - } - if (coex_sta->wl_linkscan_proc && !coex_sta->coex_freerun) { rtw_btc_action_wl_linkscan(btc); goto exit; diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_PCIE.c b/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_PCIE.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_PCIE.h b/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_PCIE.h old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_SDIO.c b/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_SDIO.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_SDIO.h b/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_SDIO.h old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_USB.c b/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_USB.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_USB.h b/drivers/net/wireless/realtek/rtl8822ce/hal/efuse/rtl8822c/HalEfuseMask8822C_USB.h old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/hal_com.c b/drivers/net/wireless/realtek/rtl8822ce/hal/hal_com.c old mode 100644 new mode 100755 index f7e09b06..15a5f370 --- a/drivers/net/wireless/realtek/rtl8822ce/hal/hal_com.c +++ b/drivers/net/wireless/realtek/rtl8822ce/hal/hal_com.c @@ -5117,44 +5117,7 @@ void rtw_dump_fifo(void *sel, _adapter *adapter, u8 fifo_sel, u32 fifo_addr, u32 } #endif -#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN) -static void rtw_hal_force_enable_rxdma(_adapter *adapter) -{ - RTW_INFO("%s: Set 0x690=0x00\n", __func__); - rtw_write8(adapter, REG_WOW_CTRL, - (rtw_read8(adapter, REG_WOW_CTRL) & 0xf0)); - RTW_PRINT("%s: Release RXDMA\n", __func__); - rtw_write32(adapter, REG_RXPKT_NUM, - (rtw_read32(adapter, REG_RXPKT_NUM) & (~RW_RELEASE_EN))); -} -#if defined(CONFIG_RTL8188E) -static void rtw_hal_disable_tx_report(_adapter *adapter) -{ - rtw_write8(adapter, REG_TX_RPT_CTRL, - ((rtw_read8(adapter, REG_TX_RPT_CTRL) & ~BIT(1))) & ~BIT(5)); - RTW_INFO("disable TXRPT:0x%02x\n", rtw_read8(adapter, REG_TX_RPT_CTRL)); -} - -static void rtw_hal_enable_tx_report(_adapter *adapter) -{ - rtw_write8(adapter, REG_TX_RPT_CTRL, - ((rtw_read8(adapter, REG_TX_RPT_CTRL) | BIT(1))) | BIT(5)); - RTW_INFO("enable TX_RPT:0x%02x\n", rtw_read8(adapter, REG_TX_RPT_CTRL)); -} -#endif -static void rtw_hal_release_rx_dma(_adapter *adapter) -{ - u32 val32 = 0; - - val32 = rtw_read32(adapter, REG_RXPKT_NUM); - - rtw_write32(adapter, REG_RXPKT_NUM, (val32 & (~RW_RELEASE_EN))); - - RTW_INFO("%s, [0x%04x]: 0x%08x\n", - __func__, REG_RXPKT_NUM, (u32)(val32 & (~RW_RELEASE_EN))); -} - -static u8 rtw_hal_pause_rx_dma(_adapter *adapter) +u8 rtw_hal_pause_rx_dma(_adapter *adapter) { PHAL_DATA_TYPE hal = GET_HAL_DATA(adapter); u8 ret = 0; @@ -5196,7 +5159,7 @@ static u8 rtw_hal_pause_rx_dma(_adapter *adapter) #endif /* CONFIG_USB_HCI */ } while (trycnt--); - if (trycnt < 0) { + if (trycnt <= 0) { tmp = rtw_read16(adapter, REG_RXPKT_NUM + 2); RTW_PRINT("Stop RX DMA failed......\n"); @@ -5219,6 +5182,43 @@ static u8 rtw_hal_pause_rx_dma(_adapter *adapter) return ret; } +#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN) +static void rtw_hal_force_enable_rxdma(_adapter *adapter) +{ + RTW_INFO("%s: Set 0x690=0x00\n", __func__); + rtw_write8(adapter, REG_WOW_CTRL, + (rtw_read8(adapter, REG_WOW_CTRL) & 0xf0)); + RTW_PRINT("%s: Release RXDMA\n", __func__); + rtw_write32(adapter, REG_RXPKT_NUM, + (rtw_read32(adapter, REG_RXPKT_NUM) & (~RW_RELEASE_EN))); +} +#if defined(CONFIG_RTL8188E) +static void rtw_hal_disable_tx_report(_adapter *adapter) +{ + rtw_write8(adapter, REG_TX_RPT_CTRL, + ((rtw_read8(adapter, REG_TX_RPT_CTRL) & ~BIT(1))) & ~BIT(5)); + RTW_INFO("disable TXRPT:0x%02x\n", rtw_read8(adapter, REG_TX_RPT_CTRL)); +} + +static void rtw_hal_enable_tx_report(_adapter *adapter) +{ + rtw_write8(adapter, REG_TX_RPT_CTRL, + ((rtw_read8(adapter, REG_TX_RPT_CTRL) | BIT(1))) | BIT(5)); + RTW_INFO("enable TX_RPT:0x%02x\n", rtw_read8(adapter, REG_TX_RPT_CTRL)); +} +#endif +static void rtw_hal_release_rx_dma(_adapter *adapter) +{ + u32 val32 = 0; + + val32 = rtw_read32(adapter, REG_RXPKT_NUM); + + rtw_write32(adapter, REG_RXPKT_NUM, (val32 & (~RW_RELEASE_EN))); + + RTW_INFO("%s, [0x%04x]: 0x%08x\n", + __func__, REG_RXPKT_NUM, (u32)(val32 & (~RW_RELEASE_EN))); +} + #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) #ifndef RTW_HALMAC static u8 rtw_hal_enable_cpwm2(_adapter *adapter) diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/hal_dm.c b/drivers/net/wireless/realtek/rtl8822ce/hal/hal_dm.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/hal_intf.c b/drivers/net/wireless/realtek/rtl8822ce/hal/hal_intf.c index 8aa1341f..a1ec766e 100644 --- a/drivers/net/wireless/realtek/rtl8822ce/hal/hal_intf.c +++ b/drivers/net/wireless/realtek/rtl8822ce/hal/hal_intf.c @@ -474,6 +474,7 @@ u32 rtw_hal_power_on(_adapter *padapter) void rtw_hal_power_off(_adapter *padapter) { struct macid_ctl_t *macid_ctl = &padapter->dvobj->macid_ctl; + int res; _rtw_memset(macid_ctl->h2c_msr, 0, MACID_NUM_SW_LIMIT); _rtw_memset(macid_ctl->op_num, 0, H2C_MSR_ROLE_MAX); @@ -486,6 +487,10 @@ void rtw_hal_power_off(_adapter *padapter) rtw_btcoex_PowerOffSetting(padapter); #endif + res = rtw_hal_pause_rx_dma(padapter); + if (res == _FAIL) + RTW_PRINT("[WARNING] pause RX DMA fail\n"); + padapter->hal_func.hal_power_off(padapter); } diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/hal_mp.c b/drivers/net/wireless/realtek/rtl8822ce/hal/hal_mp.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm.mk b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm.mk index f512d2f7..2c007b79 100644 --- a/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm.mk +++ b/drivers/net/wireless/realtek/rtl8822ce/hal/phydm/phydm.mk @@ -1,4 +1,4 @@ -EXTRA_CFLAGS += -I$(SOURCETREE)/hal/phydm +EXTRA_CFLAGS += -I$(src)/hal/phydm _PHYDM_FILES := hal/phydm/phydm_debug.o \ hal/phydm/phydm_antdiv.o\ @@ -256,4 +256,4 @@ _PHYDM_FILES += hal/phydm/$(RTL871X)/halhwimg8723f_bb.o\ hal/phydm/halrf/$(RTL871X)/halrf_txgapk_8723f.o\ hal/phydm/halrf/$(RTL871X)/halrf_rfk_init_8723f.o\ hal/phydm/halrf/$(RTL871X)/halhwimg8723f_rf.o -endif +endif \ No newline at end of file diff --git a/drivers/net/wireless/realtek/rtl8822ce/include/autoconf.h b/drivers/net/wireless/realtek/rtl8822ce/include/autoconf.h index 3bf22b2d..57bb5eb3 100644 --- a/drivers/net/wireless/realtek/rtl8822ce/include/autoconf.h +++ b/drivers/net/wireless/realtek/rtl8822ce/include/autoconf.h @@ -16,7 +16,7 @@ #define CONFIG_HEXFILE_CHANNEL_PLAN #define CONFIG_HEXFILE_POWER_LIMIT #define RTW_HEXFILE_LEN 3072 -#define RTW_HEXFILE_NAME "/lib/firmware/rtl8822_setting.bin" +#define RTW_HEXFILE_NAME "setting.bin" #define CONFIG_SINGLE_IMG /* #define CONFIG_DISABLE_ODM */ diff --git a/drivers/net/wireless/realtek/rtl8822ce/include/hal_com.h b/drivers/net/wireless/realtek/rtl8822ce/include/hal_com.h index a46f95ff..f96b9855 100755 --- a/drivers/net/wireless/realtek/rtl8822ce/include/hal_com.h +++ b/drivers/net/wireless/realtek/rtl8822ce/include/hal_com.h @@ -373,6 +373,7 @@ void rtw_hal_dump_macaddr(void *sel, _adapter *adapter); void rtw_hal_set_hw_macaddr(PADAPTER adapter, u8 *mac_addr); void rtw_init_hal_com_default_value(PADAPTER Adapter); +u8 rtw_hal_pause_rx_dma(_adapter *adapter); #ifdef CONFIG_FW_C2H_REG void c2h_evt_clear(_adapter *adapter); diff --git a/drivers/net/wireless/realtek/rtl8822ce/include/rtw_mlme.h b/drivers/net/wireless/realtek/rtl8822ce/include/rtw_mlme.h index f20c0290..a018a2e9 100755 --- a/drivers/net/wireless/realtek/rtl8822ce/include/rtw_mlme.h +++ b/drivers/net/wireless/realtek/rtl8822ce/include/rtw_mlme.h @@ -1157,6 +1157,8 @@ int rtw_is_same_ibss(_adapter *adapter, struct wlan_network *pnetwork); int is_same_network(WLAN_BSSID_EX *src, WLAN_BSSID_EX *dst, u8 feature); #ifdef CONFIG_LAYER2_ROAMING +int rtw_check_roaming_candidate(struct mlme_priv *mlme, + struct wlan_network **candidate, struct wlan_network *competitor, u8 potential_5G); #define rtw_roam_flags(adapter) ((adapter)->mlmepriv.roam_flags) #define rtw_chk_roam_flags(adapter, flags) ((adapter)->mlmepriv.roam_flags & flags) #define rtw_clr_roam_flags(adapter, flags) \ diff --git a/drivers/net/wireless/realtek/rtl8822ce/include/rtw_mlme_ext.h b/drivers/net/wireless/realtek/rtl8822ce/include/rtw_mlme_ext.h index 17df3a94..90897297 100755 --- a/drivers/net/wireless/realtek/rtl8822ce/include/rtw_mlme_ext.h +++ b/drivers/net/wireless/realtek/rtl8822ce/include/rtw_mlme_ext.h @@ -23,8 +23,8 @@ * This will increase the chance to receive the probe response from SoftAP. */ #define SURVEY_TO (100) -#define REAUTH_TO (300) /* (50) */ -#define REASSOC_TO (300) /* (50) */ +#define REAUTH_TO (240) /* (50) */ +#define REASSOC_TO (240) /* (50) */ #define REAUTH_FT_TO (1000) #define REASSOC_FT_TO (1000) diff --git a/drivers/net/wireless/realtek/rtl8822ce/include/rtw_version.h b/drivers/net/wireless/realtek/rtl8822ce/include/rtw_version.h index 7570a3a8..9b7b9a8b 100644 --- a/drivers/net/wireless/realtek/rtl8822ce/include/rtw_version.h +++ b/drivers/net/wireless/realtek/rtl8822ce/include/rtw_version.h @@ -1,2 +1,2 @@ -#define DRIVERVERSION "v5.14.0.4-203-g4a9c85a0f.20240219_COEX20240125-2727_beta" -#define BTCOEXVERSION "COEX20240125-2727" +#define DRIVERVERSION "v5.14.0.4-217-g7a0377e61.20240410_COEX20240327-2727_beta" +#define BTCOEXVERSION "COEX20240327-2727" diff --git a/drivers/net/wireless/realtek/rtl8822ce/include/rtw_wnm.h b/drivers/net/wireless/realtek/rtl8822ce/include/rtw_wnm.h index bf45d6d6..82f98c77 100755 --- a/drivers/net/wireless/realtek/rtl8822ce/include/rtw_wnm.h +++ b/drivers/net/wireless/realtek/rtl8822ce/include/rtw_wnm.h @@ -208,7 +208,5 @@ u32 rtw_wnm_btm_candidates_survey(_adapter *padapter, u8* pframe, u32 elem_len, u8 is_preference); struct mlme_priv; -int rtw_check_roaming_candidate(struct mlme_priv *mlme, - struct wlan_network **candidate, struct wlan_network *competitor, u8 potential_5G); #endif /* __RTW_WNM_H_ */ diff --git a/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/ioctl_cfg80211.c b/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/ioctl_cfg80211.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/recv_linux.c b/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/recv_linux.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/rtw_android.c b/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/rtw_android.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/rtw_proc.c b/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/rtw_proc.c old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/rtw_proc.h b/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/rtw_proc.h old mode 100644 new mode 100755 diff --git a/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/wifi_regd.c b/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/wifi_regd.c index ea45dc49..56179410 100644 --- a/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/wifi_regd.c +++ b/drivers/net/wireless/realtek/rtl8822ce/os_dep/linux/wifi_regd.c @@ -694,7 +694,7 @@ int rtw_regd_init(struct wiphy *wiphy) wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS; #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 39)) wiphy->regulatory_flags |= REGULATORY_IGNORE_STALE_KICKOFF; #endif diff --git a/drivers/net/wireless/realtek/rtl8822ce/rtl8822c.mk b/drivers/net/wireless/realtek/rtl8822ce/rtl8822c.mk index 90962071..ee62bcdf 100644 --- a/drivers/net/wireless/realtek/rtl8822ce/rtl8822c.mk +++ b/drivers/net/wireless/realtek/rtl8822ce/rtl8822c.mk @@ -49,7 +49,7 @@ _HAL_INTFS_FILES +=hal/efuse/rtl8822c/HalEfuseMask8822C_SDIO.o _HAL_INTFS_FILES +=hal/hal_hci/hal_sdio_coex.o endif -include $(SOURCETREE)/halmac.mk +include $(src)/halmac.mk _BTC_FILES += hal/btc/halbtc8822cwifionly.o ifeq ($(CONFIG_BT_COEXIST), y)