From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id CC95691 for ; Tue, 20 Nov 2018 11:45:40 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Nov 2018 02:45:39 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,256,1539673200"; d="scan'208";a="109636237" Received: from tiagolam-mobl.ger.corp.intel.com (HELO [10.237.221.117]) ([10.237.221.117]) by fmsmga001.fm.intel.com with ESMTP; 20 Nov 2018 02:45:38 -0800 To: Kevin Traynor , dev@dpdk.org Cc: ferruh.yigit@intel.com, linville@tuxdriver.com References: <1542707697-175836-1-git-send-email-tiago.lam@intel.com> <1542709592-215007-1-git-send-email-tiago.lam@intel.com> <4419c3e1-d94c-8cde-cf55-0e54a255b8c4@redhat.com> From: "Lam, Tiago" Message-ID: <99baa754-7176-b73e-403c-abd3762e698a@intel.com> Date: Tue, 20 Nov 2018 10:45:37 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <4419c3e1-d94c-8cde-cf55-0e54a255b8c4@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v2 1/3] net/af_packet: set_mtu() decrements sockaddr twice 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: Tue, 20 Nov 2018 10:45:41 -0000 On 20/11/2018 10:29, Kevin Traynor wrote: > On 11/20/2018 10:26 AM, Tiago Lam wrote: >> When setting the MTU, eth_dev_mtu_set() is called to validate the >> provided MTU. As part of that, it calculates the useful area to store >> data and compares it against the MTU, to guarantee that there's enough >> space to store the data. It calculates that as: >> "tp_frame_size - TPACKET2_HDRLEN - sizeof(struct sockaddr_ll)" >> >> However, the TPACKET2_HDRLEN macro already increaments sizeof(struct >> sockaddr_ll) internally, meaning the useuful area of data above will >> have sizeof(struct sockaddr_ll) decremented twice. >> >> Instead, the useful area of data should be calculated as: >> "tp_frame_size - TPACKET2_HDRLEN" >> >> This makes sure that there's enough useful area to fit the provided MTU >> after excluding tpacket2_hdr and sockaddr_ll. >> >> Fixes: cc68ac4 ("net/af_packet: support MTU change") >> > > It should be for stable also? Indeed, thanks for pointing that out. I've missed the Cc there, but it should be backported - I can track it down to 17.02. I'll make sure I add the Cc if a new iteration is needed. Tiago. > >> Signed-off-by: Tiago Lam >> --- >> drivers/net/af_packet/rte_eth_af_packet.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c >> index 95a98c6..264cfc0 100644 >> --- a/drivers/net/af_packet/rte_eth_af_packet.c >> +++ b/drivers/net/af_packet/rte_eth_af_packet.c >> @@ -433,8 +433,7 @@ eth_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) >> int ret; >> int s; >> unsigned int data_size = internals->req.tp_frame_size - >> - TPACKET2_HDRLEN - >> - sizeof(struct sockaddr_ll); >> + TPACKET2_HDRLEN; >> >> if (mtu > data_size) >> return -EINVAL; >> >