linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Gabor Juhos <juhosg@openwrt.org>
To: Sujith <Sujith.Manoharan@atheros.com>
Cc: "John W. Linville" <linville@tuxdriver.com>,
	"ath9k-devel@lists.ath9k.org" <ath9k-devel@lists.ath9k.org>,
	"linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>,
	Imre Kaloz <kaloz@openwrt.org>
Subject: Re: [RFC] ath9k: use correct init values for ar9100 devices
Date: Wed, 04 Mar 2009 14:41:47 +0100	[thread overview]
Message-ID: <49AE851B.2070709@openwrt.org> (raw)
In-Reply-To: <18862.1025.217829.656599@gargle.gargle.HOWL>

Sujith =EDrta:
> Gabor Juhos wrote:
>> 1. In some cases the ethernet interface goes down for a short time
>> after'ifconfig wlan0 up'.
>> 2. Sometimes the device simply reboots itself after 'ifconfig wlan0 =
up'.
>>
>> After I have added some printk statements into the code, I noticed t=
hat the
>> ar5416 and ar9100 devices use the same initval arrays currently. I a=
ssume
>> that they requires different initialization, because we have differe=
nt
>> arrays for them.
>>
>=20
> Yep, this is a bug, and AR_SREV_9100_OR_LATER is probably wrong.

Ok.

>=20
>> Although I have no detailed knowledge about the evolution of the ath=
9k devices,
>> but the version checking macros for ther AR5416 cards seemed weird e=
nough, so I
>> have replaced them. Unfortunately, this leaded to very bad performan=
ce with the
>> ar5416 cards I have, but the driver was working on the ar913x boards=
=2E
>>
>> After some digging, I have found an interesting ifdef statement in S=
am's current
>> HAL. In his ar5416Common initval array, this ifdef conditionally sel=
ects the
>> right RTC register offsets for the ar5416/ar9100 devices. The strang=
e thing,
>> that in the ath9k driver the ar5416 specific RTC register offsets ar=
e used in
>> the ar5416Common_ar9100 array, while the ar9100 specific offsets are=
 used in the
>> ar5416Common.
>>
>=20
> I'll check the initval arrays and update.
>=20
>> +#define AR_SREV_5416(_ah) \
>> +       (((_ah)->hw_version.macVersion =3D=3D AR_SREV_VERSION_5416_P=
CIE) || \
>> +       ((_ah)->hw_version.macVersion =3D=3D AR_SREV_VERSION_5416_PC=
I))
>> +#define AR_SREV_5416_V20_OR_LATER(_ah) \
>> +       (((_ah)->hw_version.macVersion > AR_SREV_VERSION_5416_PCIE) =
|| \
>> +       ((AR_SREV_5416(_ah)) && \
>> +       ((_ah)->hw_version.macRev >=3D AR_SREV_REVISION_5416_20)))
>> +#define AR_SREV_5416_V22_OR_LATER(_ah) \
>> +       (((_ah)->hw_version.macVersion > AR_SREV_VERSION_5416_PCIE) =
|| \
>> +       ((AR_SREV_5416(_ah)) && \
>> +       ((_ah)->hw_version.macRev >=3D AR_SREV_REVISION_5416_22)))
>> +
>=20
> Hm, the 5416_V1, 5416_V2 macros have to check 3 different HW (5416, 9=
100, 9160).

I don't see any 5416_V1 macro here. The AR_SREV_5416 should check the s=
ilicon
revision of the AR5416 cards only. But if we would be consistent, we sh=
ould have
a _V10_OR_LATER although i don't see where it would be useful. The _V20=
_OR_LATER
and the _V22_OR_LATER macro I proposed above will cover the 9100 and 91=
60 chips.

>=20
>> +#define AR_SREV_9100(ah) \
>> +       ((ah->hw_version.macVersion) =3D=3D AR_SREV_VERSION_9100)
>>  #define AR_SREV_9100_OR_LATER(_ah) \
>> -       (((_ah)->hw_version.macVersion >=3D AR_SREV_VERSION_5416_PCI=
E))
>> -#define AR_SREV_5416_20_OR_LATER(_ah) \
>> -       (((_ah)->hw_version.macVersion >=3D AR_SREV_VERSION_9160) ||=
 \
>> -               ((_ah)->hw_version.macRev >=3D AR_SREV_REVISION_5416=
_20))
>> -#define AR_SREV_5416_22_OR_LATER(_ah) \
>> -       (((_ah)->hw_version.macVersion >=3D AR_SREV_VERSION_9160) ||=
 \
>> -               ((_ah)->hw_version.macRev >=3D AR_SREV_REVISION_5416=
_22))
>> +       ((_ah)->hw_version.macVersion >=3D AR_SREV_VERSION_9100)
>> +
>>  #define AR_SREV_9160(_ah) \
>>         (((_ah)->hw_version.macVersion =3D=3D AR_SREV_VERSION_9160))
>>  #define AR_SREV_9160_10_OR_LATER(_ah) \
>> --
>> 1.5.3.2
>>

Regards,
Gabor
--
To unsubscribe from this list: send the line "unsubscribe linux-wireles=
s" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2009-03-04 13:41 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-03 18:10 [RFC] ath9k: use correct init values for ar9100 devices Gabor Juhos
2009-03-04  4:30 ` Sujith
2009-03-04  5:35   ` Sujith
     [not found]     ` <49AE8466.3040906@openwrt.org>
2009-03-04 14:21       ` [ath9k-devel] " Sujith
2009-03-04 16:20         ` Gabor Juhos
2009-03-05  1:49           ` Sujith
2009-03-05 10:43             ` Gabor Juhos
2009-03-05 15:00               ` Sujith
2009-03-04 13:41   ` Gabor Juhos [this message]
2009-03-04 14:29     ` Sujith
2009-03-04 14:57       ` Gabor Juhos
2009-03-05  1:51         ` Sujith
2009-03-05  2:15           ` Luis R. Rodriguez

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49AE851B.2070709@openwrt.org \
    --to=juhosg@openwrt.org \
    --cc=Sujith.Manoharan@atheros.com \
    --cc=ath9k-devel@lists.ath9k.org \
    --cc=kaloz@openwrt.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).