Re: [CFT] alc(4) QAC AR816x/AR817x ethernet controller support

From: Dariusz Wierzbicki <dwierzbickijc_at_gmail.com>
Date: Fri, 3 Oct 2014 21:29:46 +0200
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.


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 your patches (pci.quirk.diff & alc.diff.20141002).
There was a minor problem with alc.diff.20141002 - hunk 1 failed:

_at__at_ -111,17 +111,31 _at__at_
 		"Atheros AR8152 v1.1 PCIe Fast Ethernet" },
 	{ VENDORID_ATHEROS, DEVICEID_ATHEROS_AR8152_B2, 6 * 1024,
 		"Atheros AR8152 v2.0 PCIe Fast Ethernet" },
+	{ VENDORID_ATHEROS, DEVICEID_ATHEROS_AR8161, 9 * 1024,
+		"Atheros AR8161 PCIe Gigabit Ethernet" },
+	{ VENDORID_ATHEROS, DEVICEID_ATHEROS_AR8162, 9 * 1024,
+		"Atheros AR8161 PCIe Fast Ethernet" },
+	{ VENDORID_ATHEROS, DEVICEID_ATHEROS_AR8171, 9 * 1024,
+		"Atheros AR8161 PCIe Gigabit Ethernet" },
+	{ VENDORID_ATHEROS, DEVICEID_ATHEROS_AR8172, 9 * 1024,
+		"Atheros AR8161 PCIe Fast Ethernet" },
+	{ VENDORID_ATHEROS, DEVICEID_ATHEROS_E2200, 9 * 1024,
+		"Atheros AR8161 PCIe Killer E2200 Gigabit Ethernet" },
 	{ 0, 0, 0, NULL}
 };
 
-static void	alc_aspm(struct alc_softc *, int);
+static void	alc_aspm(struct alc_softc *, int, int);
+static void	alc_aspm_813x(struct alc_softc *, int);
+static void	alc_aspm_816x(struct alc_softc *, int);
 static int	alc_attach(device_t);
 static int	alc_check_boundary(struct alc_softc *);
+static void	alc_config_msi(struct alc_softc *);
 static int	alc_detach(device_t);
 static void	alc_disable_l0s_l1(struct alc_softc *);
 static int	alc_dma_alloc(struct alc_softc *);
 static void	alc_dma_free(struct alc_softc *);
 static void	alc_dmamap_cb(void *, bus_dma_segment_t *, int,
int); +static void	alc_dsp_fixup(struct alc_softc *, int);
 static int	alc_encap(struct alc_softc *, struct mbuf **);
 static struct alc_ident *
 		alc_find_ident(device_t);


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)!
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)!
alc0: 11776 Tx FIFO, 12032 Rx FIFO
miibus0: <MII bus> on alc0
alc0: Ethernet address: 74:d4:35:91:32:04
alc0: could not disable Rx/Tx MAC(0x4000cd00)!
alc0: reset timeout(0x4000cd00)!
alc0: <Qualcomm Atheros AR8161 Gigabit Ethernet> port 0xd000-0xd07f mem
0xf7200000-0xf723ffff irq 18 at device 0.0 on pci3
alc0: reset timeout(0x4000ca00)!
alc0: 11776 Tx FIFO, 12032 Rx FIFO
miibus0: <MII bus> on alc0
alc0: Ethernet address: 74:d4:35:91:32:04
alc0: <Qualcomm Atheros AR8161 Gigabit Ethernet> port 0xd000-0xd07f mem
0xf7200000-0xf723ffff irq 18 at device 0.0 on pci3
alc0: PCI device revision : 0x0010
alc0: Chip id/revision : 0xc002
alc0: AR816x revision : 0x2
alc0: 11776 Tx FIFO, 12032 Rx FIFO
alc0: Read request size : 512 bytes.
alc0: TLP payload size : 128 bytes.
alc0: MSIX count : 16
alc0: MSI count : 16
alc0: attempting to allocate 1 MSI-X vectors (16 supported)
alc0: using IRQ 268 for MSI-X
alc0: Using 1 MSIX message(s).
miibus0: <MII bus> on alc0
alc0: bpf attached
alc0: Ethernet address: 74:d4:35:91:32:04
alc0: link state changed to UP



pciconf -vlc  :

alc0_at_pci0:3:0:0:	class=0x020000 card=0xe0001458 chip=0x10911969
rev=0x10 hdr=0x00 vendor     = 'Atheros Communications Inc.'
    device     = 'AR8161 Gigabit Ethernet'
    class      = network
    subclass   = ethernet
    cap 01[40] = powerspec 3  supports D0 D3  current D0
    cap 10[58] = PCI-Express 1 endpoint max data 128(4096) link x1(x1)
                 speed 2.5(2.5) ASPM disabled(L0s/L1)
    cap 05[c0] = MSI supports 16 messages, 64 bit, vector masks 
    cap 11[d8] = MSI-X supports 16 messages, enabled
                 Table in map 0x10[0x2000], PBA in map 0x10[0x3000]
    ecap 0001[100] = AER 1 0 fatal 0 non-fatal 0 corrected
    ecap 0003[180] = Serial 1 ff91320474d435ff



ifconfig :

alc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu
1500
options=c319a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MCAST,WOL_MAGIC,VLAN_HWTSO,LINKSTATE>
ether 74:d4:35:91:32:04 inet 192.168.1.3 netmask 0xffffff00 broadcast
192.168.1.255 media: Ethernet autoselect (100baseTX <full-duplex>)
	status: active



If you need other data or more testing, let me know.


Kind regards,

Darek
Received on Fri Oct 03 2014 - 17:29:53 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:52 UTC