Skip to content

Commit

Permalink
Fix for edimax EW-7822ULC BUG #769 (#47)
Browse files Browse the repository at this point in the history
* Edimax AC1200 MU-MIMO USB2.0

* 7392:b822 is 8822B not 8821, so handled by rtl88x2bu
  • Loading branch information
gkrzystek committed Apr 25, 2023
1 parent 316288a commit 115b1d1
Show file tree
Hide file tree
Showing 15 changed files with 172 additions and 140 deletions.
2 changes: 1 addition & 1 deletion drivers/net/wireless/realtek/rtl8812au/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ CONFIG_SIGNAL_SCALE_MAPPING = n
CONFIG_80211W = y
CONFIG_REDUCE_TX_CPU_LOADING = n
CONFIG_BR_EXT = y
CONFIG_TDLS = n
CONFIG_TDLS = y
CONFIG_WIFI_MONITOR = y
CONFIG_MCC_MODE = n
CONFIG_APPEND_VENDOR_IE_ENABLE = n
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -465,7 +465,11 @@ u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset,
*/

#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0))
cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, 0, false, 0);
#else
cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, 0, false);
#endif
#else
cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, false);
#endif
Expand All @@ -480,7 +484,11 @@ u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset,
goto exit;

#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2))
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0))
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0, 0);
#else
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0);
#endif
#else
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef);
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,6 @@ static struct usb_device_id rtw_usb_id_tbl[] = {
{USB_DEVICE(0x050D, 0x1106), .driver_info = RTL8812}, /* Belkin - sercomm */
{USB_DEVICE(0x2001, 0x330E), .driver_info = RTL8812}, /* D-Link - ALPHA */
{USB_DEVICE(0x7392, 0xA822), .driver_info = RTL8812}, /* Edimax - Edimax */
{USB_DEVICE(0x7392, 0xB822), .driver_info = RTL8812}, /* Edimax EW-7822ULC */
{USB_DEVICE(0x0DF6, 0x0074), .driver_info = RTL8812}, /* Sitecom - Edimax */
{USB_DEVICE(0x04BB, 0x0952), .driver_info = RTL8812}, /* I-O DATA - Edimax */
{USB_DEVICE(0x0789, 0x016E), .driver_info = RTL8812}, /* Logitec - Edimax */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
#define PHYDM_SNPRINTF snprintf
#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
#undef pr_debug
#define pr_debug printk
#define pr_debug _RTW_DBG
#define RT_PRINTK(fmt, args...) pr_debug(fmt, ## args)
#define RT_DISP(dbgtype, dbgflag, printstr)
#define RT_TRACE(adapter, comp, drv_level, fmt, args...) \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -465,7 +465,11 @@ u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset,
*/

#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 1, 0))
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0))
cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, 0, false, 0);
#else
cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, 0, false);
#endif
#else
cfg80211_ch_switch_started_notify(adapter->pnetdev, &chdef, 0, false);
#endif
Expand All @@ -480,7 +484,11 @@ u8 rtw_cfg80211_ch_switch_notify(_adapter *adapter, u8 ch, u8 bw, u8 offset,
goto exit;

#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 19, 2))
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0))
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0, 0);
#else
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef, 0);
#endif
#else
cfg80211_ch_switch_notify(adapter->pnetdev, &chdef);
#endif
Expand Down
13 changes: 7 additions & 6 deletions drivers/net/wireless/realtek/rtl8821cu/core/rtw_mlme_ext.c
Original file line number Diff line number Diff line change
Expand Up @@ -12799,14 +12799,15 @@ void linked_status_chk(_adapter *padapter, u8 from_timer)
#elif defined(CONFIG_LAYER2_ROAMING)
if (rtw_chk_roam_flags(padapter, RTW_ROAM_ACTIVE)) {
RTW_INFO("signal_strength_data.avg_val = %d\n", precvpriv->signal_strength_data.avg_val);
if ((precvpriv->signal_strength_data.avg_val < pmlmepriv->roam_rssi_threshold)
&& (rtw_get_passing_time_ms(pmlmepriv->last_roaming) >= pmlmepriv->roam_scan_int*2000)) {
if (precvpriv->signal_strength_data.avg_val < pmlmepriv->roam_rssi_threshold) {
if (rtw_get_passing_time_ms(pmlmepriv->last_roaming) >= pmlmepriv->roam_scan_int*2000) {
#ifdef CONFIG_RTW_80211K
rtw_roam_nb_discover(padapter, _FALSE);
rtw_roam_nb_discover(padapter, _FALSE);
#endif
pmlmepriv->need_to_roam = _TRUE;
rtw_drv_scan_by_self(padapter, RTW_AUTO_SCAN_REASON_ROAM);
pmlmepriv->last_roaming = rtw_get_current_time();
pmlmepriv->need_to_roam = _TRUE;
rtw_drv_scan_by_self(padapter, RTW_AUTO_SCAN_REASON_ROAM);
pmlmepriv->last_roaming = rtw_get_current_time();
}
} else
pmlmepriv->need_to_roam = _FALSE;
}
Expand Down
14 changes: 7 additions & 7 deletions drivers/net/wireless/realtek/rtl8821cu/core/rtw_odm.c
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,7 @@ debug_IQK(
if (idx == TX_IQK) {//TXCFIR
odm_set_bb_reg(dm, R_0x1b20, BIT(31) | BIT(30), 0x3);
} else {//RXCFIR
odm_set_bb_reg(dm, R_0x1b20, BIT(31) | BIT(30), 0x1);
odm_set_bb_reg(dm, R_0x1b20, BIT(31) | BIT(30), 0x1);
}
odm_set_bb_reg(dm, R_0x1bd4, BIT(21), 0x1);
odm_set_bb_reg(dm, R_0x1bd4, bit_mask_20_16, 0x10);
Expand All @@ -506,7 +506,7 @@ debug_IQK(
//iqk_info->iqk_cfir_real[ch][path][idx][i] =
// (tmp & 0x0fff0000) >> 16;
RTW_INFO("iqk_cfir_imag[%d][%d][%d] = 0x%x\n", path, idx, i, (tmp & 0x0fff));
//iqk_info->iqk_cfir_imag[ch][path][idx][i] = tmp & 0x0fff;
//iqk_info->iqk_cfir_imag[ch][path][idx][i] = tmp & 0x0fff;
}
odm_set_bb_reg(dm, R_0x1b20, BIT(31) | BIT(30), 0x0);
//odm_set_bb_reg(dm, R_0x1bd8, MASKDWORD, 0x0);
Expand Down Expand Up @@ -542,7 +542,7 @@ extern void _dpk_get_coef_8822c(void *dm_void, u8 path);
__odm_func__ void
debug_reload_data_8822c(
void *dm_void)
{
{
struct dm_struct *dm = (struct dm_struct *)dm_void;
struct dm_dpk_info *dpk_info = &dm->dpk_info;

Expand All @@ -567,7 +567,7 @@ debug_reload_data_8822c(

u32tmp = odm_get_bb_reg(dm, R_0x1b64, MASKBYTE3);
RTW_INFO("[DPK] dpk_txagc = 0x%08x\n", u32tmp);

//debug_coef_write_8822c(dm, path, dpk_info->dpk_path_ok & BIT(path) >> path);
_dpk_get_coef_8822c(dm, path);

Expand All @@ -577,11 +577,11 @@ debug_reload_data_8822c(

if (path == RF_PATH_A)
u32tmp = odm_get_bb_reg(dm, R_0x1b04, 0x0fffffff);
else
else
u32tmp = odm_get_bb_reg(dm, R_0x1b5c, 0x0fffffff);

RTW_INFO("[DPK] dpk_gs = 0x%08x\n", u32tmp);

}
}

Expand All @@ -593,7 +593,7 @@ void odm_lps_pg_debug_8822c(void *dm_void)
debug_IQK(dm, TX_IQK, RF_PATH_A);
debug_IQK(dm, RX_IQK, RF_PATH_A);
debug_IQK(dm, TX_IQK, RF_PATH_B);
debug_IQK(dm, RX_IQK, RF_PATH_B);
debug_IQK(dm, RX_IQK, RF_PATH_B);
debug_reload_data_8822c(dm);
}
#endif /* defined(CONFIG_RTL8822C) && defined(CONFIG_LPS_PG) */
Expand Down
4 changes: 2 additions & 2 deletions drivers/net/wireless/realtek/rtl8821cu/core/rtw_recv.c
Original file line number Diff line number Diff line change
Expand Up @@ -4083,7 +4083,7 @@ int recv_frame_monitor(_adapter *padapter, union recv_frame *rframe)
if (!RTW_CANNOT_RUN(padapter)) {
/* indicate this recv_frame */
ret = rtw_recv_monitor(padapter, rframe);
} else
} else
ret = _FAIL;

exit:
Expand Down Expand Up @@ -4252,7 +4252,7 @@ int recv_func(_adapter *padapter, union recv_frame *rframe)
u8 type;
#endif

if (check_fwstate(mlmepriv, WIFI_MONITOR_STATE)
if (check_fwstate(mlmepriv, WIFI_MONITOR_STATE)
#ifdef RTW_SIMPLE_CONFIG
|| (check_fwstate(mlmepriv, WIFI_AP_STATE) && padapter->rtw_simple_config == _TRUE && IS_MCAST(rtl_get_ra(ptr)))
#endif
Expand Down
Loading

0 comments on commit 115b1d1

Please sign in to comment.