[CFT] alc(4) QAC AR816x/AR817x ethernet controller support
Yonghyeon PYUN
pyunyh at gmail.com
Mon Oct 6 02:32:22 UTC 2014
On Fri, Oct 03, 2014 at 09:29:46PM +0200, Dariusz Wierzbicki wrote:
> Dnia 2014-10-02, o godz. 14:07:30
> Yonghyeon PYUN <pyunyh at gmail.com> napisał(a):
>
> > On Wed, Oct 01, 2014 at 10:36:37AM +0900, Yonghyeon PYUN wrote:
> > > On Tue, Sep 30, 2014 at 10:57:41AM +0900, Yonghyeon PYUN wrote:
> > > > Hi,
> > > > I've added support for QAC AR816x/AR817x ethernet controllers. It
> > > > passed my limited testing and I need more testers. You can find
> > > > patches from the following URLs.
> > > >
> > > > http://people.freebsd.org/~yongari/alc/pci.quirk.diff
> > > > and
> > > > http://people.freebsd.org/~yongari/alc/alc.diff.20140930
> > > >
> > > > pci.qurik.diff is to workaround silicon bug of AR816x. Without it
> > > > MSI/MSIX interrupt wouldn't work. If you just want to use
> > > > legacy INTx interrupt you don't have to apply it but you have to
> > > > tell alc(4) not to use MSI/MSIX interrupt with tunables(
> > > > hw.alc.msi.disable and hw.alc.msix_disable).
> > > >
> > > > alc.diff.20140930 will add support for AR8161/AR8162/AR8171/AR8172
> > > > and E2200 controllers. It supports all hardware features except
> > > > RSS. If you have any QAC AR816x/AR817x or old AR813x/AR815x
> > > > controllers please test and report how the diff works for you.
> > > > Thanks.
> > >
> > > http://people.freebsd.org/~yongari/alc/pci.quirk.diff
> > > http://people.freebsd.org/~yongari/alc/alc.diff.20141001
> > >
> > > Patch updated to address link establishment issue.
> >
> > http://people.freebsd.org/~yongari/alc/alc.diff.20141002
> > Patch updated again to correct wrong lock assertion.
>
> Hi !
>
> Thanks for your work !
>
> Are your patches only for current ? I tried on 10 stable.
>
No, it should be applied to stable/10 as well. I intentionally
didn't include additional diff for MAC statistics which will not
work on stable/10 and stable/9 due to if_inc_counter changes made
in HEAD.
I tried to apply the diff again against stable/10 and it succeeded
with minor fuzz and offset differences.
>
> My system:
>
> dw at dw:~ % uname -a
> FreeBSD dw 10.1-RC1 FreeBSD 10.1-RC1 #1 r272477M: Fri Oct 3 20:48:05
> CEST 2014 dw at dw:/usr/obj/usr/src/sys/DW amd64
>
[...]
> I applied that part manually. Compiled and rebooted system.
>
>
> dmesg | grep alc :
>
> alc0: could not disable Rx/Tx MAC(0x4000cb20)!
> alc0: reset timeout(0x4000cb20)!
> alc0: could not disable Rx/Tx MAC(0x4000cb20)!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
I'm more worried about MAC reset and master reset timeout shown
below. The MAC reset timeout makes me wonder how this can happen
since driver just checks bit 0 and bit 1, the low nibble of the
register value can't be 0.
> alc0: link state changed to UP
> alc0: could not disable Rx/Tx MAC(0x4000cb20)!
> alc0: <Qualcomm Atheros AR8161 Gigabit Ethernet> port 0xd000-0xd07f mem
> 0xf7200000-0xf723ffff irq 18 at device 0.0 on pci3
> alc0: reset timeout(0x4000cd00)!
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
I think this also can't happen since driver checks bit[0-3], the
low byte should be non-zero when the timeout triggers.
> alc0: 11776 Tx FIFO, 12032 Rx FIFO
> miibus0: <MII bus> on alc0
> alc0: Ethernet address: 74:d4:35:91:32:04
[...]
>
> If you need other data or more testing, let me know.
>
Do you have any local changes in alc(4)? As I said, the diff
could be applied to stable/10 without any manual modification.
Thanks for testing!
More information about the freebsd-current
mailing list