Changeset 30871


Ignore:
Timestamp:
2012-03-10T14:31:34+01:00 (6 years ago)
Author:
nbd
Message:

rt2x00: merge a fix for random tx stalls

Location:
trunk/package/mac80211/patches
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/mac80211/patches/300-pending_work.patch

    r30870 r30871  
    18921892                if (on) 
    18931893                        REG_SET_BIT(ah, AR_PHY_SFCORR_LOW, 
     1894--- a/drivers/net/wireless/rt2x00/rt2x00dev.c 
     1895+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c 
     1896@@ -430,10 +430,14 @@ void rt2x00lib_txdone(struct queue_entry 
     1897        /* 
     1898         * If the data queue was below the threshold before the txdone 
     1899         * handler we must make sure the packet queue in the mac80211 stack 
     1900-        * is reenabled when the txdone handler has finished. 
     1901+        * is reenabled when the txdone handler has finished. This has to be 
     1902+        * serialized with rt2x00mac_tx(), otherwise we can wake up queue 
     1903+        * before it was stopped. 
     1904         */ 
     1905+       spin_lock_bh(&entry->queue->tx_lock); 
     1906        if (!rt2x00queue_threshold(entry->queue)) 
     1907                rt2x00queue_unpause_queue(entry->queue); 
     1908+       spin_unlock_bh(&entry->queue->tx_lock); 
     1909 } 
     1910 EXPORT_SYMBOL_GPL(rt2x00lib_txdone); 
     1911  
     1912--- a/drivers/net/wireless/rt2x00/rt2x00mac.c 
     1913+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c 
     1914@@ -152,13 +152,22 @@ void rt2x00mac_tx(struct ieee80211_hw *h 
     1915        if (unlikely(rt2x00queue_write_tx_frame(queue, skb, false))) 
     1916                goto exit_fail; 
     1917  
     1918+       /* 
     1919+        * Pausing queue has to be serialized with rt2x00lib_txdone(). Note 
     1920+        * we should not use spin_lock_bh variant as bottom halve was already 
     1921+        * disabled before ieee80211_xmit() call. 
     1922+        */ 
     1923+       spin_lock(&queue->tx_lock); 
     1924        if (rt2x00queue_threshold(queue)) 
     1925                rt2x00queue_pause_queue(queue); 
     1926+       spin_unlock(&queue->tx_lock); 
     1927  
     1928        return; 
     1929  
     1930  exit_fail: 
     1931+       spin_lock(&queue->tx_lock); 
     1932        rt2x00queue_pause_queue(queue); 
     1933+       spin_unlock(&queue->tx_lock); 
     1934  exit_free_skb: 
     1935        ieee80211_free_txskb(hw, skb); 
     1936 } 
     1937--- a/drivers/net/wireless/rt2x00/rt2x00queue.c 
     1938+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c 
     1939@@ -619,6 +619,9 @@ int rt2x00queue_write_tx_frame(struct da 
     1940        else if (test_bit(REQUIRE_DMA, &queue->rt2x00dev->cap_flags)) 
     1941                rt2x00queue_align_frame(skb); 
     1942  
     1943+       /* 
     1944+        * That function must be called with bh disabled. 
     1945+        */ 
     1946        spin_lock(&queue->tx_lock); 
     1947  
     1948        if (unlikely(rt2x00queue_full(queue))) { 
  • trunk/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch

    r30746 r30871  
    240240--- a/drivers/net/wireless/rt2x00/rt2x00dev.c 
    241241+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c 
    242 @@ -1161,6 +1161,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de 
     242@@ -1165,6 +1165,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de 
    243243                    BIT(NL80211_IFTYPE_MESH_POINT) | 
    244244                    BIT(NL80211_IFTYPE_WDS); 
     
    251251         * Initialize work. 
    252252         */ 
    253 @@ -1284,6 +1288,11 @@ void rt2x00lib_remove_dev(struct rt2x00_ 
     253@@ -1288,6 +1292,11 @@ void rt2x00lib_remove_dev(struct rt2x00_ 
    254254         */ 
    255255        if (rt2x00dev->drv_data) 
  • trunk/package/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch

    r30746 r30871  
    1313--- a/drivers/net/wireless/rt2x00/rt2x00dev.c 
    1414+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c 
    15 @@ -829,6 +829,22 @@ static int rt2x00lib_probe_hw_modes(stru 
     15@@ -833,6 +833,22 @@ static int rt2x00lib_probe_hw_modes(stru 
    1616        unsigned int num_rates; 
    1717        unsigned int i; 
Note: See TracChangeset for help on using the changeset viewer.