lkml.org 
[lkml]   [2007]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 040/101] sky2: transmit timeout deadlock
    From: Stephen Hemminger <shemminger@linux-foundation.org>

    The code in transmit timeout incorrectly assumed that netif_tx_lock
    was not set.

    Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/net/sky2.c | 6 ++----
    1 file changed, 2 insertions(+), 4 deletions(-)

    --- linux-2.6.20.1.orig/drivers/net/sky2.c
    +++ linux-2.6.20.1/drivers/net/sky2.c
    @@ -1796,6 +1796,7 @@ out:

    /* Transmit timeout is only called if we are running, carries is up
    * and tx queue is full (stopped).
    + * Called with netif_tx_lock held.
    */
    static void sky2_tx_timeout(struct net_device *dev)
    {
    @@ -1821,17 +1822,14 @@ static void sky2_tx_timeout(struct net_d
    sky2_write8(hw, STAT_TX_TIMER_CTRL, TIM_START);
    } else if (report != sky2->tx_cons) {
    printk(KERN_INFO PFX "status report lost?\n");
    -
    - netif_tx_lock_bh(dev);
    sky2_tx_complete(sky2, report);
    - netif_tx_unlock_bh(dev);
    } else {
    printk(KERN_INFO PFX "hardware hung? flushing\n");

    sky2_write32(hw, Q_ADDR(txq, Q_CSR), BMU_STOP);
    sky2_write32(hw, Y2_QADDR(txq, PREF_UNIT_CTRL), PREF_UNIT_RST_SET);

    - sky2_tx_clean(dev);
    + sky2_tx_complete(sky2, sky2->tx_prod);

    sky2_qset(hw, txq);
    sky2_prefetch_init(hw, txq, sky2->tx_le_map, TX_RING_SIZE - 1);
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-03-07 19:47    [W:2.256 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site