diff options
| author | songyanchao <[email protected]> | 2024-07-05 02:18:18 +0000 |
|---|---|---|
| committer | songyanchao <[email protected]> | 2024-07-05 02:18:18 +0000 |
| commit | 3417adb5836d703c49b38adbed695ca0aa276159 (patch) | |
| tree | 939524a4482c72c1ad5787c47753d791cce3aa0a /support | |
| parent | d097519337436971dcd73ecf51d5c12a6b0fcd75 (diff) | |
✨ feat(DPISDN-51): Add support for offset argument in mrpdump.
Add support for offset argument in mrpdump.
Diffstat (limited to 'support')
| -rw-r--r-- | support/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-app.patch | 11 | ||||
| -rw-r--r-- | support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-c.patch | 208 | ||||
| -rw-r--r-- | support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-h.patch | 18 |
4 files changed, 240 insertions, 0 deletions
diff --git a/support/CMakeLists.txt b/support/CMakeLists.txt index 47d39bd..1dcd29a 100644 --- a/support/CMakeLists.txt +++ b/support/CMakeLists.txt @@ -104,6 +104,9 @@ set(DPDP_PATCH_FILES ${DPDK_PATCH_DIR}/dpdk-21.11.4-memzone-namesize.patch ${DPDK_PATCH_DIR}/dpdk-21.11.4-dpdk-hugepages-path.patch ${DPDK_PATCH_DIR}/dpdk-21.11.4-dpdk-pcapng-path.patch ${DPDK_PATCH_DIR}/dpdk-21.11.4-extend-max-virtqueue-pairs.patch + ${DPDK_PATCH_DIR}/dpdk-21.11.4-dpdk-pdum-offset-c.patch + ${DPDK_PATCH_DIR}/dpdk-21.11.4-dpdk-pdum-offset-h.patch + ${DPDK_PATCH_DIR}/dpdk-21.11.4-dpdk-pdum-offset-app.patch ${DPDK_PATCH_DIR}/dpdk-21.11.4-macro-adjust.patch ) execute_process(COMMAND cat ${DPDP_PATCH_FILES} OUTPUT_FILE ${MERGED_PATCH_FILE}) diff --git a/support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-app.patch b/support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-app.patch new file mode 100644 index 0000000..d115246 --- /dev/null +++ b/support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-app.patch @@ -0,0 +1,11 @@ +--- dpdk-stable-21.11.4/app/dumpcap/main.c 2023-05-17 07:27:18.000000000 -0400 ++++ dpdk-stable-21.11.4-mr4/app/dumpcap/main.c 2024-07-04 06:40:31.827021420 -0400 +@@ -690,7 +690,7 @@ static void enable_pdump(struct rte_ring + } + + ret = rte_pdump_enable_bpf(intf->port, RTE_PDUMP_ALL_QUEUES, +- flags, snaplen, ++ flags, snaplen, 0, + r, mp, bpf_prm); + if (ret < 0) + rte_exit(EXIT_FAILURE, diff --git a/support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-c.patch b/support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-c.patch new file mode 100644 index 0000000..8d9dc9f --- /dev/null +++ b/support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-c.patch @@ -0,0 +1,208 @@ +--- dpdk-stable-21.11.4/lib/pdump/rte_pdump.c 2023-05-17 07:27:18.000000000 -0400 ++++ dpdk-stable-21.11.4-mr4/lib/pdump/rte_pdump.c 2024-07-04 06:26:13.010421593 -0400 +@@ -46,6 +46,7 @@ struct pdump_request { + + const struct rte_bpf_prm *prm; + uint32_t snaplen; ++ uint32_t offset; + }; + + struct pdump_response { +@@ -61,6 +62,7 @@ static struct pdump_rxtx_cbs { + const struct rte_bpf *filter; + enum pdump_version ver; + uint32_t snaplen; ++ uint32_t offset; + } rx_cbs[RTE_MAX_ETHPORTS][RTE_MAX_QUEUES_PER_PORT], + tx_cbs[RTE_MAX_ETHPORTS][RTE_MAX_QUEUES_PER_PORT]; + +@@ -96,7 +98,25 @@ pdump_copy(uint16_t port_id, uint16_t qu + uint64_t rcs[nb_pkts]; + + if (cbs->filter) +- rte_bpf_exec_burst(cbs->filter, (void **)pkts, rcs, nb_pkts); ++ { ++ if (cbs->offset>0) ++ { ++ for (i = 0; i < nb_pkts; i++){ ++ rte_pktmbuf_adj(pkts[i], cbs->offset); ++ } ++ ++ rte_bpf_exec_burst(cbs->filter, (void **)pkts, rcs, nb_pkts); ++ ++ for (i = 0; i < nb_pkts; i++){ ++ rte_pktmbuf_prepend(pkts[i], cbs->offset); ++ } ++ } ++ else ++ { ++ rte_bpf_exec_burst(cbs->filter, (void **)pkts, rcs, nb_pkts); ++ } ++ } ++ + + ts = rte_get_tsc_cycles(); + ring = cbs->ring; +@@ -172,7 +192,7 @@ pdump_register_rx_callbacks(enum pdump_v + uint16_t end_q, uint16_t port, uint16_t queue, + struct rte_ring *ring, struct rte_mempool *mp, + struct rte_bpf *filter, +- uint16_t operation, uint32_t snaplen) ++ uint16_t operation, uint32_t snaplen,uint32_t offset) + { + uint16_t qid; + +@@ -192,6 +212,7 @@ pdump_register_rx_callbacks(enum pdump_v + cbs->mp = mp; + cbs->snaplen = snaplen; + cbs->filter = filter; ++ cbs->offset = offset; + + cbs->cb = rte_eth_add_first_rx_callback(port, qid, + pdump_rx, cbs); +@@ -229,7 +250,7 @@ pdump_register_tx_callbacks(enum pdump_v + uint16_t end_q, uint16_t port, uint16_t queue, + struct rte_ring *ring, struct rte_mempool *mp, + struct rte_bpf *filter, +- uint16_t operation, uint32_t snaplen) ++ uint16_t operation, uint32_t snaplen, uint32_t offset) + { + + uint16_t qid; +@@ -250,6 +271,7 @@ pdump_register_tx_callbacks(enum pdump_v + cbs->mp = mp; + cbs->snaplen = snaplen; + cbs->filter = filter; ++ cbs->offset = offset; + + cbs->cb = rte_eth_add_tx_callback(port, qid, pdump_tx, + cbs); +@@ -368,7 +390,7 @@ set_pdump_rxtx_cbs(const struct pdump_re + end_q = (queue == RTE_PDUMP_ALL_QUEUES) ? nb_rx_q : queue + 1; + ret = pdump_register_rx_callbacks(p->ver, end_q, port, queue, + ring, mp, filter, +- operation, p->snaplen); ++ operation, p->snaplen,p->offset); + if (ret < 0) + return ret; + } +@@ -378,7 +400,7 @@ set_pdump_rxtx_cbs(const struct pdump_re + end_q = (queue == RTE_PDUMP_ALL_QUEUES) ? nb_tx_q : queue + 1; + ret = pdump_register_tx_callbacks(p->ver, end_q, port, queue, + ring, mp, filter, +- operation, p->snaplen); ++ operation, p->snaplen, p->offset); + if (ret < 0) + return ret; + } +@@ -524,6 +546,7 @@ pdump_validate_port(uint16_t port, char + static int + pdump_prepare_client_request(const char *device, uint16_t queue, + uint32_t flags, uint32_t snaplen, ++ uint32_t offset, + uint16_t operation, + struct rte_ring *ring, + struct rte_mempool *mp, +@@ -555,6 +578,7 @@ pdump_prepare_client_request(const char + req->mp = mp; + req->prm = prm; + req->snaplen = snaplen; ++ req->offset = offset; + } + + rte_strscpy(mp_req.name, PDUMP_MP, RTE_MP_MAX_NAME_LEN); +@@ -583,7 +607,7 @@ pdump_prepare_client_request(const char + */ + static int + pdump_enable(uint16_t port, uint16_t queue, +- uint32_t flags, uint32_t snaplen, ++ uint32_t flags, uint32_t snaplen,uint32_t offset, + struct rte_ring *ring, struct rte_mempool *mp, + const struct rte_bpf_prm *prm) + { +@@ -603,7 +627,7 @@ pdump_enable(uint16_t port, uint16_t que + if (snaplen == 0) + snaplen = UINT32_MAX; + +- return pdump_prepare_client_request(name, queue, flags, snaplen, ++ return pdump_prepare_client_request(name, queue, flags, snaplen,offset, + ENABLE, ring, mp, prm); + } + +@@ -613,23 +637,24 @@ rte_pdump_enable(uint16_t port, uint16_t + struct rte_mempool *mp, + void *filter __rte_unused) + { +- return pdump_enable(port, queue, flags, 0, ++ return pdump_enable(port, queue, flags, 0,0, + ring, mp, NULL); + } + + int + rte_pdump_enable_bpf(uint16_t port, uint16_t queue, + uint32_t flags, uint32_t snaplen, ++ uint32_t offset, + struct rte_ring *ring, + struct rte_mempool *mp, + const struct rte_bpf_prm *prm) + { +- return pdump_enable(port, queue, flags, snaplen, ++ return pdump_enable(port, queue, flags, snaplen,offset, + ring, mp, prm); + } + + static int +-pdump_enable_by_deviceid(const char *device_id, uint16_t queue, ++pdump_enable_by_deviceid(const char *device_id, uint16_t queue, uint32_t offset, + uint32_t flags, uint32_t snaplen, + struct rte_ring *ring, + struct rte_mempool *mp, +@@ -647,7 +672,7 @@ pdump_enable_by_deviceid(const char *dev + if (snaplen == 0) + snaplen = UINT32_MAX; + +- return pdump_prepare_client_request(device_id, queue, flags, snaplen, ++ return pdump_prepare_client_request(device_id, queue, flags, snaplen,offset, + ENABLE, ring, mp, prm); + } + +@@ -658,18 +683,19 @@ rte_pdump_enable_by_deviceid(char *devic + struct rte_mempool *mp, + void *filter __rte_unused) + { +- return pdump_enable_by_deviceid(device_id, queue, flags, 0, ++ return pdump_enable_by_deviceid(device_id, queue, flags, 0, 0, + ring, mp, NULL); + } + + int + rte_pdump_enable_bpf_by_deviceid(const char *device_id, uint16_t queue, + uint32_t flags, uint32_t snaplen, ++ uint32_t offset, + struct rte_ring *ring, + struct rte_mempool *mp, + const struct rte_bpf_prm *prm) + { +- return pdump_enable_by_deviceid(device_id, queue, flags, snaplen, ++ return pdump_enable_by_deviceid(device_id, queue, flags, snaplen, offset, + ring, mp, prm); + } + +@@ -686,7 +712,7 @@ rte_pdump_disable(uint16_t port, uint16_ + if (ret < 0) + return ret; + +- ret = pdump_prepare_client_request(name, queue, flags, 0, ++ ret = pdump_prepare_client_request(name, queue, flags, 0, 0, + DISABLE, NULL, NULL, NULL); + + return ret; +@@ -702,7 +728,7 @@ rte_pdump_disable_by_deviceid(char *devi + if (ret < 0) + return ret; + +- ret = pdump_prepare_client_request(device_id, queue, flags, 0, ++ ret = pdump_prepare_client_request(device_id, queue, flags, 0, 0, + DISABLE, NULL, NULL, NULL); + + return ret; diff --git a/support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-h.patch b/support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-h.patch new file mode 100644 index 0000000..ad426cd --- /dev/null +++ b/support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-h.patch @@ -0,0 +1,18 @@ +--- dpdk-stable-21.11.4/lib/pdump/rte_pdump.h 2023-05-17 07:27:18.000000000 -0400 ++++ dpdk-stable-21.11.4-mr4/lib/pdump/rte_pdump.h 2024-07-04 06:26:16.303397053 -0400 +@@ -114,6 +114,7 @@ __rte_experimental + int + rte_pdump_enable_bpf(uint16_t port_id, uint16_t queue, + uint32_t flags, uint32_t snaplen, ++ uint32_t offset, + struct rte_ring *ring, + struct rte_mempool *mp, + const struct rte_bpf_prm *prm); +@@ -201,6 +202,7 @@ __rte_experimental + int + rte_pdump_enable_bpf_by_deviceid(const char *device_id, uint16_t queue, + uint32_t flags, uint32_t snaplen, ++ uint32_t offset, + struct rte_ring *ring, + struct rte_mempool *mp, + const struct rte_bpf_prm *filter); |
