if (param->rx_jumbo_pending || param->rx_mini_pending)
                return -EINVAL;
 
+       if (param->rx_pending < MLX4_EN_MIN_RX_SIZE) {
+               en_warn(priv, "%s: rx_pending (%d) < min (%d)\n",
+                       __func__, param->rx_pending,
+                       MLX4_EN_MIN_RX_SIZE);
+               return -EINVAL;
+       }
+       if (param->tx_pending < MLX4_EN_MIN_TX_SIZE) {
+               en_warn(priv, "%s: tx_pending (%d) < min (%lu)\n",
+                       __func__, param->tx_pending,
+                       MLX4_EN_MIN_TX_SIZE);
+               return -EINVAL;
+       }
+
        rx_size = roundup_pow_of_two(param->rx_pending);
-       rx_size = max_t(u32, rx_size, MLX4_EN_MIN_RX_SIZE);
-       rx_size = min_t(u32, rx_size, MLX4_EN_MAX_RX_SIZE);
        tx_size = roundup_pow_of_two(param->tx_pending);
-       tx_size = max_t(u32, tx_size, MLX4_EN_MIN_TX_SIZE);
-       tx_size = min_t(u32, tx_size, MLX4_EN_MAX_TX_SIZE);
 
        if (rx_size == (priv->port_up ? priv->rx_ring[0]->actual_size :
                                        priv->rx_ring[0]->size) &&