Skip to content

Commit

Permalink
gianfar: Fix Rx/Tx HW interrupt coalescing counter reset procedure.
Browse files Browse the repository at this point in the history
- Fix Rx/Tx HW interrupt coalescing counter reset logic. Disabling
is required before resetting the counter.

- Update the Default both Rx and Tx coalescing timer
threshold. Formerly 4 is set which is equal to 1.5 frame at the line
rate of 1GbE interface, and it doesn't match to the coalescing frame
count which is set to 16. Threashold 21 is matched to frame count 16.

Signed-off-by: Dai Haruki <dai.haruki@freescale.com>
Signed-off-by: Andy Fleming <afleming@freescale.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Andy Fleming authored and Jeff Garzik committed Mar 26, 2008
1 parent 99da500 commit 2f44891
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
18 changes: 9 additions & 9 deletions drivers/net/gianfar.c
Original file line number Diff line number Diff line change
Expand Up @@ -1299,11 +1299,11 @@ static irqreturn_t gfar_transmit(int irq, void *dev_id)

/* If we are coalescing the interrupts, reset the timer */
/* Otherwise, clear it */
if (priv->txcoalescing)
if (likely(priv->txcoalescing)) {
gfar_write(&priv->regs->txic, 0);
gfar_write(&priv->regs->txic,
mk_ic_value(priv->txcount, priv->txtime));
else
gfar_write(&priv->regs->txic, 0);
}

spin_unlock(&priv->txlock);

Expand Down Expand Up @@ -1417,11 +1417,11 @@ irqreturn_t gfar_receive(int irq, void *dev_id)

/* If we are coalescing interrupts, update the timer */
/* Otherwise, clear it */
if (priv->rxcoalescing)
if (likely(priv->rxcoalescing)) {
gfar_write(&priv->regs->rxic, 0);
gfar_write(&priv->regs->rxic,
mk_ic_value(priv->rxcount, priv->rxtime));
else
gfar_write(&priv->regs->rxic, 0);
}

spin_unlock_irqrestore(&priv->rxlock, flags);
#endif
Expand Down Expand Up @@ -1593,11 +1593,11 @@ static int gfar_poll(struct napi_struct *napi, int budget)

/* If we are coalescing interrupts, update the timer */
/* Otherwise, clear it */
if (priv->rxcoalescing)
if (likely(priv->rxcoalescing)) {
gfar_write(&priv->regs->rxic, 0);
gfar_write(&priv->regs->rxic,
mk_ic_value(priv->rxcount, priv->rxtime));
else
gfar_write(&priv->regs->rxic, 0);
}
}

return howmany;
Expand Down
4 changes: 2 additions & 2 deletions drivers/net/gianfar.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,11 @@ extern const char gfar_driver_version[];

#define DEFAULT_TX_COALESCE 1
#define DEFAULT_TXCOUNT 16
#define DEFAULT_TXTIME 4
#define DEFAULT_TXTIME 21

#define DEFAULT_RX_COALESCE 1
#define DEFAULT_RXCOUNT 16
#define DEFAULT_RXTIME 4
#define DEFAULT_RXTIME 21

#define TBIPA_VALUE 0x1f
#define MIIMCFG_INIT_VALUE 0x00000007
Expand Down

0 comments on commit 2f44891

Please sign in to comment.