From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from proxy.6wind.com (host.76.145.23.62.rev.coltfrance.com [62.23.145.76]) by dpdk.org (Postfix) with ESMTP id BD59A591E for ; Fri, 3 Mar 2017 13:28:36 +0100 (CET) Received: from 6wind.com (unknown [10.16.0.184]) by proxy.6wind.com (Postfix) with SMTP id 1CAAB24D75; Fri, 3 Mar 2017 13:28:31 +0100 (CET) Received: by 6wind.com (sSMTP sendmail emulation); Fri, 03 Mar 2017 13:28:29 +0100 From: Pascal Mazon To: keith.wiles@intel.com Cc: dev@dpdk.org, Pascal Mazon Date: Fri, 3 Mar 2017 13:27:41 +0100 Message-Id: <2daae834c5ea6e137807fb74f48e06919f4d59d1.1488542158.git.pascal.mazon@6wind.com> X-Mailer: git-send-email 2.8.0.rc0 In-Reply-To: References: Subject: [dpdk-dev] [PATCH 4/4] net/tap: set MTU on the remote X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Mar 2017 12:28:36 -0000 Signed-off-by: Pascal Mazon --- drivers/net/tap/rte_eth_tap.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index 98b466aba223..141fc7944a5f 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -823,9 +823,8 @@ tap_set_mc_addr_list(struct rte_eth_dev *dev __rte_unused, } static int -tap_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) +tap_netdev_mtu_set(const char *iface, uint16_t mtu) { - struct pmd_internals *pmd = dev->data->dev_private; struct ifreq ifr; int err, s; @@ -833,15 +832,15 @@ tap_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) if (s < 0) { RTE_LOG(ERR, PMD, "Unable to get a socket for %s to set flags: %s\n", - pmd->name, strerror(errno)); + iface, strerror(errno)); return -1; } memset(&ifr, 0, sizeof(ifr)); - strncpy(ifr.ifr_name, pmd->name, IFNAMSIZ); + strncpy(ifr.ifr_name, iface, IFNAMSIZ); err = ioctl(s, SIOCGIFMTU, &ifr); if (err < 0) { RTE_LOG(WARNING, PMD, "Unable to get %s device MTU: %s\n", - pmd->name, strerror(errno)); + iface, strerror(errno)); close(s); return -1; } @@ -849,11 +848,29 @@ tap_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) err = ioctl(s, SIOCSIFMTU, &ifr); if (err < 0) { RTE_LOG(WARNING, PMD, "Unable to set %s mtu %d: %s\n", - pmd->name, mtu, strerror(errno)); + iface, mtu, strerror(errno)); close(s); return -1; } close(s); + return 0; +} + +static int +tap_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) +{ + struct pmd_internals *pmd = dev->data->dev_private; + int err; + + /* First try to set mtu on the remote */ + if (pmd->remote_if_index) { + err = tap_netdev_mtu_set(pmd->remote_iface, mtu); + if (err < 0) + return err; + } + err = tap_netdev_mtu_set(pmd->name, mtu); + if (err < 0) + return err; dev->data->mtu = mtu; return 0; } -- 2.8.0.rc0