Stefan Sperling <stsp <at> openbsd.org> writes:

> 
> This is an attempt to add wol support to xl(4).
> 
> Unfortunately, while I have an xl(4) card to test with none of the
> motherboards I have will do WOL with it since they all lack an
> on-board WOL connector :(
> 
> So test reports are needed.
> Please also check whether WOL is disabled by default.
> 

hi
i have an old ASUS A7N8X DELUXE Rev.2 motherboard with an on-board 3Com
3C920B-EMB NIC. i'm running the latest -current.
i tried wol, but it won't work with openbsd (although it works perfectly with
gentoo on the same box).

i had a look into the driver, and tried several approaches, none successful so
far.

1) first, the driver never put the NIC into D3 power state, since the test on
PXL_PME_CAP_D3_HOT was negative. 

---
<if_xl_pci.c>
if (command & XL_PME_CAP_D3_HOT) {
                        sc->wol_power = xl_pci_wol_power;
                        sc->wol_power_arg = psc; 
                }
---

so i simply disabled the "if" above.
=> "xl_pci_wol_power" is called now on shutdown.

2) next i had a look into "xl_pci_wol_power". i realized that it does the power
state switch differently from the linux driver. thus, i tried to use
"pci_set_powerstate" (with proper arguments) instead. i took <if_sf_pci.c> as
an example (there you can see how "pci_set_powerstate" must be called).
=> unfortunately no effect either.

3) i compared the register window write calls to that of the linux driver (set
win 5 / 7, set and enable rx filter with flags to accept broadcast frames,
etc.). i found nothing wrong about that. the only thing that IMO is different,
is that while the openbsd driver does all those things in different functions,
the linux driver does all within "acpi_set_WOL".

4) a note on setting the rx filter (grep on rxfilt): the xl driver does this in
"iff_905x" (?) (sorry, don't have the sources available right now...) in file
<xl.c>. i checked and by default, this routine is never called in my case. thus,
i put the rxfilt-code into "xl_wol" (<xl.c>) right into the "if (enable)"
block...
=> again no functional WOL...

i hope this helps, i will investigate further.
if you need any more specific detail, please let me know!


cheers,

thomas

Reply via email to