summaryrefslogtreecommitdiff
path: root/support/dpdk
diff options
context:
space:
mode:
authorsongyanchao <[email protected]>2024-07-05 02:18:18 +0000
committersongyanchao <[email protected]>2024-07-05 02:18:18 +0000
commit3417adb5836d703c49b38adbed695ca0aa276159 (patch)
tree939524a4482c72c1ad5787c47753d791cce3aa0a /support/dpdk
parentd097519337436971dcd73ecf51d5c12a6b0fcd75 (diff)
✨ feat(DPISDN-51): Add support for offset argument in mrpdump.
Add support for offset argument in mrpdump.
Diffstat (limited to 'support/dpdk')
-rw-r--r--support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-app.patch11
-rw-r--r--support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-c.patch208
-rw-r--r--support/dpdk/dpdk-21.11.4-dpdk-pdum-offset-h.patch18
3 files changed, 237 insertions, 0 deletions
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);