net/fec: Don't let ndo_start_xmit return NETDEV_TX_BUSY without link
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Tue, 30 Jul 2013 09:29:40 +0000 (11:29 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 30 Jul 2013 23:05:04 +0000 (16:05 -0700)
Don't test for having link and let hardware deal with this situation.

Without this patch I see a machine running an -rt patched Linux being
stuck in sch_direct_xmit when it looses link while there is still a
packet to be sent. In this case the fec_enet_start_xmit routine returned
NETDEV_TX_BUSY which makes the network stack reschedule the packet and
so sch_direct_xmit calls fec_enet_start_xmit again.
I failed to reproduce a complete hang without -rt, but I think the
problem exists there, too.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/fec_main.c

index 0dda45481d16b3525c75ff4f45b5222e87b3a075..77ea0db0bbfc3e326d8137a26623de8fba1c4945 100644 (file)
@@ -294,11 +294,6 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *ndev)
        unsigned short  status;
        unsigned int index;
 
-       if (!fep->link) {
-               /* Link is down or auto-negotiation is in progress. */
-               return NETDEV_TX_BUSY;
-       }
-
        /* Fill in a Tx ring entry */
        bdp = fep->cur_tx;