Search Linux Wireless

Re: [PATCH v2] wifi: rtlwifi: rtl_usb: Use sync register writes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11/01/2024 03:59, Ping-Ke Shih wrote:
> 
> 
>> -----Original Message-----
>> From: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx>
>> Sent: Wednesday, January 10, 2024 9:47 PM
>> To: linux-wireless@xxxxxxxxxxxxxxx
>> Cc: Ping-Ke Shih <pkshih@xxxxxxxxxxx>; Larry Finger <Larry.Finger@xxxxxxxxxxxx>
>> Subject: [PATCH v2] wifi: rtlwifi: rtl_usb: Use sync register writes
>>
>> Currently rtl_usb performs register writes using the async
>> usb_submit_urb() function. This appears to work fine for the RTL8192CU,
>> but the RTL8192DU (soon to be supported by rtlwifi) has a problem:
>> it transmits everything at the 1M rate in the 2.4 GHz band. (The 5 GHz
>> band is still untested.)
>>
>> With this patch, rtl_usb performs the register writes using the
>> synchronous usb_control_msg() function, and the RTL8192DU works
>> normally. The RTL8192CU still works.
>>
>> The vendor drivers use the async writes in only one function,
>> rtl8192du_trigger_gpio_0 / rtl8192cu_trigger_gpio_0, which probably
>> doesn't even run in real life. They use sync writes everywhere else.
>>
>> Also, remove "sync" and "async" from the names of the members of
>> struct rtl_io to avoid confusion:
>>
>> write{8,16,32}_async -> write{8,16,32}
>>  read{8,16,32}_sync  ->  read{8,16,32}
>>
>> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx>
> 
> Acked-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx>
> 
>> ---
>> v2:
>>  - Rename the members of struct rtl_io.
>> ---
>>  drivers/net/wireless/realtek/rtlwifi/pci.c  |  12 +-
>>  drivers/net/wireless/realtek/rtlwifi/usb.c  | 163 ++++++--------------
>>  drivers/net/wireless/realtek/rtlwifi/wifi.h |  30 ++--
>>  3 files changed, 66 insertions(+), 139 deletions(-)
>>
> 
> [...]
> 
>> @@ -114,18 +51,15 @@ static int _usbctrl_vendorreq_sync_read(struct usb_device *udev, u8 request,
>>         } while (++vendorreq_times < MAX_USBCTRL_VENDORREQ_TIMES);
>>
>>         if (status < 0 && count++ < 4)
>> -               pr_err("reg 0x%x, usbctrl_vendorreq TimeOut! status:0x%x value=0x%x\n",
>> -                      value, status, *(u32 *)pdata);
>> -       return status;
>> +               pr_err("reg 0x%x, usbctrl_vendorreq TimeOut! status:0x%x value=0x%x reqtype=0x%x\n",
> 
> nit: Since you touch this, would you like to use dev_err() instead?
> 
Sure, I can do that.

>> +                      value, status, *(u32 *)pdata, reqtype);
>>  }
>>
> 
> [...]
> 





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux