Skip to content

Commit c8f1568

Browse files
Anton Vorontsovdavem330
authored andcommitted
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 <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 3d0f24a commit c8f1568

File tree

8 files changed

+5
-25
lines changed

8 files changed

+5
-25
lines changed

drivers/net/au1000_eth.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -911,9 +911,8 @@ au1000_adjust_link(struct net_device *dev)
911911
if(phydev->link != aup->old_link) {
912912
// link state changed
913913

914-
if (phydev->link) // link went up
915-
netif_tx_schedule_all(dev);
916-
else { // link went down
914+
if (!phydev->link) {
915+
/* link went down */
917916
aup->old_speed = 0;
918917
aup->old_duplex = -1;
919918
}

drivers/net/bfin_mac.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,6 @@ static void bfin_mac_adjust_link(struct net_device *dev)
357357
if (!lp->old_link) {
358358
new_state = 1;
359359
lp->old_link = 1;
360-
netif_tx_schedule_all(dev);
361360
}
362361
} else if (lp->old_link) {
363362
new_state = 1;

drivers/net/cpmac.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -945,10 +945,8 @@ static void cpmac_adjust_link(struct net_device *dev)
945945
if (!priv->oldlink) {
946946
new_state = 1;
947947
priv->oldlink = 1;
948-
netif_tx_schedule_all(dev);
949948
}
950949
} else if (priv->oldlink) {
951-
netif_tx_stop_all_queues(dev);
952950
new_state = 1;
953951
priv->oldlink = 0;
954952
priv->oldspeed = 0;

drivers/net/fec_mpc52xx.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -197,18 +197,13 @@ static void mpc52xx_fec_adjust_link(struct net_device *dev)
197197
if (priv->link == PHY_DOWN) {
198198
new_state = 1;
199199
priv->link = phydev->link;
200-
netif_tx_schedule_all(dev);
201-
netif_carrier_on(dev);
202-
netif_start_queue(dev);
203200
}
204201

205202
} else if (priv->link) {
206203
new_state = 1;
207204
priv->link = PHY_DOWN;
208205
priv->speed = 0;
209206
priv->duplex = -1;
210-
netif_stop_queue(dev);
211-
netif_carrier_off(dev);
212207
}
213208

214209
if (new_state && netif_msg_link(priv))

drivers/net/fs_enet/fs_enet-main.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -738,9 +738,6 @@ static void generic_adjust_link(struct net_device *dev)
738738
if (!fep->oldlink) {
739739
new_state = 1;
740740
fep->oldlink = 1;
741-
netif_tx_schedule_all(dev);
742-
netif_carrier_on(dev);
743-
netif_start_queue(dev);
744741
}
745742

746743
if (new_state)
@@ -750,8 +747,6 @@ static void generic_adjust_link(struct net_device *dev)
750747
fep->oldlink = 0;
751748
fep->oldspeed = 0;
752749
fep->oldduplex = -1;
753-
netif_carrier_off(dev);
754-
netif_stop_queue(dev);
755750
}
756751

757752
if (new_state && netif_msg_link(fep))
@@ -826,6 +821,8 @@ static int fs_enet_open(struct net_device *dev)
826821
}
827822
phy_start(fep->phydev);
828823

824+
netif_start_queue(dev);
825+
829826
return 0;
830827
}
831828

drivers/net/macb.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,7 @@ static void macb_handle_link_change(struct net_device *dev)
164164
}
165165

166166
if (phydev->link != bp->link) {
167-
if (phydev->link)
168-
netif_tx_schedule_all(dev);
169-
else {
167+
if (!phydev->link) {
170168
bp->speed = 0;
171169
bp->duplex = -1;
172170
}

drivers/net/sh_eth.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -642,17 +642,12 @@ static void sh_eth_adjust_link(struct net_device *ndev)
642642
| ECMR_DM, ioaddr + ECMR);
643643
new_state = 1;
644644
mdp->link = phydev->link;
645-
netif_tx_schedule_all(ndev);
646-
netif_carrier_on(ndev);
647-
netif_start_queue(ndev);
648645
}
649646
} else if (mdp->link) {
650647
new_state = 1;
651648
mdp->link = PHY_DOWN;
652649
mdp->speed = 0;
653650
mdp->duplex = -1;
654-
netif_stop_queue(ndev);
655-
netif_carrier_off(ndev);
656651
}
657652

658653
if (new_state)

drivers/net/tc35815.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -672,7 +672,6 @@ static void tc_handle_link_change(struct net_device *dev)
672672
if (dev->flags & IFF_PROMISC)
673673
tc35815_set_multicast_list(dev);
674674
#endif
675-
netif_tx_schedule_all(dev);
676675
} else {
677676
lp->speed = 0;
678677
lp->duplex = -1;

0 commit comments

Comments
 (0)