Re: [PATCH 2/13] bridge: Allow tail-call on br_pass_frame_up
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2010-02-27 15:36:12
On Sat, Feb 27, 2010 at 03:14:51AM -0800, David Miller wrote:
From: Herbert Xu <herbert@gondor.apana.org.au> Date: Fri, 26 Feb 2010 23:35:07 +0800quoted
@@ -20,9 +20,9 @@ /* Bridge group multicast address 802.1d (pg 51). */ const u8 br_group_address[ETH_ALEN] = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 }; -static void br_pass_frame_up(struct net_bridge *br, struct sk_buff *skb) +static int br_pass_frame_up(struct sk_buff *skb) { - struct net_device *indev, *brdev = br->dev; + struct net_device *indev, *brdev = BR_INPUT_SKB_CB(skb)->brdev;You use this new BR_INPUT_SKB_CB() here in patch #2, but you only start setting ->brdev it in patch #4.
Actually this patch does work as is. The brdev setting in #4 is for the bridge device's local xmit path. br_pass_frame_up is not used on the local xmit path (since that would create a packet loop). It's only used for packets originating from bridge ports, where patch #2 ensures that BR_INPUT_SKB_CB is set correctly. Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} [off-list ref] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt