X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fice_ethdev.c;h=84a0d8e0b371aaa64ab829e5c7a57bedfa931efe;hb=e40a84ebedf3d8f6ea00f6c10d0fc885a8163d43;hp=a4a0390f8c346ada65e9955023c1bf1085260a35;hpb=f0585e8559616399a655f5e129e98c90609a8c5d;p=dpdk.git diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index a4a0390f8c..84a0d8e0b3 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -2280,9 +2280,10 @@ ice_release_vsi(struct ice_vsi *vsi) struct ice_hw *hw; struct ice_vsi_ctx vsi_ctx; enum ice_status ret; + int error = 0; if (!vsi) - return 0; + return error; hw = ICE_VSI_TO_HW(vsi); @@ -2295,12 +2296,13 @@ ice_release_vsi(struct ice_vsi *vsi) ret = ice_free_vsi(hw, vsi->idx, &vsi_ctx, false, NULL); if (ret != ICE_SUCCESS) { PMD_INIT_LOG(ERR, "Failed to free vsi by aq, %u", vsi->vsi_id); - rte_free(vsi); - return -1; + error = -1; } + rte_free(vsi->rss_lut); + rte_free(vsi->rss_key); rte_free(vsi); - return 0; + return error; } void @@ -2666,12 +2668,6 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf) if (ret) PMD_DRV_LOG(ERR, "%s GTPU_EH_IPV4_SCTP rss flow fail %d", __func__, ret); - - ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_SCTP_IPV4, - ICE_FLOW_SEG_HDR_PPPOE, 0); - if (ret) - PMD_DRV_LOG(ERR, "%s PPPoE_IPV4_SCTP rss flow fail %d", - __func__, ret); } if (rss_hf & ETH_RSS_NONFRAG_IPV6_SCTP) { @@ -2686,12 +2682,6 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf) if (ret) PMD_DRV_LOG(ERR, "%s GTPU_EH_IPV6_SCTP rss flow fail %d", __func__, ret); - - ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_SCTP_IPV6, - ICE_FLOW_SEG_HDR_PPPOE, 0); - if (ret) - PMD_DRV_LOG(ERR, "%s PPPoE_IPV6_SCTP rss flow fail %d", - __func__, ret); } } @@ -2717,13 +2707,24 @@ static int ice_init_rss(struct ice_pf *pf) return 0; } - if (!vsi->rss_key) + if (!vsi->rss_key) { vsi->rss_key = rte_zmalloc(NULL, vsi->rss_key_size, 0); - if (!vsi->rss_lut) + if (vsi->rss_key == NULL) { + PMD_DRV_LOG(ERR, "Failed to allocate memory for rss_key"); + return -ENOMEM; + } + } + if (!vsi->rss_lut) { vsi->rss_lut = rte_zmalloc(NULL, vsi->rss_lut_size, 0); - + if (vsi->rss_lut == NULL) { + PMD_DRV_LOG(ERR, "Failed to allocate memory for rss_key"); + rte_free(vsi->rss_key); + vsi->rss_key = NULL; + return -ENOMEM; + } + } /* configure RSS key */ if (!rss_conf->rss_key) { /* Calculate the default hash key */ @@ -2737,7 +2738,7 @@ static int ice_init_rss(struct ice_pf *pf) rte_memcpy(key.standard_rss_key, vsi->rss_key, vsi->rss_key_size); ret = ice_aq_set_rss_key(hw, vsi->idx, &key); if (ret) - return -EINVAL; + goto out; /* init RSS LUT table */ for (i = 0; i < vsi->rss_lut_size; i++) @@ -2747,7 +2748,7 @@ static int ice_init_rss(struct ice_pf *pf) ICE_AQC_GSET_RSS_LUT_TABLE_TYPE_PF, vsi->rss_lut, vsi->rss_lut_size); if (ret) - return -EINVAL; + goto out; /* Enable registers for symmetric_toeplitz function. */ reg = ICE_READ_REG(hw, VSIQF_HASH_CTL(vsi->vsi_id)); @@ -2759,6 +2760,12 @@ static int ice_init_rss(struct ice_pf *pf) ice_rss_hash_set(pf, rss_conf->rss_hf); return 0; +out: + rte_free(vsi->rss_key); + vsi->rss_key = NULL; + rte_free(vsi->rss_lut); + vsi->rss_lut = NULL; + return -EINVAL; } static int