From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx-3.enea.com (sestofw01.enea.se [192.36.1.252]) by dpdk.org (Postfix) with SMTP id 1FB89C424 for ; Fri, 24 Jul 2015 11:30:42 +0200 (CEST) Received: from [192.168.15.79] (192.168.15.79) by smtp.enea.com (172.21.1.208) with Microsoft SMTP Server id 14.3.224.2; Fri, 24 Jul 2015 11:30:40 +0200 Message-ID: <55B205C0.8080409@enea.com> Date: Fri, 24 Jul 2015 12:30:40 +0300 From: ciprian.barbu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0 MIME-Version: 1.0 To: "Lu, Wenzhuo" , "dev@dpdk.org" References: <55A90790.1030700@enea.com> <55B10619.1060801@enea.com> <6A0DE07E22DDAD4C9103DF62FEBC0909D14BBB@shsmsx102.ccr.corp.intel.com> In-Reply-To: <6A0DE07E22DDAD4C9103DF62FEBC0909D14BBB@shsmsx102.ccr.corp.intel.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: quoted-printable X-Originating-IP: [192.168.15.79] Subject: Re: [dpdk-dev] can eth_igb_xmit_pkts called with len 0 affect transmission? X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2015 09:30:42 -0000 Hi Lu, Thank you for getting back to me. On 24.07.2015 05:49, Lu, Wenzhuo wrote: > Hi Ciprian, > >> -----Original Message----- >> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of ciprian.barbu >> Sent: Thursday, July 23, 2015 11:20 PM >> To: dev@dpdk.org >> Subject: Re: [dpdk-dev] can eth_igb_xmit_pkts called with len 0 affect >> transmission? >> >> Anyone? >> >> On 17.07.2015 16:48, ciprian.barbu wrote: >>> Hi, >>> >>> I'm seeing a strange behavior when calling rte_eth_tx_burst with len >>> =3D=3D 0. I'll explain the reason for this situation further bellow. Bu= t >>> what I'm seeing is that after doing this call my application keeps >>> returning from eth_igb_xmit_pkts here, even when len > 0: >>> http://dpdk.org/browse/dpdk/tree/lib/librte_pmd_e1000/igb_rxtx.c?h=3Dre= l >>> eases#n476 > Don=E2=80=99t understand what the len means? The packet length? Sorry about this, failure to communicate :) I meant to say nb_pkts =3D 0 > According to where the code returns, seems the queue is not initialized c= orrectly. The queue should have been initialized ok, I'm able to several millions=20 of packets before getting stuck. It's only after I make a=20 rte_eth_tx_burst call with nb_pkts =3D 0 that I get stuck in that return.=20 Looking at the source code, the function will only do: rte_wmb(); E1000_PCI_REG_WRITE(txq->tdt_reg_addr, tx_id); The barrier should be harmless, so I'm thinking that writing that=20 register without sending any packets causes this behavior. > I saw you used odp-dpdk. Sorry, I'm not familiar with it. Why not try dpd= k examples, > and check if the behavior is same? Of course, I tried the DPDK l2fwd example, that's how I managed to find=20 the difference between odp_l2fwd and DPDK l2fwd. After I removed the=20 piece of code that was calling rte_eth_tx_burst with nb_pkts 0 it=20 started behaving the same as DPDK l2fwd. I suppose I could also modify l2fwd to make this call and see it it gets=20 stuck too. > >>> >>> >>> I can't really explain myself this behavior, I don't understand very >>> well what the nic does once it receives buffers in its rings, but to >>> me it looks like calling rte_eth_tx_burst with len 0 has this effect. >>> >>> What I'm using in my tests is the linaro odp-dpdk implementation and >>> the odp_l2fwd example. The odp-dpdk implementation makes this call to >>> try and make the pmd to flush the tx queue in case there are no more >>> free buffers in the pool, but this was only verified for ixgbe 82599 >>> cards, for igb the packets are not actually flushed until the tail >>> circles back the whole length of the queue. I'm pretty much the only >>> one (that I know >>> of) that uses odp with 1G igb i350 cards and see this issue. >>> >>> Can anyone explain whether I'm getting this right and there could be >>> side effects to calling eth_igb_xmit_pkts with len 0? >>> >>> Thank you, >>> /Ciprian