From: Yong Wang <yongwang-pghWNbHTmq7QT0dZR+AlfA@public.gmane.org>
To: Stephen Hemminger
<stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
Cc: "dev-VfR2kkLFssw@public.gmane.org"
<dev-VfR2kkLFssw@public.gmane.org>,
Bill Hong <bhong-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org>
Subject: Re: [PATCH 6/7] vmxnet3: support RSS and refactor offload
Date: Thu, 5 Mar 2015 19:27:05 +0000 [thread overview]
Message-ID: <D11DED83.383BE%yongwang@vmware.com> (raw)
In-Reply-To: <1424917922-1979-6-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
I believe I have ACKed v1 of this commit but I didn't see ACKed-by in v2.
Or is there any changes from v1? If that’s the case, can you explain the
changes in the changelog?
On 2/25/15, 6:32 PM, "Stephen Hemminger" <stephen@networkplumber.org>
wrote:
>Refactor the logic to compute receive offload flags to a simpler
>function. And add support for putting RSS flow hash into packet.
>
>Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
>Signed-off-by: Bill Hong <bhong@brocade.com>
>---
> 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 884b57f..82bcae6 100644
>--- a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
>+++ b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c
>@@ -505,6 +505,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
>@@ -605,17 +642,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;
>@@ -624,25 +650,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.4
>
next prev parent reply other threads:[~2015-03-05 19:27 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
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:31 ` [PATCH 2/7] vmxnet3: remove mtu check Stephen Hemminger
2015-02-26 2:31 ` [PATCH 3/7] vmxnet3: cleanup txq stats Stephen Hemminger
[not found] ` <1424917922-1979-3-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-03-05 19:48 ` Yong Wang
2015-02-26 2:31 ` [PATCH 4/7] vmxnet3: add support for multi-segment transmit Stephen Hemminger
[not found] ` <1424917922-1979-4-git-send-email-stephen-OTpzqLSitTUnbdJkjeBofR2eb7JE58TQ@public.gmane.org>
2015-03-05 19:35 ` Yong Wang
2015-02-26 2:32 ` [PATCH 5/7] vmxnet3: fix link state handling Stephen Hemminger
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 [this message]
2015-02-26 2:32 ` [PATCH 7/7] vmxnet3: support jumbo frames Stephen Hemminger
2015-02-26 11:43 ` [PATCH 1/7] vmxnet3: enable VLAN filtering Thomas Monjalon
-- strict thread matches above, loose matches on Subject: below --
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 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
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=D11DED83.383BE%yongwang@vmware.com \
--to=yongwang-pghwnbhtmq7qt0dzr+alfa@public.gmane.org \
--cc=bhong-43mecJUBy8ZBDgjK7y7TUQ@public.gmane.org \
--cc=dev-VfR2kkLFssw@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.