X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fice_dcf_parent.c;h=2f96dedcce1c4aa8cc5b239718283d212fd10a2e;hb=3d6502ee01a92f445f84af6e0660c5a0044acc35;hp=04078345eb0c305899e36227230ef86034d7a968;hpb=1a86f4dbdf42792c639ecd5124b4c5f96232769f;p=dpdk.git diff --git a/drivers/net/ice/ice_dcf_parent.c b/drivers/net/ice/ice_dcf_parent.c index 04078345eb..2f96dedcce 100644 --- a/drivers/net/ice/ice_dcf_parent.c +++ b/drivers/net/ice/ice_dcf_parent.c @@ -119,7 +119,9 @@ ice_dcf_vsi_update_service_handler(void *param) { struct ice_dcf_reset_event_param *reset_param = param; struct ice_dcf_hw *hw = reset_param->dcf_hw; - struct ice_dcf_adapter *adapter; + struct ice_dcf_adapter *adapter = + container_of(hw, struct ice_dcf_adapter, real_hw); + struct ice_adapter *parent_adapter = &adapter->parent; pthread_detach(pthread_self()); @@ -127,11 +129,12 @@ ice_dcf_vsi_update_service_handler(void *param) rte_spinlock_lock(&vsi_update_lock); - adapter = container_of(hw, struct ice_dcf_adapter, real_hw); - - if (!ice_dcf_handle_vsi_update_event(hw)) + if (!ice_dcf_handle_vsi_update_event(hw)) { + __atomic_store_n(&parent_adapter->dcf_state_on, true, + __ATOMIC_RELAXED); ice_dcf_update_vf_vsi_map(&adapter->parent.hw, hw->num_vfs, hw->vf_vsi_map); + } if (reset_param->vfr && adapter->repr_infos) { struct rte_eth_dev *vf_rep_eth_dev = @@ -224,6 +227,9 @@ ice_dcf_handle_pf_event_msg(struct ice_dcf_hw *dcf_hw, uint8_t *msg, uint16_t msglen) { struct virtchnl_pf_event *pf_msg = (struct virtchnl_pf_event *)msg; + struct ice_dcf_adapter *adapter = + container_of(dcf_hw, struct ice_dcf_adapter, real_hw); + struct ice_adapter *parent_adapter = &adapter->parent; if (msglen < sizeof(struct virtchnl_pf_event)) { PMD_DRV_LOG(DEBUG, "Invalid event message length : %u", msglen); @@ -233,7 +239,6 @@ ice_dcf_handle_pf_event_msg(struct ice_dcf_hw *dcf_hw, switch (pf_msg->event) { case VIRTCHNL_EVENT_RESET_IMPENDING: PMD_DRV_LOG(DEBUG, "VIRTCHNL_EVENT_RESET_IMPENDING event"); - start_vsi_reset_thread(dcf_hw, false, 0); dcf_hw->resetting = true; break; case VIRTCHNL_EVENT_LINK_CHANGE: @@ -259,6 +264,8 @@ ice_dcf_handle_pf_event_msg(struct ice_dcf_hw *dcf_hw, PMD_DRV_LOG(DEBUG, "VIRTCHNL_EVENT_DCF_VSI_MAP_UPDATE event : VF%u with VSI num %u", pf_msg->event_data.vf_vsi_map.vf_id, pf_msg->event_data.vf_vsi_map.vsi_id); + __atomic_store_n(&parent_adapter->dcf_state_on, false, + __ATOMIC_RELAXED); start_vsi_reset_thread(dcf_hw, true, pf_msg->event_data.vf_vsi_map.vf_id); break; @@ -333,7 +340,7 @@ ice_dcf_init_parent_hw(struct ice_hw *hw) goto err_unroll_alloc; /* Initialize port_info struct with link information */ - status = ice_aq_get_link_info(hw->port_info, false, NULL, NULL); + status = ice_aq_get_link_info(hw->port_info, true, NULL, NULL); if (status) goto err_unroll_alloc;