public inbox for linux-wireless@vger.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
To: Stanislaw Gruszka <sgruszka@redhat.com>
Cc: Lorenzo Bianconi <lorenzo@kernel.org>,
	nbd@nbd.name, kvalo@codeaurora.org,
	linux-wireless@vger.kernel.org
Subject: Re: [PATCH v2 2/2] mt76: usb: do not always copy the first part of received frames
Date: Wed, 12 Jun 2019 12:49:22 +0200	[thread overview]
Message-ID: <20190612104921.GF8107@localhost.localdomain> (raw)
In-Reply-To: <20190612102502.GB4431@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2723 bytes --]

> On Wed, Jun 12, 2019 at 11:53:03AM +0200, Lorenzo Bianconi wrote:
> > > On Fri, May 31, 2019 at 11:38:23AM +0200, Lorenzo Bianconi wrote:
> > 
> > [...]
> > 
> > > >  	}
> > > >  
> > > >  	urb->num_sgs = max_t(int, i, urb->num_sgs);
> > > > -	urb->transfer_buffer_length = urb->num_sgs * q->buf_size,
> > > > +	urb->transfer_buffer_length = urb->num_sgs * data_size;
> > > >  	sg_init_marker(urb->sg, urb->num_sgs);
> > > >  
> > > >  	return i ? : -ENOMEM;
> > > > @@ -611,8 +611,12 @@ static int mt76u_alloc_rx(struct mt76_dev *dev)
> > > >  	if (!q->entry)
> > > >  		return -ENOMEM;
> > > >  
> > > > -	q->buf_size = dev->usb.sg_en ? MT_RX_BUF_SIZE : PAGE_SIZE;
> > > > +	if (dev->usb.sg_en)
> > > > +		q->buf_size = MT_BUF_WITH_OVERHEAD(MT_RX_BUF_SIZE);
> > > 
> > > I strongly recommend to not doing this. While this should work
> > > in theory creating buffer with size of 2k + some bytes might
> > > trigger various bugs in dma mapping or other low level code.
> > 
> > even in practice actually :)
> 
> I wouldn't be sure about this. It's not common to have buffers of
> such size and crossing pages boundaries. It really can trigger
> nasty bugs on various IOMMU drivers.

I was just joking, I mean that it worked in the tests I carried out, but I
agree it can trigger some issues in buggy IOMMU drivers

> 
> > but we can be more cautious since probably copying
> > the first 128B will not make any difference
> 
> Not sure if I understand what you mean.

Please correct me if I am wrong but I think max amsdu rx size is 3839B for
mt76. For the sg_en case this frame will span over multiple sg buffers since
sg buffer size is 2048B (2 sg buffers). Moreover if we do not take into account
skb_shared_info when configuring the sg buffer size we will need to always copy
the first 128B of the first buffer since received len will be set to 2048 and
the following if condition will always fail:

if (SKB_WITH_OVERHEAD(buf_size) >= MT_DMA_HDR_LEN + len) {
}

> 
> > > And skb_shered_info is needed only in first buffer IIUC.
> > > 
> > > Also this patch seems to make first patch unnecessary except for
> > > non sg_en case (in which I think rx AMSDU is broken anyway),
> > > so I would prefer just to apply first patch.
> > 
> > I do not think rx AMSDU is broken for non sg_en case since the max rx value
> > allowed should be 3839 IIRC and we alloc one page in this case
> 
> If that's the case we should be fine, but then I do not understand
> why we allocate 8*2k buffers for sg_en case, isn't that AP can
> sent AMSDU frame 16k big?

Sorry I did not get what you mean here, could you please explain?

Regards,
Lorenzo

> 
> Stanislaw
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2019-06-12 10:49 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-31  9:38 [PATCH v2 0/2] mt76: usb: fix A-MSDU support Lorenzo Bianconi
2019-05-31  9:38 ` [PATCH v2 1/2] mt76: usb: fix rx " Lorenzo Bianconi
2019-06-12  8:58   ` Stanislaw Gruszka
2019-06-12  9:45     ` Lorenzo Bianconi
2019-06-12 10:00       ` Stanislaw Gruszka
2019-06-12 10:21         ` Lorenzo Bianconi
2019-06-12 10:58           ` Stanislaw Gruszka
2019-06-12 11:17             ` Lorenzo Bianconi
2019-05-31  9:38 ` [PATCH v2 2/2] mt76: usb: do not always copy the first part of received frames Lorenzo Bianconi
2019-06-12  9:10   ` Stanislaw Gruszka
2019-06-12  9:53     ` Lorenzo Bianconi
2019-06-12 10:25       ` Stanislaw Gruszka
2019-06-12 10:49         ` Lorenzo Bianconi [this message]
2019-06-12 11:51           ` Stanislaw Gruszka
2019-06-12 12:28             ` Lorenzo Bianconi
2019-06-12 12:59               ` Stanislaw Gruszka
2019-06-12 14:21                 ` Stanislaw Gruszka
2019-06-12 14:44                   ` Lorenzo Bianconi
2019-06-13  7:51                     ` Stanislaw Gruszka
2019-06-13  8:26                       ` Lorenzo Bianconi
2019-06-13  9:02                         ` Stanislaw Gruszka
2019-06-13  9:06                           ` Lorenzo Bianconi
2019-06-12 14:27                 ` Lorenzo Bianconi
2019-06-13  7:55                   ` Stanislaw Gruszka
2019-06-06  8:47 ` [PATCH v2 0/2] mt76: usb: fix A-MSDU support Felix Fietkau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190612104921.GF8107@localhost.localdomain \
    --to=lorenzo.bianconi@redhat.com \
    --cc=kvalo@codeaurora.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=lorenzo@kernel.org \
    --cc=nbd@nbd.name \
    --cc=sgruszka@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox