Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 30 May 2023 23:40:43 +0000 (UTC)
From:      "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>
To:        John Nielsen <lists@jnielsen.net>
Cc:        "wireless@freebsd.org" <wireless@FreeBSD.org>
Subject:   Re: Help me grok the ath(4) device attach code
Message-ID:  <q921p430-oq56-qo4n-rq49-0o7008pr40n3@yvfgf.mnoonqbm.arg>
In-Reply-To: <49AEA1CB-FA85-432F-89D7-8C49B5F3A344@jnielsen.net>
References:  <49AEA1CB-FA85-432F-89D7-8C49B5F3A344@jnielsen.net>

next in thread | previous in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--1098556516-1091208796-1685490045=:48381
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8BIT

On Tue, 30 May 2023, John Nielsen wrote:

> I’m 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=255337
>
> The card in question is an AR9462, branded (I think) as a Dell Wireless 1901 with this ID:
> vendor=0x168c device=0x0034 subvendor=0x1028 subdevice=0x020d
>
> 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’m attempting to compare the two codebases. But since I’m not a device developer and haven’t done much C since my undergraduate work, I’m having a bit of trouble.
>
> I’m open to any pointers but I’d specifically like to work out the following (unless I’m way off base, in which case I’d like to know that too):
>
> 1) Where does the default MAC address come from? In the Linux driver it looks like it’s 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’t 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.

> 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.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/drivers/net/wireless/ath/ath9k?id=528782ecf59f7bab2f1368628a479f49be59b512
> 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
>
> (I don’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!
>
> Thanks,
>
> JN
>
>
>

-- 
Bjoern A. Zeeb                                                     r15:7
--1098556516-1091208796-1685490045=:48381--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?q921p430-oq56-qo4n-rq49-0o7008pr40n3>