summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIoana Radulescu <ruxandra.radulescu@nxp.com>2018-03-23 08:44:10 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-03-23 16:01:56 +0100
commite018f1fd99adcd8e467ac60796ea93f5d86d2afe (patch)
tree9fe660cac7b6e32d7dfabef79450838a9e98319c
parent311cffa5e2c86532c0e3b7ba11a860424c4647d7 (diff)
downloadop-kernel-dev-e018f1fd99adcd8e467ac60796ea93f5d86d2afe.zip
op-kernel-dev-e018f1fd99adcd8e467ac60796ea93f5d86d2afe.tar.gz
staging: fsl-dpaa2/eth: Change link settings on the fly
Newer MC versions allow us to change link settings while the interface is up. Only check interface status if we are using an old version. Signed-off-by: Ioana Radulescu <ruxandra.radulescu@nxp.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c
index dfbfa94..bfc8b64 100644
--- a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c
@@ -119,6 +119,8 @@ out:
return err;
}
+#define DPNI_DYNAMIC_LINK_SET_VER_MAJOR 7
+#define DPNI_DYNAMIC_LINK_SET_VER_MINOR 1
static int
dpaa2_eth_set_link_ksettings(struct net_device *net_dev,
const struct ethtool_link_ksettings *link_settings)
@@ -127,15 +129,16 @@ dpaa2_eth_set_link_ksettings(struct net_device *net_dev,
struct dpaa2_eth_priv *priv = netdev_priv(net_dev);
int err = 0;
- netdev_dbg(net_dev, "Setting link parameters...");
-
- /* Due to a temporary MC limitation, the DPNI must be down
+ /* If using an older MC version, the DPNI must be down
* in order to be able to change link settings. Taking steps to let
* the user know that.
*/
- if (netif_running(net_dev)) {
- netdev_info(net_dev, "Sorry, interface must be brought down first.\n");
- return -EACCES;
+ if (dpaa2_eth_cmp_dpni_ver(priv, DPNI_DYNAMIC_LINK_SET_VER_MAJOR,
+ DPNI_DYNAMIC_LINK_SET_VER_MINOR) < 0) {
+ if (netif_running(net_dev)) {
+ netdev_info(net_dev, "Interface must be brought down first.\n");
+ return -EACCES;
+ }
}
cfg.rate = link_settings->base.speed;
OpenPOWER on IntegriCloud