From: Bruce Richardson <bruce.richardson@intel.com>
To: dev@dpdk.org
Cc: Bruce Richardson <bruce.richardson@intel.com>
Subject: [PATCH 3/5] net/ice: add option to choose DDP package file
Date: Wed, 9 Oct 2024 18:08:20 +0100 [thread overview]
Message-ID: <20241009170822.344716-4-bruce.richardson@intel.com> (raw)
In-Reply-To: <20241009170822.344716-1-bruce.richardson@intel.com>
The "Dynamic Device Personalization" package is loaded at initialization
time by the driver, but the specific package file loaded depends upon
what package file is found first by searching through a hard-coded list
of firmware paths. To enable greater control over the package loading,
we can add a device option to choose a specific DDP package file to
load.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
doc/guides/nics/ice.rst | 9 +++++++++
drivers/net/ice/ice_ethdev.c | 35 +++++++++++++++++++++++++++++++++++
drivers/net/ice/ice_ethdev.h | 1 +
3 files changed, 45 insertions(+)
diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst
index 986abb211f..13f4fa1772 100644
--- a/doc/guides/nics/ice.rst
+++ b/doc/guides/nics/ice.rst
@@ -136,6 +136,15 @@ Runtime Configuration
-a 80:00.0,default-mac-disable=1
+- ``DDP Package File``
+
+ Rather than have the driver search for the DDP package to load,
+ or to override what package is used,
+ the ``ddp_pkg_file`` option can be used to provide the path to a specific package file.
+ For example::
+
+ -a 80:00.0,ddp_pkg_file=/path/to/ice-version.pkg
+
- ``Protocol extraction for per queue``
Configure the RX queues to do protocol extraction into mbuf for protocol
diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 61bff016be..db44f5c4fc 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -37,6 +37,7 @@
#define ICE_ONE_PPS_OUT_ARG "pps_out"
#define ICE_RX_LOW_LATENCY_ARG "rx_low_latency"
#define ICE_MBUF_CHECK_ARG "mbuf_check"
+#define ICE_DDP_FILENAME "ddp_pkg_file"
#define ICE_CYCLECOUNTER_MASK 0xffffffffffffffffULL
@@ -53,6 +54,7 @@ static const char * const ice_valid_args[] = {
ICE_RX_LOW_LATENCY_ARG,
ICE_DEFAULT_MAC_DISABLE,
ICE_MBUF_CHECK_ARG,
+ ICE_DDP_FILENAME,
NULL
};
@@ -693,6 +695,18 @@ handle_field_name_arg(__rte_unused const char *key, const char *value,
return 0;
}
+static int
+handle_ddp_filename_arg(__rte_unused const char *key, const char *value, void *name_args)
+{
+ const char **filename = name_args;
+ if (strlen(value) >= ICE_MAX_PKG_FILENAME_SIZE) {
+ PMD_DRV_LOG(ERR, "The DDP package filename is too long : '%s'", value);
+ return -1;
+ }
+ *filename = strdup(value);
+ return 0;
+}
+
static void
ice_check_proto_xtr_support(struct ice_hw *hw)
{
@@ -1909,6 +1923,17 @@ int ice_load_pkg(struct ice_adapter *adapter, bool use_dsn, uint64_t dsn)
size_t bufsz;
int err;
+ /* first read any explicitly referenced DDP file*/
+ if (adapter->devargs.ddp_filename != NULL) {
+ strlcpy(pkg_file, adapter->devargs.ddp_filename, sizeof(pkg_file));
+ if (rte_firmware_read(pkg_file, &buf, &bufsz) == 0) {
+ goto load_fw;
+ } else {
+ PMD_INIT_LOG(ERR, "Cannot load DDP file: %s", pkg_file);
+ return -1;
+ }
+ }
+
memset(opt_ddp_filename, 0, ICE_MAX_PKG_FILENAME_SIZE);
snprintf(opt_ddp_filename, ICE_MAX_PKG_FILENAME_SIZE,
"ice-%016" PRIx64 ".pkg", dsn);
@@ -2256,6 +2281,13 @@ static int ice_parse_devargs(struct rte_eth_dev *dev)
ret = rte_kvargs_process(kvlist, ICE_RX_LOW_LATENCY_ARG,
&parse_bool, &ad->devargs.rx_low_latency);
+ if (ret)
+ goto bail;
+
+ ret = rte_kvargs_process(kvlist, ICE_DDP_FILENAME,
+ &handle_ddp_filename_arg, &ad->devargs.ddp_filename);
+ if (ret)
+ goto bail;
bail:
rte_kvargs_free(kvlist);
@@ -2729,6 +2761,8 @@ ice_dev_close(struct rte_eth_dev *dev)
ice_free_hw_tbls(hw);
rte_free(hw->port_info);
hw->port_info = NULL;
+ free((void *)(uintptr_t)ad->devargs.ddp_filename);
+ ad->devargs.ddp_filename = NULL;
ice_shutdown_all_ctrlq(hw, true);
rte_free(pf->proto_xtr);
pf->proto_xtr = NULL;
@@ -7047,6 +7081,7 @@ RTE_PMD_REGISTER_PARAM_STRING(net_ice,
ICE_PROTO_XTR_ARG "=[queue:]<vlan|ipv4|ipv6|ipv6_flow|tcp|ip_offset>"
ICE_SAFE_MODE_SUPPORT_ARG "=<0|1>"
ICE_DEFAULT_MAC_DISABLE "=<0|1>"
+ ICE_DDP_FILENAME "=</path/to/file>"
ICE_RX_LOW_LATENCY_ARG "=<0|1>");
RTE_LOG_REGISTER_SUFFIX(ice_logtype_init, init, NOTICE);
diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h
index 8b644ed700..2781362d04 100644
--- a/drivers/net/ice/ice_ethdev.h
+++ b/drivers/net/ice/ice_ethdev.h
@@ -569,6 +569,7 @@ struct ice_devargs {
/* Name of the field. */
char xtr_field_name[RTE_MBUF_DYN_NAMESIZE];
uint64_t mbuf_check;
+ const char *ddp_filename;
};
/**
--
2.43.0
next prev parent reply other threads:[~2024-10-09 17:08 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-09 17:08 [PATCH 0/5] updates for net/ice driver Bruce Richardson
2024-10-09 17:08 ` [PATCH 1/5] net/ice: detect stopping a flow-director queue twice Bruce Richardson
2024-10-09 17:44 ` Stephen Hemminger
2024-10-09 17:08 ` [PATCH 2/5] net/ice: improve Tx scheduler graph output Bruce Richardson
2024-10-09 17:45 ` Stephen Hemminger
2024-10-15 14:32 ` Bruce Richardson
2024-10-09 17:08 ` Bruce Richardson [this message]
2024-10-09 17:47 ` [PATCH 3/5] net/ice: add option to choose DDP package file Stephen Hemminger
2024-10-09 17:08 ` [PATCH 4/5] net/ice: add option to download scheduler topology Bruce Richardson
2024-10-09 17:49 ` Stephen Hemminger
2024-10-10 8:10 ` Bruce Richardson
2024-10-09 17:08 ` [PATCH 5/5] net/ice: limit the number of queues to sched capabilities Bruce Richardson
2024-10-09 17:49 ` Stephen Hemminger
2024-10-15 15:19 ` [PATCH v2 0/5] updates for net/ice driver Bruce Richardson
2024-10-15 15:19 ` [PATCH v2 1/5] net/ice: detect stopping a flow-director queue twice Bruce Richardson
2024-10-15 15:19 ` [PATCH v2 2/5] net/ice: improve Tx scheduler graph output Bruce Richardson
2024-10-15 15:19 ` [PATCH v2 3/5] net/ice: add option to choose DDP package file Bruce Richardson
2024-10-15 15:19 ` [PATCH v2 4/5] net/ice: add option to download scheduler topology Bruce Richardson
2024-10-15 15:19 ` [PATCH v2 5/5] net/ice: limit the number of queues to sched capabilities Bruce Richardson
2024-10-18 14:38 ` [PATCH v3 0/4] updates for net/ice driver Bruce Richardson
2024-10-18 14:38 ` [PATCH v3 1/4] net/ice: detect stopping a flow-director queue twice Bruce Richardson
2024-10-18 14:38 ` [PATCH v3 2/4] net/ice: improve Tx scheduler graph output Bruce Richardson
2024-10-18 14:38 ` [PATCH v3 3/4] net/ice: add option to choose DDP package file Bruce Richardson
2024-10-18 14:38 ` [PATCH v3 4/4] net/ice: limit the number of queues to sched capabilities Bruce Richardson
2024-10-21 15:57 ` [PATCH v3 0/4] updates for net/ice driver Bruce Richardson
2024-10-22 16:39 ` [PATCH v4 " Bruce Richardson
2024-10-22 16:39 ` [PATCH v4 1/4] net/ice: detect stopping a flow-director queue twice Bruce Richardson
2024-10-22 16:39 ` [PATCH v4 2/4] net/ice: improve Tx scheduler graph output Bruce Richardson
2024-10-22 16:39 ` [PATCH v4 3/4] net/ice: add option to choose DDP package file Bruce Richardson
2024-10-22 16:39 ` [PATCH v4 4/4] net/ice: limit the number of queues to sched capabilities Bruce Richardson
2024-10-23 10:29 ` [PATCH v4 0/4] updates for net/ice driver Bruce Richardson
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=20241009170822.344716-4-bruce.richardson@intel.com \
--to=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.