Date: Tue, 30 May 2023 11:30:20 -0600 From: John Nielsen <lists@jnielsen.net> To: "wireless@freebsd.org" <wireless@FreeBSD.org> Subject: Help me grok the ath(4) device attach code Message-ID: <49AEA1CB-FA85-432F-89D7-8C49B5F3A344@jnielsen.net>
next in thread | raw e-mail | index | archive | help
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=99t 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/tree/drivers= /net/wireless/ath/ath9k/ar9003_eeprom.c#n49 I don=E2=80=99t see any such definition in the FreeBSD code. 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/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 (I don=E2=80=99t 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?49AEA1CB-FA85-432F-89D7-8C49B5F3A344>