Thread (14 messages) 14 messages, 5 authors, 2016-10-08

Re: [PATCH v3 net-next 4/4] net/sched: act_mirred: Implement ingress actions

From: Eric Dumazet <hidden>
Date: 2016-10-06 19:38:24

On Thu, 2016-10-06 at 10:30 -0700, Cong Wang wrote:
On Thu, Oct 6, 2016 at 6:30 AM, Shmulik Ladkani
[off-list ref] wrote:
quoted
Hi,

On Mon, Oct 3, 2016 at 12:45 PM, Cong Wang [off-list ref] wrote:
quoted
On Thu, Sep 29, 2016 at 4:03 AM, Shmulik Ladkani
[off-list ref] wrote:
quoted
        skb2->skb_iif = skb->dev->ifindex;
        skb2->dev = dev;
-       err = dev_queue_xmit(skb2);
+       if (tcf_mirred_act_direction(m_eaction) & AT_EGRESS)
+               err = dev_queue_xmit(skb2);
+       else
+               netif_receive_skb(skb2);
Any reason why not check the return value here?
Rationale: netif_receive_skb returns err if there was no protocol
handler to deliver the skb to.
If skb is not caught by any protocol handler, this should not be
considered an "ingress redirect" error. The redirect action should be
considered successful.
A quick grep shows there are many places returning NET_RX_DROP:
E.g.
And another quick grep shows that out of 142 drivers, only one [1] of
them (incorrectly) checks netif_receive_skb() return value.

Real question is more like : what is the impact of propagating an error
at this point ?

[1] drivers/net/caif/caif_virtio.c 
This is incorrect because at the driver layer, the packet was received
and the rx_packets/rx_bytes counters _should_ be incremented regardless
of packet being dropped or not by upper layers.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help