Ok, I think found the last patch you posted, comments below (I have to run off soon):
On Fri, 2006-30-06 at 19:13 +0200, Thomas Graf wrote: > There you go, leaves ifb broken as-is, at least prevents it > from crashing randomly when the input_dev disappears. > I hope the above comment does show up in the logs ;-> > [NET]: Use interface index to keep input device information > > =================================================================== > --- net-2.6.git.orig/include/net/pkt_cls.h > +++ net-2.6.git/include/net/pkt_cls.h > @@ -352,14 +352,19 @@ tcf_change_indev(struct tcf_proto *tp, c > static inline int > tcf_match_indev(struct sk_buff *skb, char *indev) > { > + int ret = 1; > + > if (indev[0]) { > - if (!skb->input_dev) > - return 0; > - if (strcmp(indev, skb->input_dev->name)) > + struct net_device *dev; > + > + dev = dev_get_by_index(skb->iif); > + if (!dev) > return 0; > + ret = !strcmp(indev, dev->name); > + dev_put(dev); > } > [..] > Index: net-2.6.git/drivers/net/ifb.c > =================================================================== > --- net-2.6.git.orig/drivers/net/ifb.c > +++ net-2.6.git/drivers/net/ifb.c > @@ -158,19 +158,23 @@ static int ifb_xmit(struct sk_buff *skb, > stats->tx_packets++; > stats->tx_bytes+=skb->len; > > - if (!from || !skb->input_dev) { > + if (!from || !skb->iif) { Can you have something similar to what you did in tcf_match_indev above? i.e grab dev by skb->iif so as to increment refcount - if it doesnt exist it becomes equivalent to !skb->input_dev and if it exists you drop the ref inside the else below after changing input_dev > dev_kfree_skb(skb); > stats->rx_dropped++; > return ret; > } else { > + struct net_device *iif; > /* > * note we could be going > * ingress -> egress or > * egress -> ingress > */ > - skb->dev = skb->input_dev; > - skb->input_dev = dev; > + iif = __dev_get_by_index(skb->iif); > + if (!iif) > + goto dropped; > + skb->dev = iif; > + skb->iif = dev->ifindex; > if (from & AT_INGRESS) { > skb_pull(skb, skb->dev->hard_header_len); > } else { > - cheers, jamal - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html