From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f173.google.com (mail-ig0-f173.google.com [209.85.213.173]) by dpdk.org (Postfix) with ESMTP id 6E8BEB5EF for ; Mon, 16 Feb 2015 14:05:07 +0100 (CET) Received: by mail-ig0-f173.google.com with SMTP id a13so23394544igq.0 for ; Mon, 16 Feb 2015 05:05:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=6778r1SkPvyItfPQ1a+o+HOEw4Zg2WBdCLWrR0A9kgw=; b=Kaksfyvc89RVBgeRLn+Lbf9SF2zWimMKWJJswBHoryTAAttylMRqsKErima9YUoLCW nOphgo5mC4oDBQYLac7iWdq3RGEsMIttoyRZKc9fOG127EKTD9rYOeR9Tatm4OJOsa1R rTcdZeDtHVNFsF5rXfDP07Be9FPjNVL5p0n7v2MZMcS/VeYJdHuVcZqWAwNxhYgGZfMI GDyFy3y/9boA75K9bZQdmxwMfWcsgPqTEsEAY0IkT66fqGcpg6qZ2bzrA1RBUeVO4HQj YT/WBirZELHdbtwRyGkeNzUd4bfU6Tg4RZ5qoes+5u9cvEXUrFw4fL32H66SygM96iKM 7mAg== MIME-Version: 1.0 X-Received: by 10.50.62.83 with SMTP id w19mr21259345igr.26.1424091906827; Mon, 16 Feb 2015 05:05:06 -0800 (PST) Received: by 10.64.73.66 with HTTP; Mon, 16 Feb 2015 05:05:06 -0800 (PST) Received: by 10.64.73.66 with HTTP; Mon, 16 Feb 2015 05:05:06 -0800 (PST) In-Reply-To: <3EB4FA525960D640B5BDFFD6A3D8912632315B1F@IRSMSX108.ger.corp.intel.com> References: <3EB4FA525960D640B5BDFFD6A3D8912632315B1F@IRSMSX108.ger.corp.intel.com> Date: Mon, 16 Feb 2015 08:05:06 -0500 Message-ID: From: Aws Ismail To: "Dumitrescu, Cristian" Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Cc: dev@dpdk.org Subject: Re: [dpdk-dev] Explanation of the QoS offset values used in the QoS scheduler example app. 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: Mon, 16 Feb 2015 13:05:07 -0000 Thanks Cristian and Ariel your reply and explanation. It is clear to me now. Cheers. Aws\ On Feb 16, 2015 6:34 AM, "Dumitrescu, Cristian" < cristian.dumitrescu@intel.com> wrote: > Hi, > > These are byte offsets used for reading these packet fields, considering > that packet bytes are stored in memory in network order, while the CPU is > little endian, so byte swapping takes place on read. > > This is probably not the best way to write this code, and I agree this > portion of the app code is a bit more cryptic than it should be. Using data > structures to describe the header format for the input packet > (Ethernet/SVLAN/CVLAN/IPv4) and using portable byte swapping macros is > probably a better alternative. > > This being said, the code implementation, code comments and Sample App > Guide description seem to be consistent and correct. > > Regards, > Cristian > > > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Aws Ismail > Sent: Saturday, February 14, 2015 7:35 PM > To: dev@dpdk.org > Subject: [dpdk-dev] Explanation of the QoS offset values used in the QoS > scheduler example app. > > Hi everyone, > > I am looking at this portion of the code in the app_thread.c file of the > QoS scheduler example application: > > /* > * QoS parameters are encoded as follows: > * Outer VLAN ID defines subport > * Inner VLAN ID defines pipe > * Destination IP 0.0.XXX.0 defines traffic class > * Destination IP host (0.0.0.XXX) defines queue > * Values below define offset to each field from start of frame > */ > #define SUBPORT_OFFSET 7 > #define PIPE_OFFSET 9 > #define TC_OFFSET 20 > #define QUEUE_OFFSET 20 > #define COLOR_OFFSET 19 > > static inline int get_pkt_sched(struct rte_mbuf *m, uint32_t *subport, > uint32_t *pipe, uint32_t *traffic_class, uint32_t *queue, uint32_t *color) > { > uint16_t *pdata = rte_pktmbuf_mtod(m, uint16_t *); > > *subport = (rte_be_to_cpu_16(pdata[SUBPORT_OFFSET]) & 0x0FFF) & > (port_params.n_subports_per_port - 1); /* Outer VLAN ID*/ > > *pipe = (rte_be_to_cpu_16(pdata[PIPE_OFFSET]) & 0x0FFF) & > (port_params.n_pipes_per_subport - 1); /* Inner VLAN ID */ > > *traffic_class = (pdata[QUEUE_OFFSET] & 0x0F) & > (RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE - 1); /* Destination IP */ > > *queue = ((pdata[QUEUE_OFFSET] >> 8) & 0x0F) & > (RTE_SCHED_QUEUES_PER_TRAFFIC_CLASS - 1) ; /* Destination IP */ > > *color = pdata[COLOR_OFFSET] & 0x03; /* Destination IP */ > > return 0; > } > > The offset values do not make sense to me. According to the programmer > guide, the queue selection is SVID/CVID/TC/QID based. And those offset seem > off in this case. Is this because it is assuming that the packet is being > altered before it gets to this stage ? > > Can anyone provide a better explanation or at least the reason behind > choosing those offset values shown above. > > Thanks. > -------------------------------------------------------------- > Intel Shannon Limited > Registered in Ireland > Registered Office: Collinstown Industrial Park, Leixlip, County Kildare > Registered Number: 308263 > Business address: Dromore House, East Park, Shannon, Co. Clare > > This e-mail and any attachments may contain confidential material for the > sole use of the intended recipient(s). Any review or distribution by others > is strictly prohibited. If you are not the intended recipient, please > contact the sender and delete all copies. > >