diff options
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_ethtool.c')
| -rw-r--r-- | drivers/net/ethernet/intel/ice/ice_ethtool.c | 13 | 
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c index 8d5cbbd0b3d5..ad4d4702129f 100644 --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c @@ -2681,8 +2681,13 @@ ice_get_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring,  	ring->rx_max_pending = ICE_MAX_NUM_DESC;  	ring->tx_max_pending = ICE_MAX_NUM_DESC; -	ring->rx_pending = vsi->rx_rings[0]->count; -	ring->tx_pending = vsi->tx_rings[0]->count; +	if (vsi->tx_rings && vsi->rx_rings) { +		ring->rx_pending = vsi->rx_rings[0]->count; +		ring->tx_pending = vsi->tx_rings[0]->count; +	} else { +		ring->rx_pending = 0; +		ring->tx_pending = 0; +	}  	/* Rx mini and jumbo rings are not supported */  	ring->rx_mini_max_pending = 0; @@ -2716,6 +2721,10 @@ ice_set_ringparam(struct net_device *netdev, struct ethtool_ringparam *ring,  		return -EINVAL;  	} +	/* Return if there is no rings (device is reloading) */ +	if (!vsi->tx_rings || !vsi->rx_rings) +		return -EBUSY; +  	new_tx_cnt = ALIGN(ring->tx_pending, ICE_REQ_DESC_MULTIPLE);  	if (new_tx_cnt != ring->tx_pending)  		netdev_info(netdev, "Requested Tx descriptor count rounded up to %d\n",  |