From: Dumitru Ceara Date: Tue, 26 Jul 2016 10:46:09 +0000 (+0200) Subject: net/i40e: fix metadata in first mbuf of scattered Rx X-Git-Tag: spdx-start~6060 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=747ee88e999d5a23e2ff083dbe4f891c4fe8e7fd;p=dpdk.git net/i40e: fix metadata in first mbuf of scattered Rx The driver is incorrectly setting the RSS field in the last mbuf in the packet chain instead of the first. Moreover, the last mbuf might have already been freed if it only contained the Ethernet CRC. Also, fix the call to i40e_rxd_build_fdir to store the fdir flags in the first mbuf of the chain instead of the last. Fixes: 4861cde46116 ("i40e: new poll mode driver") Fixes: 5a21d9715f81 ("i40e: report flow director matching") Signed-off-by: Dumitru Ceara Acked-by: Konstantin Ananyev --- diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c index d3cfb98f3b..554d167937 100644 --- a/drivers/net/i40e/i40e_rxtx.c +++ b/drivers/net/i40e/i40e_rxtx.c @@ -1436,10 +1436,10 @@ i40e_recv_scattered_pkts(void *rx_queue, i40e_rxd_pkt_type_mapping((uint8_t)((qword1 & I40E_RXD_QW1_PTYPE_MASK) >> I40E_RXD_QW1_PTYPE_SHIFT)); if (pkt_flags & PKT_RX_RSS_HASH) - rxm->hash.rss = + first_seg->hash.rss = rte_le_to_cpu_32(rxd.wb.qword0.hi_dword.rss); if (pkt_flags & PKT_RX_FDIR) - pkt_flags |= i40e_rxd_build_fdir(&rxd, rxm); + pkt_flags |= i40e_rxd_build_fdir(&rxd, first_seg); #ifdef RTE_LIBRTE_IEEE1588 pkt_flags |= i40e_get_iee15888_flags(first_seg, qword1);