Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=0ce68c74162ce288cfd214dd126b8d03b8b7a8ed
Commit:     0ce68c74162ce288cfd214dd126b8d03b8b7a8ed
Parent:     5b94f675f57e4ff16c8fda09088d7480a84dcd91
Author:     Olof Johansson <[EMAIL PROTECTED]>
AuthorDate: Sat Apr 28 15:36:40 2007 -0500
Committer:  Jeff Garzik <[EMAIL PROTECTED]>
CommitDate: Tue May 8 01:00:21 2007 -0400

    pasemi_mac: A couple of minor bugfixes.
    
    Bugfixes:
    
    * Move the wake_queue logic from tx_intr to clean_tx
    * Always do wake_queue even if queue wasn't full before clean since
      it's safe to do
    * Fix polarity in checks in pasemi_mac_close
    
    Signed-off-by: Olof Johansson <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/net/pasemi_mac.c |   23 ++++++++---------------
 1 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/drivers/net/pasemi_mac.c b/drivers/net/pasemi_mac.c
index 76fe9dd..bde8335 100644
--- a/drivers/net/pasemi_mac.c
+++ b/drivers/net/pasemi_mac.c
@@ -476,6 +476,8 @@ static int pasemi_mac_clean_tx(struct pasemi_mac *mac)
        mac->tx->next_to_clean += count;
        spin_unlock_irqrestore(&mac->tx->lock, flags);
 
+       netif_wake_queue(mac->netdev);
+
        return count;
 }
 
@@ -510,9 +512,6 @@ static irqreturn_t pasemi_mac_tx_intr(int irq, void *data)
        struct net_device *dev = data;
        struct pasemi_mac *mac = netdev_priv(dev);
        unsigned int reg;
-       int was_full;
-
-       was_full = mac->tx->next_to_clean - mac->tx->next_to_use == 
TX_RING_SIZE;
 
        if (!(*mac->tx_status & PAS_STATUS_INT))
                return IRQ_NONE;
@@ -526,9 +525,6 @@ static irqreturn_t pasemi_mac_tx_intr(int irq, void *data)
        pci_write_config_dword(mac->iob_pdev, 
PAS_IOB_DMA_TXCH_RESET(mac->dma_txch),
                               reg);
 
-       if (was_full)
-               netif_wake_queue(dev);
-
        return IRQ_HANDLED;
 }
 
@@ -660,40 +656,37 @@ static int pasemi_mac_close(struct net_device *dev)
                pci_read_config_dword(mac->dma_pdev,
                                      PAS_DMA_TXCHAN_TCMDSTA(mac->dma_txch),
                                      &stat);
-               if (stat & PAS_DMA_TXCHAN_TCMDSTA_ACT)
+               if (!(stat & PAS_DMA_TXCHAN_TCMDSTA_ACT))
                        break;
                cond_resched();
        }
 
-       if (!(stat & PAS_DMA_TXCHAN_TCMDSTA_ACT)) {
+       if (stat & PAS_DMA_TXCHAN_TCMDSTA_ACT)
                dev_err(&mac->dma_pdev->dev, "Failed to stop tx channel\n");
-       }
 
        for (retries = 0; retries < MAX_RETRIES; retries++) {
                pci_read_config_dword(mac->dma_pdev,
                                      PAS_DMA_RXCHAN_CCMDSTA(mac->dma_rxch),
                                      &stat);
-               if (stat & PAS_DMA_RXCHAN_CCMDSTA_ACT)
+               if (!(stat & PAS_DMA_RXCHAN_CCMDSTA_ACT))
                        break;
                cond_resched();
        }
 
-       if (!(stat & PAS_DMA_RXCHAN_CCMDSTA_ACT)) {
+       if (stat & PAS_DMA_RXCHAN_CCMDSTA_ACT)
                dev_err(&mac->dma_pdev->dev, "Failed to stop rx channel\n");
-       }
 
        for (retries = 0; retries < MAX_RETRIES; retries++) {
                pci_read_config_dword(mac->dma_pdev,
                                      PAS_DMA_RXINT_RCMDSTA(mac->dma_if),
                                      &stat);
-               if (stat & PAS_DMA_RXINT_RCMDSTA_ACT)
+               if (!(stat & PAS_DMA_RXINT_RCMDSTA_ACT))
                        break;
                cond_resched();
        }
 
-       if (!(stat & PAS_DMA_RXINT_RCMDSTA_ACT)) {
+       if (stat & PAS_DMA_RXINT_RCMDSTA_ACT)
                dev_err(&mac->dma_pdev->dev, "Failed to stop rx interface\n");
-       }
 
        /* Then, disable the channel. This must be done separately from
         * stopping, since you can't disable when active.
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to