|
|
@@ -36,10 +36,10 @@ static inline int should_deliver(const struct net_bridge_port *p,
|
|
|
|
|
|
int br_dev_queue_push_xmit(struct net *net, struct sock *sk, struct sk_buff *skb)
|
|
|
{
|
|
|
+ skb_push(skb, ETH_HLEN);
|
|
|
if (!is_skb_forwardable(skb->dev, skb))
|
|
|
goto drop;
|
|
|
|
|
|
- skb_push(skb, ETH_HLEN);
|
|
|
br_drop_fake_rtable(skb);
|
|
|
|
|
|
if (skb->ip_summed == CHECKSUM_PARTIAL &&
|
|
|
@@ -98,12 +98,11 @@ static void __br_forward(const struct net_bridge_port *to,
|
|
|
net = dev_net(indev);
|
|
|
} else {
|
|
|
if (unlikely(netpoll_tx_running(to->br->dev))) {
|
|
|
- if (!is_skb_forwardable(skb->dev, skb)) {
|
|
|
+ skb_push(skb, ETH_HLEN);
|
|
|
+ if (!is_skb_forwardable(skb->dev, skb))
|
|
|
kfree_skb(skb);
|
|
|
- } else {
|
|
|
- skb_push(skb, ETH_HLEN);
|
|
|
+ else
|
|
|
br_netpoll_send_skb(to, skb);
|
|
|
- }
|
|
|
return;
|
|
|
}
|
|
|
br_hook = NF_BR_LOCAL_OUT;
|