From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
Srikanth Yalavarthi <syalavarthi@marvell.com>
Subject: [PATCH v2 57/68] ml/cnxk: use memcpy for fixed size data
Date: Fri, 21 Aug 2026 12:24:52 -0700 [thread overview]
Message-ID: <20260821192646.146382-58-stephen@networkplumber.org> (raw)
In-Reply-To: <20260821192646.146382-1-stephen@networkplumber.org>
The regular libc memcpy is inline for fix sizes and has
better analysis coverage.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/ml/cnxk/cn10k_ml_model.c | 8 +++++---
drivers/ml/cnxk/cn10k_ml_ops.c | 8 +++++---
drivers/ml/cnxk/tvmrt_ml_model.c | 9 +++++----
drivers/ml/cnxk/tvmrt_ml_ops.c | 6 +++---
4 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/drivers/ml/cnxk/cn10k_ml_model.c b/drivers/ml/cnxk/cn10k_ml_model.c
index 58eebbf076..03817384dd 100644
--- a/drivers/ml/cnxk/cn10k_ml_model.c
+++ b/drivers/ml/cnxk/cn10k_ml_model.c
@@ -565,7 +565,7 @@ cn10k_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
/* Set model info */
memset(info, 0, sizeof(struct rte_ml_model_info));
- rte_memcpy(info->name, metadata->model.name, MRVL_ML_MODEL_NAME_LEN);
+ memcpy(info->name, metadata->model.name, MRVL_ML_MODEL_NAME_LEN);
snprintf(info->version, RTE_ML_STR_MAX, "%u.%u.%u.%u", metadata->model.version[0],
metadata->model.version[1], metadata->model.version[2],
metadata->model.version[3]);
@@ -584,7 +584,8 @@ cn10k_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
/* Set input info */
for (i = 0; i < info->nb_inputs; i++) {
- rte_memcpy(input[i].name, io_info->input[i].name, MRVL_ML_INPUT_NAME_LEN);
+ memcpy(input[i].name, io_info->input[i].name,
+ MRVL_ML_INPUT_NAME_LEN);
input[i].nb_dims = io_info->input[i].nb_dims;
input[i].shape = &io_info->input[i].shape[0];
input[i].type = io_info->input[i].qtype;
@@ -597,7 +598,8 @@ cn10k_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
/* Set output info */
for (i = 0; i < info->nb_outputs; i++) {
- rte_memcpy(output[i].name, io_info->output[i].name, MRVL_ML_INPUT_NAME_LEN);
+ memcpy(output[i].name, io_info->output[i].name,
+ MRVL_ML_INPUT_NAME_LEN);
output[i].nb_dims = io_info->output[i].nb_dims;
output[i].shape = &io_info->output[i].shape[0];
output[i].type = io_info->output[i].qtype;
diff --git a/drivers/ml/cnxk/cn10k_ml_ops.c b/drivers/ml/cnxk/cn10k_ml_ops.c
index ffe3356720..07b767eded 100644
--- a/drivers/ml/cnxk/cn10k_ml_ops.c
+++ b/drivers/ml/cnxk/cn10k_ml_ops.c
@@ -669,7 +669,8 @@ cn10k_ml_layer_load(void *device, uint16_t model_id, const char *layer_name, uin
}
/* Copy metadata to internal buffer */
- rte_memcpy(&layer->glow.metadata, buffer, sizeof(struct cn10k_ml_model_metadata));
+ memcpy(&layer->glow.metadata, buffer,
+ sizeof(struct cn10k_ml_model_metadata));
cn10k_ml_model_metadata_update(&layer->glow.metadata);
/* Enable support for batch_size of 256 */
@@ -746,11 +747,12 @@ cn10k_ml_model_load(struct cnxk_ml_dev *cnxk_mldev, struct rte_ml_model_params *
model->subtype = ML_CNXK_MODEL_SUBTYPE_GLOW_MRVL;
/* Copy metadata to internal buffer */
- rte_memcpy(&model->glow.metadata, params->addr, sizeof(struct cn10k_ml_model_metadata));
+ memcpy(&model->glow.metadata, params->addr,
+ sizeof(struct cn10k_ml_model_metadata));
cn10k_ml_model_metadata_update(&model->glow.metadata);
/* Set model name */
- rte_memcpy(model->name, (char *)model->glow.metadata.model.name, 64);
+ memcpy(model->name, (char *)model->glow.metadata.model.name, 64);
/* Enable support for batch_size of 256 */
if (model->glow.metadata.model.batch_size == 0)
diff --git a/drivers/ml/cnxk/tvmrt_ml_model.c b/drivers/ml/cnxk/tvmrt_ml_model.c
index 319c53a05b..f0bc616148 100644
--- a/drivers/ml/cnxk/tvmrt_ml_model.c
+++ b/drivers/ml/cnxk/tvmrt_ml_model.c
@@ -848,7 +848,7 @@ tvmrt_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
if (model->subtype == ML_CNXK_MODEL_SUBTYPE_TVM_MRVL)
goto tvm_mrvl_model;
- rte_memcpy(info->name, model->name, RTE_ML_STR_MAX);
+ memcpy(info->name, model->name, RTE_ML_STR_MAX);
snprintf(info->version, RTE_ML_STR_MAX, "%u.%u.%u.%u", 0, 0, 0, 0);
info->model_id = model->model_id;
info->device_id = cnxk_mldev->mldev->data->dev_id;
@@ -863,7 +863,8 @@ tvmrt_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
/* Set input info */
for (i = 0; i < info->nb_inputs; i++) {
- rte_memcpy(input[i].name, model->tvmrt.info.input[i].name, MRVL_ML_INPUT_NAME_LEN);
+ memcpy(input[i].name, model->tvmrt.info.input[i].name,
+ MRVL_ML_INPUT_NAME_LEN);
input[i].nb_dims = model->tvmrt.info.input[i].nb_dims;
input[i].shape = &model->tvmrt.info.input[i].shape[0];
input[i].type = model->tvmrt.info.input[i].qtype;
@@ -876,8 +877,8 @@ tvmrt_ml_model_info_set(struct cnxk_ml_dev *cnxk_mldev, struct cnxk_ml_model *mo
/* Set output info */
for (i = 0; i < info->nb_outputs; i++) {
- rte_memcpy(output[i].name, model->tvmrt.info.output[i].name,
- MRVL_ML_OUTPUT_NAME_LEN);
+ memcpy(output[i].name, model->tvmrt.info.output[i].name,
+ MRVL_ML_OUTPUT_NAME_LEN);
output[i].nb_dims = model->tvmrt.info.output[i].nb_dims;
output[i].shape = &model->tvmrt.info.output[i].shape[0];
output[i].type = model->tvmrt.info.output[i].qtype;
diff --git a/drivers/ml/cnxk/tvmrt_ml_ops.c b/drivers/ml/cnxk/tvmrt_ml_ops.c
index 01493077bb..b00cec3bcc 100644
--- a/drivers/ml/cnxk/tvmrt_ml_ops.c
+++ b/drivers/ml/cnxk/tvmrt_ml_ops.c
@@ -230,7 +230,7 @@ tvmrt_ml_model_load(struct cnxk_ml_dev *cnxk_mldev, struct rte_ml_model_params *
/* Copy mod.so */
model->tvmrt.so.buffer = mz->addr;
model->tvmrt.so.size = object[0].size;
- rte_memcpy(model->tvmrt.so.name, object[0].name, RTE_ML_STR_MAX);
+ memcpy(model->tvmrt.so.name, object[0].name, RTE_ML_STR_MAX);
rte_memcpy(model->tvmrt.so.buffer, object[0].buffer, object[0].size);
rte_free(object[0].buffer);
@@ -239,7 +239,7 @@ tvmrt_ml_model_load(struct cnxk_ml_dev *cnxk_mldev, struct rte_ml_model_params *
RTE_PTR_ADD(model->tvmrt.so.buffer,
RTE_ALIGN_CEIL(model->tvmrt.so.size, RTE_CACHE_LINE_MIN_SIZE));
model->tvmrt.json.size = object[1].size;
- rte_memcpy(model->tvmrt.json.name, object[1].name, RTE_ML_STR_MAX);
+ memcpy(model->tvmrt.json.name, object[1].name, RTE_ML_STR_MAX);
rte_memcpy(model->tvmrt.json.buffer, object[1].buffer, object[1].size);
rte_free(object[1].buffer);
@@ -248,7 +248,7 @@ tvmrt_ml_model_load(struct cnxk_ml_dev *cnxk_mldev, struct rte_ml_model_params *
RTE_PTR_ADD(model->tvmrt.json.buffer,
RTE_ALIGN_CEIL(model->tvmrt.json.size, RTE_CACHE_LINE_MIN_SIZE));
model->tvmrt.params.size = object[2].size;
- rte_memcpy(model->tvmrt.params.name, object[2].name, RTE_ML_STR_MAX);
+ memcpy(model->tvmrt.params.name, object[2].name, RTE_ML_STR_MAX);
rte_memcpy(model->tvmrt.params.buffer, object[2].buffer, object[2].size);
rte_free(object[2].buffer);
--
2.53.0
next prev parent reply other threads:[~2026-08-21 19:32 UTC|newest]
Thread overview: 146+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-20 5:11 [PATCH 00/61] reduce use of rte_memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 01/61] devtools/cocci: add script to replace fixed size rte_memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 02/61] app/testpmd: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 03/61] test: use memcpy instead of rte_memcpy Stephen Hemminger
2026-08-20 6:22 ` Morten Brørup
2026-08-20 16:22 ` Stephen Hemminger
2026-08-21 6:37 ` Morten Brørup
2026-08-20 5:11 ` [PATCH 04/61] app/graph: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 05/61] lpm: remove unnecessary include of rte_memcpy.h Stephen Hemminger
2026-08-20 5:11 ` [PATCH 06/61] acl: " Stephen Hemminger
2026-08-20 5:11 ` [PATCH 07/61] drivers/bus: " Stephen Hemminger
2026-08-20 5:11 ` [PATCH 08/61] security: replace fixed size rte_memcpy Stephen Hemminger
2026-08-20 5:11 ` [PATCH 09/61] ethdev: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 10/61] net: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 11/61] pdcp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 12/61] eventdev: replace fixed size rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 13/61] eal: replace rte_memcpy of cpuset Stephen Hemminger
2026-08-20 5:12 ` [PATCH 14/61] cryptodev: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 15/61] drivers/raw: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 16/61] test-pipeline: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 17/61] net/af_xdp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 18/61] net/avp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 19/61] net/axgbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 20/61] net/bnx2x: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 21/61] net/bnxt: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 22/61] net/bonding: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 23/61] net/cnxk: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 24/61] net/cxgbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 25/61] net/dpaa2: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 26/61] net/enic: " Stephen Hemminger
2026-08-20 9:05 ` Hyong Youb Kim (hyonkim)
2026-08-20 5:12 ` [PATCH 27/61] net/failsafe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 28/61] net/gve: " Stephen Hemminger
2026-08-20 20:42 ` Joshua Washington
2026-08-20 5:12 ` [PATCH 29/61] net/hinic: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 30/61] net/hns3: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 31/61] net/mlx5: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 32/61] net/mvpp2: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 33/61] net/netvsc: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 34/61] net/nfp: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 35/61] net/ngbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 36/61] net/ntnic: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 37/61] net/null: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 38/61] net/qede: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 39/61] net/ring: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 40/61] net/sfc: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 41/61] net/txgbe: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 42/61] net/vhost: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 43/61] net/virtio: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 44/61] net/sxe2: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 45/61] net/zxdh: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 46/61] net/memif: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 47/61] net/ice: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 48/61] test-bbdev: remove unnecessary include rte_memcpy.h Stephen Hemminger
2026-08-20 5:12 ` [PATCH 49/61] drivers/mempool: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 50/61] ml/cnxk: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 51/61] drivers/event: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 52/61] baseband/la12xx: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 53/61] baseband/acc: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 54/61] drivers/*/qat: use memcpy for fixed size data Stephen Hemminger
2026-08-20 5:12 ` [PATCH 55/61] hash: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 56/61] rib: remove rte_memcpy include Stephen Hemminger
2026-08-20 5:12 ` [PATCH 57/61] pcapng: replace use of rte_memcpy Stephen Hemminger
2026-08-20 5:12 ` [PATCH 58/61] efd: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 59/61] net/xsc: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 60/61] net/pcap: " Stephen Hemminger
2026-08-20 5:12 ` [PATCH 61/61] power: " Stephen Hemminger
2026-08-20 7:31 ` [PATCH 00/61] reduce " Morten Brørup
2026-08-20 8:16 ` Bruce Richardson
2026-08-20 8:46 ` Konstantin Ananyev
2026-08-20 9:03 ` Morten Brørup
2026-08-20 13:07 ` Konstantin Ananyev
2026-08-20 14:00 ` Morten Brørup
2026-08-20 20:13 ` Stephen Hemminger
2026-08-20 20:16 ` Stephen Hemminger
2026-08-20 20:18 ` Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 00/68] " Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 01/68] devtools/cocci: add script to replace fixed size rte_memcpy Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 02/68] lib: add missing include of rte_memcpy.h Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 03/68] net: " Stephen Hemminger
2026-08-21 19:23 ` [PATCH v2 04/68] crypto: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 05/68] drivers: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 06/68] app: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 07/68] examples: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 08/68] eal: document when to use rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 09/68] app/testpmd: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 10/68] test: use memcpy instead of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 11/68] app/graph: replace rte_memcpy with memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 12/68] lpm: remove unnecessary include of rte_memcpy.h Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 13/68] acl: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 14/68] drivers/bus: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 15/68] security: replace fixed size rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 16/68] ethdev: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 17/68] net: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 18/68] pdcp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 19/68] eventdev: replace fixed size rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 20/68] eal: replace rte_memcpy of cpuset Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 21/68] cryptodev: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 22/68] drivers/raw: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 23/68] test-pipeline: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 24/68] net/af_xdp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 25/68] net/avp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 26/68] net/axgbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 27/68] net/bnx2x: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 28/68] net/bnxt: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 29/68] net/bonding: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 30/68] net/cnxk: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 31/68] net/cxgbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 32/68] net/dpaa2: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 33/68] net/enic: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 34/68] net/failsafe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 35/68] net/gve: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 36/68] net/hinic: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 37/68] net/hns3: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 38/68] net/mlx5: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 39/68] net/mvpp2: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 40/68] net/netvsc: " Stephen Hemminger
2026-08-21 20:08 ` [EXTERNAL] " Long Li
2026-08-21 19:24 ` [PATCH v2 41/68] net/nfp: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 42/68] net/ngbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 43/68] net/ntnic: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 44/68] net/null: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 45/68] net/qede: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 46/68] net/ring: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 47/68] net/sfc: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 48/68] net/txgbe: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 49/68] net/vhost: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 50/68] net/virtio: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 51/68] net/sxe2: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 52/68] net/zxdh: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 53/68] net/memif: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 54/68] net/ice: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 55/68] test-bbdev: remove unnecessary include rte_memcpy.h Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 56/68] drivers/mempool: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` Stephen Hemminger [this message]
2026-08-21 19:24 ` [PATCH v2 58/68] drivers/event: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 59/68] baseband/la12xx: " Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 60/68] baseband/acc: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 61/68] drivers/*/qat: use memcpy for fixed size data Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 62/68] hash: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 63/68] rib: remove rte_memcpy include Stephen Hemminger
2026-08-21 19:24 ` [PATCH v2 64/68] pcapng: replace use of rte_memcpy Stephen Hemminger
2026-08-21 19:25 ` [PATCH v2 65/68] efd: " Stephen Hemminger
2026-08-21 19:25 ` [PATCH v2 66/68] net/xsc: " Stephen Hemminger
2026-08-21 19:25 ` [PATCH v2 67/68] net/pcap: " Stephen Hemminger
2026-08-21 19:25 ` [PATCH v2 68/68] power: " Stephen Hemminger
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=20260821192646.146382-58-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=syalavarthi@marvell.com \
/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