net: dev: use kfree_skb_reason() for __netif_receive_skb_core()
Add reason for skb drops to __netif_receive_skb_core() when packet_type not found to handle the skb. For this purpose, the drop reason SKB_DROP_REASON_PTYPE_ABSENT is introduced. Take ether packets for example, this case mainly happens when L3 protocol is not supported. Signed-off-by: Menglong Dong <imagedong@tencent.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a568aff26a
commit
6c2728b7c1
|
@ -407,6 +407,11 @@ enum skb_drop_reason {
|
|||
*/
|
||||
SKB_DROP_REASON_XDP, /* dropped by XDP in input path */
|
||||
SKB_DROP_REASON_TC_INGRESS, /* dropped in TC ingress HOOK */
|
||||
SKB_DROP_REASON_PTYPE_ABSENT, /* not packet_type found to handle
|
||||
* the skb. For an etner packet,
|
||||
* this means that L3 protocol is
|
||||
* not supported
|
||||
*/
|
||||
SKB_DROP_REASON_MAX,
|
||||
};
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@
|
|||
EM(SKB_DROP_REASON_CPU_BACKLOG, CPU_BACKLOG) \
|
||||
EM(SKB_DROP_REASON_XDP, XDP) \
|
||||
EM(SKB_DROP_REASON_TC_INGRESS, TC_INGRESS) \
|
||||
EM(SKB_DROP_REASON_PTYPE_ABSENT, PTYPE_ABSENT) \
|
||||
EMe(SKB_DROP_REASON_MAX, MAX)
|
||||
|
||||
#undef EM
|
||||
|
|
|
@ -5358,11 +5358,13 @@ check_vlan_id:
|
|||
*ppt_prev = pt_prev;
|
||||
} else {
|
||||
drop:
|
||||
if (!deliver_exact)
|
||||
if (!deliver_exact) {
|
||||
atomic_long_inc(&skb->dev->rx_dropped);
|
||||
else
|
||||
kfree_skb_reason(skb, SKB_DROP_REASON_PTYPE_ABSENT);
|
||||
} else {
|
||||
atomic_long_inc(&skb->dev->rx_nohandler);
|
||||
kfree_skb(skb);
|
||||
kfree_skb(skb);
|
||||
}
|
||||
/* Jamal, now you will not able to escape explaining
|
||||
* me how you were going to use this. :-)
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue