net/mlx4_core: Add explicit error message when rule doesn't meet configuration
authorMatan Barak <matanb@mellanox.com>
Thu, 11 Dec 2014 08:57:58 +0000 (10:57 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 11 Dec 2014 19:47:35 +0000 (14:47 -0500)
When a given flow steering rule is invalid in respect to the current
steering configuration, print the correct error message to the system log.

Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/mcg.c

index 872843179f44af3c7442614477bd2af131118347..a3867e7ef8859811c7d8ee132e966cfe26709a6e 100644 (file)
@@ -999,12 +999,27 @@ int mlx4_flow_attach(struct mlx4_dev *dev,
        }
 
        ret = mlx4_QP_FLOW_STEERING_ATTACH(dev, mailbox, size >> 2, reg_id);
-       if (ret == -ENOMEM)
+       if (ret == -ENOMEM) {
                mlx4_err_rule(dev,
                              "mcg table is full. Fail to register network rule\n",
                              rule);
-       else if (ret)
-               mlx4_err_rule(dev, "Fail to register network rule\n", rule);
+       } else if (ret) {
+               if (ret == -ENXIO) {
+                       if (dev->caps.steering_mode != MLX4_STEERING_MODE_DEVICE_MANAGED)
+                               mlx4_err_rule(dev,
+                                             "DMFS is not enabled, "
+                                             "failed to register network rule.\n",
+                                             rule);
+                       else
+                               mlx4_err_rule(dev,
+                                             "Rule exceeds the dmfs_high_rate_mode limitations, "
+                                             "failed to register network rule.\n",
+                                             rule);
+
+               } else {
+                       mlx4_err_rule(dev, "Fail to register network rule.\n", rule);
+               }
+       }
 
        mlx4_free_cmd_mailbox(dev, mailbox);