Re: questions about network device drivers

Jeff Garzik
2002-07-30T14:53:46Z

Abraham vd Merwe wrote:
> Hi Alan!
>
>
>>>hard_start_xmit() method
>>>========================
>>>
>>>when should this function return 0 and when should it return 1 and in which
>>>cases should it do netif_stop_queue() and/or free the dev_kfree_skb() ?
>>
>>0 - OK
>>1 - I am busy, give me it later.
>>
>>If you return 1 be sure to netif_stop_queue. The netif_wake_queue will
>>continue transmission
>
>
> In both cases, should I free the sk_buff structure or only if I return 0?
> Also, if I understand you correctly, I should _only_ call netif_stop_queue()
> if the function fails to transmit the packet?
>
> What about cases where the packet will always fail, e.g. the frame length is
> bigger than what the device supports. I take it in those cases I should
> return 0, but should I call netif_stop_queue() as well?

free it if you are returning zero. But of course, after the card has
handled the packet.

If you set your MTU correctly, you shouldn't get frames larger than
proper length.

netif_stop_queue and netif_start_queue and netif_wake_queue are your
queue management tools. _only_ enable the queue when there is room for
more packets.

Jeff