Hi,

I really dont want to be a killjoy, but...

> +             int ret;
> +
> +             skb = __netdev_alloc_skb_ip_align(adpt->netdev,
> +                                               adpt->rxbuf_size, GFP_KERNEL);

This is also called in softirq context by the napi handler in which GFP_KERNEL 
is
not allowed.
You can either extend the refill function by one gfp_t parameter and then call 
it 
with GFP_KERNEL for the initial rx buffer allocation when the hw is brought up 
and 
then with GFP_ATOMIC for refilling in the NAPI handler. Or simply always use 
GFP_ATOMIC.
In the latter case the additional parameter is not needed of course and you can
use netdev_alloc_skb_ip_align() instead of __netdev_alloc_skb_ip_align().

Regards,
Lino

Reply via email to