mbox series

[0/6] wifi: rtw88: correct AP and PS mode behaviors

Message ID 20230616034431.17403-1-pkshih@realtek.com
Headers show
Series wifi: rtw88: correct AP and PS mode behaviors | expand

Message

Ping-Ke Shih June 16, 2023, 3:44 a.m. UTC
In AP mode, HI queue is used to transmit broadcast/multicast right after
issuing beacon, and we need set MORE_DATA in TX description to make
hardware transmits all packets in one go. Also, have special deal with
this queue when doing scan and flush.

After stopping AP from SCC (AP + STA), only one STA is working, so PS mode
is expected to enable. However, firmware checks the MAC port used by AP
mode before, and then can't enter PS mode. We add the last patch to set
"default port" to the port used by STA. Then, firmware will check correct
port to enter PS mode in expectation.

Po-Hao Huang (6):
  wifi: rtw88: use struct instead of macros to set TX desc
  wifi: rtw88: Fix AP mode incorrect DTIM behavior
  wifi: rtw88: Skip high queue in hci_flush
  wifi: rtw88: Stop high queue during scan
  wifi: rtw88: refine register based H2C command
  wifi: rtw88: fix not entering PS mode after AP stops

 drivers/net/wireless/realtek/rtw88/fw.c       |  68 ++++++++++
 drivers/net/wireless/realtek/rtw88/fw.h       |  13 ++
 drivers/net/wireless/realtek/rtw88/mac80211.c |   3 +
 drivers/net/wireless/realtek/rtw88/main.c     |  15 ++-
 drivers/net/wireless/realtek/rtw88/main.h     |   1 +
 drivers/net/wireless/realtek/rtw88/pci.c      |   5 +-
 drivers/net/wireless/realtek/rtw88/reg.h      |   2 +
 drivers/net/wireless/realtek/rtw88/rtw8723d.c |   5 +-
 drivers/net/wireless/realtek/rtw88/tx.c       |  84 +++++++-----
 drivers/net/wireless/realtek/rtw88/tx.h       | 122 +++++++-----------
 drivers/net/wireless/realtek/rtw88/usb.c      |  15 ++-
 11 files changed, 216 insertions(+), 117 deletions(-)

Comments

Bitterblue Smith June 16, 2023, 11:10 a.m. UTC | #1
On 16/06/2023 06:44, Ping-Ke Shih wrote:
> From: Po-Hao Huang <phhuang@realtek.com>
> 
> Remove macros that set TX descriptors. Use struct and
> le32_encode_bits() with mask definitions.
> 
> Signed-off-by: Po-Hao Huang <phhuang@realtek.com>
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
>  drivers/net/wireless/realtek/rtw88/rtw8723d.c |   5 +-
>  drivers/net/wireless/realtek/rtw88/tx.c       |  79 +++++++-----
>  drivers/net/wireless/realtek/rtw88/tx.h       | 121 +++++++-----------
>  drivers/net/wireless/realtek/rtw88/usb.c      |  12 +-
>  4 files changed, 104 insertions(+), 113 deletions(-)
> 

[...]

> diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c
> index 976eafa739a2d..dbfd5576cc120 100644
> --- a/drivers/net/wireless/realtek/rtw88/usb.c
> +++ b/drivers/net/wireless/realtek/rtw88/usb.c
> @@ -24,11 +24,12 @@ struct rtw_usb_txcb {
>  static void rtw_usb_fill_tx_checksum(struct rtw_usb *rtwusb,
>  				     struct sk_buff *skb, int agg_num)
>  {
> +	struct rtw_tx_desc *tx_desc = (struct rtw_tx_desc *)skb->data;
>  	struct rtw_dev *rtwdev = rtwusb->rtwdev;
>  	struct rtw_tx_pkt_info pkt_info;
>  
> -	SET_TX_DESC_DMA_TXAGG_NUM(skb->data, agg_num);
> -	pkt_info.pkt_offset = GET_TX_DESC_PKT_OFFSET(skb->data);
> +	le32_replace_bits(tx_desc->w7, agg_num, RTW_TX_DESC_W7_TXDESC_CHECKSUM);

This looks like the wrong mask. Should it be RTW_TX_DESC_W7_DMA_TXAGG_NUM ?

> +	pkt_info.pkt_offset = le32_get_bits(tx_desc->w1, RTW_TX_DESC_W1_PKT_OFFSET);
>  	rtw_tx_fill_txdesc_checksum(rtwdev, &pkt_info, skb->data);
>  }
>