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

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
> 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’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.

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.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!


[-- Attachment #2 --]
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div><blockquote type="cite"><div>On May 30, 2023, at 5:40 PM, Bjoern A. Zeeb &lt;bzeeb-lists@lists.zabbadoz.net&gt; wrote:</div><br class="Apple-interchange-newline"><div><meta charset="UTF-8"><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;">On Tue, 30 May 2023, John Nielsen wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">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:<br>https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=255337<br><br>The card in question is an AR9462, branded (I think) as a Dell Wireless 1901 with this ID:<br>vendor=0x168c device=0x0034 subvendor=0x1028 subdevice=0x020d<br><br>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.<br><br>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):<br><br>1) Where does the default MAC address come from? In the Linux driver it looks like it’s here:<br>https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/tree/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c#n49<br>I don’t see any such definition in the FreeBSD code.<br></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;">No idea, but you should end up in a call to ar9300_get_mac_address()</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;">from sys/contrib/dev/ath/ath_hal/ar9300/ar9300_misc.c if my guess is right.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;">The call comes from sys/dev/ath/if_ath.c ath_hal_getmac().</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;">Hope that helps you to trace this.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"></div></blockquote><div><br></div><div>Thanks! I had no idea that directory was even there. More source to dive through...</div><br><blockquote type="cite"><div><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">2) When ath_hal_attach() calls chip-&gt;attach(), which code is actually called (and how/where is that determined)?<br><br>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?)<br>https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/tree/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c#n3299<br>See also:<br>https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/drivers/net/wireless/ath/ath9k?id=528782ecf59f7bab2f1368628a479f49be59b512<br>and the definitions here:<br>https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/tree/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h#n78<br><br>(I don’t see any of those BASE_ADDR values referenced or defined anywhere in FreeBSD)<br><br>4) In general, what code should I be looking at to see how the EEPROM is read and interpreted for a specific card?<br><br>Any help appreciated!<br></blockquote></div></blockquote></div><br></body></html>
home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E6DF8709-2767-48D3-AED1-D0608F5AABCF>