From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chas Williams <3chas3@gmail.com> Subject: Re: bnx2x driver and 57800 versus 57810 Date: Wed, 27 Jan 2016 10:58:36 -0500 Message-ID: <1453910316.30152.1.camel@gmail.com> References: <1453853598.28524.23.camel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable To: Harish Patil , "dev@dpdk.org" Return-path: Received: from mail-qg0-f44.google.com (mail-qg0-f44.google.com [209.85.192.44]) by dpdk.org (Postfix) with ESMTP id 59DF695DA for ; Wed, 27 Jan 2016 16:58:38 +0100 (CET) Received: by mail-qg0-f44.google.com with SMTP id 6so10001999qgy.1 for ; Wed, 27 Jan 2016 07:58:38 -0800 (PST) In-Reply-To: List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Wed, 2016-01-27 at 07:32 +0000, Harish Patil wrote: > > > >I have to practically identical systems, same hypervisor on each > (Centos > >7.x).=C2=A0=C2=A0In one, I have a 57800 card which works fine with DPD= K with > >SRIOV.=C2=A0=C2=A0In the other, I have a 57810 card which doesn't work= with > SRIOV. > > > >For the 57810 I have tracked this down to the status block in the VF > >failing to be updated.=C2=A0=C2=A0The linux driver works fine but it a= ppears to > >use a slightly different scheme -- writing some sort of fastpath > status > >block generation per interrupt. > > > >Does anyone have any suggestions or a programming guide for this > device? > > > > >=C2=A0 > What is not working with 57810? Is it link related or traffic? Please > provide the details. > Attached is the SW programming guide for 577xx/578xx. I=E2=80=99m not s= ure if > it has details pertaining to the specific issue that you have. The DPDK PMD driver seems to be able to transmit packets on the 57810. But since the status block isn't getting updated, you can't reclaim the sent buffers.=C2=A0=C2=A0I modified the driver to use the marker based re= ceive detection (similar to the method used in the Linux driver) and I can see packets getting received (certainly broadcast is received -- possibly not unicast packets though which seems to indicate that part of the RX path is possibly still broken). I have tried a couple things.=C2=A0=C2=A0The status page in the DPDK PMD = driver isn't getting page aligned (as well as a bunch of other structures that should probably be page aligned). The Linux driver happens to do this as a side effect of the DMA allocator.=C2=A0=C2=A0Fixing this didn't= seem to improve matters though.=C2=A0=C2=A0The status block doesn't seem to get u= pdated. I verified that the correct DMA address is getting passed to the PF. And since it works on the 57800, I thought perhaps something changed. Also, the DPDK driver probably gets the RX/TX queue indices wrong during initial setup.=C2=A0=C2=A0The final values coming out of the allocation l= oop are probably bigger than they should be.=C2=A0=C2=A0Should they point to = the end of the queue or just past the end?=C2=A0=C2=A0Also, the tail of the queue= needs to be corrected for the double entry at the end of the pages.=C2=A0=C2=A0= Again, fixing this didn't seem to help either. The VF-PF interaction seems to be ok as well.=C2=A0=C2=A0Other than not s= upporting SGE, the DPDK PMD driver seems to send reasonably correct messages to the PF. I don't see the DPDK PMD driver doing anything to 'reset' the PCI apsect of the VF.=C2=A0=C2=A0If there is any left over configuration for interru= pts, like leaving the IGU enabled that maybe not be cleared, I am not sure what the interaction might be.=C2=A0=C2=A0I do know the Linux driver does= seem to use MSI-X interrupts. > Thanks, > Harish Thanks for looking at this and thanks for the programming guide.=C2=A0=C2= =A0It will take me a bit to digest it.