Search Linux Wireless

Re: [PATCH v5 3/5] mt76: mt76x02: remove a copy call for usb speedup

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

 



On Tue, Nov 19, 2019 at 01:24:08PM +0100, Markus Theil wrote:
> This patch removes a mt76_wr_copy call from the beacon path to hw.
> The skb which is used in this place gets therefore build with txwi
> inside its data. For mt76 usb drivers, this saves one synchronuous
> copy call over usb, which lets the beacon work complete faster.
> 
> Signed-off-by: Markus Theil <markus.theil@xxxxxxxxxxxxx>
> ---
>  drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c b/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c
> index 09013adae854..a9df8f2d41b8 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt76x02_beacon.c
> @@ -26,15 +26,15 @@ static int
>  mt76x02_write_beacon(struct mt76x02_dev *dev, int offset, struct sk_buff *skb)
>  {
>  	int beacon_len = dev->beacon_ops->slot_size;
> -	struct mt76x02_txwi txwi;
> +	struct mt76x02_txwi *txwi;
>  
>  	if (WARN_ON_ONCE(beacon_len < skb->len + sizeof(struct mt76x02_txwi)))
>  		return -ENOSPC;
>  
> -	mt76x02_mac_write_txwi(dev, &txwi, skb, NULL, NULL, skb->len);
> -
> -	mt76_wr_copy(dev, offset, &txwi, sizeof(txwi));
> -	offset += sizeof(txwi);
> +	mt76_insert_hdr_pad(skb);
> +	txwi = (struct mt76x02_txwi *)(skb->data - sizeof(*txwi));
> +	mt76x02_mac_write_txwi(dev, txwi, skb, NULL, NULL, skb->len);
> +	skb_push(skb, sizeof(*txwi));

This require enough skb headroom for txwi . Mac80211 reserve headroom
for us according to hw->extra_tx_headroom . Currently we ask for extra
space for txwi only for usb in mt76x02_init_device().

So this code should be put under mt76_is_usb() condition or,
what I think is less preferred, reserve extra space also for mmio.

Stanislaw





[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