From patchwork Wed Jan 6 05:49:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wengang Wang X-Patchwork-Id: 563705 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 1A0D71402B4 for ; Wed, 6 Jan 2016 16:46:24 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752015AbcAFFqV (ORCPT ); Wed, 6 Jan 2016 00:46:21 -0500 Received: from userp1040.oracle.com ([156.151.31.81]:30331 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751106AbcAFFqT (ORCPT ); Wed, 6 Jan 2016 00:46:19 -0500 Received: from aserv0022.oracle.com (aserv0022.oracle.com [141.146.126.234]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id u065kI7L025637 (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Wed, 6 Jan 2016 05:46:19 GMT Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by aserv0022.oracle.com (8.13.8/8.13.8) with ESMTP id u065kILn023203 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Wed, 6 Jan 2016 05:46:18 GMT Received: from abhmp0006.oracle.com (abhmp0006.oracle.com [141.146.116.12]) by aserv0122.oracle.com (8.13.8/8.13.8) with ESMTP id u065kILx018038 for ; Wed, 6 Jan 2016 05:46:18 GMT Received: from oracle.com (/10.182.64.160) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 05 Jan 2016 21:46:17 -0800 From: Wengang Wang To: netdev@vger.kernel.org Cc: wen.gang.wang@oracle.com Subject: [PATCH] net: take care of bonding in build_skb_flow_key Date: Wed, 6 Jan 2016 13:49:28 +0800 Message-Id: <1452059368-7527-1-git-send-email-wen.gang.wang@oracle.com> X-Mailer: git-send-email 2.1.0 X-Source-IP: aserv0022.oracle.com [141.146.126.234] Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 --- 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); }