From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id EA2422A5E for ; Fri, 3 Mar 2017 16:23:30 +0100 (CET) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Mar 2017 07:23:29 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.35,237,1484035200"; d="scan'208";a="71845330" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga005.fm.intel.com with ESMTP; 03 Mar 2017 07:23:29 -0800 Received: from fmsmsx126.amr.corp.intel.com (10.18.125.43) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.248.2; Fri, 3 Mar 2017 07:23:29 -0800 Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.17]) by FMSMSX126.amr.corp.intel.com ([169.254.1.200]) with mapi id 14.03.0248.002; Fri, 3 Mar 2017 07:23:29 -0800 From: "Wiles, Keith" To: Pascal Mazon CC: "dev@dpdk.org" Thread-Topic: [PATCH 4/6] net/tap: add MTU management Thread-Index: AQHSlAMpsr5TBM3svUCT2SE3oGmcRqGDwkmA Date: Fri, 3 Mar 2017 15:23:28 +0000 Message-ID: <7E5FD024-6F74-4B19-9E1C-E31F45A00611@intel.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.254.49.209] Content-Type: text/plain; charset="us-ascii" Content-ID: <8A5A790B8CB16245B429D3B2277F7625@intel.com> Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 4/6] net/tap: add MTU management 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 15:23:31 -0000 > On Mar 3, 2017, at 3:46 AM, Pascal Mazon wrote: >=20 > The MTU is assigned to the tap netdevice according to the argument, but > packet transmission and reception just write/read on an fd with the > default limit being the socket buffer size. >=20 > Signed-off-by: Pascal Mazon > --- > doc/guides/nics/features/tap.ini | 1 + > drivers/net/tap/rte_eth_tap.c | 37 +++++++++++++++++++++++++++++++++++= ++ > 2 files changed, 38 insertions(+) >=20 > diff --git a/doc/guides/nics/features/tap.ini b/doc/guides/nics/features/= tap.ini > index 6878a9b8fd17..6aa11874e2bc 100644 > --- a/doc/guides/nics/features/tap.ini > +++ b/doc/guides/nics/features/tap.ini > @@ -9,6 +9,7 @@ Jumbo frame =3D Y > Promiscuous mode =3D Y > Allmulticast mode =3D Y > Basic stats =3D Y > +MTU update =3D Y > Multicast MAC filter =3D Y > Speed capabilities =3D Y > Unicast MAC filter =3D Y > diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.= c > index 131c09fbc1a5..64b84cd76321 100644 > --- a/drivers/net/tap/rte_eth_tap.c > +++ b/drivers/net/tap/rte_eth_tap.c > @@ -724,6 +724,42 @@ tap_set_mc_addr_list(struct rte_eth_dev *dev __rte_u= nused, > return 0; > } >=20 > +static int > +tap_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > +{ > + struct pmd_internals *pmd =3D dev->data->dev_private; > + struct ifreq ifr; > + int err, s; > + > + s =3D socket(AF_INET, SOCK_DGRAM, 0); > + if (s < 0) { > + RTE_LOG(ERR, PMD, > + "Unable to get a socket for %s to set flags: %s\n", > + pmd->name, strerror(errno)); > + return -1; > + } > + memset(&ifr, 0, sizeof(ifr)); > + strncpy(ifr.ifr_name, pmd->name, IFNAMSIZ); This needs to be converted to a snprintf() to avoid overflow. > + err =3D ioctl(s, SIOCGIFMTU, &ifr); > + if (err < 0) { > + RTE_LOG(WARNING, PMD, "Unable to get %s device MTU: %s\n", > + pmd->name, strerror(errno)); > + close(s); > + return -1; > + } > + ifr.ifr_mtu =3D mtu; > + err =3D ioctl(s, SIOCSIFMTU, &ifr); > + if (err < 0) { > + RTE_LOG(WARNING, PMD, "Unable to set %s mtu %d: %s\n", > + pmd->name, mtu, strerror(errno)); > + close(s); > + return -1; > + } > + close(s); > + dev->data->mtu =3D mtu; > + return 0; > +} > + > static const struct eth_dev_ops ops =3D { > .dev_start =3D tap_dev_start, > .dev_stop =3D tap_dev_stop, > @@ -745,6 +781,7 @@ static const struct eth_dev_ops ops =3D { > .mac_addr_add =3D tap_mac_add, > .mac_addr_set =3D tap_mac_set, > .set_mc_addr_list =3D tap_set_mc_addr_list, > + .mtu_set =3D tap_mtu_set, > .stats_get =3D tap_stats_get, > .stats_reset =3D tap_stats_reset, > }; > --=20 > 2.8.0.rc0 >=20 Regards, Keith