Author: hselasky
Date: Wed Jan 27 15:01:08 2016
New Revision: 294920
URL: https://svnweb.freebsd.org/changeset/base/294920

Log:
  MFC r294319:
  Fix an issue where the network adapter could be left in down state
  after changing the HW LRO sysctl when previously in up state.
  
  Sponsored by: Mellanox Technologies
  Differential Revision:        https://reviews.freebsd.org/D4941

Modified:
  stable/10/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c
==============================================================================
--- stable/10/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c    Wed Jan 27 14:59:22 
2016        (r294919)
+++ stable/10/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c    Wed Jan 27 15:01:08 
2016        (r294920)
@@ -178,23 +178,21 @@ mlx5e_ethtool_handler(SYSCTL_HANDLER_ARG
        priv->params.tx_cq_moderation_mode = 
priv->params_ethtool.tx_coalesce_mode;
 
        /* we always agree to turn off HW LRO - but not always to turn on */
-       if (priv->params_ethtool.hw_lro) {
-               if (priv->params_ethtool.hw_lro != 1) {
-                       priv->params_ethtool.hw_lro = priv->params.hw_lro_en;
-                       error = EINVAL;
-                       goto done;
-               }
-               if (priv->ifp->if_capenable & IFCAP_LRO)
-                       priv->params.hw_lro_en = !!MLX5_CAP_ETH(priv->mdev, 
lro_cap);
-               else {
-                       /* set the correct (0) value to params_ethtool.hw_lro, 
issue a warning and return error */
+       if (priv->params_ethtool.hw_lro != 0) {
+               if ((priv->ifp->if_capenable & IFCAP_LRO) &&
+                   MLX5_CAP_ETH(priv->mdev, lro_cap)) {
+                       priv->params.hw_lro_en = 1;
+                       priv->params_ethtool.hw_lro = 1;
+               } else {
+                       priv->params.hw_lro_en = 0;
                        priv->params_ethtool.hw_lro = 0;
                        error = EINVAL;
-                       if_printf(priv->ifp, "Can't set HW_LRO to a device with 
LRO turned off");
-                       goto done;
+
+                       if_printf(priv->ifp, "Can't enable HW LRO: "
+                           "The HW or SW LRO feature is disabled");
                }
        } else {
-               priv->params.hw_lro_en = false;
+               priv->params.hw_lro_en = 0;
        }
 
        if (&priv->params_ethtool.arg[arg2] ==
@@ -208,7 +206,6 @@ mlx5e_ethtool_handler(SYSCTL_HANDLER_ARG
                        priv->params_ethtool.cqe_zipping = 0;
                }
        }
-
        if (was_opened)
                mlx5e_open_locked(priv->ifp);
 done:
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to