From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.droids-corp.org (zoll.droids-corp.org [94.23.50.67]) by dpdk.org (Postfix) with ESMTP id 2788B532E for ; Fri, 29 Apr 2016 09:29:09 +0200 (CEST) Received: from was59-1-82-226-113-214.fbx.proxad.net ([82.226.113.214] helo=[192.168.0.10]) by mail.droids-corp.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1aw2tF-000143-GT; Fri, 29 Apr 2016 09:31:06 +0200 To: zhang.xinghua1@zte.com.cn, dev@dpdk.org References: From: Olivier Matz Message-ID: <57230D3D.6070209@6wind.com> Date: Fri, 29 Apr 2016 09:29:01 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] Byte order of vlan_tci of rte_mbuf is different on different source 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, 29 Apr 2016 07:29:09 -0000 Hi, On 04/25/2016 04:35 AM, zhang.xinghua1@zte.com.cn wrote: > When using I350 working on SR-IOV mode, we got confused that byte order > of vlan_tci in the VF received packet descriptor is different when the > packet source is different. > > 1) Packets from VF to VF, the byte order is big-endian. (e.g. 0xF00) > 2) Packets from PC to VF, the byte order is little-endian. (e.g. 0xF) > > Below is the testing net-work: > VM0 VM1 PC > VF0 VF1 | > | | | > +------+------+ | > | | > PF | > hypervisor | > SR-IOV NIC | > | | > | VLAN 15 | > +---------switch-------+ > > > We make a breakpoint at the following line of eth_igb_recv_pkts, the > vlan_tci > we observed that everytime. > > uint16_t > eth_igb_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, > uint16_t nb_pkts) > > /* Only valid if PKT_RX_VLAN_PKT set in pkt_flags */ > rxm->vlan_tci = rte_le_to_cpu_16(rxd.wb.upper.vlan); In rte_mbuf.h, it is specified that these values (vlan_tci and vlan_tci_outer) must be stored in CPU order. It's probably a driver or hardware issue. Note that in linux there is something that looks similar to your issue: http://lxr.free-electrons.com/source/drivers/net/ethernet/intel/igb/igb_main.c#L1278 /* On i350, i354, i210, and i211, loopback VLAN packets * have the tag byte-swapped. */ if (adapter->hw.mac.type >= e1000_i350) set_bit(IGB_RING_FLAG_RX_LB_VLAN_BSWAP, &ring->flags); I think you could check if the same thing is done in the dpdk driver. > -------------------------------------------------------- > ZTE Information Security Notice: The information contained in this mail (and any attachment transmitted herewith) is privileged and confidential and is intended for the exclusive use of the addressee(s). If you are not an intended recipient, any disclosure, reproduction, distribution or other dissemination or use of the information contained is strictly prohibited. If you have received this mail in error, please delete it and notify us immediately. > This notice should be removed in public emails. Regards, Olivier