|
@@ -1801,30 +1801,29 @@ static int mlx4_en_set_priv_flags(struct net_device *dev, u32 flags)
|
|
|
bool bf_enabled_old = !!(priv->pflags & MLX4_EN_PRIV_FLAGS_BLUEFLAME);
|
|
|
int i;
|
|
|
|
|
|
- if (bf_enabled_new == bf_enabled_old)
|
|
|
- return 0; /* Nothing to do */
|
|
|
+ if (bf_enabled_new != bf_enabled_old) {
|
|
|
+ if (bf_enabled_new) {
|
|
|
+ bool bf_supported = true;
|
|
|
|
|
|
- if (bf_enabled_new) {
|
|
|
- bool bf_supported = true;
|
|
|
+ for (i = 0; i < priv->tx_ring_num; i++)
|
|
|
+ bf_supported &= priv->tx_ring[i]->bf_alloced;
|
|
|
|
|
|
- for (i = 0; i < priv->tx_ring_num; i++)
|
|
|
- bf_supported &= priv->tx_ring[i]->bf_alloced;
|
|
|
+ if (!bf_supported) {
|
|
|
+ en_err(priv, "BlueFlame is not supported\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
|
|
|
- if (!bf_supported) {
|
|
|
- en_err(priv, "BlueFlame is not supported\n");
|
|
|
- return -EINVAL;
|
|
|
+ priv->pflags |= MLX4_EN_PRIV_FLAGS_BLUEFLAME;
|
|
|
+ } else {
|
|
|
+ priv->pflags &= ~MLX4_EN_PRIV_FLAGS_BLUEFLAME;
|
|
|
}
|
|
|
|
|
|
- priv->pflags |= MLX4_EN_PRIV_FLAGS_BLUEFLAME;
|
|
|
- } else {
|
|
|
- priv->pflags &= ~MLX4_EN_PRIV_FLAGS_BLUEFLAME;
|
|
|
- }
|
|
|
-
|
|
|
- for (i = 0; i < priv->tx_ring_num; i++)
|
|
|
- priv->tx_ring[i]->bf_enabled = bf_enabled_new;
|
|
|
+ for (i = 0; i < priv->tx_ring_num; i++)
|
|
|
+ priv->tx_ring[i]->bf_enabled = bf_enabled_new;
|
|
|
|
|
|
- en_info(priv, "BlueFlame %s\n",
|
|
|
- bf_enabled_new ? "Enabled" : "Disabled");
|
|
|
+ en_info(priv, "BlueFlame %s\n",
|
|
|
+ bf_enabled_new ? "Enabled" : "Disabled");
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
|
}
|