]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/marvell/mvneta.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[karo-tx-linux.git] / drivers / net / ethernet / marvell / mvneta.c
index 0c0a45af950f0978ee352195a3a27a6439b56d7e..0a24571e44b925622afdf586e48f98e06ba31a5d 100644 (file)
@@ -3024,29 +3024,6 @@ static void mvneta_stop_dev(struct mvneta_port *pp)
        mvneta_rx_reset(pp);
 }
 
-/* Return positive if MTU is valid */
-static int mvneta_check_mtu_valid(struct net_device *dev, int mtu)
-{
-       if (mtu < 68) {
-               netdev_err(dev, "cannot change mtu to less than 68\n");
-               return -EINVAL;
-       }
-
-       /* 9676 == 9700 - 20 and rounding to 8 */
-       if (mtu > 9676) {
-               netdev_info(dev, "Illegal MTU value %d, round to 9676\n", mtu);
-               mtu = 9676;
-       }
-
-       if (!IS_ALIGNED(MVNETA_RX_PKT_SIZE(mtu), 8)) {
-               netdev_info(dev, "Illegal MTU value %d, rounding to %d\n",
-                       mtu, ALIGN(MVNETA_RX_PKT_SIZE(mtu), 8));
-               mtu = ALIGN(MVNETA_RX_PKT_SIZE(mtu), 8);
-       }
-
-       return mtu;
-}
-
 static void mvneta_percpu_enable(void *arg)
 {
        struct mvneta_port *pp = arg;
@@ -3067,9 +3044,11 @@ static int mvneta_change_mtu(struct net_device *dev, int mtu)
        struct mvneta_port *pp = netdev_priv(dev);
        int ret;
 
-       mtu = mvneta_check_mtu_valid(dev, mtu);
-       if (mtu < 0)
-               return -EINVAL;
+       if (!IS_ALIGNED(MVNETA_RX_PKT_SIZE(mtu), 8)) {
+               netdev_info(dev, "Illegal MTU value %d, rounding to %d\n",
+                           mtu, ALIGN(MVNETA_RX_PKT_SIZE(mtu), 8));
+               mtu = ALIGN(MVNETA_RX_PKT_SIZE(mtu), 8);
+       }
 
        dev->mtu = mtu;
 
@@ -3832,6 +3811,7 @@ static const struct net_device_ops mvneta_netdev_ops = {
 };
 
 const struct ethtool_ops mvneta_eth_tool_ops = {
+       .nway_reset     = phy_ethtool_nway_reset,
        .get_link       = ethtool_op_get_link,
        .set_coalesce   = mvneta_ethtool_set_coalesce,
        .get_coalesce   = mvneta_ethtool_get_coalesce,
@@ -4154,6 +4134,11 @@ static int mvneta_probe(struct platform_device *pdev)
        dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
        dev->gso_max_segs = MVNETA_MAX_TSO_SEGS;
 
+       /* MTU range: 68 - 9676 */
+       dev->min_mtu = ETH_MIN_MTU;
+       /* 9676 == 9700 - 20 and rounding to 8 */
+       dev->max_mtu = 9676;
+
        err = register_netdev(dev);
        if (err < 0) {
                dev_err(&pdev->dev, "failed to register\n");