[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110305153704.GI8573@psychotron.redhat.com>
Date: Sat, 5 Mar 2011 16:37:05 +0100
From: Jiri Pirko <jpirko@...hat.com>
To: Nicolas de Pesloüan
<nicolas.2p.debian@...il.com>
Cc: Ben Hutchings <bhutchings@...arflare.com>, netdev@...r.kernel.org,
davem@...emloft.net, shemminger@...ux-foundation.org,
kaber@...sh.net, fubar@...ibm.com, eric.dumazet@...il.com,
andy@...yhouse.net
Subject: Re: [patch net-next-2.6] net: comment rx_handler results
Sat, Mar 05, 2011 at 04:27:52PM CET, nicolas.2p.debian@...il.com wrote:
>Le 05/03/2011 16:13, Jiri Pirko a écrit :
>>
>>Signed-off-by: Jiri Pirko<jpirko@...hat.com>
>>---
>> include/linux/netdevice.h | 12 ++++++++----
>> 1 files changed, 8 insertions(+), 4 deletions(-)
>>
>>diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
>>index 48a9638..26e03f9 100644
>>--- a/include/linux/netdevice.h
>>+++ b/include/linux/netdevice.h
>>@@ -391,10 +391,14 @@ enum gro_result {
>> typedef enum gro_result gro_result_t;
>>
>> enum rx_handler_result {
>>- RX_HANDLER_CONSUMED,
>>- RX_HANDLER_ANOTHER,
>>- RX_HANDLER_EXACT,
>>- RX_HANDLER_PASS,
>>+ RX_HANDLER_CONSUMED, /* skb was consumed by rx_handler,
>>+ do not process it further. */
>>+ RX_HANDLER_ANOTHER, /* Do another round in receive path.
>>+ This is indicated in case skb->dev
>>+ was changed by rx_handler */
>>+ RX_HANDLER_EXACT, /* Force exact delivery, no wildcard */
>>+ RX_HANDLER_PASS, /* Do nothing, pass the skb as if
>>+ no rx_handler was called */
>
>Changing skb->dev should always cause another_round.
Not if you reinject the skb.
>
>So, RX_HANDLER_ANOTHER could be removed and replaced with a test for
>skb->dev change, with RX_HANDER_EXACT and RX_HANDLER_PASS.
That was there before. Needs extra variable and I think this way, via
results the code is much easier to read.
>
>> + RX_HANDLER_CONSUMED, /* skb was consumed by rx_handler,
>> + do not process it further. */
>> + RX_HANDLER_EXACT, /* Force exact delivery, no wildcard */
>> + RX_HANDLER_PASS, /* Do normal (wildcard and exact) delivery */
>
>And any rx_handler returning RX_HANDLER_EXACT should cause exact
>delivery, even if possible next rx_handlers return RX_HANDLER_PASS.
When rx_handler returns RX_HANDLER_EXACT, there will bo no other call to
any rx_handler (that is the case only when RX_HANDLER_ANOTHER is
returned)
>
> Nicolas.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists