On 06/17/2010 11:39 AM, Bob Copeland wrote:
> On Wed, Jun 16, 2010 at 3:32 PM, Steve Brown<sbr...@cortland.com>  wrote:
>    
>>  From the printk's, it appears that ah->ah_current_channel isn't set at the
>> time of the callback.
>>
>> The following produces the oops with compat-wireless-2010-06-10.
>>      
> Thanks for the report - your analysis looks spot on.
> I'll take a look tonight.
>
>    
I went a little further and tested the following patch.

If it makes sense to you, I'll submit it.

Steve

---

--- a/drivers/net/wireless/ath/ath5k/pcu.c.orig    2010-06-17 
10:41:29.070150186 -0600
+++ b/drivers/net/wireless/ath/ath5k/pcu.c    2010-06-17 
10:56:27.529275091 -0600
@@ -251,7 +251,6 @@
  static unsigned int ath5k_hw_get_default_slottime(struct ath5k_hw *ah)
  {
      struct ieee80211_channel *channel = ah->ah_current_channel;
-
      if (channel->hw_value & CHANNEL_TURBO)
          return 6; /* both turbo modes */

@@ -846,13 +845,23 @@
  void ath5k_hw_set_coverage_class(struct ath5k_hw *ah, u8 coverage_class)
  {
      /* As defined by IEEE 802.11-2007 17.3.8.6 */
-    int slot_time = ath5k_hw_get_default_slottime(ah) + 3 * coverage_class;
-    int ack_timeout = ath5k_hw_get_default_sifs(ah) + slot_time;
-    int cts_timeout = ack_timeout;
+    int slot_time, ack_timeout, cts_timeout;
+
+    ah->ah_coverage_class = coverage_class;

+    /*
+     * If channel isn't set, just exit.
+     * We will be called again on a channel change.
+     */
+    if (ah->ah_current_channel == NULL)
+        return;
+
+    slot_time = ath5k_hw_get_default_slottime(ah) + 3 * coverage_class;
      ath5k_hw_set_slot_time(ah, slot_time);
+
+    ack_timeout = ath5k_hw_get_default_sifs(ah) + slot_time;
      ath5k_hw_set_ack_timeout(ah, ack_timeout);
-    ath5k_hw_set_cts_timeout(ah, cts_timeout);

-    ah->ah_coverage_class = coverage_class;
+    cts_timeout = ack_timeout;
+    ath5k_hw_set_cts_timeout(ah, cts_timeout);
  }
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to