From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 242A1A00E6 for ; Wed, 10 Jul 2019 11:46:26 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 068E72C23; Wed, 10 Jul 2019 11:46:25 +0200 (CEST) Received: from relay0179.mxlogin.com (relay0179.mxlogin.com [199.181.239.179]) by dpdk.org (Postfix) with ESMTP id 898AA2BF4 for ; Wed, 10 Jul 2019 11:46:23 +0200 (CEST) Received: from filter002.mxroute.com (unknown [116.203.155.46]) by relay0179.mxlogin.com (Postfix) with ESMTP id 9E99ECC6031C; Wed, 10 Jul 2019 04:46:22 -0500 (CDT) Received: from galaxy.mxroute.com (unknown [23.92.70.113]) by filter002.mxroute.com (Postfix) with ESMTPS id CD70F3F051; Wed, 10 Jul 2019 09:46:16 +0000 (UTC) Received: from irdmzpr02-ext.ir.intel.com ([192.198.151.37]) by galaxy.mxroute.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.91) (envelope-from ) id 1hl98Q-00066f-CA; Wed, 10 Jul 2019 05:43:34 -0400 To: Qi Zhang , qiming.yang@intel.com, wenzhuo.lu@intel.com Cc: dev@dpdk.org References: <20190710041630.47927-1-qi.z.zhang@intel.com> <20190710041630.47927-2-qi.z.zhang@intel.com> From: Ray Kinsella Openpgp: preference=signencrypt Autocrypt: addr=mdr@ashroe.eu; keydata= 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 Message-ID: Date: Wed, 10 Jul 2019 10:46:08 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2 MIME-Version: 1.0 In-Reply-To: <20190710041630.47927-2-qi.z.zhang@intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-AuthUser: mdr@ashroe.eu Subject: Re: [dpdk-dev] [PATCH v3 2/2] net/ice: add safe mode support devarg X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Acked-by: Ray Kinsella On 10/07/2019 05:16, Qi Zhang wrote: > Safe mode support is not necessary by default. > Driver be initialized without OS package silently may confuse users > since most advanced feature are disabled. > Add devarg for safe mode enabling only for when user intend to do this. > > Signed-off-by: Qi Zhang > --- > -v3: > fix wrong logic in parse_bool. > > -v2: > fix missing return value check from ice_parse_devargs. > minor document update. > > doc/guides/nics/ice.rst | 11 +++++++ > drivers/net/ice/ice_ethdev.c | 68 +++++++++++++++++++++++++++++++++++++++++++- > drivers/net/ice/ice_ethdev.h | 8 ++++++ > 3 files changed, 86 insertions(+), 1 deletion(-) > > diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst > index e9b3a48bc..03819d29f 100644 > --- a/doc/guides/nics/ice.rst > +++ b/doc/guides/nics/ice.rst > @@ -49,6 +49,17 @@ Please note that enabling debugging options may affect system performance. > Runtime Config Options > ~~~~~~~~~~~~~~~~~~~~~~ > > +- ``Safe Mode Support`` (default ``0``) > + > + If driver failed to load OS package, by default driver's initialization failed. > + But if user intend to use the device without OS package, user can take ``devargs`` > + parameter ``safe-mode-support``, for example:: > + > + -w 80:00.0,safe-mode-support=1 > + > + Then the driver will be initialized successfully and the device will enter Safe Mode. > + NOTE: In Safe mode, only very limited features are available, features like RSS, > + checksum, fdir, tunneling ... are all disabled. > > Driver compilation and testing > ------------------------------ > diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c > index 4b5cd8269..a7cbe0848 100644 > --- a/drivers/net/ice/ice_ethdev.c > +++ b/drivers/net/ice/ice_ethdev.c > @@ -17,6 +17,14 @@ > #include "ice_rxtx.h" > #include "ice_switch_filter.h" > > +/* devargs */ > +#define ICE_SAFE_MODE_SUPPORT_ARG "safe-mode-support" > + > +static const char * const ice_valid_args[] = { > + ICE_SAFE_MODE_SUPPORT_ARG, > + NULL > +}; > + > #define ICE_DFLT_OUTER_TAG_TYPE ICE_AQ_VSI_OUTER_TAG_VLAN_9100 > #define ICE_DFLT_PKG_FILE "/lib/firmware/intel/ice/ddp/ice.pkg" > > @@ -1334,6 +1342,50 @@ ice_base_queue_get(struct ice_pf *pf) > } > > static int > +parse_bool(const char *key, const char *value, void *args) > +{ > + int *i = (int *)args; > + char *end; > + int num; > + > + num = strtoul(value, &end, 10); > + > + if (num != 0 && num != 1) { > + PMD_DRV_LOG(WARNING, "invalid value:\"%s\" for key:\"%s\", " > + "value must be 0 or 1", > + value, key); > + return -1; > + } > + > + *i = num; > + return 0; > +} > + > +static int ice_parse_devargs(struct rte_eth_dev *dev) > +{ > + struct ice_adapter *ad = > + ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); > + struct rte_devargs *devargs = dev->device->devargs; > + struct rte_kvargs *kvlist; > + int ret; > + > + if (devargs == NULL) > + return 0; > + > + kvlist = rte_kvargs_parse(devargs->args, ice_valid_args); > + if (kvlist == NULL) { > + PMD_INIT_LOG(ERR, "Invalid kvargs key\n"); > + return -EINVAL; > + } > + > + ret = rte_kvargs_process(kvlist, ICE_SAFE_MODE_SUPPORT_ARG, > + &parse_bool, &ad->devargs.safe_mode_support); > + > + rte_kvargs_free(kvlist); > + return ret; > +} > + > +static int > ice_dev_init(struct rte_eth_dev *dev) > { > struct rte_pci_device *pci_dev; > @@ -1366,6 +1418,12 @@ ice_dev_init(struct rte_eth_dev *dev) > hw->bus.device = pci_dev->addr.devid; > hw->bus.func = pci_dev->addr.function; > > + ret = ice_parse_devargs(dev); > + if (ret) { > + PMD_INIT_LOG(ERR, "Failed to parse devargs"); > + return -EINVAL; > + } > + > ice_init_controlq_parameter(hw); > > ret = ice_init_hw(hw); > @@ -1376,8 +1434,14 @@ ice_dev_init(struct rte_eth_dev *dev) > > ret = ice_load_pkg(dev); > if (ret) { > + if (ad->devargs.safe_mode_support == 0) { > + PMD_INIT_LOG(ERR, "Failed to load the DDP package," > + "Use safe-mode-support=1 to enter Safe Mode"); > + return ret; > + } > + > PMD_INIT_LOG(WARNING, "Failed to load the DDP package," > - "Entering Safe Mode"); > + "Entering Safe Mode"); > ad->is_safe_mode = 1; > } > > @@ -3693,6 +3757,8 @@ static struct rte_pci_driver rte_ice_pmd = { > RTE_PMD_REGISTER_PCI(net_ice, rte_ice_pmd); > RTE_PMD_REGISTER_PCI_TABLE(net_ice, pci_id_ice_map); > RTE_PMD_REGISTER_KMOD_DEP(net_ice, "* igb_uio | uio_pci_generic | vfio-pci"); > +RTE_PMD_REGISTER_PARAM_STRING(net_ice, > + ICE_SAFE_MODE_SUPPORT_ARG "=<0|1>"); > > RTE_INIT(ice_init_log) > { > diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h > index 8a52239f5..f569da833 100644 > --- a/drivers/net/ice/ice_ethdev.h > +++ b/drivers/net/ice/ice_ethdev.h > @@ -274,6 +274,13 @@ struct ice_pf { > }; > > /** > + * Cache devargs parse result. > + */ > +struct ice_devargs { > + int safe_mode_support; > +}; > + > +/** > * Structure to store private data for each PF/VF instance. > */ > struct ice_adapter { > @@ -286,6 +293,7 @@ struct ice_adapter { > /* ptype mapping table */ > uint32_t ptype_tbl[ICE_MAX_PKT_TYPE] __rte_cache_min_aligned; > bool is_safe_mode; > + struct ice_devargs devargs; > }; > > struct ice_vsi_vlan_pvid_info { >