Hello, sorry for my english.
I wanted to buy myself AWUS036ACH, but I see that it has problems with the drivers.
I compared the source code of the versions: master (4.3.20), 4.3.21 and 5.1.5
I drank vodka and found a difference that can be responsible for usb2 / 3
This is in the file os_dep \ linux \ usb_intf.c
Perhaps this is due to a malfunction in usb3, please write this in to the developers, because my English is bad. Suka blyad.
Code:
MASTER 4.3.20
static int usb_reprobe_to_usb3(PADAPTER Adapter)
{
struct registry_priv *registry_par = &Adapter->registrypriv;
int ret = _FALSE;
if (registry_par->switch_usb3 == _TRUE) {
if (IS_HIGH_SPEED_USB(Adapter)) {
if ((rtw_read8(Adapter, 0x74) & (BIT(2)|BIT(3))) != BIT(3)) {
rtw_write8(Adapter, 0x74, 0x8);
rtw_write8(Adapter, 0x70, 0x2);
rtw_write8(Adapter, 0x3e, 0x1);
rtw_write8(Adapter, 0x3d, 0x3);
/* usb disconnect */
rtw_write8(Adapter, 0x5, 0x80);
ret = _TRUE;
}
} else if (IS_SUPER_SPEED_USB(Adapter)) {
rtw_write8(Adapter, 0x70, rtw_read8(Adapter, 0x70) & (~BIT(1)));
rtw_write8(Adapter, 0x3e, rtw_read8(Adapter, 0x3e) & (~BIT(0)));
}
}
return ret;
}
4.3.20
static int usb_reprobe_to_usb3(PADAPTER Adapter)
{
struct registry_priv *registry_par = &Adapter->registrypriv;
u8 ret = _FALSE;
#if defined(CONFIG_RTL8812A) || defined(CONFIG_RTL8821A)
if (IS_HIGH_SPEED_USB(Adapter)) {
if ((rtw_read8(Adapter, 0x74) & (BIT(2)|BIT(3))) != BIT(3)) {
rtw_write8(Adapter, 0x74, 0x8);
rtw_write8(Adapter, 0x70, 0x2);
rtw_write8(Adapter, 0x3e, 0x1);
rtw_write8(Adapter, 0x3d, 0x3);
/* usb disconnect */
rtw_write8(Adapter, 0x5, 0x80);
ret = _TRUE;
}
} else if (IS_SUPER_SPEED_USB(Adapter)) {
rtw_write8(Adapter, 0x70, rtw_read8(Adapter, 0x70) & (~BIT(1)));
rtw_write8(Adapter, 0x3e, rtw_read8(Adapter, 0x3e) & (~BIT(0)));
}
#else
rtw_hal_set_hwreg(Adapter, HW_VAR_USB_MODE, &ret);
#endif
return ret;
}
5.1.5
static int usb_reprobe_switch_usb_mode(PADAPTER Adapter)
{
struct registry_priv *registry_par = &Adapter->registrypriv;
HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
u8 ret = _FALSE;
/* efuse not allow driver to switch usb mode */
if (pHalData->EEPROMUsbSwitch == _FALSE)
goto exit;
/* registry not allow driver to switch usb mode */
if (registry_par->switch_usb_mode == 0)
goto exit;
rtw_hal_set_hwreg(Adapter, HW_VAR_USB_MODE, &ret);
exit:
return ret;
}