net: bridge: remove _deliver functions and consolidate forward code
Before this patch we had two flavors of most forwarding functions - _forward and _deliver, the difference being that the latter are used when the packets are locally originated. Instead of all this function pointer passing and code duplication, we can just pass a boolean noting that the packet was locally originated and use that to perform the necessary checks in __br_forward. This gives a minor performance improvement but more importantly consolidates the forwarding paths. Also add a kernel doc comment to explain the exported br_forward()'s arguments. Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
b35c5f632b
commit
37b090e6be
@@ -72,7 +72,7 @@ static void nft_reject_br_send_v4_tcp_reset(struct net *net,
|
||||
|
||||
nft_reject_br_push_etherhdr(oldskb, nskb);
|
||||
|
||||
br_deliver(br_port_get_rcu(dev), nskb);
|
||||
br_forward(br_port_get_rcu(dev), nskb, false, true);
|
||||
}
|
||||
|
||||
static void nft_reject_br_send_v4_unreach(struct net *net,
|
||||
@@ -140,7 +140,7 @@ static void nft_reject_br_send_v4_unreach(struct net *net,
|
||||
|
||||
nft_reject_br_push_etherhdr(oldskb, nskb);
|
||||
|
||||
br_deliver(br_port_get_rcu(dev), nskb);
|
||||
br_forward(br_port_get_rcu(dev), nskb, false, true);
|
||||
}
|
||||
|
||||
static void nft_reject_br_send_v6_tcp_reset(struct net *net,
|
||||
@@ -174,7 +174,7 @@ static void nft_reject_br_send_v6_tcp_reset(struct net *net,
|
||||
|
||||
nft_reject_br_push_etherhdr(oldskb, nskb);
|
||||
|
||||
br_deliver(br_port_get_rcu(dev), nskb);
|
||||
br_forward(br_port_get_rcu(dev), nskb, false, true);
|
||||
}
|
||||
|
||||
static bool reject6_br_csum_ok(struct sk_buff *skb, int hook)
|
||||
@@ -255,7 +255,7 @@ static void nft_reject_br_send_v6_unreach(struct net *net,
|
||||
|
||||
nft_reject_br_push_etherhdr(oldskb, nskb);
|
||||
|
||||
br_deliver(br_port_get_rcu(dev), nskb);
|
||||
br_forward(br_port_get_rcu(dev), nskb, false, true);
|
||||
}
|
||||
|
||||
static void nft_reject_bridge_eval(const struct nft_expr *expr,
|
||||
|
||||
Reference in New Issue
Block a user