netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net] net/mlx5e: limit log messages due to (ovs) probing to _once
@ 2020-04-03  0:11 Marcelo Ricardo Leitner
  2020-04-03  2:27 ` Saeed Mahameed
  0 siblings, 1 reply; 10+ messages in thread
From: Marcelo Ricardo Leitner @ 2020-04-03  0:11 UTC (permalink / raw)
  To: netdev; +Cc: Saeed Mahameed, Leon Romanovsky, linux-rdma, marcelo.leitner

OVS will keep adding such flows, no matter what. They will usually be
handled by tc software (or ovs datapath, if skip_sw is used). But the
driver is logging these messages for each and every attempt, despite the
extack. Note that they weren't rate limited, and a broadcast storm could
trigger system console flooding.

Switch these to be _once. It's enough to tell the sysadmin what is
happenning, and if anything, the OVS log will have all the errors.

Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
---
 .../net/ethernet/mellanox/mlx5/core/en_tc.c   | 61 ++++++++++---------
 1 file changed, 32 insertions(+), 29 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
index 438128dde187d7ec58892c2879c6037f807f576f..1182fba3edbb8cf7bd59557b7ece18765c704186 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -1828,8 +1828,8 @@ enc_opts_is_dont_care_or_full_match(struct mlx5e_priv *priv,
 				       opt->length * 4)) {
 				NL_SET_ERR_MSG(extack,
 					       "Partial match of tunnel options in chain > 0 isn't supported");
-				netdev_warn(priv->netdev,
-					    "Partial match of tunnel options in chain > 0 isn't supported");
+				netdev_warn_once(priv->netdev,
+						 "Partial match of tunnel options in chain > 0 isn't supported");
 				return -EOPNOTSUPP;
 			}
 		}
@@ -1988,8 +1988,8 @@ static int parse_tunnel_attr(struct mlx5e_priv *priv,
 	    !mlx5_eswitch_reg_c1_loopback_enabled(esw)) {
 		NL_SET_ERR_MSG(extack,
 			       "Chains on tunnel devices isn't supported without register loopback support");
-		netdev_warn(priv->netdev,
-			    "Chains on tunnel devices isn't supported without register loopback support");
+		netdev_warn_once(priv->netdev,
+				 "Chains on tunnel devices isn't supported without register loopback support");
 		return -EOPNOTSUPP;
 	}
 
@@ -2133,8 +2133,8 @@ static int __parse_cls_flower(struct mlx5e_priv *priv,
 	      BIT(FLOW_DISSECTOR_KEY_ENC_IP) |
 	      BIT(FLOW_DISSECTOR_KEY_ENC_OPTS))) {
 		NL_SET_ERR_MSG_MOD(extack, "Unsupported key");
-		netdev_warn(priv->netdev, "Unsupported key used: 0x%x\n",
-			    dissector->used_keys);
+		netdev_warn_once(priv->netdev, "Unsupported key used: 0x%x\n",
+				 dissector->used_keys);
 		return -EOPNOTSUPP;
 	}
 
@@ -2484,8 +2484,8 @@ static int parse_cls_flower(struct mlx5e_priv *priv,
 		    esw->offloads.inline_mode < non_tunnel_match_level)) {
 			NL_SET_ERR_MSG_MOD(extack,
 					   "Flow is not offloaded due to min inline setting");
-			netdev_warn(priv->netdev,
-				    "Flow is not offloaded due to min inline setting, required %d actual %d\n",
+			netdev_warn_once(priv->netdev,
+					 "Flow is not offloaded due to min inline setting, required %d actual %d\n",
 				    non_tunnel_match_level, esw->offloads.inline_mode);
 			return -EOPNOTSUPP;
 		}
@@ -2885,7 +2885,9 @@ static int alloc_tc_pedit_action(struct mlx5e_priv *priv, int namespace,
 		if (memcmp(cmd_masks, &zero_masks, sizeof(zero_masks))) {
 			NL_SET_ERR_MSG_MOD(extack,
 					   "attempt to offload an unsupported field");
-			netdev_warn(priv->netdev, "attempt to offload an unsupported field (cmd %d)\n", cmd);
+			netdev_warn_once(priv->netdev,
+					 "attempt to offload an unsupported field (cmd %d)\n",
+					 cmd);
 			print_hex_dump(KERN_WARNING, "mask: ", DUMP_PREFIX_ADDRESS,
 				       16, 1, cmd_masks, sizeof(zero_masks), true);
 			err = -EOPNOTSUPP;
@@ -2912,17 +2914,17 @@ static bool csum_offload_supported(struct mlx5e_priv *priv,
 	if (!(action & MLX5_FLOW_CONTEXT_ACTION_MOD_HDR)) {
 		NL_SET_ERR_MSG_MOD(extack,
 				   "TC csum action is only offloaded with pedit");
-		netdev_warn(priv->netdev,
-			    "TC csum action is only offloaded with pedit\n");
+		netdev_warn_once(priv->netdev,
+				 "TC csum action is only offloaded with pedit\n");
 		return false;
 	}
 
 	if (update_flags & ~prot_flags) {
 		NL_SET_ERR_MSG_MOD(extack,
 				   "can't offload TC csum action for some header/s");
-		netdev_warn(priv->netdev,
-			    "can't offload TC csum action for some header/s - flags %#x\n",
-			    update_flags);
+		netdev_warn_once(priv->netdev,
+				 "can't offload TC csum action for some header/s - flags %#x\n",
+				 update_flags);
 		return false;
 	}
 
@@ -3224,8 +3226,9 @@ static int parse_tc_nic_actions(struct mlx5e_priv *priv,
 			} else {
 				NL_SET_ERR_MSG_MOD(extack,
 						   "device is not on same HW, can't offload");
-				netdev_warn(priv->netdev, "device %s not on same HW, can't offload\n",
-					    peer_dev->name);
+				netdev_warn_once(priv->netdev,
+						 "device %s not on same HW, can't offload\n",
+						 peer_dev->name);
 				return -EINVAL;
 			}
 			}
@@ -3754,9 +3757,9 @@ static int parse_tc_fdb_actions(struct mlx5e_priv *priv,
 			if (attr->out_count >= MLX5_MAX_FLOW_FWD_VPORTS) {
 				NL_SET_ERR_MSG_MOD(extack,
 						   "can't support more output ports, can't offload forwarding");
-				netdev_warn(priv->netdev,
-					    "can't support more than %d output ports, can't offload forwarding\n",
-					    attr->out_count);
+				netdev_warn_once(priv->netdev,
+						 "can't support more than %d output ports, can't offload forwarding\n",
+						 attr->out_count);
 				return -EOPNOTSUPP;
 			}
 
@@ -3821,10 +3824,10 @@ static int parse_tc_fdb_actions(struct mlx5e_priv *priv,
 				if (!mlx5e_is_valid_eswitch_fwd_dev(priv, out_dev)) {
 					NL_SET_ERR_MSG_MOD(extack,
 							   "devices are not on same switch HW, can't offload forwarding");
-					netdev_warn(priv->netdev,
-						    "devices %s %s not on same switch HW, can't offload forwarding\n",
-						    priv->netdev->name,
-						    out_dev->name);
+					netdev_warn_once(priv->netdev,
+							 "devices %s %s not on same switch HW, can't offload forwarding\n",
+							 priv->netdev->name,
+							 out_dev->name);
 					return -EOPNOTSUPP;
 				}
 
@@ -3843,10 +3846,10 @@ static int parse_tc_fdb_actions(struct mlx5e_priv *priv,
 			} else {
 				NL_SET_ERR_MSG_MOD(extack,
 						   "devices are not on same switch HW, can't offload forwarding");
-				netdev_warn(priv->netdev,
-					    "devices %s %s not on same switch HW, can't offload forwarding\n",
-					    priv->netdev->name,
-					    out_dev->name);
+				netdev_warn_once(priv->netdev,
+						 "devices %s %s not on same switch HW, can't offload forwarding\n",
+						 priv->netdev->name,
+						 out_dev->name);
 				return -EINVAL;
 			}
 			}
@@ -3959,8 +3962,8 @@ static int parse_tc_fdb_actions(struct mlx5e_priv *priv,
 
 			NL_SET_ERR_MSG(extack,
 				       "Decap with goto isn't supported");
-			netdev_warn(priv->netdev,
-				    "Decap with goto isn't supported");
+			netdev_warn_once(priv->netdev,
+					 "Decap with goto isn't supported");
 			return -EOPNOTSUPP;
 		}
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-04-13 14:29 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-03  0:11 [PATCH net] net/mlx5e: limit log messages due to (ovs) probing to _once Marcelo Ricardo Leitner
2020-04-03  2:27 ` Saeed Mahameed
2020-04-03  2:48   ` marcelo.leitner
2020-04-08 19:51     ` Saeed Mahameed
2020-04-08 21:54       ` marcelo.leitner
2020-04-08 22:38         ` Saeed Mahameed
2020-04-08 22:42           ` marcelo.leitner
2020-04-12  8:14             ` Roi Dayan
2020-04-13  6:35               ` Or Gerlitz
2020-04-13 14:29                 ` Marcelo Ricardo Leitner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).