i40e: fix RSS hash copy
authorHelin Zhang <helin.zhang@intel.com>
Tue, 24 Jun 2014 02:02:33 +0000 (10:02 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 24 Jun 2014 11:01:20 +0000 (13:01 +0200)
It wrongly gets the RSS hash result from the RX descriptor which
has been modified for receiving new packet. The fix is to get the
RSS hash result from the buffer which saves the RX descriptor.

Signed-off-by: Helin Zhang <helin.zhang@intel.com>
Acked-by: Jing Chen <jing.d.chen@intel.com>
Acked-by: Cunming Liang <cunming.liang@intel.com>
lib/librte_pmd_i40e/i40e_rxtx.c

index 9fccbee..3a6a2d8 100644 (file)
@@ -863,7 +863,7 @@ i40e_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
                rxm->ol_flags = pkt_flags;
                if (pkt_flags & PKT_RX_RSS_HASH)
                        rxm->pkt.hash.rss =
-                               rte_le_to_cpu_32(rxdp->wb.qword0.hi_dword.rss);
+                               rte_le_to_cpu_32(rxd.wb.qword0.hi_dword.rss);
 
                rx_pkts[nb_rx++] = rxm;
        }
@@ -1016,7 +1016,7 @@ i40e_recv_scattered_pkts(void *rx_queue,
                first_seg->ol_flags = pkt_flags;
                if (pkt_flags & PKT_RX_RSS_HASH)
                        rxm->pkt.hash.rss =
-                               rte_le_to_cpu_32(rxdp->wb.qword0.hi_dword.rss);
+                               rte_le_to_cpu_32(rxd.wb.qword0.hi_dword.rss);
 
                /* Prefetch data of first segment, if configured to do so. */
                rte_prefetch0(first_seg->pkt.data);