netdev: bunch of drivers: avoid WARN at net/core/dev.c:1328

The drivers were touching net queue before it has been started, so
without this patch, the drivers will potentially WARN at
net/core/dev.c:1328.

I don't have the hardware for the drivers below, so this patch is
untested, and thus should be carefully peer reviewed.

tc35815.c
au1000_eth.c
bfin_mac.c
macb.c
^ The four drivers are using phylib, they're calling netif_start_queue()
in open() callback. So trivially remove netif_tx_schedule_all().
Phylib will handle netif_carrier_*().

cpmac.c
fec_mpc52xx.c
fs_enet/fs_enet-main.c
sh_eth.c
^ The same as above, but these were also needlessly calling
netif_carrier_*() functions. So removed queue calls and also remove
carrier calls, since phylib will handle it. fs_enet-main.c also didn't
call netif_start_queue() at open(), this is fixed now.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Anton Vorontsov and committed by David S. Miller c8f15686 3d0f24a7

+5 -25
+2 -3
drivers/net/au1000_eth.c
··· 911 if(phydev->link != aup->old_link) { 912 // link state changed 913 914 - if (phydev->link) // link went up 915 - netif_tx_schedule_all(dev); 916 - else { // link went down 917 aup->old_speed = 0; 918 aup->old_duplex = -1; 919 }
··· 911 if(phydev->link != aup->old_link) { 912 // link state changed 913 914 + if (!phydev->link) { 915 + /* link went down */ 916 aup->old_speed = 0; 917 aup->old_duplex = -1; 918 }
-1
drivers/net/bfin_mac.c
··· 357 if (!lp->old_link) { 358 new_state = 1; 359 lp->old_link = 1; 360 - netif_tx_schedule_all(dev); 361 } 362 } else if (lp->old_link) { 363 new_state = 1;
··· 357 if (!lp->old_link) { 358 new_state = 1; 359 lp->old_link = 1; 360 } 361 } else if (lp->old_link) { 362 new_state = 1;
-2
drivers/net/cpmac.c
··· 945 if (!priv->oldlink) { 946 new_state = 1; 947 priv->oldlink = 1; 948 - netif_tx_schedule_all(dev); 949 } 950 } else if (priv->oldlink) { 951 - netif_tx_stop_all_queues(dev); 952 new_state = 1; 953 priv->oldlink = 0; 954 priv->oldspeed = 0;
··· 945 if (!priv->oldlink) { 946 new_state = 1; 947 priv->oldlink = 1; 948 } 949 } else if (priv->oldlink) { 950 new_state = 1; 951 priv->oldlink = 0; 952 priv->oldspeed = 0;
-5
drivers/net/fec_mpc52xx.c
··· 197 if (priv->link == PHY_DOWN) { 198 new_state = 1; 199 priv->link = phydev->link; 200 - netif_tx_schedule_all(dev); 201 - netif_carrier_on(dev); 202 - netif_start_queue(dev); 203 } 204 205 } else if (priv->link) { ··· 204 priv->link = PHY_DOWN; 205 priv->speed = 0; 206 priv->duplex = -1; 207 - netif_stop_queue(dev); 208 - netif_carrier_off(dev); 209 } 210 211 if (new_state && netif_msg_link(priv))
··· 197 if (priv->link == PHY_DOWN) { 198 new_state = 1; 199 priv->link = phydev->link; 200 } 201 202 } else if (priv->link) { ··· 207 priv->link = PHY_DOWN; 208 priv->speed = 0; 209 priv->duplex = -1; 210 } 211 212 if (new_state && netif_msg_link(priv))
+2 -5
drivers/net/fs_enet/fs_enet-main.c
··· 738 if (!fep->oldlink) { 739 new_state = 1; 740 fep->oldlink = 1; 741 - netif_tx_schedule_all(dev); 742 - netif_carrier_on(dev); 743 - netif_start_queue(dev); 744 } 745 746 if (new_state) ··· 747 fep->oldlink = 0; 748 fep->oldspeed = 0; 749 fep->oldduplex = -1; 750 - netif_carrier_off(dev); 751 - netif_stop_queue(dev); 752 } 753 754 if (new_state && netif_msg_link(fep)) ··· 820 return err; 821 } 822 phy_start(fep->phydev); 823 824 return 0; 825 }
··· 738 if (!fep->oldlink) { 739 new_state = 1; 740 fep->oldlink = 1; 741 } 742 743 if (new_state) ··· 750 fep->oldlink = 0; 751 fep->oldspeed = 0; 752 fep->oldduplex = -1; 753 } 754 755 if (new_state && netif_msg_link(fep)) ··· 825 return err; 826 } 827 phy_start(fep->phydev); 828 + 829 + netif_start_queue(dev); 830 831 return 0; 832 }
+1 -3
drivers/net/macb.c
··· 164 } 165 166 if (phydev->link != bp->link) { 167 - if (phydev->link) 168 - netif_tx_schedule_all(dev); 169 - else { 170 bp->speed = 0; 171 bp->duplex = -1; 172 }
··· 164 } 165 166 if (phydev->link != bp->link) { 167 + if (!phydev->link) { 168 bp->speed = 0; 169 bp->duplex = -1; 170 }
-5
drivers/net/sh_eth.c
··· 642 | ECMR_DM, ioaddr + ECMR); 643 new_state = 1; 644 mdp->link = phydev->link; 645 - netif_tx_schedule_all(ndev); 646 - netif_carrier_on(ndev); 647 - netif_start_queue(ndev); 648 } 649 } else if (mdp->link) { 650 new_state = 1; 651 mdp->link = PHY_DOWN; 652 mdp->speed = 0; 653 mdp->duplex = -1; 654 - netif_stop_queue(ndev); 655 - netif_carrier_off(ndev); 656 } 657 658 if (new_state)
··· 642 | ECMR_DM, ioaddr + ECMR); 643 new_state = 1; 644 mdp->link = phydev->link; 645 } 646 } else if (mdp->link) { 647 new_state = 1; 648 mdp->link = PHY_DOWN; 649 mdp->speed = 0; 650 mdp->duplex = -1; 651 } 652 653 if (new_state)
-1
drivers/net/tc35815.c
··· 672 if (dev->flags & IFF_PROMISC) 673 tc35815_set_multicast_list(dev); 674 #endif 675 - netif_tx_schedule_all(dev); 676 } else { 677 lp->speed = 0; 678 lp->duplex = -1;
··· 672 if (dev->flags & IFF_PROMISC) 673 tc35815_set_multicast_list(dev); 674 #endif 675 } else { 676 lp->speed = 0; 677 lp->duplex = -1;