From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 10FB345882; Wed, 28 Aug 2024 09:55:33 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D370A40265; Wed, 28 Aug 2024 09:55:32 +0200 (CEST) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21]) by mails.dpdk.org (Postfix) with ESMTP id 9C7694025E for ; Wed, 28 Aug 2024 09:55:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1724831731; x=1756367731; h=date:from:to:cc:subject:message-id:references: in-reply-to:mime-version; bh=P08FioU2yxSOWmTlIv75PUBpDUUF5uFdBhC08ghuSGg=; b=E7u8CN2bXVgjdknxPPRvClOUttkoJ7tOQ5OZVmaq9QAofYgEgZwBNJcN 1ivpjQoOKOYdejAINpoopzqBdeMRRcZ4J3SLciHs8GhN4RTsH8TwC7oAH JgaMXussHV+pleSF4cmqSLVllxrkbzJOsqzAtbpuVD5026SWbSiU7y9Lo HrDNZVUSBui6gFOMDLZWDzdERjtrMhHCaxT1oVuoRVVlsoNhribqLrGxG yWH4V+ufNwK/m3stz2bpyYAaO/5A9Ivzu7YH//viKrxkfEBhIrJAhBMB1 dg7TdmYN9QyKgkkM/yFhbpvDjjpZGBctHYT5qMH4n0GUWN8G3ldafEVPv A==; X-CSE-ConnectionGUID: +8SxuRYZRbuiuKmwW4h/bQ== X-CSE-MsgGUID: 1nk63xnhSDya9A58GZShLQ== X-IronPort-AV: E=McAfee;i="6700,10204,11177"; a="23308823" X-IronPort-AV: E=Sophos;i="6.10,182,1719903600"; d="scan'208";a="23308823" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Aug 2024 00:55:30 -0700 X-CSE-ConnectionGUID: LGr3MWWIT7Ox8vTgPSpugA== X-CSE-MsgGUID: AnsUCA5LSR+q7PPwbXacgA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,182,1719903600"; d="scan'208";a="93849177" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orviesa002.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 28 Aug 2024 00:55:30 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Wed, 28 Aug 2024 00:55:28 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Wed, 28 Aug 2024 00:55:28 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.173) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Wed, 28 Aug 2024 00:55:28 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GF0XXdi159T62GUsYolF4rD8XFDWfwxw9Ci8eXLwy6WRVnRDDo7Eq79t91BieYoLJ9WWzjcz/JWVWGOg75XI8rInmQDSUllCbtrx2zBy21QxgbsIK0tf9R5fVvV4AdQzVk/Gh+iqX2BagLp8ea65JyHQB0ufo+sMYQvFdOjVExo+91lsoTkM/PsJo5TNGDT3pdpDIIo1Sc9VjUxTiiUuE059a3rfwvmrjALulC5r6ERwWntcm9vtYdO8Rl9YqmgtWUFi8A8G0CYeLQsFvseMm4Zts3f5FeQn+6453iJC9tiopBr8a3BOoNL/qmghoBGScKwnqeGHOqGinz1jTlni0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ykpVRGc4uzW2u+cN02hn5B7OgTVOKp+vvkh9pry6cGc=; b=QY+bvaYAfU4T+dbsi9Aj0nzWmv7eDvvxrfYCeOOU4dxPsb3q7dw1KRz7G07yir0iIgeJR6lHYgNnzcu1k1SvS7+yJl8L9140xwrfOeBI9FLf7IkdqPEOkIfmTezOzsJC34TJRjUnWyshohtso3En40tMsjWX4O2bwUI/mR+Qy1TUZaFtUruOXwX9T5v6joPwq426AFpnW3qGvC2FXe+p7Lg97W6RFC9G0a3z2gFSBWJzvngcSJleIvSgonbVknQTlUU/MLYVKk3V4rGh37ttClA2sXq0bMkDazN3AszK9AAalaE7tDFumLMZFbNZKwCXexXwfgd9NAXAwmUiv0LzkA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DS0PR11MB7309.namprd11.prod.outlook.com (2603:10b6:8:13e::17) by DM4PR11MB7181.namprd11.prod.outlook.com (2603:10b6:8:113::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7897.26; Wed, 28 Aug 2024 07:55:26 +0000 Received: from DS0PR11MB7309.namprd11.prod.outlook.com ([fe80::f120:cc1f:d78d:ae9b]) by DS0PR11MB7309.namprd11.prod.outlook.com ([fe80::f120:cc1f:d78d:ae9b%2]) with mapi id 15.20.7897.021; Wed, 28 Aug 2024 07:55:26 +0000 Date: Wed, 28 Aug 2024 08:55:21 +0100 From: Bruce Richardson To: Zhichao Zeng CC: Subject: Re: [PATCH] net/ice: support for more flexible loading of DDP package Message-ID: References: <20240828035335.1069153-1-zhichaox.zeng@intel.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20240828035335.1069153-1-zhichaox.zeng@intel.com> X-ClientProxiedBy: DU6P191CA0016.EURP191.PROD.OUTLOOK.COM (2603:10a6:10:540::10) To DS0PR11MB7309.namprd11.prod.outlook.com (2603:10b6:8:13e::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB7309:EE_|DM4PR11MB7181:EE_ X-MS-Office365-Filtering-Correlation-Id: a06fda21-3e87-4528-46d1-08dcc736c74c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?gPlkwn/jj1MaTQgzAtpwU2GrN/nrHwwL0qjefIMmM9QpBQUulIzS99s0yTkn?= =?us-ascii?Q?K64cwWBNUMlYmS9axS4Uqxjvb+PNIVokx54kxsho9J6/T1GfSa4mpA1lg5MT?= =?us-ascii?Q?K7I9k/LPCJm285K+Cw6iSOXXo/pyNHt/e+N3vw1vmEEJniQdiiMJy++CjKQZ?= =?us-ascii?Q?k7sHYF6TlIDd9B3XbC6ZUHk1uCe8vwBwh3O4BmfXdQfpe2Nc6DfJp3XdKwQJ?= =?us-ascii?Q?0qzmvYb2fNzMgI1ugChoGdK2fYfkiZ72oCY5tk2s2edcIq1sMcQkwdFnWtD3?= =?us-ascii?Q?CWskcZjvC+7BPpxRiJemzFyMEHtVsks1Odqr3SgAgYs8ph+zxusD/h4qI854?= =?us-ascii?Q?Rns9s0XExNNVF8otSMZ1JPS0zMMUC5YksrPWe1VKGYWpb07X0M3rGTiGN7YJ?= =?us-ascii?Q?w1oZ+IkOpwFeVT3pGFOWR2tIQJpOybjz4fHP5IkDaRpFdL/x0bDdUGiXXrGO?= =?us-ascii?Q?Rj8b/lAk4PFeBALy1T7pqFm7ALh2vaQS/1v4OKglgiJNi/IeI4OsSBv2/rpN?= =?us-ascii?Q?d5lHL4F3mhZuBq3eELFPTMD62vsTZzF6FeqVwdfmT1KWgjVBDgcyafauVRMW?= =?us-ascii?Q?SbzZ7kRIsj7FxM+U9NmmsQIal4fZ6OOiwqYPARwis448cp8tLM5L65lGUYne?= =?us-ascii?Q?p5PE50zYjrjOyrqIiYErs9xruQuPkaU99TtGWcf8ULS/lxZ0eW+T57eWzHby?= =?us-ascii?Q?k8nYZupv+cF6G/En1+QKsDJIDuc6V+I0a22OKqPTG/oxzSz0wyKsVKqUSdBn?= =?us-ascii?Q?TW3xIaGSBKpEycE2SIl926jHK789wbva+Flrnj/pXnndmnBwGCH7pMkFOrzl?= =?us-ascii?Q?VosKp/xp8ipMMWnMNy+gbyTCph26eLKBGL13/Ou62KwL83U96Zg257MrQMWh?= =?us-ascii?Q?Hck655l2FyrT+J6koO5h7noAtdLITr/VOQvk4GdEdU019/oXKY3khG3tmZYw?= =?us-ascii?Q?A3UedkPnxnU8ZFNAhH9GUUG0dzbizGiy8HIJoHJinshr9Kb/GB14ZXSKdgzL?= =?us-ascii?Q?kGGxkFdb3T/IEXkD6vhpKAWCnU9ggc5NLnujS/yMNMND7S9GvCdosx6cOpuz?= =?us-ascii?Q?K+8O6LtOf2wo7rOsLy0+vc/6N/I4gGnWGltpsrtugRAToSO05UMhQa7LZ/Cv?= =?us-ascii?Q?5db7+3mC2W3eFa+7OHMSYcLfLR4SS85KcLeuZ4x9Zazh+YX0IBP/bN0515Y2?= =?us-ascii?Q?4PA4BLa2kmYyjtiVFOocAFlwE9qb5mo5RbLw7K7tPu0sOLJnYfrf7GFp0jIT?= =?us-ascii?Q?GiEcNIM9xT1rnRU8ch9+LX3cWKFgDvV1eRZAqm+dx2MiDNUZdYOipL3TtHVg?= =?us-ascii?Q?ZqU=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR11MB7309.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qB1ZoeWhP3gPZEnUvN3RTegv85ak3/hdf0kkE16QS+Q604lNe3J3swYwXxTi?= =?us-ascii?Q?Hb5V4LtsRz9ztNCgOhy4qqUMq09S8SkevVxqTBqnPxWFk8rbuozP5r8VnZgb?= =?us-ascii?Q?V6f7mZrOcZT0T7ZAeo23ygmkBahEV3wcnFTaBY5IRu82E0F19Pxutc3H+Tis?= =?us-ascii?Q?siupJTCf2qw8Ag+3fZOWxNG4CuhguuE7RfoRn6u3c7E3AOjf4JO9Rf2CcQJ/?= =?us-ascii?Q?tL4gIVI6K7SmXX5gJL1nSxmSWvhvzRZrBP49GwUgTR7pH9vQFEhKMrCw6TYQ?= =?us-ascii?Q?4+7lWPnQmNTOPTUcJMFoCi+XnLCmettK/rHzTXF2NFthcJxmU3VdmYRF/2WR?= =?us-ascii?Q?YK/g3RXs+ikwQilge+SSUKVRRdSJbM/33o/GilxyemZLwgj3rDz75+Y3vVox?= =?us-ascii?Q?nWwbZbFQ17fEx7Bt8p/HQr/wv9pyZj/m6HCAROoZcN1qnHO/qS52YLl2clUu?= =?us-ascii?Q?1xU4xjHDPuPw7PZw0885fcyN5gASsUzDhS3aDmo/LP96ayrqgBTAMDDhdo2U?= =?us-ascii?Q?MHvpIyvdyICowLCkDwBAmwGvUz+c2PIPaFhKoug3KT7F6t/znkL4y7maxhWC?= =?us-ascii?Q?006ZPqlPRh9wITX1l1yjg397VBtsW/gOtw/FCNm+MCt5GZ85JybhXaXv8nK7?= =?us-ascii?Q?BLUPN7LzLeb0zYJyY0MdAI0MG8EWuH6p6G5ws9X2yQnEyZ1lNinHTcE8pWwW?= =?us-ascii?Q?Tyz5nVhHqnK57CiwGpuUJg0YloPpksubUhPVvtX1wuZmRZ2QD2uD2U1U0Tmi?= =?us-ascii?Q?knaW02NYh0TM+cp3lh5oZ5nsL9tBud9sbmDb9TVrRJi5sOyBiMoAW/N2Yo9u?= =?us-ascii?Q?XpzbQI7fw35pq8emCtHikLNI4ie8Vw8qzaDMU9+C5ZjO8na8xiKqJ1nVuqhT?= =?us-ascii?Q?nmcUvtYBF04n9WeMMBpUxTZyaAjPUfJ1GJrQToEq6dfgwiEkwUiebzZ1Alb/?= =?us-ascii?Q?qAr6bUXpfwk8Vy7qQy4pgcEc0Rj5Dh8JAuWXr4w0foUJeIN3UTfdcm4P2QLr?= =?us-ascii?Q?wI4iQbJB8vtkfGb1apqeDIQLHxl/lcNCOIs7P4icdzF1yoIRNq7ux8afPCN1?= =?us-ascii?Q?9qPJWtb8wmC55wzbaqBTlbCPX0jqcR2yCUkBdmX1KBpooTWSCYi+n8eIf4Vn?= =?us-ascii?Q?lW4ivyYVzYetF3/CLnPXtx6kloM4gDfAnKuTpQstKLmhNr/+SFdpK1Gw1e18?= =?us-ascii?Q?lcl+inMyEL0t60TciZBI+nX9Z2ow6zZ083bYx2sg43ffLHlJBd8yCUh36VP6?= =?us-ascii?Q?rFr+ZVvwudcq/PbWqEPWfUiF4s4MQA/J6uQKxNO/BCx//oceaDnGCyzyAW4Q?= =?us-ascii?Q?B9lQdcM8fqCC6LEMf532Y+yeDUvO3nBZEB93CpaIXQpSC3hEwJGmdvIuVnBd?= =?us-ascii?Q?B2hMM1LGDYMox6eHuRX8c8gT8eYgJJlKZJ0T4ncAF2peSCsOpCVVLEzw1LxI?= =?us-ascii?Q?DlrzKcdeFjm+LfuU+J1lt21hrOIW7v6DoNELdRCvgZWki0jgD8KDqUUwWT0E?= =?us-ascii?Q?A38i2AOd83LM/HJPOrHbNSWDiblY6Y7kioxwn7U768TnUFRpSaWvH6bAmUpq?= =?us-ascii?Q?479RdRURtilx/ljw13lyiJQj+wFH2kbtmswp68z4b6pVUvvFfgEoWhVti/st?= =?us-ascii?Q?oA=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: a06fda21-3e87-4528-46d1-08dcc736c74c X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7309.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Aug 2024 07:55:26.7513 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: aBpwWHmpbfqP/OvtaFxriUc/9M8vNYEXeqvxtFST+ffIO6Oj5LHWNA950YvFmyFG6NGeP8rDkae2CZWuzG2CRSwTHHlhltmRdNnuaipy2Pk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB7181 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Wed, Aug 28, 2024 at 11:53:35AM +0800, Zhichao Zeng wrote: > 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, this commit two ways > to support custom DDP packages: > 1. Add device option to choose a specific DDP package file to load. > For example: > -a 80:00.0,ddp_pkg_file=/path/to/ice-version.pkg > 2. Read firmware search path from > "/sys/module/firmware_class/parameters/path" like the kernel behavior. > > Signed-off-by: Bruce Richardson > Signed-off-by: Zhichao Zeng Hi Zhichao, since there are two different methods being supported for picking a DDP package this patch would be better split into two, one for each method added. The support for #1 above is already on-list as a standalone patch[1], so you really only need to do a new patch for #2 above. However, I'm ok for you to take my patch and include it in a 2-patch set for this if you prefer, since both patches will be related to choosing a DDP file. I'll leave it up to you whether v2 is a single patch for the search path, or a 2-patch set including [1]. Regards, /Bruce [1] https://patches.dpdk.org/project/dpdk/patch/20240812152815.1132697-5-bruce.richardson@intel.com/ > --- > doc/guides/nics/ice.rst | 12 +++++++ > drivers/net/ice/ice_ethdev.c | 61 ++++++++++++++++++++++++++++++++++++ > drivers/net/ice/ice_ethdev.h | 2 ++ > 3 files changed, 75 insertions(+) > > diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst > index ae975d19ad..0484fafbc1 100644 > --- a/doc/guides/nics/ice.rst > +++ b/doc/guides/nics/ice.rst > @@ -108,6 +108,18 @@ 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 > + > + There is also support for customizing the firmware search path, will read the search path > + from "/sys/module/firmware_class/parameters/path" and try to load DDP package. > + > - ``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 304f959b7e..bd78c14000 100644 > --- a/drivers/net/ice/ice_ethdev.c > +++ b/drivers/net/ice/ice_ethdev.c > @@ -36,6 +36,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 > > @@ -52,6 +53,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 > }; > > @@ -692,6 +694,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) > { > @@ -1873,6 +1887,22 @@ ice_load_pkg_type(struct ice_hw *hw) > return package_type; > } > > +static int ice_read_customized_path(char *pkg_file) > +{ > + char buf[ICE_MAX_PKG_FILENAME_SIZE]; > + FILE *fp = fopen(ICE_PKG_FILE_CUSTOMIZED_PATH, "r"); > + if (fp == NULL) { > + PMD_INIT_LOG(ERR, "Failed to read CUSTOMIZED_PATH"); > + return -EIO; > + } > + if (fscanf(fp, "%s\n", buf) > 0) > + strncpy(pkg_file, buf, ICE_MAX_PKG_FILENAME_SIZE); > + else > + return -EIO; > + > + return 0; > +} > + > int ice_load_pkg(struct ice_adapter *adapter, bool use_dsn, uint64_t dsn) > { > struct ice_hw *hw = &adapter->hw; > @@ -1882,12 +1912,28 @@ int ice_load_pkg(struct ice_adapter *adapter, bool use_dsn, uint64_t dsn) > size_t bufsz; > int err; > > + 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\n", pkg_file); > + return -1; > + } > + } > + > if (!use_dsn) > goto no_dsn; > > memset(opt_ddp_filename, 0, ICE_MAX_PKG_FILENAME_SIZE); > snprintf(opt_ddp_filename, ICE_MAX_PKG_FILENAME_SIZE, > "ice-%016" PRIx64 ".pkg", dsn); > + > + ice_read_customized_path(pkg_file); > + strcat(pkg_file, opt_ddp_filename); > + if (rte_firmware_read(pkg_file, &buf, &bufsz) == 0) > + goto load_fw; > + > strncpy(pkg_file, ICE_PKG_FILE_SEARCH_PATH_UPDATES, > ICE_MAX_PKG_FILENAME_SIZE); > strcat(pkg_file, opt_ddp_filename); > @@ -1901,6 +1947,10 @@ int ice_load_pkg(struct ice_adapter *adapter, bool use_dsn, uint64_t dsn) > goto load_fw; > > no_dsn: > + ice_read_customized_path(pkg_file); > + if (rte_firmware_read(pkg_file, &buf, &bufsz) == 0) > + goto load_fw; > + > strncpy(pkg_file, ICE_PKG_FILE_UPDATES, ICE_MAX_PKG_FILENAME_SIZE); > if (rte_firmware_read(pkg_file, &buf, &bufsz) == 0) > goto load_fw; > @@ -2217,6 +2267,14 @@ 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); > return ret; > @@ -2689,6 +2747,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; > @@ -6981,6 +7041,7 @@ RTE_PMD_REGISTER_PARAM_STRING(net_ice, > ICE_PROTO_XTR_ARG "=[queue:]" > ICE_SAFE_MODE_SUPPORT_ARG "=<0|1>" > ICE_DEFAULT_MAC_DISABLE "=<0|1>" > + ICE_DDP_FILENAME "=" > 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 3ea9f37dc8..2781362d04 100644 > --- a/drivers/net/ice/ice_ethdev.h > +++ b/drivers/net/ice/ice_ethdev.h > @@ -51,6 +51,7 @@ > #define ICE_PKG_FILE_UPDATES "/lib/firmware/updates/intel/ice/ddp/ice.pkg" > #define ICE_PKG_FILE_SEARCH_PATH_DEFAULT "/lib/firmware/intel/ice/ddp/" > #define ICE_PKG_FILE_SEARCH_PATH_UPDATES "/lib/firmware/updates/intel/ice/ddp/" > +#define ICE_PKG_FILE_CUSTOMIZED_PATH "/sys/module/firmware_class/parameters/path" > #define ICE_MAX_PKG_FILENAME_SIZE 256 > > #define MAX_ACL_NORMAL_ENTRIES 256 > @@ -568,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.34.1 >