Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9af5324a authored by Russell King's avatar Russell King Committed by Russell King
Browse files
parents 56a45931 9733bb8e
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -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
 *
 * 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;
	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
 *
 * 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);
	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
 *
 * 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
 *
 * Returns non-zero value if empty.
 * Returns non-zero value if the queue experienced underflow.
 */
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
 *
 * Returns non-zero value if empty.
 * Returns non-zero value if the queue experienced overflow.
 */
static inline int qmgr_stat_overflow(unsigned int queue)
{
+6 −7
Original line number Diff line number Diff line
@@ -513,8 +513,8 @@ static int eth_poll(struct napi_struct *napi, int budget)
#endif
			napi_complete(napi);
			qmgr_enable_irq(rxq);
			if (!qmgr_stat_nearly_empty(rxq) &&
			    napi_reschedule(napi)) { /* really empty in fact */
			if (!qmgr_stat_below_low_watermark(rxq) &&
			    napi_reschedule(napi)) { /* not empty again */
#if DEBUG_RX
				printk(KERN_DEBUG "%s: eth_poll"
				       " napi_reschedule successed\n",
@@ -631,10 +631,9 @@ static void eth_txdone_irq(void *unused)
			port->tx_buff_tab[n_desc] = NULL;
		}

		/* really empty in fact */
		start = qmgr_stat_nearly_empty(port->plat->txreadyq);
		start = qmgr_stat_below_low_watermark(port->plat->txreadyq);
		queue_put_desc(port->plat->txreadyq, phys, desc);
		if (start) {
		if (start) { /* TX-ready queue was empty */
#if DEBUG_TX
			printk(KERN_DEBUG "%s: eth_txdone_irq xmit ready\n",
			       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);
	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
		printk(KERN_DEBUG "%s: eth_xmit queue full\n", dev->name);
#endif
		netif_stop_queue(dev);
		/* we could miss TX ready interrupt */
		/* really empty in fact */
		if (!qmgr_stat_nearly_empty(txreadyq)) {
		if (!qmgr_stat_below_low_watermark(txreadyq)) {
#if DEBUG_TX
			printk(KERN_DEBUG "%s: eth_xmit ready again\n",
			       dev->name);
+4 −5
Original line number Diff line number Diff line
@@ -790,11 +790,10 @@ static void hss_hdlc_txdone_irq(void *pdev)
		free_buffer_irq(port->tx_buff_tab[n_desc]);
		port->tx_buff_tab[n_desc] = NULL;

		/* really empty in fact */
		start = qmgr_stat_nearly_empty(port->plat->txreadyq);
		start = qmgr_stat_below_low_watermark(port->plat->txreadyq);
		queue_put_desc(port->plat->txreadyq,
			       tx_desc_phys(port, n_desc), desc);
		if (start) {
		if (start) { /* TX-ready queue was empty */
#if DEBUG_TX
			printk(KERN_DEBUG "%s: hss_hdlc_txdone_irq xmit"
			       " 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);
	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
		printk(KERN_DEBUG "%s: hss_hdlc_xmit queue full\n", dev->name);
#endif
		netif_stop_queue(dev);
		/* we could miss TX ready interrupt */
		if (!qmgr_stat_nearly_empty(txreadyq)) {
		if (!qmgr_stat_below_low_watermark(txreadyq)) {
#if DEBUG_TX
			printk(KERN_DEBUG "%s: hss_hdlc_xmit ready again\n",
			       dev->name);