From nobody Wed May 31 00:23:34 2023 X-Original-To: wireless@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4QW9401S3Cz4YQFL for ; Wed, 31 May 2023 00:24:00 +0000 (UTC) (envelope-from lists@jnielsen.net) Received: from webmail5.jnielsen.net (webmail5.jnielsen.net [IPv6:2607:f170:34:11::b0]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.freebsdsolutions.net", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QW93z5mDqz3pyp for ; Wed, 31 May 2023 00:23:59 +0000 (UTC) (envelope-from lists@jnielsen.net) Authentication-Results: mx1.freebsd.org; none Received: from smtpclient.apple (166-70-14-17.xmission.com [166.70.14.17] (may be forged)) (authenticated bits=0) by webmail5.jnielsen.net (8.17.1/8.17.1) with ESMTPSA id 34V0Nm1N010751 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Tue, 30 May 2023 18:23:51 -0600 (MDT) (envelope-from lists@jnielsen.net) X-Authentication-Warning: webmail5.jnielsen.net: Host 166-70-14-17.xmission.com [166.70.14.17] (may be forged) claimed to be smtpclient.apple From: John Nielsen Message-Id: Content-Type: multipart/alternative; boundary="Apple-Mail=_F3F041DD-38E8-4056-8EC4-14FDB0CE9F0B" List-Id: Discussions List-Archive: https://lists.freebsd.org/archives/freebsd-wireless List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-wireless@freebsd.org X-BeenThere: freebsd-wireless@freebsd.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.600.7\)) Subject: Re: Help me grok the ath(4) device attach code Date: Tue, 30 May 2023 18:23:34 -0600 In-Reply-To: Cc: "wireless@freebsd.org" To: "Bjoern A. Zeeb" References: <49AEA1CB-FA85-432F-89D7-8C49B5F3A344@jnielsen.net> X-Mailer: Apple Mail (2.3731.600.7) X-Rspamd-Queue-Id: 4QW93z5mDqz3pyp X-Spamd-Bar: ---- X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6364, ipnet:2607:f170:30::/44, country:US] X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-ThisMailContainsUnwantedMimeParts: N --Apple-Mail=_F3F041DD-38E8-4056-8EC4-14FDB0CE9F0B Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On May 30, 2023, at 5:40 PM, Bjoern A. Zeeb = wrote: >=20 > On Tue, 30 May 2023, John Nielsen wrote: >=20 >> I=E2=80=99m trying to wrap my head around the code in = sys/dev/ath/ath_hal , partly for my own edification but mostly due to = wanting to fix this bug: >> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D255337 >>=20 >> The card in question is an AR9462, branded (I think) as a Dell = Wireless 1901 with this ID: >> vendor=3D0x168c device=3D0x0034 subvendor=3D0x1028 subdevice=3D0x020d >>=20 >> The card is identified and appears to initialize correctly but it has = a default/bogus MAC address of 00:02:03:04:05:06 and is never able to = scan any networks. It does work fine under Linux, so I=E2=80=99m = attempting to compare the two codebases. But since I=E2=80=99m not a = device developer and haven=E2=80=99t done much C since my undergraduate = work, I=E2=80=99m having a bit of trouble. >>=20 >> I=E2=80=99m open to any pointers but I=E2=80=99d specifically like to = work out the following (unless I=E2=80=99m way off base, in which case = I=E2=80=99d like to know that too): >>=20 >> 1) Where does the default MAC address come from? In the Linux driver = it looks like it=E2=80=99s here: >> = https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/tree/drivers= /net/wireless/ath/ath9k/ar9003_eeprom.c#n49 >> I don=E2=80=99t see any such definition in the FreeBSD code. >=20 > No idea, but you should end up in a call to ar9300_get_mac_address() > from sys/contrib/dev/ath/ath_hal/ar9300/ar9300_misc.c if my guess is = right. >=20 > The call comes from sys/dev/ath/if_ath.c ath_hal_getmac(). >=20 > Hope that helps you to trace this. Thanks! I had no idea that directory was even there. More source to dive = through... >> 2) When ath_hal_attach() calls chip->attach(), which code is actually = called (and how/where is that determined)? >>=20 >> 3) Is there any equivalent in the FreeBSD code for this Linux process = of trying to read the EEPROM from multiple different addresses? (Is it = necessary?) >> = https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/tree/drivers= /net/wireless/ath/ath9k/ar9003_eeprom.c#n3299 >> See also: >> = https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/drive= rs/net/wireless/ath/ath9k?id=3D528782ecf59f7bab2f1368628a479f49be59b512 >> and the definitions here: >> = https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/tree/drivers= /net/wireless/ath/ath9k/ar9003_eeprom.h#n78 >>=20 >> (I don=E2=80=99t see any of those BASE_ADDR values referenced or = defined anywhere in FreeBSD) >>=20 >> 4) In general, what code should I be looking at to see how the EEPROM = is read and interpreted for a specific card? >>=20 >> Any help appreciated! --Apple-Mail=_F3F041DD-38E8-4056-8EC4-14FDB0CE9F0B Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8
On May 30, 2023, = at 5:40 PM, Bjoern A. Zeeb <bzeeb-lists@lists.zabbadoz.net> = wrote:

On Tue, 30 May 2023, = John Nielsen wrote:

I=E2=80=99m trying to wrap my head around the = code in sys/dev/ath/ath_hal , partly for my own edification but mostly = due to wanting to fix this = bug:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D255337

= The card in question is an AR9462, branded (I think) as a Dell Wireless = 1901 with this ID:
vendor=3D0x168c device=3D0x0034 subvendor=3D0x1028 = subdevice=3D0x020d

The card is identified and appears to = initialize correctly but it has a default/bogus MAC address of = 00:02:03:04:05:06 and is never able to scan any networks. It does work = fine under Linux, so I=E2=80=99m attempting to compare the two = codebases. But since I=E2=80=99m not a device developer and haven=E2=80=99= t done much C since my undergraduate work, I=E2=80=99m having a bit of = trouble.

I=E2=80=99m open to any pointers but I=E2=80=99d = specifically like to work out the following (unless I=E2=80=99m way off = base, in which case I=E2=80=99d like to know that too):

1) Where = does the default MAC address come from? In the Linux driver it looks = like it=E2=80=99s = here:
https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/tre= e/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c#n49
I don=E2=80=99t = see any such definition in the FreeBSD code.

No idea, but you should end up in a call to = ar9300_get_mac_address()
from = sys/contrib/dev/ath/ath_hal/ar9300/ar9300_misc.c if my guess is = right.

The call comes from = sys/dev/ath/if_ath.c ath_hal_getmac().

Hope = that helps you to trace this.

Thanks! I = had no idea that directory was even there. More source to dive = through...

2) When ath_hal_attach() calls chip->attach(), which code is = actually called (and how/where is that determined)?

3) Is there = any equivalent in the FreeBSD code for this Linux process of trying to = read the EEPROM from multiple different addresses? (Is it = necessary?)
https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.g= it/tree/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c#n3299
See = also:
https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/com= mit/drivers/net/wireless/ath/ath9k?id=3D528782ecf59f7bab2f1368628a479f49be= 59b512
and the definitions = here:
https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/tre= e/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h#n78

(I don=E2=80=99= t see any of those BASE_ADDR values referenced or defined anywhere in = FreeBSD)

4) In general, what code should I be looking at to see = how the EEPROM is read and interpreted for a specific card?

Any = help = appreciated!

= --Apple-Mail=_F3F041DD-38E8-4056-8EC4-14FDB0CE9F0B--