All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yong Wang <yongwang-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
To: Stephen Hemminger
	<stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>,
	"dev-VfR2kkLFssw@public.gmane.org"
	<dev-VfR2kkLFssw@public.gmane.org>
Cc: Bill Hong <bhong-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org>,
	Stephen Hemminger
	<shemming-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org>
Subject: Re: [PATCH 6/7] vmxnet3: support RSS and refactor offload
Date: Wed, 11 Feb 2015 01:28:03 +0000	[thread overview]
Message-ID: <D0FFF000.34BA4%yongwang@vmware.com> (raw)
In-Reply-To: <1418793196-17953-7-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>

On 12/16/14, 9:13 PM, "Stephen Hemminger" <stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
wrote:

>From: Stephen Hemminger <shemming-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org>
>
>Refactor the logic to compute receive offload flags to a simpler
>function. Andd add support for putting RSS flow hash into packet.
>
>Signed-off-by: Stephen Hemminger <stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
>Signed-off-by: Bill Hong <bhong-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org>
>---

Acked-by: Yong Wang <yongwang-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>

> lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c | 69
>++++++++++++++++++++---------------
> 1 file changed, 40 insertions(+), 29 deletions(-)
>
>diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
>b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
>index bd47c6c..53ddb2c 100644
>--- a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
>+++ b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
>@@ -488,6 +488,43 @@ vmxnet3_post_rx_bufs(vmxnet3_rx_queue_t *rxq,
>uint8_t ring_id)
> 		return i;
> }
> 
>+
>+/* Receive side checksum and other offloads */
>+static void
>+vmxnet3_rx_offload(const Vmxnet3_RxCompDesc *rcd, struct rte_mbuf *rxm)
>+{
>+	/* Check for hardware stripped VLAN tag */
>+	if (rcd->ts) {
>+		rxm->ol_flags |= PKT_RX_VLAN_PKT;
>+		rxm->vlan_tci = rte_le_to_cpu_16((uint16_t)rcd->tci);
>+	}
>+
>+	/* Check for RSS */
>+	if (rcd->rssType != VMXNET3_RCD_RSS_TYPE_NONE) {
>+		rxm->ol_flags |= PKT_RX_RSS_HASH;
>+		rxm->hash.rss = rcd->rssHash;
>+	}
>+
>+	/* Check packet type, checksum errors, etc. Only support IPv4 for now.
>*/
>+	if (rcd->v4) {
>+		struct ether_hdr *eth = rte_pktmbuf_mtod(rxm, struct ether_hdr *);
>+		struct ipv4_hdr *ip = (struct ipv4_hdr *)(eth + 1);
>+
>+		if (((ip->version_ihl & 0xf) << 2) > (int)sizeof(struct ipv4_hdr))
>+			rxm->ol_flags |= PKT_RX_IPV4_HDR_EXT;
>+		else
>+			rxm->ol_flags |= PKT_RX_IPV4_HDR;
>+
>+		if (!rcd->cnc) {
>+			if (!rcd->ipc)
>+				rxm->ol_flags |= PKT_RX_IP_CKSUM_BAD;
>+
>+			if ((rcd->tcp || rcd->udp) && !rcd->tuc)
>+				rxm->ol_flags |= PKT_RX_L4_CKSUM_BAD;
>+		}
>+	}
>+}
>+
> /*
>  * Process the Rx Completion Ring of given vmxnet3_rx_queue
>  * for nb_pkts burst and return the number of packets received
>@@ -583,17 +620,6 @@ vmxnet3_recv_pkts(void *rx_queue, struct rte_mbuf
>**rx_pkts, uint16_t nb_pkts)
> 			goto rcd_done;
> 		}
> 
>-		/* Check for hardware stripped VLAN tag */
>-		if (rcd->ts) {
>-			PMD_RX_LOG(DEBUG, "Received packet with vlan ID: %d.",
>-				   rcd->tci);
>-			rxm->ol_flags = PKT_RX_VLAN_PKT;
>-			/* Copy vlan tag in packet buffer */
>-			rxm->vlan_tci = rte_le_to_cpu_16((uint16_t)rcd->tci);
>-		} else {
>-			rxm->ol_flags = 0;
>-			rxm->vlan_tci = 0;
>-		}
> 
> 		/* Initialize newly received packet buffer */
> 		rxm->port = rxq->port_id;
>@@ -602,25 +628,10 @@ vmxnet3_recv_pkts(void *rx_queue, struct rte_mbuf
>**rx_pkts, uint16_t nb_pkts)
> 		rxm->pkt_len = (uint16_t)rcd->len;
> 		rxm->data_len = (uint16_t)rcd->len;
> 		rxm->data_off = RTE_PKTMBUF_HEADROOM;
>+		rxm->ol_flags = 0;
>+		rxm->vlan_tci = 0;
> 
>-		/* Check packet type, checksum errors, etc. Only support IPv4 for now.
>*/
>-		if (rcd->v4) {
>-			struct ether_hdr *eth = rte_pktmbuf_mtod(rxm, struct ether_hdr *);
>-			struct ipv4_hdr *ip = (struct ipv4_hdr *)(eth + 1);
>-
>-			if (((ip->version_ihl & 0xf) << 2) > (int)sizeof(struct ipv4_hdr))
>-				rxm->ol_flags |= PKT_RX_IPV4_HDR_EXT;
>-			else
>-				rxm->ol_flags |= PKT_RX_IPV4_HDR;
>-
>-			if (!rcd->cnc) {
>-				if (!rcd->ipc)
>-					rxm->ol_flags |= PKT_RX_IP_CKSUM_BAD;
>-
>-				if ((rcd->tcp || rcd->udp) && !rcd->tuc)
>-					rxm->ol_flags |= PKT_RX_L4_CKSUM_BAD;
>-			}
>-		}
>+		vmxnet3_rx_offload(rcd, rxm);
> 
> 		rx_pkts[nb_rx++] = rxm;
> rcd_done:
>-- 
>2.1.3
>

  parent reply	other threads:[~2015-02-11  1:28 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-17  5:13 [PATCH 0/7] vmxnet3: driver enhancements Stephen Hemminger
     [not found] ` <1418793196-17953-1-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2014-12-17  5:13   ` [PATCH 1/7] vmxnet3: add support for VLAN filtering Stephen Hemminger
     [not found]     ` <1418793196-17953-2-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-12 18:40       ` Yong Wang
2014-12-17  5:13   ` [PATCH 2/7] vmxnet3: remove mtu check Stephen Hemminger
     [not found]     ` <1418793196-17953-3-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-11  0:54       ` Yong Wang
2014-12-17  5:13   ` [PATCH 3/7] vmxnet3: add support for mulit-segment transmit Stephen Hemminger
     [not found]     ` <1418793196-17953-4-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-11 21:15       ` Yong Wang
2014-12-17  5:13   ` [PATCH 4/7] vmxnet3: fix link state handling Stephen Hemminger
     [not found]     ` <1418793196-17953-5-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-11  2:24       ` Yong Wang
2014-12-17  5:13   ` [PATCH 5/7] vmxnet3: get rid of DEBUG ifdefs Stephen Hemminger
     [not found]     ` <1418793196-17953-6-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-11  0:54       ` Yong Wang
     [not found]         ` <D0FFDD6B.34A9C%yongwang-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
2015-02-11  2:18           ` Stephen Hemminger
2014-12-17  5:13   ` [PATCH 6/7] vmxnet3: support RSS and refactor offload Stephen Hemminger
     [not found]     ` <1418793196-17953-7-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-11  1:28       ` Yong Wang [this message]
2014-12-17  5:13   ` [PATCH 7/7] vmxnet3: support jumbo frames Stephen Hemminger
2015-01-15 11:02   ` [PATCH 0/7] vmxnet3: driver enhancements Thomas Monjalon
2015-01-22  0:49     ` Stephen Hemminger
2015-01-22  9:42       ` Thomas Monjalon
  -- strict thread matches above, loose matches on Subject: below --
2015-02-26  2:31 [PATCH 1/7] vmxnet3: enable VLAN filtering Stephen Hemminger
     [not found] ` <1424917922-1979-1-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-02-26  2:32   ` [PATCH 6/7] vmxnet3: support RSS and refactor offload Stephen Hemminger
     [not found]     ` <1424917922-1979-6-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-03-05 19:27       ` Yong Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=D0FFF000.34BA4%yongwang@vmware.com \
    --to=yongwang-pghwnbhtmq7qt0dzr+alfa@public.gmane.org \
    --cc=bhong-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org \
    --cc=dev-VfR2kkLFssw@public.gmane.org \
    --cc=shemming-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org \
    --cc=stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.