Skip to content

Commit c7875dc

Browse files
committed
More fix
1 parent 926aceb commit c7875dc

File tree

2 files changed

+162
-170
lines changed

2 files changed

+162
-170
lines changed

Pcap++/src/DpdkDevice.cpp

Lines changed: 106 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,36 @@
1-
#ifdef USE_DPDK
2-
31
// GCOVR_EXCL_START
42

5-
# define LOG_MODULE PcapLogModuleDpdkDevice
6-
7-
# define __STDC_LIMIT_MACROS
8-
# define __STDC_FORMAT_MACROS
9-
10-
# include "DpdkDevice.h"
11-
# include "DpdkDeviceList.h"
12-
# include "Logger.h"
13-
# include "rte_version.h"
14-
# if (RTE_VER_YEAR > 17) || (RTE_VER_YEAR == 17 && RTE_VER_MONTH >= 11)
15-
# include "rte_bus_pci.h"
16-
# endif
17-
# include "rte_pci.h"
18-
# include "rte_config.h"
19-
# include "rte_ethdev.h"
20-
# include "rte_errno.h"
21-
# include "rte_malloc.h"
22-
# include "rte_cycles.h"
23-
# include <string>
24-
# include <stdint.h>
25-
# include <unistd.h>
26-
27-
# define MAX_BURST_SIZE 64
28-
29-
# define MEMPOOL_CACHE_SIZE 256
30-
31-
# if (RTE_VER_YEAR < 21) || (RTE_VER_YEAR == 21 && RTE_VER_MONTH < 11)
32-
# define GET_MASTER_CORE rte_get_master_lcore
33-
# else
34-
# define GET_MASTER_CORE rte_get_main_lcore
35-
# endif
3+
#define LOG_MODULE PcapLogModuleDpdkDevice
4+
5+
#define __STDC_LIMIT_MACROS
6+
#define __STDC_FORMAT_MACROS
7+
8+
#include "DpdkDevice.h"
9+
#include "DpdkDeviceList.h"
10+
#include "Logger.h"
11+
#include "rte_version.h"
12+
#if (RTE_VER_YEAR > 17) || (RTE_VER_YEAR == 17 && RTE_VER_MONTH >= 11)
13+
# include "rte_bus_pci.h"
14+
#endif
15+
#include "rte_pci.h"
16+
#include "rte_config.h"
17+
#include "rte_ethdev.h"
18+
#include "rte_errno.h"
19+
#include "rte_malloc.h"
20+
#include "rte_cycles.h"
21+
#include <string>
22+
#include <stdint.h>
23+
#include <unistd.h>
24+
25+
#define MAX_BURST_SIZE 64
26+
27+
#define MEMPOOL_CACHE_SIZE 256
28+
29+
#if (RTE_VER_YEAR < 21) || (RTE_VER_YEAR == 21 && RTE_VER_MONTH < 11)
30+
# define GET_MASTER_CORE rte_get_master_lcore
31+
#else
32+
# define GET_MASTER_CORE rte_get_main_lcore
33+
#endif
3634

3735
namespace pcpp
3836
{
@@ -43,65 +41,65 @@ namespace pcpp
4341
* ================
4442
*/
4543

46-
# define DPDK_CONFIG_HEADER_SPLIT 0 /**< Header Split disabled */
47-
# define DPDK_CONFIG_SPLIT_HEADER_SIZE 0
48-
# define DPDK_CONFIG_HW_IP_CHECKSUM 0 /**< IP checksum offload disabled */
49-
# define DPDK_CONFIG_HW_VLAN_FILTER 0 /**< VLAN filtering disabled */
50-
# define DPDK_CONFIG_JUMBO_FRAME 0 /**< Jumbo Frame Support disabled */
51-
# define DPDK_CONFIG_HW_STRIP_CRC 0 /**< CRC stripped by hardware disabled */
52-
# if (RTE_VER_YEAR < 21) || (RTE_VER_YEAR == 21 && RTE_VER_MONTH < 11)
53-
# define DPDK_CONFIG_ETH_LINK_FULL_DUPLEX ETH_LINK_FULL_DUPLEX
54-
# define DPDK_CONFIG_MQ_RSS ETH_RSS
55-
# define DPDK_CONFIG_MQ_NO_RSS ETH_MQ_RX_NONE
56-
# else
57-
# define DPDK_CONFIG_ETH_LINK_FULL_DUPLEX RTE_ETH_LINK_FULL_DUPLEX
58-
# define DPDK_CONFIG_MQ_RSS RTE_ETH_MQ_RX_RSS
59-
# define DPDK_CONFIG_MQ_NO_RSS RTE_ETH_MQ_RX_NONE
60-
# endif
61-
62-
# if (RTE_VER_YEAR < 22) || (RTE_VER_YEAR == 22 && RTE_VER_MONTH < 11)
63-
# define DPDK_CONFIG_ETH_RSS_IPV4 ETH_RSS_IPV4
64-
# define DPDK_CONFIG_ETH_RSS_FRAG_IPV4 ETH_RSS_FRAG_IPV4
65-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_TCP ETH_RSS_NONFRAG_IPV4_TCP
66-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_UDP ETH_RSS_NONFRAG_IPV4_UDP
67-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_SCTP ETH_RSS_NONFRAG_IPV4_SCTP
68-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_OTHER ETH_RSS_NONFRAG_IPV4_OTHER
69-
# define DPDK_CONFIG_ETH_RSS_IPV6 ETH_RSS_IPV6
70-
# define DPDK_CONFIG_ETH_RSS_FRAG_IPV6 ETH_RSS_FRAG_IPV6
71-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_TCP ETH_RSS_NONFRAG_IPV6_TCP
72-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_UDP ETH_RSS_NONFRAG_IPV6_UDP
73-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_SCTP ETH_RSS_NONFRAG_IPV6_SCTP
74-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_OTHER ETH_RSS_NONFRAG_IPV6_OTHER
75-
# define DPDK_CONFIG_ETH_RSS_L2_PAYLOAD ETH_RSS_L2_PAYLOAD
76-
# define DPDK_CONFIG_ETH_RSS_IPV6_EX ETH_RSS_IPV6_EX
77-
# define DPDK_CONFIG_ETH_RSS_IPV6_TCP_EX ETH_RSS_IPV6_TCP_EX
78-
# define DPDK_CONFIG_ETH_RSS_IPV6_UDP_EX ETH_RSS_IPV6_UDP_EX
79-
# define DPDK_CONFIG_ETH_RSS_PORT ETH_RSS_PORT
80-
# define DPDK_CONFIG_ETH_RSS_VXLAN ETH_RSS_VXLAN
81-
# define DPDK_CONFIG_ETH_RSS_GENEVE ETH_RSS_GENEVE
82-
# define DPDK_CONFIG_ETH_RSS_NVGRE ETH_RSS_NVGRE
83-
# else
84-
# define DPDK_CONFIG_ETH_RSS_IPV4 RTE_ETH_RSS_IPV4
85-
# define DPDK_CONFIG_ETH_RSS_FRAG_IPV4 RTE_ETH_RSS_FRAG_IPV4
86-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_TCP RTE_ETH_RSS_NONFRAG_IPV4_TCP
87-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_UDP RTE_ETH_RSS_NONFRAG_IPV4_UDP
88-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_SCTP RTE_ETH_RSS_NONFRAG_IPV4_SCTP
89-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_OTHER RTE_ETH_RSS_NONFRAG_IPV4_OTHER
90-
# define DPDK_CONFIG_ETH_RSS_IPV6 RTE_ETH_RSS_IPV6
91-
# define DPDK_CONFIG_ETH_RSS_FRAG_IPV6 RTE_ETH_RSS_FRAG_IPV6
92-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_TCP RTE_ETH_RSS_NONFRAG_IPV6_TCP
93-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_UDP RTE_ETH_RSS_NONFRAG_IPV6_UDP
94-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_SCTP RTE_ETH_RSS_NONFRAG_IPV6_SCTP
95-
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_OTHER RTE_ETH_RSS_NONFRAG_IPV6_OTHER
96-
# define DPDK_CONFIG_ETH_RSS_L2_PAYLOAD RTE_ETH_RSS_L2_PAYLOAD
97-
# define DPDK_CONFIG_ETH_RSS_IPV6_EX RTE_ETH_RSS_IPV6_EX
98-
# define DPDK_CONFIG_ETH_RSS_IPV6_TCP_EX RTE_ETH_RSS_IPV6_TCP_EX
99-
# define DPDK_CONFIG_ETH_RSS_IPV6_UDP_EX RTE_ETH_RSS_IPV6_UDP_EX
100-
# define DPDK_CONFIG_ETH_RSS_PORT RTE_ETH_RSS_PORT
101-
# define DPDK_CONFIG_ETH_RSS_VXLAN RTE_ETH_RSS_VXLAN
102-
# define DPDK_CONFIG_ETH_RSS_GENEVE RTE_ETH_RSS_GENEVE
103-
# define DPDK_CONFIG_ETH_RSS_NVGRE RTE_ETH_RSS_NVGRE
104-
# endif
44+
#define DPDK_CONFIG_HEADER_SPLIT 0 /**< Header Split disabled */
45+
#define DPDK_CONFIG_SPLIT_HEADER_SIZE 0
46+
#define DPDK_CONFIG_HW_IP_CHECKSUM 0 /**< IP checksum offload disabled */
47+
#define DPDK_CONFIG_HW_VLAN_FILTER 0 /**< VLAN filtering disabled */
48+
#define DPDK_CONFIG_JUMBO_FRAME 0 /**< Jumbo Frame Support disabled */
49+
#define DPDK_CONFIG_HW_STRIP_CRC 0 /**< CRC stripped by hardware disabled */
50+
#if (RTE_VER_YEAR < 21) || (RTE_VER_YEAR == 21 && RTE_VER_MONTH < 11)
51+
# define DPDK_CONFIG_ETH_LINK_FULL_DUPLEX ETH_LINK_FULL_DUPLEX
52+
# define DPDK_CONFIG_MQ_RSS ETH_RSS
53+
# define DPDK_CONFIG_MQ_NO_RSS ETH_MQ_RX_NONE
54+
#else
55+
# define DPDK_CONFIG_ETH_LINK_FULL_DUPLEX RTE_ETH_LINK_FULL_DUPLEX
56+
# define DPDK_CONFIG_MQ_RSS RTE_ETH_MQ_RX_RSS
57+
# define DPDK_CONFIG_MQ_NO_RSS RTE_ETH_MQ_RX_NONE
58+
#endif
59+
60+
#if (RTE_VER_YEAR < 22) || (RTE_VER_YEAR == 22 && RTE_VER_MONTH < 11)
61+
# define DPDK_CONFIG_ETH_RSS_IPV4 ETH_RSS_IPV4
62+
# define DPDK_CONFIG_ETH_RSS_FRAG_IPV4 ETH_RSS_FRAG_IPV4
63+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_TCP ETH_RSS_NONFRAG_IPV4_TCP
64+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_UDP ETH_RSS_NONFRAG_IPV4_UDP
65+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_SCTP ETH_RSS_NONFRAG_IPV4_SCTP
66+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_OTHER ETH_RSS_NONFRAG_IPV4_OTHER
67+
# define DPDK_CONFIG_ETH_RSS_IPV6 ETH_RSS_IPV6
68+
# define DPDK_CONFIG_ETH_RSS_FRAG_IPV6 ETH_RSS_FRAG_IPV6
69+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_TCP ETH_RSS_NONFRAG_IPV6_TCP
70+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_UDP ETH_RSS_NONFRAG_IPV6_UDP
71+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_SCTP ETH_RSS_NONFRAG_IPV6_SCTP
72+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_OTHER ETH_RSS_NONFRAG_IPV6_OTHER
73+
# define DPDK_CONFIG_ETH_RSS_L2_PAYLOAD ETH_RSS_L2_PAYLOAD
74+
# define DPDK_CONFIG_ETH_RSS_IPV6_EX ETH_RSS_IPV6_EX
75+
# define DPDK_CONFIG_ETH_RSS_IPV6_TCP_EX ETH_RSS_IPV6_TCP_EX
76+
# define DPDK_CONFIG_ETH_RSS_IPV6_UDP_EX ETH_RSS_IPV6_UDP_EX
77+
# define DPDK_CONFIG_ETH_RSS_PORT ETH_RSS_PORT
78+
# define DPDK_CONFIG_ETH_RSS_VXLAN ETH_RSS_VXLAN
79+
# define DPDK_CONFIG_ETH_RSS_GENEVE ETH_RSS_GENEVE
80+
# define DPDK_CONFIG_ETH_RSS_NVGRE ETH_RSS_NVGRE
81+
#else
82+
# define DPDK_CONFIG_ETH_RSS_IPV4 RTE_ETH_RSS_IPV4
83+
# define DPDK_CONFIG_ETH_RSS_FRAG_IPV4 RTE_ETH_RSS_FRAG_IPV4
84+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_TCP RTE_ETH_RSS_NONFRAG_IPV4_TCP
85+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_UDP RTE_ETH_RSS_NONFRAG_IPV4_UDP
86+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_SCTP RTE_ETH_RSS_NONFRAG_IPV4_SCTP
87+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV4_OTHER RTE_ETH_RSS_NONFRAG_IPV4_OTHER
88+
# define DPDK_CONFIG_ETH_RSS_IPV6 RTE_ETH_RSS_IPV6
89+
# define DPDK_CONFIG_ETH_RSS_FRAG_IPV6 RTE_ETH_RSS_FRAG_IPV6
90+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_TCP RTE_ETH_RSS_NONFRAG_IPV6_TCP
91+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_UDP RTE_ETH_RSS_NONFRAG_IPV6_UDP
92+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_SCTP RTE_ETH_RSS_NONFRAG_IPV6_SCTP
93+
# define DPDK_CONFIG_ETH_RSS_NONFRAG_IPV6_OTHER RTE_ETH_RSS_NONFRAG_IPV6_OTHER
94+
# define DPDK_CONFIG_ETH_RSS_L2_PAYLOAD RTE_ETH_RSS_L2_PAYLOAD
95+
# define DPDK_CONFIG_ETH_RSS_IPV6_EX RTE_ETH_RSS_IPV6_EX
96+
# define DPDK_CONFIG_ETH_RSS_IPV6_TCP_EX RTE_ETH_RSS_IPV6_TCP_EX
97+
# define DPDK_CONFIG_ETH_RSS_IPV6_UDP_EX RTE_ETH_RSS_IPV6_UDP_EX
98+
# define DPDK_CONFIG_ETH_RSS_PORT RTE_ETH_RSS_PORT
99+
# define DPDK_CONFIG_ETH_RSS_VXLAN RTE_ETH_RSS_VXLAN
100+
# define DPDK_CONFIG_ETH_RSS_GENEVE RTE_ETH_RSS_GENEVE
101+
# define DPDK_CONFIG_ETH_RSS_NVGRE RTE_ETH_RSS_NVGRE
102+
#endif
105103

106104
// RSS random key:
107105
uint8_t DpdkDevice::m_RSSKey[40] = {
@@ -119,11 +117,11 @@ namespace pcpp
119117
m_DeviceName = deviceNameStream.str();
120118
m_DeviceSocketId = rte_eth_dev_socket_id(m_Id);
121119

122-
# if (RTE_VER_YEAR > 19) || (RTE_VER_YEAR == 19 && RTE_VER_MONTH >= 8)
120+
#if (RTE_VER_YEAR > 19) || (RTE_VER_YEAR == 19 && RTE_VER_MONTH >= 8)
123121
struct rte_ether_addr etherAddr;
124-
# else
122+
#else
125123
struct ether_addr etherAddr;
126-
# endif
124+
#endif
127125
rte_eth_macaddr_get((uint8_t)m_Id, &etherAddr);
128126
m_MacAddress = MacAddress(etherAddr.addr_bytes[0], etherAddr.addr_bytes[1], etherAddr.addr_bytes[2],
129127
etherAddr.addr_bytes[3], etherAddr.addr_bytes[4], etherAddr.addr_bytes[5]);
@@ -309,16 +307,16 @@ namespace pcpp
309307

310308
struct rte_eth_conf portConf;
311309
memset(&portConf, 0, sizeof(rte_eth_conf));
312-
# if (RTE_VER_YEAR < 22) || (RTE_VER_YEAR == 22 && RTE_VER_MONTH < 11)
310+
#if (RTE_VER_YEAR < 22) || (RTE_VER_YEAR == 22 && RTE_VER_MONTH < 11)
313311
portConf.rxmode.split_hdr_size = DPDK_CONFIG_SPLIT_HEADER_SIZE;
314-
# endif
315-
# if (RTE_VER_YEAR < 18) || (RTE_VER_YEAR == 18 && RTE_VER_MONTH < 8)
312+
#endif
313+
#if (RTE_VER_YEAR < 18) || (RTE_VER_YEAR == 18 && RTE_VER_MONTH < 8)
316314
portConf.rxmode.header_split = DPDK_CONFIG_HEADER_SPLIT;
317315
portConf.rxmode.hw_ip_checksum = DPDK_CONFIG_HW_IP_CHECKSUM;
318316
portConf.rxmode.hw_vlan_filter = DPDK_CONFIG_HW_VLAN_FILTER;
319317
portConf.rxmode.jumbo_frame = DPDK_CONFIG_JUMBO_FRAME;
320318
portConf.rxmode.hw_strip_crc = DPDK_CONFIG_HW_STRIP_CRC;
321-
# endif
319+
#endif
322320
// Enable RSS only if hardware supports it and the user wants to use it
323321
if (m_Config.rssHashFunction == RSS_NONE)
324322
{
@@ -545,19 +543,19 @@ namespace pcpp
545543
else
546544
m_PMDType = PMD_UNKNOWN;
547545

548-
# if (RTE_VER_YEAR < 18) || (RTE_VER_YEAR == 18 && RTE_VER_MONTH < 5) // before 18.05
546+
#if (RTE_VER_YEAR < 18) || (RTE_VER_YEAR == 18 && RTE_VER_MONTH < 5) // before 18.05
549547
char pciName[30];
550-
# if (RTE_VER_YEAR > 17) || (RTE_VER_YEAR == 17 && RTE_VER_MONTH >= 11) // 17.11 - 18.02
548+
# if (RTE_VER_YEAR > 17) || (RTE_VER_YEAR == 17 && RTE_VER_MONTH >= 11) // 17.11 - 18.02
551549
rte_pci_device_name(&(portInfo.pci_dev->addr), pciName, 30);
552-
# else // 16.11 - 17.11
550+
# else // 16.11 - 17.11
553551
rte_eal_pci_device_name(&(portInfo.pci_dev->addr), pciName, 30);
554-
# endif
552+
# endif
555553
m_PciAddress = std::string(pciName);
556-
# elif (RTE_VER_YEAR < 22) || (RTE_VER_YEAR == 22 && RTE_VER_MONTH < 11) // before 22.11
554+
#elif (RTE_VER_YEAR < 22) || (RTE_VER_YEAR == 22 && RTE_VER_MONTH < 11) // before 22.11
557555
m_PciAddress = std::string(portInfo.device->name);
558-
# else // 22.11 forward
556+
#else // 22.11 forward
559557
m_PciAddress = std::string(rte_dev_name(portInfo.device));
560-
# endif
558+
#endif
561559

562560
PCPP_LOG_DEBUG("Device [" << m_DeviceName << "] has " << portInfo.max_rx_queues << " RX queues");
563561
PCPP_LOG_DEBUG("Device [" << m_DeviceName << "] has " << portInfo.max_tx_queues << " TX queues");
@@ -788,7 +786,7 @@ namespace pcpp
788786
return 0;
789787
}
790788

791-
# define nanosec_gap(begin, end) ((end.tv_sec - begin.tv_sec) * 1000000000.0 + (end.tv_nsec - begin.tv_nsec))
789+
#define nanosec_gap(begin, end) ((end.tv_sec - begin.tv_sec) * 1000000000.0 + (end.tv_nsec - begin.tv_nsec))
792790

793791
void DpdkDevice::getStatistics(DpdkDeviceStats& stats) const
794792
{
@@ -1066,7 +1064,7 @@ namespace pcpp
10661064
uint16_t packetsSent = 0;
10671065
int lastSleep = 0;
10681066

1069-
# define PACKET_TRANSMISSION_THRESHOLD 0.8
1067+
#define PACKET_TRANSMISSION_THRESHOLD 0.8
10701068
int packetTxThreshold = m_Config.transmitDescriptorsNumber * PACKET_TRANSMISSION_THRESHOLD;
10711069

10721070
while (packetIndex < arrLength)
@@ -1541,5 +1539,3 @@ namespace pcpp
15411539
} // namespace pcpp
15421540

15431541
// GCOVR_EXCL_STOP
1544-
1545-
#endif /* USE_DPDK */

0 commit comments

Comments
 (0)