diff --git a/SOURCES/openvswitch-3.3.0.patch b/SOURCES/openvswitch-3.3.0.patch index 7ad39ba..91bdfab 100644 --- a/SOURCES/openvswitch-3.3.0.patch +++ b/SOURCES/openvswitch-3.3.0.patch @@ -16196,6 +16196,30 @@ index 9daac4bc03..860e702333 100644 dpaax_iova_table_p = NULL; DPAAX_DEBUG("IOVA Table cleaned"); +diff --git a/dpdk/drivers/common/iavf/iavf_prototype.h b/dpdk/drivers/common/iavf/iavf_prototype.h +index ba78ec5169..7c43a817bb 100644 +--- a/dpdk/drivers/common/iavf/iavf_prototype.h ++++ b/dpdk/drivers/common/iavf/iavf_prototype.h +@@ -79,6 +79,7 @@ STATIC INLINE struct iavf_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype) + __rte_internal + void iavf_vf_parse_hw_config(struct iavf_hw *hw, + struct virtchnl_vf_resource *msg); ++__rte_internal + enum iavf_status iavf_vf_reset(struct iavf_hw *hw); + __rte_internal + enum iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw, +diff --git a/dpdk/drivers/common/iavf/version.map b/dpdk/drivers/common/iavf/version.map +index e0f117197c..6c1427cca4 100644 +--- a/dpdk/drivers/common/iavf/version.map ++++ b/dpdk/drivers/common/iavf/version.map +@@ -7,6 +7,7 @@ INTERNAL { + iavf_set_mac_type; + iavf_shutdown_adminq; + iavf_vf_parse_hw_config; ++ iavf_vf_reset; + + local: *; + }; diff --git a/dpdk/drivers/common/idpf/base/virtchnl2.h b/dpdk/drivers/common/idpf/base/virtchnl2.h index 3900b784d0..21b2039aa2 100644 --- a/dpdk/drivers/common/idpf/base/virtchnl2.h @@ -23835,7 +23859,7 @@ index 10868f2c30..d273d884f5 100644 +void iavf_set_no_poll(struct iavf_adapter *adapter, bool link_change); #endif /* _IAVF_ETHDEV_H_ */ diff --git a/dpdk/drivers/net/iavf/iavf_ethdev.c b/dpdk/drivers/net/iavf/iavf_ethdev.c -index d1edb0dd5c..54bff05675 100644 +index d1edb0dd5c..c183ede113 100644 --- a/dpdk/drivers/net/iavf/iavf_ethdev.c +++ b/dpdk/drivers/net/iavf/iavf_ethdev.c @@ -296,6 +296,7 @@ iavf_dev_watchdog(void *cb_arg) @@ -23904,7 +23928,15 @@ index d1edb0dd5c..54bff05675 100644 if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_CRC) dev_info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_KEEP_CRC; -@@ -2916,8 +2917,10 @@ iavf_dev_close(struct rte_eth_dev *dev) +@@ -2874,6 +2875,7 @@ iavf_dev_close(struct rte_eth_dev *dev) + if (vf->promisc_unicast_enabled || vf->promisc_multicast_enabled) + iavf_config_promisc(adapter, false, false); + ++ iavf_vf_reset(hw); + iavf_shutdown_adminq(hw); + if (vf->vf_res->vf_cap_flags & VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) { + /* disable uio intr before callback unregister */ +@@ -2916,8 +2918,10 @@ iavf_dev_close(struct rte_eth_dev *dev) * effect. */ out: @@ -23916,28 +23948,19 @@ index d1edb0dd5c..54bff05675 100644 /* disable watchdog */ iavf_dev_watchdog_disable(adapter); -@@ -2948,9 +2951,20 @@ static int +@@ -2948,9 +2952,9 @@ static int iavf_dev_reset(struct rte_eth_dev *dev) { int ret; + struct iavf_adapter *adapter = + IAVF_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private); struct iavf_hw *hw = IAVF_DEV_PRIVATE_TO_HW(dev->data->dev_private); - struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - -+ if (!vf->in_reset_recovery) { -+ ret = iavf_aq_send_msg_to_pf(hw, VIRTCHNL_OP_RESET_VF, -+ IAVF_SUCCESS, NULL, 0, NULL); -+ if (ret) { -+ PMD_DRV_LOG(ERR, "fail to send cmd VIRTCHNL_OP_RESET_VF"); -+ return ret; -+ } -+ } -+ +- struct iavf_info *vf = IAVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); +- /* * Check whether the VF reset has been done and inform application, * to avoid calling the virtual channel command, which may cause -@@ -2961,7 +2975,7 @@ iavf_dev_reset(struct rte_eth_dev *dev) +@@ -2961,7 +2965,7 @@ iavf_dev_reset(struct rte_eth_dev *dev) PMD_DRV_LOG(ERR, "Wait too long for reset done!\n"); return ret; } @@ -23946,7 +23969,7 @@ index d1edb0dd5c..54bff05675 100644 PMD_DRV_LOG(DEBUG, "Start dev_reset ...\n"); ret = iavf_dev_uninit(dev); -@@ -2971,16 +2985,49 @@ iavf_dev_reset(struct rte_eth_dev *dev) +@@ -2971,16 +2975,49 @@ iavf_dev_reset(struct rte_eth_dev *dev) return iavf_dev_init(dev); } @@ -23997,7 +24020,7 @@ index d1edb0dd5c..54bff05675 100644 ret = iavf_dev_reset(dev); if (ret) -@@ -2997,15 +3044,26 @@ iavf_handle_hw_reset(struct rte_eth_dev *dev) +@@ -2997,15 +3034,26 @@ iavf_handle_hw_reset(struct rte_eth_dev *dev) ret = iavf_dev_start(dev); if (ret) goto error; diff --git a/SPECS/openvswitch3.3.spec b/SPECS/openvswitch3.3.spec index d8f4b9c..0028869 100644 --- a/SPECS/openvswitch3.3.spec +++ b/SPECS/openvswitch3.3.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 3.3.0 -Release: 14%{?dist} +Release: 15%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -769,6 +769,12 @@ exit 0 %endif %changelog +* Mon Nov 18 2024 Open vSwitch CI - 3.3.0-15 +- Merging dpdk subtree [RH git: edff947ee5] + Commit list: + 78610a5530 net/iavf: delay VF reset command (FDP-957) + + * Sat Nov 16 2024 Open vSwitch CI - 3.3.0-14 - Merging upstream branch-3.3 [RH git: 1acada6b7f] Commit list: