diff options
Diffstat (limited to 'net/bridge/br_forward.c')
| -rw-r--r-- | net/bridge/br_forward.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c index 5372e2042adf..48ddc60b4fbd 100644 --- a/net/bridge/br_forward.c +++ b/net/bridge/br_forward.c | |||
| @@ -36,10 +36,10 @@ static inline int should_deliver(const struct net_bridge_port *p, | |||
| 36 | 36 | ||
| 37 | int br_dev_queue_push_xmit(struct net *net, struct sock *sk, struct sk_buff *skb) | 37 | int br_dev_queue_push_xmit(struct net *net, struct sock *sk, struct sk_buff *skb) |
| 38 | { | 38 | { |
| 39 | skb_push(skb, ETH_HLEN); | ||
| 39 | if (!is_skb_forwardable(skb->dev, skb)) | 40 | if (!is_skb_forwardable(skb->dev, skb)) |
| 40 | goto drop; | 41 | goto drop; |
| 41 | 42 | ||
| 42 | skb_push(skb, ETH_HLEN); | ||
| 43 | br_drop_fake_rtable(skb); | 43 | br_drop_fake_rtable(skb); |
| 44 | 44 | ||
| 45 | if (skb->ip_summed == CHECKSUM_PARTIAL && | 45 | if (skb->ip_summed == CHECKSUM_PARTIAL && |
| @@ -65,6 +65,7 @@ EXPORT_SYMBOL_GPL(br_dev_queue_push_xmit); | |||
| 65 | 65 | ||
| 66 | int br_forward_finish(struct net *net, struct sock *sk, struct sk_buff *skb) | 66 | int br_forward_finish(struct net *net, struct sock *sk, struct sk_buff *skb) |
| 67 | { | 67 | { |
| 68 | skb->tstamp = 0; | ||
| 68 | return NF_HOOK(NFPROTO_BRIDGE, NF_BR_POST_ROUTING, | 69 | return NF_HOOK(NFPROTO_BRIDGE, NF_BR_POST_ROUTING, |
| 69 | net, sk, skb, NULL, skb->dev, | 70 | net, sk, skb, NULL, skb->dev, |
| 70 | br_dev_queue_push_xmit); | 71 | br_dev_queue_push_xmit); |
| @@ -97,12 +98,11 @@ static void __br_forward(const struct net_bridge_port *to, | |||
| 97 | net = dev_net(indev); | 98 | net = dev_net(indev); |
| 98 | } else { | 99 | } else { |
| 99 | if (unlikely(netpoll_tx_running(to->br->dev))) { | 100 | if (unlikely(netpoll_tx_running(to->br->dev))) { |
| 100 | if (!is_skb_forwardable(skb->dev, skb)) { | 101 | skb_push(skb, ETH_HLEN); |
| 102 | if (!is_skb_forwardable(skb->dev, skb)) | ||
| 101 | kfree_skb(skb); | 103 | kfree_skb(skb); |
| 102 | } else { | 104 | else |
| 103 | skb_push(skb, ETH_HLEN); | ||
| 104 | br_netpoll_send_skb(to, skb); | 105 | br_netpoll_send_skb(to, skb); |
| 105 | } | ||
| 106 | return; | 106 | return; |
| 107 | } | 107 | } |
| 108 | br_hook = NF_BR_LOCAL_OUT; | 108 | br_hook = NF_BR_LOCAL_OUT; |
