Messages in this thread Patch in this message | | | Date | Tue, 29 Apr 2014 10:16:51 -0400 | From | Paul Gortmaker <> | Subject | Re: [PATCH RT 2/4] net: gianfar: do not try to cleanup TX packets if they are not done |
| |
On 14-04-28 02:37 AM, Sebastian Andrzej Siewior wrote: > On 04/27/2014 04:31 PM, Steven Rostedt wrote: >> diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c >> index 5c0efcc..8aecc1d 100644 >> --- a/drivers/net/ethernet/freescale/gianfar.c >> +++ b/drivers/net/ethernet/freescale/gianfar.c >> @@ -2856,10 +2855,14 @@ static int gfar_poll(struct napi_struct *napi, int budget) >> tx_queue = priv->tx_queue[i]; >> /* run Tx cleanup to completion */ >> if (tx_queue->tx_skbuff[tx_queue->skb_dirtytx]) { >> - gfar_clean_tx_ring(tx_queue); >> - has_tx_work = 1; >> + int ret; >> + >> + ret = gfar_clean_tx_ring(tx_queue); >> + if (ret) >> + has_tx_work++; >> } >> } >> + work_done += has_tx_work; >> >> for_each_set_bit(i, &gfargrp->rx_bit_map, priv->num_rx_queues) { >> /* skip queue if not active */ > > The 3.14-RT version of the patch should have an additional return > statement here which I forgot initially.
Sanity boot tested the 3.10 rc1 on a sbc8548 (UP PPC with gianfar), with the one-liner added as follows:
diff --git a/drivers/net/ethernet/freescale/gianfar.c b/drivers/net/ethernet/freescale/gianfar.c index 8aecc1d81395..b87a8c919c3e 100644 --- a/drivers/net/ethernet/freescale/gianfar.c +++ b/drivers/net/ethernet/freescale/gianfar.c @@ -2574,6 +2574,7 @@ static int gfar_clean_tx_ring(struct gfar_priv_tx_q *tx_queue) tx_queue->dirty_tx = bdp; netdev_tx_completed_queue(txq, howmany, bytes_sent); + return howmany; } static void gfar_schedule_cleanup(struct gfar_priv_grp *gfargrp) Paul. --
> > Sebastian >
| |