summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index d48e16da198a..85841fb1dfda 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -323,14 +323,11 @@ static int fec_enet_get_bd_index(struct bufdesc *base, struct bufdesc *bdp,
return ((const char *)bdp - (const char *)base) / fep->bufdesc_size;
}
-static int fec_enet_get_free_txdesc_num(struct fec_enet_private *fep)
+static unsigned int fec_enet_get_free_txdesc_num(struct fec_enet_private *fep)
{
- int entries;
-
- entries = ((const char *)fep->dirty_tx -
- (const char *)fep->cur_tx) / fep->bufdesc_size - 1;
-
- return entries > 0 ? entries : entries + fep->tx_ring_size;
+ int num = ((const char *)fep->dirty_tx -
+ (const char *)fep->cur_tx) / fep->bufdesc_size;
+ return num < 0 ? num + fep->tx_ring_size : num;
}
static void *swap_buffer(void *bufaddr, int len)
@@ -808,7 +805,7 @@ fec_enet_start_xmit(struct sk_buff *skb, struct net_device *ndev)
if (ret)
return ret;
- if (fec_enet_get_free_txdesc_num(fep) <= fep->tx_stop_threshold)
+ if (fec_enet_get_free_txdesc_num(fep) < fep->tx_stop_threshold)
netif_stop_queue(ndev);
return NETDEV_TX_OK;