> On May 30, 2023, at 11:17 PM, Adrian Chadd <adr...@freebsd.org> wrote:
> 
> On Tue, 30 May 2023 at 22:12, John Nielsen <li...@jnielsen.net 
> <mailto:li...@jnielsen.net>> wrote:
>>> On May 30, 2023, at 10:56 PM, Adrian Chadd <adr...@freebsd.org 
>>> <mailto:adr...@freebsd.org>> wrote:
>>> 
>>> On Tue, 30 May 2023 at 20:56, John Nielsen <li...@jnielsen.net 
>>> <mailto:li...@jnielsen.net>> wrote:
>>>> > On May 30, 2023, at 8:02 PM, Adrian Chadd <adr...@freebsd.org 
>>>> > <mailto:adr...@freebsd.org>> wrote:
>>>> > 
>>>> > Err, if it's coming up w/ that MAC then it's not finding and attaching 
>>>> > right to the OTP/EEPROM calibration information. That's the big red flag 
>>>> > that it in general won't work correctly.
>>>> > 
>>>> > Can you provide the rest of the ath_hal messages? I'd like to see what 
>>>> > it's saying during boot around it checking the EEPROM/OTP contents. It's 
>>>> > possible there's some work around required for this NIC.
>>>> 
>>>> He speaks! Thanks for taking the time. I just realized that ath_hal_printf 
>>>> doesn’t prepend “ath%d” so I’ve been missing those messages when grep-ing. 
>>>> Here’s the whole snippet:
>>>> 
>>>> ath0: <Atheros AR946x/AR948x> mem 0xf7a00000-0xf7a7ffff at device 0.0 on 
>>>> pci4
>>>> ar9300_flash_map: unimplemented for now
>>>> Restoring Cal data from DRAM
>>>> Restoring Cal data from EEPROM
>>>> Restoring Cal data from Flash
>>>> Restoring Cal data from Flash
>>>> Restoring Cal data from OTP
>>>> ar9300_eeprom_restore_internal[4338] No vaid CAL, calling default template
>>>> ar9300_hw_attach: ar9300_eeprom_attach returned 0
>>> 
>>> Yeah, this bit right here is the problem. It's not finding a valid 
>>> calibration.
>> 
>>> oh err, is there a wifi enable/disable switch or something? maybe it's 
>>> asserted and somehow it's mucking up the NIC?
>> 
>> There is a physical switch and it’s in the “enable” position.
>> 
>>>  I wonder what ath9k is doing here? Is there some weird pci based 
>>> workaround/flag for the given NIC PCI id?
>> 
>> That was the first breadcrumb BZ threw me but I can’t find anything. There 
>> are some .driver_data hints for adjacent subdevice IDs but none for this one 
>> (Dell 0x020d) in either FreeBSD or Linux that I could find.
>> 
>> The kernel on the Arch Linux USB I have handy doesn’t appear to have been 
>> compiled with CONFIG_ATH_DEBUG but here’s what it has in 
>> /sys/kernel/ieee80211/phy0/ath9k/base_eeprom:
>>       EEPROM Version :          2
>>           RegDomain1 :        108
>>           RegDomain2 :         31
>>              TX Mask :          3
>>              RX Mask :          3
>>           Allow 5GHz :          1
>>           Allow 2GHz :          1
>>    Disable 2GHz HT20 :          0
>>    Disable 2GHz HT40 :          0
>>    Disable 5Ghz HT20 :          0
>>    Disable 5Ghz HT40 :          0
>>           Big Endian :          0
>>            RF Silent :         45
>>            BT option :          0
>>           Device Cap :          0
>>          Device Type :          5
>>   Power Table Offset :          0
>>         Tuning Caps1 :          0
>>         Tuning Caps2 :          0
>>  Enable Tx Temp Comp :          1
>>  Enable Tx Volt Comp :          0
>>    Enable fast clock :          1
>>      Enable doubling :          1
>>   Internal regulator :          0
>>         Enable Paprd :          0
>>      Driver Strength :          0
>>           Quick Drop :          1
>>    Chain mask Reduce :          0
>>    Write enable Gpio :          6
>>    WLAN Disable Gpio :          0
>>        WLAN LED Gpio :          8
>>  Rx Band Select Gpio :        255
>>              Tx Gain :          1
>>              Rx Gain :          3
>>               SW Reg :  303972983
>>           MacAddress : 44:39:c4:5b:44:4a
>> 
>> It also has some calibration and other data in modal_eeprom. 
>> 
>> There is this commit in ath9k which mentions an alternative EEPROM address, 
>> but I’m not sure if that’s relevant. From what I can tell the probe should 
>> succeed at the normal base_address 0x3ff instead of needing to try the “4k” 
>> one 0xfff.
>> https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/drivers/net/wireless/ath/ath9k?id=528782ecf59f7bab2f1368628a479f49be59b512
> 
> Yeah i'd try that. It'd be nice if I knew that the NIC used OTP or EEPROM 
> though.
> 
> There's known issues with all the Atheros chips (sigh) with how the EEPROM 
> and PCIe bus reset .. interact.
> (If the bus reset is too short then the EEPROM state machine gets stuck and 
> nothing gets read.) It makes debugging this hard because the NIC itself will 
> work in another device fine, because it's the BIOS/ACPI code. :(

The 4k EEPROM read didn’t work. But I did notice that where it says it’s 
restoring Cal data from OTP it actually just does an EEPROM read again. 
Shouldn’t this line be a call to ar9300_otp_read() instead of 
ar9300_eeprom_restore_internal_address()?

https://cgit.freebsd.org/src/tree/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_eeprom.c#n4292

Otherwise it doesn’t use the 0x14000 (0x30000 for some cards) OTP offset as a 
starting point.

-John

Reply via email to