DPDK patches and discussions
 help / color / mirror / Atom feed
From: Oleksandr Kolomeiets <okl-plv@napatech.com>
To: dev@dpdk.org
Cc: mko-plv@napatech.com, sil-plv@napatech.com, ckm@napatech.com,
	stephen@networkplumber.org, thomas@monjalon.net,
	Danylo Vodopianov <dvo-plv@napatech.com>
Subject: [PATCH v1 10/25] net/ntnic: remove unused code
Date: Wed, 30 Apr 2025 15:48:22 +0200	[thread overview]
Message-ID: <20250430134840.402553-11-okl-plv@napatech.com> (raw)
In-Reply-To: <20250430134840.402553-1-okl-plv@napatech.com>

From: Danylo Vodopianov <dvo-plv@napatech.com>

Remove unused CRC calculation and simplify AVR probe logging.
The condition is always false.

Signed-off-by: Danylo Vodopianov <dvo-plv@napatech.com>
---
 drivers/net/ntnic/nthw/core/nthw_fpga.c | 299 +-----------------------
 1 file changed, 11 insertions(+), 288 deletions(-)

diff --git a/drivers/net/ntnic/nthw/core/nthw_fpga.c b/drivers/net/ntnic/nthw/core/nthw_fpga.c
index 8831eeb4d3..485e912912 100644
--- a/drivers/net/ntnic/nthw/core/nthw_fpga.c
+++ b/drivers/net/ntnic/nthw/core/nthw_fpga.c
@@ -152,26 +152,6 @@ int nthw_fpga_silabs_detect(nthw_fpga_t *p_fpga, const int n_instance_no, const
 	return res;
 }
 
-/*
- * Calculate CRC-16-CCITT of passed data
- * CRC-16-CCITT ^16 + ^12 + ^5 + 1 (0x1021) (X.25, HDLC, XMODEM, Bluetooth,
- *   SD, many others; known as CRC-CCITT)
- */
-static uint16_t crc16(uint8_t *buffer, size_t length)
-{
-	uint16_t seed = 0;
-
-	while (length--) {
-		seed = (uint16_t)(seed >> 8 | seed << 8);
-		seed = (uint16_t)(seed ^ *buffer++);
-		seed = (uint16_t)(seed ^ (seed & 0xff) >> 4);
-		seed = (uint16_t)(seed ^ seed << 8 << 4);
-		seed = (uint16_t)(seed ^ (seed & 0xff) << 4 << 1);
-	}
-
-	return seed;
-}
-
 int nthw_fpga_avr_probe(nthw_fpga_t *p_fpga, const int n_instance_no)
 {
 	struct fpga_info_s *p_fpga_info = p_fpga->p_fpga_info;
@@ -314,150 +294,15 @@ int nthw_fpga_avr_probe(nthw_fpga_t *p_fpga, const int n_instance_no)
 		rx_buf.p_buf = &rx_data;
 		res = nthw_spi_v3_transfer(p_avr_spi, AVR_OP_SYSINFO_2, &tx_buf, &rx_buf);
 
-		if (res == 0 && avr_vpd_info.n_avr_spi_version >= 3 && rx_buf.size >= 16) {
-			if (rx_buf.size != 16) {
-				NT_LOG(WRN, NTHW,
-					"%s: AVR%d: SYSINFO2: reply is larger than expected: %04X %04X",
-					p_adapter_id_str, n_instance_no, rx_buf.size, 16);
-
-			} else {
-				NT_LOG(DBG, NTHW, "%s: AVR%d: SYSINFO2: OK: res=%d sz=%d",
-					p_adapter_id_str, n_instance_no, res, rx_buf.size);
-			}
-
-			avr_vpd_info.sysinfo_container_version = rx_data[0];
-			NT_LOG(DBG, NTHW, "%s: AVR%d: SYSINFO_REQ_VER: %d", p_adapter_id_str,
-				n_instance_no, avr_vpd_info.sysinfo_container_version);
-
-			memcpy(&avr_vpd_info.sysinfo_avr_libc_version, &rx_data[0 + 1],
-				sizeof(avr_vpd_info.sysinfo_avr_libc_version));
-			NT_LOG(DBG, NTHW, "%s: AVR%d: LIBC_VER: %d", p_adapter_id_str,
-				n_instance_no, avr_vpd_info.sysinfo_avr_libc_version);
-
-			avr_vpd_info.sysinfo_signature_0 = rx_data[5];
-			avr_vpd_info.sysinfo_signature_1 = rx_data[6];
-			avr_vpd_info.sysinfo_signature_2 = rx_data[7];
-			NT_LOG(DBG, NTHW, "%s: AVR%d: SIGNATURE: %02x%02x%02x", p_adapter_id_str,
-				n_instance_no, avr_vpd_info.sysinfo_signature_0,
-				avr_vpd_info.sysinfo_signature_1, avr_vpd_info.sysinfo_signature_2);
-
-			avr_vpd_info.sysinfo_spi_version = rx_data[8];
-			NT_LOG(DBG, NTHW, "%s: AVR%d: SPI_VER: %d", p_adapter_id_str,
-				n_instance_no, avr_vpd_info.sysinfo_spi_version);
-
-			avr_vpd_info.sysinfo_hw_revision = rx_data[9];
-			NT_LOG(DBG, NTHW, "%s: AVR%d: HW_REV: %d", p_adapter_id_str,
-				n_instance_no, avr_vpd_info.sysinfo_hw_revision);
-
-			avr_vpd_info.sysinfo_ticks_per_second = rx_data[10];
-			NT_LOG(DBG, NTHW, "%s: AVR%d: TICKS_PER_SEC: %d", p_adapter_id_str,
-				n_instance_no, avr_vpd_info.sysinfo_ticks_per_second);
-
-			memcpy(&avr_vpd_info.sysinfo_uptime, &rx_data[11],
-				sizeof(avr_vpd_info.sysinfo_uptime));
-			NT_LOG(DBG, NTHW, "%s: AVR%d: UPTIME: %d", p_adapter_id_str,
-				n_instance_no, avr_vpd_info.sysinfo_uptime);
-
-			avr_vpd_info.sysinfo_osccal = rx_data[15];
-			NT_LOG(DBG, NTHW, "%s: AVR%d: OSCCAL: %d", p_adapter_id_str,
-				n_instance_no, avr_vpd_info.sysinfo_osccal);
-
-			{
-				bool b_spi_ver_match = (avr_vpd_info.n_avr_spi_version ==
-						avr_vpd_info.sysinfo_spi_version);
-				(void)b_spi_ver_match;
-				NT_LOG(DBG, NTHW, "%s: AVR%d: SPI_VER_TST: %s (%d %d)",
-					p_adapter_id_str, n_instance_no,
-					(b_spi_ver_match ? "OK" : "MISMATCH"),
-					avr_vpd_info.n_avr_spi_version,
-					avr_vpd_info.sysinfo_spi_version);
-			}
-
-			/* SYSINFO2: if response: only populate hw_id not hw_id_emulated */
-			p_fpga_info->nthw_hw_info.hw_id = avr_vpd_info.sysinfo_hw_revision;
-
-		} else {
-			/* AVR_OP_SYSINFO */
-			tx_buf.size = 0;
-			tx_buf.p_buf = NULL;
-			rx_buf.size = sizeof(rx_data);
-			rx_buf.p_buf = &rx_data;
-			res = nthw_spi_v3_transfer(p_avr_spi, AVR_OP_SYSINFO, &tx_buf, &rx_buf);
-
-			if (res == 0 && avr_vpd_info.n_avr_spi_version >= 3 && rx_buf.size >= 16) {
-				if (rx_buf.size != 16) {
-					NT_LOG(WRN, NTHW,
-						"%s: AVR%d: SYSINFO: reply is larger than expected: %04X %04X",
-						p_adapter_id_str, n_instance_no, rx_buf.size, 16);
-
-				} else {
-					NT_LOG(DBG, NTHW, "%s: AVR%d: SYSINFO: OK: res=%d sz=%d",
-						p_adapter_id_str, n_instance_no, res, rx_buf.size);
-				}
-
-				avr_vpd_info.sysinfo_container_version = rx_data[0];
-				NT_LOG(DBG, NTHW, "%s: AVR%d: SYSINFO_REQ_VER: %d",
-					p_adapter_id_str, n_instance_no,
-					avr_vpd_info.sysinfo_container_version);
-
-				memcpy(&avr_vpd_info.sysinfo_avr_libc_version, &rx_data[0 + 1],
-					sizeof(avr_vpd_info.sysinfo_avr_libc_version));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: LIBC_VER: %d", p_adapter_id_str,
-					n_instance_no, avr_vpd_info.sysinfo_avr_libc_version);
-
-				avr_vpd_info.sysinfo_signature_0 = rx_data[5];
-				avr_vpd_info.sysinfo_signature_1 = rx_data[6];
-				avr_vpd_info.sysinfo_signature_2 = rx_data[7];
-				NT_LOG(DBG, NTHW, "%s: AVR%d: SIGNATURE: %02x%02x%02x",
-					p_adapter_id_str, n_instance_no,
-					avr_vpd_info.sysinfo_signature_0,
-					avr_vpd_info.sysinfo_signature_1,
-					avr_vpd_info.sysinfo_signature_2);
-
-				avr_vpd_info.sysinfo_spi_version = rx_data[8];
-				NT_LOG(DBG, NTHW, "%s: AVR%d: SPI_VER: %d", p_adapter_id_str,
-					n_instance_no, avr_vpd_info.sysinfo_spi_version);
-
-				avr_vpd_info.sysinfo_hw_revision = rx_data[9];
-				NT_LOG(DBG, NTHW, "%s: AVR%d: HW_REV: %d", p_adapter_id_str,
-					n_instance_no, avr_vpd_info.sysinfo_hw_revision);
-				NT_LOG(INF, NTHW, "%s: AVR%d: HW_REV: %d", p_adapter_id_str,
-					n_instance_no, avr_vpd_info.sysinfo_hw_revision);
-
-				avr_vpd_info.sysinfo_ticks_per_second = rx_data[10];
-				NT_LOG(DBG, NTHW, "%s: AVR%d: TICKS_PER_SEC: %d",
-					p_adapter_id_str, n_instance_no,
-					avr_vpd_info.sysinfo_ticks_per_second);
-
-				memcpy(&avr_vpd_info.sysinfo_uptime, &rx_data[11],
-					sizeof(avr_vpd_info.sysinfo_uptime));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: UPTIME: %d", p_adapter_id_str,
-					n_instance_no, avr_vpd_info.sysinfo_uptime);
-
-				avr_vpd_info.sysinfo_osccal = rx_data[15];
-				NT_LOG(DBG, NTHW, "%s: AVR%d: OSCCAL: %d", p_adapter_id_str,
-					n_instance_no, avr_vpd_info.sysinfo_osccal);
-
-				{
-					bool b_spi_ver_match = (avr_vpd_info.n_avr_spi_version ==
-							avr_vpd_info.sysinfo_spi_version);
-					(void)b_spi_ver_match;
-					NT_LOG(DBG, NTHW, "%s: AVR%d: SPI_VER_TST: %s (%d %d)",
-						p_adapter_id_str, n_instance_no,
-						(b_spi_ver_match ? "OK" : "MISMATCH"),
-						avr_vpd_info.n_avr_spi_version,
-						avr_vpd_info.sysinfo_spi_version);
-				}
-
-				p_fpga_info->nthw_hw_info.hw_id = avr_vpd_info.sysinfo_hw_revision;
-				p_fpga_info->nthw_hw_info.hw_id_emulated =
-					avr_vpd_info.sysinfo_hw_revision;
+		/* AVR_OP_SYSINFO */
+		tx_buf.size = 0;
+		tx_buf.p_buf = NULL;
+		rx_buf.size = sizeof(rx_data);
+		rx_buf.p_buf = &rx_data;
+		res = nthw_spi_v3_transfer(p_avr_spi, AVR_OP_SYSINFO, &tx_buf, &rx_buf);
 
-			} else {
-				NT_LOG(ERR, NTHW, "%s: AVR%d: SYSINFO: NA: res=%d sz=%d",
-					p_adapter_id_str, n_instance_no, res, rx_buf.size);
-			}
-		}
+		NT_LOG(ERR, NTHW, "%s: AVR%d: SYSINFO: NA: res=%d sz=%d",
+				p_adapter_id_str, n_instance_no, res, rx_buf.size);
 
 		/* AVR_OP_VPD_READ */
 		tx_buf.size = 0;
@@ -466,132 +311,10 @@ int nthw_fpga_avr_probe(nthw_fpga_t *p_fpga, const int n_instance_no)
 		rx_buf.p_buf = &rx_data;
 		res = nthw_spi_v3_transfer(p_avr_spi, AVR_OP_VPD_READ, &tx_buf, &rx_buf);
 
-		if (res == 0 && avr_vpd_info.n_avr_spi_version >= 3 &&
-			rx_buf.size >= GEN2_VPD_SIZE_TOTAL) {
-			avr_vpd_info.n_crc16_calced = crc16(rx_buf.p_buf, rx_buf.size - 2);
-			memcpy(&avr_vpd_info.n_crc16_stored, &rx_data[rx_buf.size - 2],
-				sizeof(avr_vpd_info.n_crc16_stored));
-			NT_LOG(DBG, NTHW, "%s: AVR%d: VPD_CRC: %04X %04X", p_adapter_id_str,
-				n_instance_no, avr_vpd_info.n_crc16_stored,
-				avr_vpd_info.n_crc16_calced);
-
-			avr_vpd_info.b_crc16_valid =
-				(avr_vpd_info.n_crc16_stored == avr_vpd_info.n_crc16_calced);
-			NT_LOG(DBG, NTHW, "%s: AVR%d: CRC_TST: %s", p_adapter_id_str,
-				n_instance_no, (avr_vpd_info.b_crc16_valid ? "OK" : "ERROR"));
-
-			if (avr_vpd_info.b_crc16_valid) {
-				memcpy(&avr_vpd_info.psu_hw_version, &rx_data[0],
-					sizeof(avr_vpd_info.psu_hw_version));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: PSU_HW_VER: %d", p_adapter_id_str,
-					n_instance_no, avr_vpd_info.psu_hw_version);
-
-				memcpy(&avr_vpd_info.vpd_pn, &rx_data[0 + 1],
-					sizeof(avr_vpd_info.vpd_pn));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: PN: '%.*s'", p_adapter_id_str,
-					n_instance_no, GEN2_PN_SIZE, avr_vpd_info.vpd_pn);
-
-				memcpy(&avr_vpd_info.vpd_pba, &rx_data[0 + 1 + GEN2_PN_SIZE],
-					sizeof(avr_vpd_info.vpd_pba));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: PBA: '%.*s'", p_adapter_id_str,
-					n_instance_no, GEN2_PBA_SIZE, avr_vpd_info.vpd_pba);
-
-				memcpy(&avr_vpd_info.vpd_sn,
-					&rx_data[0 + 1 + GEN2_PN_SIZE + GEN2_PBA_SIZE],
-					sizeof(avr_vpd_info.vpd_sn));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: SN: '%.*s", p_adapter_id_str,
-					n_instance_no, GEN2_SN_SIZE, avr_vpd_info.vpd_sn);
-
-				memcpy(&avr_vpd_info.vpd_board_name,
-					&rx_data[0 + 1 + GEN2_PN_SIZE + GEN2_PBA_SIZE +
-						GEN2_SN_SIZE],
-					sizeof(avr_vpd_info.vpd_board_name));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: BN: '%.*s'", p_adapter_id_str,
-					n_instance_no, GEN2_BNAME_SIZE,
-					avr_vpd_info.vpd_board_name);
-
-				union mac_u {
-					uint8_t a_u8[8];
-					uint16_t a_u16[4];
-					uint32_t a_u32[2];
-					uint64_t a_u64[1];
-				} mac;
-
-				/* vpd_platform_section */
-				uint8_t *p_vpd_board_info =
-					(uint8_t *)(&rx_data[1 + GEN2_PN_SIZE + GEN2_PBA_SIZE +
-					GEN2_SN_SIZE + GEN2_BNAME_SIZE]);
-				memcpy(&avr_vpd_info.product_family, &p_vpd_board_info[0],
-					sizeof(avr_vpd_info.product_family));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: PROD_FAM: %d", p_adapter_id_str,
-					n_instance_no, avr_vpd_info.product_family);
-
-				memcpy(&avr_vpd_info.feature_mask, &p_vpd_board_info[0 + 4],
-					sizeof(avr_vpd_info.feature_mask));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: FMSK_VAL: 0x%08X",
-					p_adapter_id_str, n_instance_no, avr_vpd_info.feature_mask);
-
-				memcpy(&avr_vpd_info.invfeature_mask, &p_vpd_board_info[0 + 4 + 4],
-					sizeof(avr_vpd_info.invfeature_mask));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: FMSK_INV: 0x%08X",
-					p_adapter_id_str, n_instance_no,
-					avr_vpd_info.invfeature_mask);
-
-				avr_vpd_info.b_feature_mask_valid =
-					(avr_vpd_info.feature_mask ==
-						~avr_vpd_info.invfeature_mask);
-				NT_LOG(DBG, NTHW, "%s: AVR%d: FMSK_TST: %s", p_adapter_id_str,
-					n_instance_no,
-					(avr_vpd_info.b_feature_mask_valid ? "OK" : "ERROR"));
-
-				memcpy(&avr_vpd_info.no_of_macs, &p_vpd_board_info[0 + 4 + 4 + 4],
-					sizeof(avr_vpd_info.no_of_macs));
-				NT_LOG(DBG, NTHW, "%s: AVR%d: NUM_MACS: %d", p_adapter_id_str,
-					n_instance_no, avr_vpd_info.no_of_macs);
-
-				memcpy(&avr_vpd_info.mac_address,
-					&p_vpd_board_info[0 + 4 + 4 + 4 + 1],
-					sizeof(avr_vpd_info.mac_address));
-				NT_LOG(DBG, NTHW,
-					"%s: AVR%d: MAC_ADDR: %02x:%02x:%02x:%02x:%02x:%02x",
-					p_adapter_id_str, n_instance_no,
-					avr_vpd_info.mac_address[0], avr_vpd_info.mac_address[1],
-					avr_vpd_info.mac_address[2], avr_vpd_info.mac_address[3],
-					avr_vpd_info.mac_address[4], avr_vpd_info.mac_address[5]);
-
-				mac.a_u64[0] = 0;
-				memcpy(&mac.a_u8[2], &avr_vpd_info.mac_address,
-					sizeof(avr_vpd_info.mac_address));
-				{
-					const uint32_t u1 = ntohl(mac.a_u32[0]);
-
-					if (u1 != mac.a_u32[0]) {
-						const uint32_t u0 = ntohl(mac.a_u32[1]);
-						mac.a_u32[0] = u0;
-						mac.a_u32[1] = u1;
-					}
-				}
-
-				avr_vpd_info.n_mac_val = mac.a_u64[0];
-				NT_LOG(DBG, NTHW, "%s: AVR%d: MAC_U64: %012" PRIX64 "",
-					p_adapter_id_str, n_instance_no, avr_vpd_info.n_mac_val);
-			}
-
-			p_fpga_info->nthw_hw_info.vpd_info.mn_mac_addr_count =
-				avr_vpd_info.no_of_macs;
-			p_fpga_info->nthw_hw_info.vpd_info.mn_mac_addr_value =
-				avr_vpd_info.n_mac_val;
-			memcpy(p_fpga_info->nthw_hw_info.vpd_info.ma_mac_addr_octets,
-				avr_vpd_info.mac_address,
-				ARRAY_SIZE(p_fpga_info->nthw_hw_info.vpd_info.ma_mac_addr_octets));
-
-		} else {
-			NT_LOG(ERR, NTHW, "%s:%u: res=%d", __func__, __LINE__, res);
-			NT_LOG(ERR, NTHW, "%s: AVR%d: SYSINFO2: NA: res=%d sz=%d",
-				p_adapter_id_str, n_instance_no, res, rx_buf.size);
-		}
+		NT_LOG(ERR, NTHW, "%s:%u: res=%d", __func__, __LINE__, res);
+		NT_LOG(ERR, NTHW, "%s: AVR%d: SYSINFO2: NA: res=%d sz=%d",
+			p_adapter_id_str, n_instance_no, res, rx_buf.size);
 	}
-
 	return res;
 }
 
-- 
2.47.1


  parent reply	other threads:[~2025-04-30 13:50 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-30 13:48 [PATCH v1 00/25] net/ntnic: fixes and improvements Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 01/25] net/ntnic: remove usage of the variable-length arrays Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 02/25] net/ntnic: handle string truncations when using strlcpy Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 03/25] net/ntnic: replace pragma pack with DPDK defined macros Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 04/25] net/ntnic: remove extra memset Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 05/25] net/ntnic: include all queues into statistics Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 06/25] net/ntnic: avoid misleading variable names Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 07/25] net/ntnic: apply packing to the structure Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 08/25] net/ntnic: improve logging format specifiers Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 09/25] net/ntnic: remove usless expressions Oleksandr Kolomeiets
2025-04-30 13:48 ` Oleksandr Kolomeiets [this message]
2025-04-30 13:48 ` [PATCH v1 11/25] net/ntnic: remove usless part of conditional expression Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 12/25] net/ntnic: add error logging for hsh Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 13/25] net/ntnic: add explicitly specificator Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 14/25] net/ntnic: add handle memory allocation failures Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 15/25] net/ntnic: remove redundant initialization Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 16/25] net/ntnic: enhance null checks and assertions Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 17/25] net/ntnic: add return value check Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 18/25] net/ntnic: remove redundant assignments and branching Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 19/25] net/ntnic: rework array usage Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 20/25] net/ntnic: avoid divide by zero Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 21/25] net/ntnic: remove unnecessary void cast Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 22/25] net/ntnic: remove unnecessary memset Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 23/25] net/ntnic: add null verification Oleksandr Kolomeiets
2025-04-30 13:48 ` [PATCH v1 24/25] net/ntnic: avoid possible deadlock Oleksandr Kolomeiets
2025-04-30 14:05   ` Stephen Hemminger
2025-04-30 13:48 ` [PATCH v1 25/25] net/ntnic: fix operation with rte ring queue Oleksandr Kolomeiets

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250430134840.402553-11-okl-plv@napatech.com \
    --to=okl-plv@napatech.com \
    --cc=ckm@napatech.com \
    --cc=dev@dpdk.org \
    --cc=dvo-plv@napatech.com \
    --cc=mko-plv@napatech.com \
    --cc=sil-plv@napatech.com \
    --cc=stephen@networkplumber.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).