A problem is found that we are looking for route basing a bonding device and deal with path MTU there: The path MTU is set to the active slave device, not the bonding master.
The patch tries to fix the issue by letting build_skb_flow_key() take care of the transition of device index from bonding slave to the master. Signed-off-by: Wengang Wang <wen.gang.w...@oracle.com> --- net/ipv4/route.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 85f184e..3053f10 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -523,11 +523,20 @@ static void build_skb_flow_key(struct flowi4 *fl4, const struct sk_buff *skb, const struct sock *sk) { const struct iphdr *iph = ip_hdr(skb); - int oif = skb->dev->ifindex; + int oif; + struct net_device *master = NULL; + u8 tos = RT_TOS(iph->tos); u8 prot = iph->protocol; u32 mark = skb->mark; + if (skb->dev->flags & IFF_SLAVE) + master = netdev_master_upper_dev_get(skb->dev); + if (master) + oif = master->ifindex; + else + oif = skb->dev->ifindex; + __build_flow_key(fl4, sk, iph, oif, tos, prot, mark, 0); } -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html