Hello,

Nothing serious but I found a small difference with the 2425 in
ath5k_hw_post()
_The value of two registers are replaced inside a counter but their initial
value is not restored at the end. I checked on a madwifi dump and it is
restored.

Example in a trace:
0.001450    read32 #1  0xfa008000 -> 0x75441600 (AR5K_STA_ID0)
0.001455   write32 #1  0xfa008000 <- 0x00000000 (AR5K_STA_ID0)
0.001459    read32 #1  0xfa008000 -> 0x00000000 (AR5K_STA_ID0)
[...]
0.003719   write32 #1  0xfa008000 <- 0x99999999 (AR5K_STA_ID0)
0.003722    read32 #1  0xfa008000 -> 0x99999999 (AR5K_STA_ID0)
0.003728   write32 #1  0xfa008000 <- 0x75441600 (AR5K_STA_ID0)

_Second point: the constants values that come from an ndiswrapper dump
doesn't exist with a madwifi dump.
I quoted a patch at the end of this mail, not really to fix but to explain
the problem. The AR2425 will not work really better with it :-)
Concerning the EEPROM, I compared a trace from madwifi with another from
ath5k. And during the EEPROM init, it's clear that the registers are read in
the wrong place as Pavel said.
But it's hard to find how works the version 5.3 of the EEPROM... I'm a bit
lost inside it...

The patch (refers to ath5k_hw_post):

--- a/hw.c      2008-04-12 21:51:00.000000000 +0200
+++ b/hw.c      2008-05-08 06:36:11.000000000 +0200
@@ -151,9 +151,11 @@
                                return -EAGAIN;
                        }

-                       /* Found on ndiswrapper dumps */
-                       var_pattern = 0x0039080f;
-                       ath5k_hw_reg_write(ah, var_pattern, cur_reg);
+                       if (ah->->ah_mac_srev != AR5K_SREV_VER_AR2425) {
+                               /* Found on ndiswrapper dumps */
+                               var_pattern = 0x0039080f;
+                               ath5k_hw_reg_write(ah, var_pattern,
cur_reg);
+                       }

                }

@@ -168,11 +170,15 @@
                                return -EAGAIN;
                        }

-                       /* Found on ndiswrapper dumps */
-                       var_pattern = 0x003b080f;
-                       ath5k_hw_reg_write(ah, var_pattern, cur_reg);
+                       if (ah->->ah_mac_srev != AR5K_SREV_VER_AR2425) {
+                               /* Found on ndiswrapper dumps */
+                               var_pattern = 0x003b080f;
+                               ath5k_hw_reg_write(ah, var_pattern,
cur_reg);
+                       }

                }
+               //Restore the initial value
+               ath5k_hw_reg_write(ah, init_val, cur_reg);
        }

        return 0;
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to