[Intel-wired-lan] [net-next, v2 2/2] ice: Accumulate ring statistics over reset
Jacob Keller
jacob.e.keller at intel.com
Fri Oct 14 22:44:08 UTC 2022
On 10/10/2022 12:22 PM, Benjamin Mikailenko wrote:
> +/**
> + * ice_vsi_alloc_stat_arrays - Allocate statistics arrays
> + * @vsi: VSI pointer
> + */
> +static int ice_vsi_alloc_stat_arrays(struct ice_vsi *vsi)
> +{
> + struct ice_vsi_stats *vsi_stat;
> + struct ice_pf *pf = vsi->back;
> + struct device *dev;
> +
> + dev = ice_pf_to_dev(pf);
> +
> + if (vsi->type == ICE_VSI_CHNL)
> + return 0;
> + if (!pf->vsi_stats)
> + return -ENOENT;
> +
> + vsi_stat = devm_kzalloc(dev, sizeof(*vsi_stat), GFP_KERNEL);
> + if (!vsi_stat)
> + return -ENOMEM;
> +
> + pf->vsi_stats[vsi->idx] = vsi_stat;
> +
This should also be moved to the end of the function so that we don't
modify pf->vsi_stats unless this function succeeds.
> + vsi_stat->tx_ring_stats =
> + devm_kcalloc(dev, vsi->alloc_txq,
> + sizeof(*vsi_stat->tx_ring_stats), GFP_KERNEL);
> +
> + vsi_stat->rx_ring_stats =
> + devm_kcalloc(dev, vsi->alloc_rxq,
> + sizeof(*vsi_stat->rx_ring_stats), GFP_KERNEL);
> +
> + if (!vsi_stat->tx_ring_stats || !vsi_stat->rx_ring_stats)
> + goto err_alloc;
> +
> + return 0;
> +
> +err_alloc:
> + devm_kfree(dev, vsi_stat->tx_ring_stats);
> + vsi_stat->tx_ring_stats = NULL;
> + devm_kfree(dev, vsi_stat->rx_ring_stats);
> + vsi_stat->rx_ring_stats = NULL;
> + devm_kfree(dev, vsi_stat);
> + pf->vsi_stats[vsi->idx] = NULL;
> + return -ENOMEM;
> +}
More information about the Intel-wired-lan
mailing list