Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 4 Jan 2014 14:45:53 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        Michael Tuexen <Michael.Tuexen@lurchi.franken.de>, Jack Vogel <jfvogel@gmail.com>
Cc:        Yong-Hyeon Pyun <pyunyh@gmail.com>, FreeBSD Net <freebsd-net@freebsd.org>, John-Mark Gurney <jmg@funkthat.com>, Jack F Vogel <jfv@freebsd.org>, John Baldwin <jhb@freebsd.org>
Subject:   Re: A small fix for if_em.c, if_igb.c, if_ixgbe.c
Message-ID:  <CAJ-VmonFBMSKJ6fbZhWRWrBbY9wRtKYMGNpK5wLsPUEeh8eC7A@mail.gmail.com>
In-Reply-To: <CAJ-VmokGnzscOuPRQ3wSom0mZ0MFBKRfiNJtHOu4Lw8sb7g3-A@mail.gmail.com>
References:  <521B9C2A-EECC-4412-9F68-2235320EF324@lurchi.franken.de> <201312131326.28952.jhb@freebsd.org> <CAJ-VmokoujrNBO21oOdTuzncamS%2BtAjCUKjt4ywJaySL2rAo6g@mail.gmail.com> <201312131717.10863.jhb@freebsd.org> <CAJ-VmomXPiWbYztWxTDSRJkPcee%2B3pQmUHHk=2U3HG72bcKoyw@mail.gmail.com> <0BC9D25E-639A-4305-A51A-222AE645152C@lurchi.franken.de> <CAJ-VmomHnQVP9s3EXuNOVwGaB-JiT_imAqzYT_U6PETvR6KMDw@mail.gmail.com> <FBA7A484-BFA6-4A9E-B910-5E8CA799DC45@lurchi.franken.de> <CAJ-VmokGnzscOuPRQ3wSom0mZ0MFBKRfiNJtHOu4Lw8sb7g3-A@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
hi,

Happy New Year all.

If noone objects, I'm going to commit Michael's patch to -HEAD in the
next couple of days, with some extra comments explaining why things
are the way they are.

We can then flesh out the comments and API documentation about this stuff.

Thanks!



-a


On 16 December 2013 19:25, Adrian Chadd <adrian@freebsd.org> wrote:
> On 16 December 2013 13:04, Michael Tuexen
> <Michael.Tuexen@lurchi.franken.de> wrote:
>> On Dec 16, 2013, at 9:15 PM, Adrian Chadd <adrian@freebsd.org> wrote:
>>
>>> On 16 December 2013 12:06, Michael Tuexen
>>> <Michael.Tuexen@lurchi.franken.de> wrote:
>>>
>>>>> i agree. if_transmit() should return 0 only if:
>>>>>
>>>>> * the driver queued it internally and intends to try transmitting it later;
>>>>> * the driver directly dispatched the frame to the hardware.
>>>>>
>>>>> If it failed to do either of the above, it should return an error.
>>>>>
>>>>> How's that sound?
>>>> That sounds good. However, The transport layer is interested in the case
>>>> where if_transmit() returns a non-zero value.
>>>> Does your statement imply:
>>>> if_transmit() returns a non-zero value only if the packet will not
>>>> make it on the wire (for example, it failed to queue it).
>>>
>>> If there's a queuing layer in the middle then we can't know that for
>>> certain. If the driver can't transmit the frame (eg it fails because
>>> of collisions, for example) then again, we can't know that for
>>> certain.
>>>
>>> What we can only know is that it was either queued and may or may not
>>> make it on the wire, or it wasn't queued/transmitted and it definitely
>>> _won't_ make it on the wire.
>> Correct. And I'm only interested in the "it wasn't queued/transmitted
>> and it definitely _won't_ make it on the wire." part.
>> So I would need something like
>>
>> if_transmit() returns an error only if it wasn't queued/transmitted
>> and it definitely _won't_ make it on the wire.
>>
>> Acceptable for you?
>
> Sounds like the same thing to me, so yes. :)
>
>
>
> -a



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonFBMSKJ6fbZhWRWrBbY9wRtKYMGNpK5wLsPUEeh8eC7A>