RE: [PATCH v3 5/9] wifi: rtw88: main: Reserve 8 bytes of extra TX headroom for SDIO cards

From: Ping-Ke Shih
Date: Wed Mar 22 2023 - 22:29:08 EST




> -----Original Message-----
> From: Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx>
> Sent: Tuesday, March 21, 2023 5:35 AM
> To: linux-wireless@xxxxxxxxxxxxxxx
> Cc: Yan-Hsuan Chuang <tony0620emma@xxxxxxxxx>; Kalle Valo <kvalo@xxxxxxxxxx>; Ulf Hansson
> <ulf.hansson@xxxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx;
> linux-mmc@xxxxxxxxxxxxxxx; Chris Morgan <macroalpha82@xxxxxxxxx>; Nitin Gupta <nitin.gupta981@xxxxxxxxx>;
> Neo Jou <neojou@xxxxxxxxx>; Ping-Ke Shih <pkshih@xxxxxxxxxxx>; Jernej Skrabec <jernej.skrabec@xxxxxxxxx>;
> Larry Finger <Larry.Finger@xxxxxxxxxxxx>; Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx>
> Subject: [PATCH v3 5/9] wifi: rtw88: main: Reserve 8 bytes of extra TX headroom for SDIO cards
>
> For SDIO host controllers with DMA support the TX buffer physical memory
> address need to be aligned at an 8-byte boundary. Reserve 8 bytes of
> extra TX headroom so we can align the data without re-allocating the
> transmit buffer.
>
> While here, also remove the TODO comment regarding extra headroom for
> USB and SDIO. For SDIO the extra headroom is now handled and for USB it
> was not needed so far.
>
> Signed-off-by: Martin Blumenstingl <martin.blumenstingl@xxxxxxxxxxxxxx>

Reviewed-by: Ping-Ke Shih <pkshih@xxxxxxxxxxx>

> ---
> Changes since v2:
> - none
>
> Changes since v1:
> - none
>
>
> drivers/net/wireless/realtek/rtw88/main.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c
> index cdc4703ead5f..1cb553485cff 100644
> --- a/drivers/net/wireless/realtek/rtw88/main.c
> +++ b/drivers/net/wireless/realtek/rtw88/main.c
> @@ -2163,9 +2163,11 @@ int rtw_register_hw(struct rtw_dev *rtwdev, struct ieee80211_hw *hw)
> int max_tx_headroom = 0;
> int ret;
>
> - /* TODO: USB & SDIO may need extra room? */
> max_tx_headroom = rtwdev->chip->tx_pkt_desc_sz;
>
> + if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_SDIO)
> + max_tx_headroom += RTW_SDIO_DATA_PTR_ALIGN;
> +
> hw->extra_tx_headroom = max_tx_headroom;
> hw->queues = IEEE80211_NUM_ACS;
> hw->txq_data_size = sizeof(struct rtw_txq);
> --
> 2.40.0