[rt2x00-users] [RFT] rt2x00: Use GFP_KERNEL for rx buffer allocation on USB devices
andihartmann at 01019freenet.de
Wed Apr 18 22:59:20 EST 2012
Helmut Schaa wrote:
> On Wed, Apr 18, 2012 at 1:57 PM, Andreas Hartmann
> <andihartmann at 01019freenet.de> wrote:
>> Helmut Schaa wrote:
>>> Since the RX path on USB devices is handled in process context we can
>>> use GFP_KERNEL for RX buffer allocation. This should reduce the
>>> likelihood of allocation failures.
>>> Signed-off-by: Helmut Schaa <helmut.schaa at googlemail.com>
>> Does this change really affect only usb?
> The change, yes.
>> As far as I can see, pci is
>> affected, too?
>> Or did I misunderstood something?
> However PCI processes the RX path in softirq context and as such
> cannot use GFP_KERNEL allocations. And I would hesitate to switch
> PCI to also use process context for interrupt processing. In my tests
> this affects performance on embedded devices heavily.
> So, this workaround is only applicable to USB for now.
Well, I asked, because the call
skb = rt2x00queue_alloc_rxskb(&queue->entries[i], GFP_KERNEL);
in rt2x00queue_alloc_rxskbs(struct data_queue *queue) statically uses
GFP_KERNEL for both usb and pci. For pci, I would have expected GFP_ATOMIC.
But this probably doesn't harm because it's only used once during device
More information about the users