Hi, Rupa /David Ahern, First, thanks for this patch set!
Second, it seems to me that something might be incorrect here. You have these additions in this patch (1/8): ... +struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 *flp, + const struct sk_buff *skb, + struct fib_result *res); ... +struct rtable *ip_route_output_key_hash(struct net *net, struct flowi4 *fl4, + const struct sk_buff *skb) +{ + struct fib_result res; + struct rtable *rth; + + res.tclassid = 0; + res.fi = NULL; + res.table = NULL; + + rcu_read_lock(); + rth = ip_route_output_key_hash_rcu(net, fl4, &res, mp_hash); rcu_read_unlock(); + return rth; } -EXPORT_SYMBOL_GPL(__ip_route_output_key_hash); +EXPORT_SYMBOL_GPL(ip_route_output_key_hash); So the third parameter to ip_route_output_key_hash_rcu() should be skb*, and the fourth parameter should be fib_result *. However, you do not pass the skb parameter when calling ip_route_output_key_hash_rcu() in ip_route_output_key_hash() (in fact you don't use it at all), and you pass mp_hash as the fourth parameter. Regards, Rami Rosen Intel Corporation