diff --git a/SOURCES/openvswitch-2.17.0.patch b/SOURCES/openvswitch-2.17.0.patch
index ee7f07d..d854c86 100644
--- a/SOURCES/openvswitch-2.17.0.patch
+++ b/SOURCES/openvswitch-2.17.0.patch
@@ -24317,38 +24317,10 @@ index d1230f94cb..b5cd6188b4 100644
  
  #endif /* _HNS3_STATS_H_ */
 diff --git a/dpdk/drivers/net/i40e/i40e_ethdev.c b/dpdk/drivers/net/i40e/i40e_ethdev.c
-index c0bfff43ee..ecef1a6e7e 100644
+index c0bfff43ee..1d417dbf8a 100644
 --- a/dpdk/drivers/net/i40e/i40e_ethdev.c
 +++ b/dpdk/drivers/net/i40e/i40e_ethdev.c
-@@ -386,6 +386,7 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev,
- 				      struct rte_ether_addr *mac_addr);
- 
- 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(
- 	const struct rte_eth_ethertype_filter *input,
-@@ -1709,11 +1710,6 @@ 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);
- 
-@@ -2364,6 +2360,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
- 	uint32_t intr_vector = 0;
- 	struct i40e_vsi *vsi;
- 	uint16_t nb_rxq, nb_txq;
-+	uint16_t max_frame_size;
- 
- 	hw->adapter_stopped = 0;
- 
-@@ -2483,7 +2480,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
+@@ -2483,7 +2483,7 @@ i40e_dev_start(struct rte_eth_dev *dev)
  		if (ret != I40E_SUCCESS)
  			PMD_DRV_LOG(WARNING, "Fail to set phy mask");
  
@@ -24357,36 +24329,7 @@ index c0bfff43ee..ecef1a6e7e 100644
  		i40e_dev_link_update(dev, 0);
  	}
  
-@@ -2502,6 +2499,9 @@ i40e_dev_start(struct rte_eth_dev *dev)
- 			    "please call hierarchy_commit() "
- 			    "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;
- 
- tx_err:
-@@ -2848,6 +2848,9 @@ i40e_dev_set_link_down(struct rte_eth_dev *dev)
- 	return i40e_phy_conf_link(hw, abilities, speed, false);
- }
- 
-+#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)
- {
-@@ -2914,8 +2917,6 @@ static __rte_always_inline void
- 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;
- 	int status;
-@@ -3555,7 +3556,7 @@ static int i40e_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
+@@ -3555,7 +3555,7 @@ static int i40e_dev_xstats_get_names(__rte_unused struct rte_eth_dev *dev,
  		count++;
  	}
  
@@ -24395,7 +24338,7 @@ index c0bfff43ee..ecef1a6e7e 100644
  	for (i = 0; i < I40E_NB_HW_PORT_XSTATS; i++) {
  		strlcpy(xstats_names[count].name,
  			rte_i40e_hw_port_strings[i].name,
-@@ -3613,7 +3614,7 @@ i40e_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
+@@ -3613,7 +3613,7 @@ i40e_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *xstats,
  		count++;
  	}
  
@@ -24404,7 +24347,7 @@ index c0bfff43ee..ecef1a6e7e 100644
  	for (i = 0; i < I40E_NB_HW_PORT_XSTATS; i++) {
  		xstats[count].value = *(uint64_t *)(((char *)hw_stats) +
  			rte_i40e_hw_port_strings[i].offset);
-@@ -5544,7 +5545,7 @@ i40e_vsi_get_bw_config(struct i40e_vsi *vsi)
+@@ -5544,7 +5544,7 @@ i40e_vsi_get_bw_config(struct i40e_vsi *vsi)
  					&ets_sla_config, NULL);
  	if (ret != I40E_SUCCESS) {
  		PMD_DRV_LOG(ERR,
@@ -24413,15 +24356,7 @@ index c0bfff43ee..ecef1a6e7e 100644
  			hw->aq.asq_last_status);
  		return ret;
  	}
-@@ -6719,6 +6720,7 @@ i40e_dev_handle_aq_msg(struct rte_eth_dev *dev)
- 			if (!ret)
- 				rte_eth_dev_callback_process(dev,
- 					RTE_ETH_EVENT_INTR_LSC, NULL);
-+
- 			break;
- 		default:
- 			PMD_DRV_LOG(DEBUG, "Request %u is not supported yet",
-@@ -6822,7 +6824,7 @@ i40e_handle_mdd_event(struct rte_eth_dev *dev)
+@@ -6822,7 +6822,7 @@ i40e_handle_mdd_event(struct rte_eth_dev *dev)
   * @param handle
   *  Pointer to interrupt handle.
   * @param param
@@ -24430,7 +24365,7 @@ index c0bfff43ee..ecef1a6e7e 100644
   *
   * @return
   *  void
-@@ -9719,7 +9721,7 @@ i40e_ethertype_filter_convert(const struct rte_eth_ethertype_filter *input,
+@@ -9719,7 +9719,7 @@ i40e_ethertype_filter_convert(const struct rte_eth_ethertype_filter *input,
  	return 0;
  }
  
@@ -24439,47 +24374,6 @@ index c0bfff43ee..ecef1a6e7e 100644
  struct i40e_ethertype_filter *
  i40e_sw_ethertype_filter_lookup(struct i40e_ethertype_rule *ethertype_rule,
  				const struct i40e_ethertype_filter_input *input)
-@@ -12103,6 +12105,40 @@ i40e_cloud_filter_qinq_create(struct i40e_pf *pf)
- 	return ret;
- }
- 
-+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;
-+	bool can_be_set = true;
-+
-+	/*
-+	 * I40E_MEDIA_TYPE_BASET link up can be ignored
-+	 * I40E_MEDIA_TYPE_BASET link down that hw->phy.media_type
-+	 * is I40E_MEDIA_TYPE_UNKNOWN
-+	 */
-+	if (hw->phy.media_type != I40E_MEDIA_TYPE_BASET &&
-+	    hw->phy.media_type != I40E_MEDIA_TYPE_UNKNOWN) {
-+		do {
-+			update_link_reg(hw, &link);
-+			if (link.link_status)
-+				break;
-+			rte_delay_ms(CHECK_INTERVAL);
-+		} while (--rep_cnt);
-+		can_be_set = !!link.link_status;
-+	}
-+
-+	if (can_be_set) {
-+		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);
- #ifdef RTE_ETHDEV_DEBUG_RX
 diff --git a/dpdk/drivers/net/i40e/i40e_ethdev.h b/dpdk/drivers/net/i40e/i40e_ethdev.h
 index 2d182f8000..a1ebdc093c 100644
 --- a/dpdk/drivers/net/i40e/i40e_ethdev.h
diff --git a/SPECS/openvswitch2.17.spec b/SPECS/openvswitch2.17.spec
index d54532b..5a81e87 100644
--- a/SPECS/openvswitch2.17.spec
+++ b/SPECS/openvswitch2.17.spec
@@ -63,7 +63,7 @@ Summary: Open vSwitch
 Group: System Environment/Daemons daemon/database/utilities
 URL: http://www.openvswitch.org/
 Version: 2.17.0
-Release: 84%{?dist}
+Release: 85%{?dist}
 
 # Nearly all of openvswitch is ASL 2.0.  The bugtool is LGPLv2+, and the
 # lib/sflow*.[ch] files are SISSL
@@ -749,6 +749,23 @@ exit 0
 %endif
 
 %changelog
+* Tue Mar 28 2023 David Marchand <david.marchand@redhat.com> - 2.17.0-85
+- net/i40e: revert link status check on device start [RH git: d11a4a4642] (#2151365)
+    [ upstream commit a8ca8edf8c076c765c6d142ab4664a1f61414233 ]
+    
+    The mentioned changes broke existing applications when the link status
+    of i40e ports is down at the time the port is started.
+    Revert those changes, the original issue will need a different fix.
+    
+    Fixes: a4ba77367923 ("net/i40e: enable maximum frame size at port level")
+    Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port level")
+    Fixes: 719469f13b11 ("net/i40e: fix jumbo frame Rx with X722")
+    
+    Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2151365
+    Signed-off-by: David Marchand <david.marchand@redhat.com>
+    Acked-by: Simei Su <simei.su@intel.com>
+
+
 * Mon Mar 27 2023 Open vSwitch CI <ovs-ci@redhat.com> - 2.17.0-84
 - Merging upstream branch-2.17 [RH git: 2ae164f82b]
     Commit list: