patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Kevin Traynor <ktraynor@redhat.com>
To: stable@dpdk.org
Cc: bluca@debian.org, david.marchand@redhat.com,
	john.mcnamara@intel.com, qi.z.zhang@intel.com,
	yux.jiang@intel.com, beilei.xing@intel.com,
	Yuying.Zhang@intel.com, wenxuanx.wu@intel.com,
	jie1x.wang@intel.com, dapengx.yu@intel.com,
	Kevin Traynor <ktraynor@redhat.com>
Subject: [PATCH 21.11 3/3] Revert "net/i40e: enable maximum frame size at port level"
Date: Tue, 13 Dec 2022 18:47:33 +0000	[thread overview]
Message-ID: <20221213184733.411996-3-ktraynor@redhat.com> (raw)
In-Reply-To: <20221213184733.411996-1-ktraynor@redhat.com>

This reverts commit e68285796ca68b34fb0f7a10a391957e825b1a04.

This chain of commits has been found to cause issues with setting
max frame size when the link is not negotiated in 1s or the link
is down. The frame size is not set and no error is returned to
the user.

Revert the chain until a fix is found.

Link to original upstream commit and discussion:
a4ba77367923 ("net/i40e: enable maximum frame size at port level")
https://mails.dpdk.org/archives/dev/2022-December/257566.html

Reported-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Kevin Traynor <ktraynor@redhat.com>
---
 drivers/net/i40e/i40e_ethdev.c | 41 ++++++----------------------------
 1 file changed, 7 insertions(+), 34 deletions(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 4ac31c2fec..1d417dbf8a 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -387,5 +387,4 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev,
 
 static int i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu);
-static void i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size);
 
 static int i40e_ethertype_filter_convert(
@@ -1711,4 +1710,9 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
 	i40e_add_tx_flow_control_drop_filter(pf);
 
+	/* Set the max frame size to 0x2600 by default,
+	 * in case other drivers changed the default value.
+	 */
+	i40e_aq_set_mac_config(hw, I40E_FRAME_SIZE_MAX, TRUE, false, 0, NULL);
+
 	/* initialize RSS rule list */
 	TAILQ_INIT(&pf->rss_config_list);
@@ -2361,5 +2365,4 @@ i40e_dev_start(struct rte_eth_dev *dev)
 	struct i40e_vsi *vsi;
 	uint16_t nb_rxq, nb_txq;
-	uint16_t max_frame_size;
 
 	hw->adapter_stopped = 0;
@@ -2500,7 +2503,4 @@ i40e_dev_start(struct rte_eth_dev *dev)
 			    "before starting the port");
 
-	max_frame_size = dev->data->mtu + I40E_ETH_OVERHEAD;
-	i40e_set_mac_max_frame(dev, max_frame_size);
-
 	return I40E_SUCCESS;
 
@@ -2849,7 +2849,4 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev)
 }
 
-#define CHECK_INTERVAL             100  /* 100ms */
-#define MAX_REPEAT_TIME            10  /* 1s (10 * 100ms) in total */
-
 static __rte_always_inline void
 update_link_reg(struct i40e_hw *hw, struct rte_eth_link *link)
@@ -2918,4 +2915,6 @@ update_link_aq(struct i40e_hw *hw, struct rte_eth_link *link,
 	bool enable_lse, int wait_to_complete)
 {
+#define CHECK_INTERVAL             100  /* 100ms */
+#define MAX_REPEAT_TIME            10  /* 1s (10 * 100ms) in total */
 	uint32_t rep_cnt = MAX_REPEAT_TIME;
 	struct i40e_link_status link_status;
@@ -6721,5 +6720,4 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev)
 				rte_eth_dev_callback_process(dev,
 					RTE_ETH_EVENT_INTR_LSC, NULL);
-
 			break;
 		default:
@@ -12106,29 +12104,4 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
 }
 
-static void
-i40e_set_mac_max_frame(struct rte_eth_dev *dev, uint16_t size)
-{
-	struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-	uint32_t rep_cnt = MAX_REPEAT_TIME;
-	struct rte_eth_link link;
-	enum i40e_status_code status;
-
-	do {
-		update_link_reg(hw, &link);
-		if (link.link_status)
-			break;
-
-		rte_delay_ms(CHECK_INTERVAL);
-	} while (--rep_cnt);
-
-	if (link.link_status) {
-		status = i40e_aq_set_mac_config(hw, size, TRUE, 0, false, NULL);
-		if (status != I40E_SUCCESS)
-			PMD_DRV_LOG(ERR, "Failed to set max frame size at port level");
-	} else {
-		PMD_DRV_LOG(ERR, "Set max frame size at port level not applicable on link down");
-	}
-}
-
 RTE_LOG_REGISTER_SUFFIX(i40e_logtype_init, init, NOTICE);
 RTE_LOG_REGISTER_SUFFIX(i40e_logtype_driver, driver, NOTICE);
-- 
2.38.1


  parent reply	other threads:[~2022-12-13 18:48 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-13 18:47 [PATCH 21.11 1/3] Revert "net/i40e: fix jumbo frame Rx with X722" Kevin Traynor
2022-12-13 18:47 ` [PATCH 21.11 2/3] Revert "net/i40e: fix max frame size config at port level" Kevin Traynor
2022-12-13 18:47 ` Kevin Traynor [this message]
2022-12-14 10:19 ` [PATCH 21.11 1/3] Revert "net/i40e: fix jumbo frame Rx with X722" David Marchand
2022-12-19 10:20   ` Kevin Traynor

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=20221213184733.411996-3-ktraynor@redhat.com \
    --to=ktraynor@redhat.com \
    --cc=Yuying.Zhang@intel.com \
    --cc=beilei.xing@intel.com \
    --cc=bluca@debian.org \
    --cc=dapengx.yu@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=jie1x.wang@intel.com \
    --cc=john.mcnamara@intel.com \
    --cc=qi.z.zhang@intel.com \
    --cc=stable@dpdk.org \
    --cc=wenxuanx.wu@intel.com \
    --cc=yux.jiang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).