aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge/br_forward.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/bridge/br_forward.c')
-rw-r--r--net/bridge/br_forward.c10
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
37int br_dev_queue_push_xmit(struct net *net, struct sock *sk, struct sk_buff *skb) 37int 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
66int br_forward_finish(struct net *net, struct sock *sk, struct sk_buff *skb) 66int 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;