File tree Expand file tree Collapse file tree 3 files changed +14
-5
lines changed Expand file tree Collapse file tree 3 files changed +14
-5
lines changed Original file line number Diff line number Diff line change @@ -3866,10 +3866,11 @@ bool is_skb_forwardable(const struct net_device *dev,
3866
3866
const struct sk_buff * skb );
3867
3867
3868
3868
static __always_inline int ____dev_forward_skb (struct net_device * dev ,
3869
- struct sk_buff * skb )
3869
+ struct sk_buff * skb ,
3870
+ const bool mtu_check )
3870
3871
{
3871
3872
if (skb_orphan_frags (skb , GFP_ATOMIC ) ||
3872
- unlikely (!is_skb_forwardable (dev , skb ))) {
3873
+ ( mtu_check && unlikely (!is_skb_forwardable (dev , skb ) ))) {
3873
3874
atomic_long_inc (& dev -> rx_dropped );
3874
3875
kfree_skb (skb );
3875
3876
return NET_RX_DROP ;
Original file line number Diff line number Diff line change @@ -2209,7 +2209,7 @@ EXPORT_SYMBOL_GPL(is_skb_forwardable);
2209
2209
2210
2210
int __dev_forward_skb (struct net_device * dev , struct sk_buff * skb )
2211
2211
{
2212
- int ret = ____dev_forward_skb (dev , skb );
2212
+ int ret = ____dev_forward_skb (dev , skb , true );
2213
2213
2214
2214
if (likely (!ret )) {
2215
2215
skb -> protocol = eth_type_trans (skb , dev );
Original file line number Diff line number Diff line change @@ -2083,13 +2083,21 @@ static const struct bpf_func_proto bpf_csum_level_proto = {
2083
2083
2084
2084
static inline int __bpf_rx_skb (struct net_device * dev , struct sk_buff * skb )
2085
2085
{
2086
- return dev_forward_skb (dev , skb );
2086
+ int ret = ____dev_forward_skb (dev , skb , false);
2087
+
2088
+ if (likely (!ret )) {
2089
+ skb -> protocol = eth_type_trans (skb , dev );
2090
+ skb_postpull_rcsum (skb , eth_hdr (skb ), ETH_HLEN );
2091
+ ret = netif_rx (skb );
2092
+ }
2093
+
2094
+ return ret ;
2087
2095
}
2088
2096
2089
2097
static inline int __bpf_rx_skb_no_mac (struct net_device * dev ,
2090
2098
struct sk_buff * skb )
2091
2099
{
2092
- int ret = ____dev_forward_skb (dev , skb );
2100
+ int ret = ____dev_forward_skb (dev , skb , false );
2093
2101
2094
2102
if (likely (!ret )) {
2095
2103
skb -> dev = dev ;
You can’t perform that action at this time.
0 commit comments