[lkml]   [2011]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH] [198/275] ath9k_hw: Fix incorrect macversion and macrev checks
    2.6.35-longterm review patch.  If anyone has any objections, please let me know.

    From: Senthil Balasubramanian <>

    commit ac45c12dfb3f727a5a7a3332ed9c11b4a5ab287e upstream.

    There are few places where we are checking for macversion and revsions
    before RTC is powered ON. However we are reading the macversion and
    revisions only after RTC is powered ON and so both macversion and
    revisions are actully zero and this leads to incorrect srev checks

    Incorrect srev checks can cause registers to be configured wrongly and can
    cause unexpected behavior. Fixing this seems to address the ASPM issue that
    we have observed. The laptop becomes very slow and hangs mostly with ASPM L1
    enabled without this fix.

    fix this by reading the macversion and revisisons even before we start
    using them. There is no reason why should we delay reading this info
    until RTC is powered on as this is just a register information.

    Signed-off-by: Senthil Balasubramanian <>
    Signed-off-by: John W. Linville <>
    Signed-off-by: Greg Kroah-Hartman <>
    Signed-off-by: Andi Kleen <>

    drivers/net/wireless/ath/ath9k/hw.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    Index: linux-2.6.35.y/drivers/net/wireless/ath/ath9k/hw.c
    --- linux-2.6.35.y.orig/drivers/net/wireless/ath/ath9k/hw.c 2011-03-29 22:50:41.231203416 -0700
    +++ linux-2.6.35.y/drivers/net/wireless/ath/ath9k/hw.c 2011-03-29 23:03:02.404238651 -0700
    @@ -519,6 +519,8 @@
    if (ah->hw_version.devid == AR5416_AR9100_DEVID)
    ah->hw_version.macVersion = AR_SREV_VERSION_9100;

    + ath9k_hw_read_revisions(ah);
    if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_POWER_ON)) {
    ath_print(common, ATH_DBG_FATAL,
    "Couldn't reset chip\n");
    @@ -1096,8 +1098,6 @@
    return false;

    - ath9k_hw_read_revisions(ah);
    return ath9k_hw_set_reset(ah, ATH9K_RESET_WARM);

     \ /
      Last update: 2011-03-30 23:29    [W:4.046 / U:29.620 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site