mirror of
https://github.com/torvalds/linux.git
synced 2025-04-09 10:27:37 +00:00
net: vxlan: use kfree_skb_reason() in vxlan_xmit()
Replace kfree_skb() with kfree_skb_reason() in vxlan_xmit(). Following new skb drop reasons are introduced for vxlan: /* no remote found for xmit */ SKB_DROP_REASON_VXLAN_NO_REMOTE /* packet without necessary metadata reached a device which is * in "external" mode */ SKB_DROP_REASON_TUNNEL_TXINFO Signed-off-by: Menglong Dong <dongml2@chinatelecom.cn> Reviewed-by: Simon Horman <horms@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d209706f56
commit
b71a576e45
@ -2730,7 +2730,7 @@ static netdev_tx_t vxlan_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
if (info && info->mode & IP_TUNNEL_INFO_TX)
|
||||
vxlan_xmit_one(skb, dev, vni, NULL, false);
|
||||
else
|
||||
kfree_skb(skb);
|
||||
kfree_skb_reason(skb, SKB_DROP_REASON_TUNNEL_TXINFO);
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
}
|
||||
@ -2793,7 +2793,7 @@ static netdev_tx_t vxlan_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
dev_core_stats_tx_dropped_inc(dev);
|
||||
vxlan_vnifilter_count(vxlan, vni, NULL,
|
||||
VXLAN_VNI_STATS_TX_DROPS, 0);
|
||||
kfree_skb(skb);
|
||||
kfree_skb_reason(skb, SKB_DROP_REASON_VXLAN_NO_REMOTE);
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
}
|
||||
@ -2816,7 +2816,7 @@ static netdev_tx_t vxlan_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
if (fdst)
|
||||
vxlan_xmit_one(skb, dev, vni, fdst, did_rsc);
|
||||
else
|
||||
kfree_skb(skb);
|
||||
kfree_skb_reason(skb, SKB_DROP_REASON_VXLAN_NO_REMOTE);
|
||||
}
|
||||
|
||||
return NETDEV_TX_OK;
|
||||
|
@ -96,7 +96,9 @@
|
||||
FN(VXLAN_VNI_NOT_FOUND) \
|
||||
FN(MAC_INVALID_SOURCE) \
|
||||
FN(VXLAN_ENTRY_EXISTS) \
|
||||
FN(VXLAN_NO_REMOTE) \
|
||||
FN(IP_TUNNEL_ECN) \
|
||||
FN(TUNNEL_TXINFO) \
|
||||
FN(LOCAL_MAC) \
|
||||
FNe(MAX)
|
||||
|
||||
@ -439,11 +441,18 @@ enum skb_drop_reason {
|
||||
* entry or an entry pointing to a nexthop.
|
||||
*/
|
||||
SKB_DROP_REASON_VXLAN_ENTRY_EXISTS,
|
||||
/** @SKB_DROP_REASON_VXLAN_NO_REMOTE: no remote found for xmit */
|
||||
SKB_DROP_REASON_VXLAN_NO_REMOTE,
|
||||
/**
|
||||
* @SKB_DROP_REASON_IP_TUNNEL_ECN: skb is dropped according to
|
||||
* RFC 6040 4.2, see __INET_ECN_decapsulate() for detail.
|
||||
*/
|
||||
SKB_DROP_REASON_IP_TUNNEL_ECN,
|
||||
/**
|
||||
* @SKB_DROP_REASON_TUNNEL_TXINFO: packet without necessary metadata
|
||||
* reached a device which is in "external" mode.
|
||||
*/
|
||||
SKB_DROP_REASON_TUNNEL_TXINFO,
|
||||
/**
|
||||
* @SKB_DROP_REASON_LOCAL_MAC: the source MAC address is equal to
|
||||
* the MAC address of the local netdev.
|
||||
|
Loading…
x
Reference in New Issue
Block a user