1
0
Fork 0

Merge branch 'ixp4xx' of git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6 into devel

hifive-unleashed-5.1
Russell King 2009-05-25 13:35:46 +01:00 committed by Russell King
commit 9af5324a07
3 changed files with 21 additions and 23 deletions

View File

@ -138,12 +138,12 @@ static inline int qmgr_stat_empty(unsigned int queue)
} }
/** /**
* qmgr_stat_empty() - checks if a hardware queue is nearly empty * qmgr_stat_below_low_watermark() - checks if a queue is below low watermark
* @queue: queue number * @queue: queue number
* *
* Returns non-zero value if the queue is nearly or completely empty. * Returns non-zero value if the queue is below low watermark.
*/ */
static inline int qmgr_stat_nearly_empty(unsigned int queue) static inline int qmgr_stat_below_low_watermark(unsigned int queue)
{ {
extern struct qmgr_regs __iomem *qmgr_regs; extern struct qmgr_regs __iomem *qmgr_regs;
if (queue >= HALF_QUEUES) if (queue >= HALF_QUEUES)
@ -153,19 +153,19 @@ static inline int qmgr_stat_nearly_empty(unsigned int queue)
} }
/** /**
* qmgr_stat_empty() - checks if a hardware queue is nearly full * qmgr_stat_above_high_watermark() - checks if a queue is above high watermark
* @queue: queue number * @queue: queue number
* *
* Returns non-zero value if the queue is nearly or completely full. * Returns non-zero value if the queue is above high watermark
*/ */
static inline int qmgr_stat_nearly_full(unsigned int queue) static inline int qmgr_stat_above_high_watermark(unsigned int queue)
{ {
BUG_ON(queue >= HALF_QUEUES); BUG_ON(queue >= HALF_QUEUES);
return __qmgr_get_stat1(queue) & QUEUE_STAT1_NEARLY_FULL; return __qmgr_get_stat1(queue) & QUEUE_STAT1_NEARLY_FULL;
} }
/** /**
* qmgr_stat_empty() - checks if a hardware queue is full * qmgr_stat_full() - checks if a hardware queue is full
* @queue: queue number * @queue: queue number
* *
* Returns non-zero value if the queue is full. * Returns non-zero value if the queue is full.
@ -180,10 +180,10 @@ static inline int qmgr_stat_full(unsigned int queue)
} }
/** /**
* qmgr_stat_empty() - checks if a hardware queue experienced underflow * qmgr_stat_underflow() - checks if a hardware queue experienced underflow
* @queue: queue number * @queue: queue number
* *
* Returns non-zero value if empty. * Returns non-zero value if the queue experienced underflow.
*/ */
static inline int qmgr_stat_underflow(unsigned int queue) static inline int qmgr_stat_underflow(unsigned int queue)
{ {
@ -191,10 +191,10 @@ static inline int qmgr_stat_underflow(unsigned int queue)
} }
/** /**
* qmgr_stat_empty() - checks if a hardware queue experienced overflow * qmgr_stat_overflow() - checks if a hardware queue experienced overflow
* @queue: queue number * @queue: queue number
* *
* Returns non-zero value if empty. * Returns non-zero value if the queue experienced overflow.
*/ */
static inline int qmgr_stat_overflow(unsigned int queue) static inline int qmgr_stat_overflow(unsigned int queue)
{ {

View File

@ -513,8 +513,8 @@ static int eth_poll(struct napi_struct *napi, int budget)
#endif #endif
napi_complete(napi); napi_complete(napi);
qmgr_enable_irq(rxq); qmgr_enable_irq(rxq);
if (!qmgr_stat_nearly_empty(rxq) && if (!qmgr_stat_below_low_watermark(rxq) &&
napi_reschedule(napi)) { /* really empty in fact */ napi_reschedule(napi)) { /* not empty again */
#if DEBUG_RX #if DEBUG_RX
printk(KERN_DEBUG "%s: eth_poll" printk(KERN_DEBUG "%s: eth_poll"
" napi_reschedule successed\n", " napi_reschedule successed\n",
@ -631,10 +631,9 @@ static void eth_txdone_irq(void *unused)
port->tx_buff_tab[n_desc] = NULL; port->tx_buff_tab[n_desc] = NULL;
} }
/* really empty in fact */ start = qmgr_stat_below_low_watermark(port->plat->txreadyq);
start = qmgr_stat_nearly_empty(port->plat->txreadyq);
queue_put_desc(port->plat->txreadyq, phys, desc); queue_put_desc(port->plat->txreadyq, phys, desc);
if (start) { if (start) { /* TX-ready queue was empty */
#if DEBUG_TX #if DEBUG_TX
printk(KERN_DEBUG "%s: eth_txdone_irq xmit ready\n", printk(KERN_DEBUG "%s: eth_txdone_irq xmit ready\n",
port->netdev->name); port->netdev->name);
@ -710,14 +709,14 @@ static int eth_xmit(struct sk_buff *skb, struct net_device *dev)
queue_put_desc(TX_QUEUE(port->id), tx_desc_phys(port, n), desc); queue_put_desc(TX_QUEUE(port->id), tx_desc_phys(port, n), desc);
dev->trans_start = jiffies; dev->trans_start = jiffies;
if (qmgr_stat_nearly_empty(txreadyq)) { /* really empty in fact */ if (qmgr_stat_below_low_watermark(txreadyq)) { /* empty */
#if DEBUG_TX #if DEBUG_TX
printk(KERN_DEBUG "%s: eth_xmit queue full\n", dev->name); printk(KERN_DEBUG "%s: eth_xmit queue full\n", dev->name);
#endif #endif
netif_stop_queue(dev); netif_stop_queue(dev);
/* we could miss TX ready interrupt */ /* we could miss TX ready interrupt */
/* really empty in fact */ /* really empty in fact */
if (!qmgr_stat_nearly_empty(txreadyq)) { if (!qmgr_stat_below_low_watermark(txreadyq)) {
#if DEBUG_TX #if DEBUG_TX
printk(KERN_DEBUG "%s: eth_xmit ready again\n", printk(KERN_DEBUG "%s: eth_xmit ready again\n",
dev->name); dev->name);

View File

@ -790,11 +790,10 @@ static void hss_hdlc_txdone_irq(void *pdev)
free_buffer_irq(port->tx_buff_tab[n_desc]); free_buffer_irq(port->tx_buff_tab[n_desc]);
port->tx_buff_tab[n_desc] = NULL; port->tx_buff_tab[n_desc] = NULL;
/* really empty in fact */ start = qmgr_stat_below_low_watermark(port->plat->txreadyq);
start = qmgr_stat_nearly_empty(port->plat->txreadyq);
queue_put_desc(port->plat->txreadyq, queue_put_desc(port->plat->txreadyq,
tx_desc_phys(port, n_desc), desc); tx_desc_phys(port, n_desc), desc);
if (start) { if (start) { /* TX-ready queue was empty */
#if DEBUG_TX #if DEBUG_TX
printk(KERN_DEBUG "%s: hss_hdlc_txdone_irq xmit" printk(KERN_DEBUG "%s: hss_hdlc_txdone_irq xmit"
" ready\n", dev->name); " ready\n", dev->name);
@ -869,13 +868,13 @@ static int hss_hdlc_xmit(struct sk_buff *skb, struct net_device *dev)
queue_put_desc(queue_ids[port->id].tx, tx_desc_phys(port, n), desc); queue_put_desc(queue_ids[port->id].tx, tx_desc_phys(port, n), desc);
dev->trans_start = jiffies; dev->trans_start = jiffies;
if (qmgr_stat_nearly_empty(txreadyq)) { /* really empty in fact */ if (qmgr_stat_below_low_watermark(txreadyq)) { /* empty */
#if DEBUG_TX #if DEBUG_TX
printk(KERN_DEBUG "%s: hss_hdlc_xmit queue full\n", dev->name); printk(KERN_DEBUG "%s: hss_hdlc_xmit queue full\n", dev->name);
#endif #endif
netif_stop_queue(dev); netif_stop_queue(dev);
/* we could miss TX ready interrupt */ /* we could miss TX ready interrupt */
if (!qmgr_stat_nearly_empty(txreadyq)) { if (!qmgr_stat_below_low_watermark(txreadyq)) {
#if DEBUG_TX #if DEBUG_TX
printk(KERN_DEBUG "%s: hss_hdlc_xmit ready again\n", printk(KERN_DEBUG "%s: hss_hdlc_xmit ready again\n",
dev->name); dev->name);