All of lore.kernel.org
 help / color / mirror / Atom feed
From: Qiming Yang <qiming.yang@intel.com>
To: dev@dpdk.org
Cc: qi.z.zhang@intel.com, paul.m.stillwell.jr@intel.com,
	Qiming Yang <qiming.yang@intel.com>
Subject: [PATCH v2 2/4] net/ice: add safe mode
Date: Wed, 20 Mar 2019 23:50:23 +0800	[thread overview]
Message-ID: <20190320155025.138173-3-qiming.yang@intel.com> (raw)
In-Reply-To: <20190320155025.138173-1-qiming.yang@intel.com>

If E810 download package failed, driver need to go to safe mode.
In the safe mode, some advanced features will not be supported.

Signed-off-by: Qiming Yang <qiming.yang@intel.com>
---
 drivers/net/ice/ice_ethdev.c | 48 +++++++++++++++++++++++++++++---------------
 drivers/net/ice/ice_ethdev.h |  1 +
 2 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 13f2748..a217da8 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -1328,6 +1328,8 @@ ice_dev_init(struct rte_eth_dev *dev)
 	struct rte_intr_handle *intr_handle;
 	struct ice_hw *hw = ICE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);
+	struct ice_adapter *ad =
+		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
 	struct ice_vsi *vsi;
 	int ret;
 
@@ -1362,8 +1364,9 @@ ice_dev_init(struct rte_eth_dev *dev)
 
 	ret = ice_load_pkg(dev);
 	if (ret) {
-		PMD_INIT_LOG(ERR, "Failed to load the DDP package");
-		goto err_load_pkg;
+		PMD_INIT_LOG(WARNING, "Failed to load the DDP package,"
+				"Entering Safe Mode");
+		ad->is_safe_mode = 1;
 	}
 
 	PMD_INIT_LOG(INFO, "FW %d.%d.%05d API %d.%d",
@@ -1411,7 +1414,6 @@ ice_dev_init(struct rte_eth_dev *dev)
 err_msix_pool_init:
 	rte_free(dev->data->mac_addrs);
 err_init_mac:
-err_load_pkg:
 	ice_sched_cleanup_all(hw);
 	rte_free(hw->port_info);
 	ice_shutdown_all_ctrlq(hw);
@@ -1581,12 +1583,18 @@ static int ice_init_rss(struct ice_pf *pf)
 	struct ice_aqc_get_set_rss_keys key;
 	uint16_t i, nb_q;
 	int ret = 0;
+	bool is_safe_mode = pf->adapter->is_safe_mode;
 
 	rss_conf = &dev->data->dev_conf.rx_adv_conf.rss_conf;
 	nb_q = dev->data->nb_rx_queues;
 	vsi->rss_key_size = ICE_AQC_GET_SET_RSS_KEY_DATA_RSS_KEY_SIZE;
 	vsi->rss_lut_size = hw->func_caps.common_cap.rss_table_size;
 
+	if (is_safe_mode) {
+		PMD_DRV_LOG(WARNING, "RSS is not supported in safe mode\n");
+		return 0;
+	}
+
 	if (!vsi->rss_key)
 		vsi->rss_key = rte_zmalloc(NULL,
 					   vsi->rss_key_size, 0);
@@ -1890,6 +1898,7 @@ ice_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 	struct ice_hw *hw = ICE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	struct ice_vsi *vsi = pf->main_vsi;
 	struct rte_pci_device *pci_dev = RTE_DEV_TO_PCI(dev->device);
+	bool is_safe_mode = pf->adapter->is_safe_mode;
 
 	dev_info->min_rx_bufsize = ICE_BUF_SIZE_MIN;
 	dev_info->max_rx_pktlen = ICE_FRAME_SIZE_MAX;
@@ -1900,33 +1909,40 @@ ice_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
 
 	dev_info->rx_offload_capa =
 		DEV_RX_OFFLOAD_VLAN_STRIP |
-		DEV_RX_OFFLOAD_IPV4_CKSUM |
-		DEV_RX_OFFLOAD_UDP_CKSUM |
-		DEV_RX_OFFLOAD_TCP_CKSUM |
-		DEV_RX_OFFLOAD_QINQ_STRIP |
-		DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM |
-		DEV_RX_OFFLOAD_VLAN_EXTEND |
 		DEV_RX_OFFLOAD_JUMBO_FRAME |
 		DEV_RX_OFFLOAD_KEEP_CRC |
 		DEV_RX_OFFLOAD_SCATTER |
 		DEV_RX_OFFLOAD_VLAN_FILTER;
 	dev_info->tx_offload_capa =
 		DEV_TX_OFFLOAD_VLAN_INSERT |
-		DEV_TX_OFFLOAD_QINQ_INSERT |
-		DEV_TX_OFFLOAD_IPV4_CKSUM |
-		DEV_TX_OFFLOAD_UDP_CKSUM |
-		DEV_TX_OFFLOAD_TCP_CKSUM |
-		DEV_TX_OFFLOAD_SCTP_CKSUM |
-		DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM |
 		DEV_TX_OFFLOAD_TCP_TSO |
 		DEV_TX_OFFLOAD_MULTI_SEGS |
 		DEV_TX_OFFLOAD_MBUF_FAST_FREE;
+	dev_info->flow_type_rss_offloads = 0;
+
+	if (!is_safe_mode) {
+		dev_info->rx_offload_capa |=
+			DEV_RX_OFFLOAD_IPV4_CKSUM |
+			DEV_RX_OFFLOAD_UDP_CKSUM |
+			DEV_RX_OFFLOAD_TCP_CKSUM |
+			DEV_RX_OFFLOAD_QINQ_STRIP |
+			DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM |
+			DEV_RX_OFFLOAD_VLAN_EXTEND;
+		dev_info->tx_offload_capa |=
+			DEV_TX_OFFLOAD_QINQ_INSERT |
+			DEV_TX_OFFLOAD_IPV4_CKSUM |
+			DEV_TX_OFFLOAD_UDP_CKSUM |
+			DEV_TX_OFFLOAD_TCP_CKSUM |
+			DEV_TX_OFFLOAD_SCTP_CKSUM |
+			DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM;
+		dev_info->flow_type_rss_offloads |= ICE_RSS_OFFLOAD_ALL;
+	}
+
 	dev_info->rx_queue_offload_capa = 0;
 	dev_info->tx_queue_offload_capa = 0;
 
 	dev_info->reta_size = hw->func_caps.common_cap.rss_table_size;
 	dev_info->hash_key_size = (VSIQF_HKEY_MAX_INDEX + 1) * sizeof(uint32_t);
-	dev_info->flow_type_rss_offloads = ICE_RSS_OFFLOAD_ALL;
 
 	dev_info->default_rxconf = (struct rte_eth_rxconf) {
 		.rx_thresh = {
diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h
index 3cefa5b..b1f1f79 100644
--- a/drivers/net/ice/ice_ethdev.h
+++ b/drivers/net/ice/ice_ethdev.h
@@ -264,6 +264,7 @@ struct ice_adapter {
 	bool tx_simple_allowed;
 	/* ptype mapping table */
 	uint32_t ptype_tbl[ICE_MAX_PKT_TYPE] __rte_cache_min_aligned;
+	bool is_safe_mode;
 };
 
 struct ice_vsi_vlan_pvid_info {
-- 
2.9.5

  parent reply	other threads:[~2019-03-20  8:27 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-01 12:46 [PATCH 1/2] net/ice: suppport package download Qiming Yang
2019-03-01 12:46 ` [PATCH 2/2] net/ice: disable advanced features in safe mode Qiming Yang
2019-03-01 18:38   ` Stephen Hemminger
2019-03-01 20:41   ` Stillwell Jr, Paul M
2019-03-01 13:40 ` [PATCH 1/2] net/ice: suppport package download Thomas Monjalon
2019-03-06  2:36   ` Yang, Qiming
2019-03-01 18:39 ` Stephen Hemminger
2019-03-01 18:40 ` Stephen Hemminger
2019-03-04 17:54 ` Stillwell Jr, Paul M
2019-03-20 15:50 ` [PATCH v2 0/4] enable package download in ice driver Qiming Yang
2019-03-20 15:50   ` [PATCH v2 1/4] net/ice: load OS default package Qiming Yang
2019-03-20 15:50   ` Qiming Yang [this message]
2019-03-20 15:50   ` [PATCH v2 3/4] net/ice: enable RSS when device init Qiming Yang
2019-03-20 15:50   ` [PATCH v2 4/4] doc: add document update for package download Qiming Yang
2019-03-20 17:59   ` [PATCH v3 0/3] enable package download in ice driver Qiming Yang
2019-03-20 17:59     ` [PATCH v3 1/3] net/ice: load OS default package Qiming Yang
2019-03-20 17:59     ` [PATCH v3 2/3] net/ice: add safe mode Qiming Yang
2019-03-20 17:59     ` [PATCH v3 3/3] net/ice: enable RSS when device init Qiming Yang
2019-03-21 15:02     ` [PATCH v4 0/3] enable package download in ice driver Qiming Yang
2019-03-21 15:02       ` [PATCH v4 1/3] net/ice: load OS default package Qiming Yang
2019-03-25  2:29         ` [PATCH v5 0/3] enable package download in ice driver Qiming Yang
2019-03-25  2:29           ` [PATCH v5 1/3] net/ice: load OS default package Qiming Yang
2019-03-25  2:29           ` [PATCH v5 2/3] net/ice: add safe mode Qiming Yang
2019-03-25  2:29           ` [PATCH v5 3/3] net/ice: enable RSS when device init Qiming Yang
2019-03-25  4:25           ` [PATCH v5 0/3] enable package download in ice driver Stillwell Jr, Paul M
2019-03-25  9:00         ` [PATCH v6 " Qiming Yang
2019-03-25  9:01           ` [PATCH v6 1/3] net/ice: load OS default package Qiming Yang
2019-03-25 13:56             ` Zhang, Qi Z
2019-03-25  9:01           ` [PATCH v6 2/3] net/ice: add safe mode Qiming Yang
2019-03-25  9:01           ` [PATCH v6 3/3] net/ice: enable RSS when device init Qiming Yang
2019-03-25 14:00           ` [PATCH v6 0/3] enable package download in ice driver Zhang, Qi Z
2019-03-21 15:02       ` [PATCH v4 2/3] net/ice: add safe mode Qiming Yang
2019-03-21 15:02       ` [PATCH v4 3/3] net/ice: enable RSS when device init Qiming Yang
2019-03-21 15:02       ` [PATCH v4 0/3] enable package download in ice driver Qiming Yang
2019-03-21 15:02       ` [PATCH v4 1/3] net/ice: load OS default package Qiming Yang
2019-03-21 15:02       ` [PATCH v4 2/3] net/ice: add safe mode Qiming Yang
2019-03-21 15:02       ` [PATCH v4 3/3] net/ice: enable RSS when device init Qiming Yang

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=20190320155025.138173-3-qiming.yang@intel.com \
    --to=qiming.yang@intel.com \
    --cc=dev@dpdk.org \
    --cc=paul.m.stillwell.jr@intel.com \
    --cc=qi.z.zhang@intel.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 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.