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 <dumitru.ceara@gmail.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
This commit is contained in:
parent
4b7da6e982
commit
747ee88e99
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user