@@ -178,7 +178,11 @@ struct rte_eth_conf DpdkCore::createPortConfig()
178178#endif
179179
180180 if (m_supportedRSS) {
181+ #if RTE_VERSION >= RTE_VERSION_NUM(21, 11, 0, 0)
182+ portConfig.rxmode .mq_mode = RTE_ETH_MQ_RX_RSS;
183+ #else
181184 portConfig.rxmode .mq_mode = ETH_MQ_RX_RSS;
185+ #endif
182186 } else {
183187 portConfig.rxmode .mq_mode = RTE_ETH_MQ_RX_NONE;
184188 }
@@ -215,7 +219,11 @@ void DpdkCore::configureRSS()
215219 struct rte_eth_rss_conf rssConfig = {
216220 .rss_key = rssKey,
217221 .rss_key_len = RSS_KEY_LEN,
222+ #if RTE_VERSION >= RTE_VERSION_NUM(21, 11, 0, 0)
223+ .rss_hf = RTE_ETH_RSS_IP,
224+ #else
218225 .rss_hf = ETH_RSS_IP,
226+ #endif
219227 };
220228
221229 if (rte_eth_dev_rss_hash_update (m_portId, &rssConfig)) {
@@ -344,6 +352,11 @@ int DpdkCore::getRxTimestampOffset()
344352 return m_rxTimestampOffset;
345353}
346354
355+ int DpdkCore::getRxTimestampDynflag ()
356+ {
357+ return RTE_BIT64 (rte_mbuf_dynflag_lookup (RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME, NULL ));
358+ }
359+
347360DpdkReader::DpdkReader ()
348361 : m_dpdkCore(DpdkCore::getInstance())
349362{
@@ -362,6 +375,7 @@ void DpdkReader::init(const char* params)
362375 m_rxQueueId = m_dpdkCore.getRxQueueId ();
363376 m_portId = m_dpdkCore.parser .port_num ();
364377 m_rxTimestampOffset = m_dpdkCore.getRxTimestampOffset ();
378+ m_rxTimestampDynflag = m_dpdkCore.getRxTimestampDynflag ();
365379 m_useHwRxTimestamp = m_dpdkCore.isNfbDpdkDriver ();
366380
367381 createRteMempool (m_dpdkCore.parser .pkt_mempool_size ());
@@ -412,7 +426,7 @@ void DpdkReader::setupRxQueue()
412426struct timeval DpdkReader::getTimestamp (rte_mbuf* mbuf)
413427{
414428 struct timeval tv;
415- if (m_useHwRxTimestamp) {
429+ if (m_useHwRxTimestamp && (mbuf-> ol_flags & m_rxTimestampDynflag) ) {
416430 static constexpr time_t nanosecInSec = 1000000000 ;
417431 static constexpr time_t nsecInUsec = 1000 ;
418432
0 commit comments