Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/pci add support Aquantia AQC seriese 10G network ada...



details:   https://anonhg.NetBSD.org/src/rev/fbdf0f79c5f6
branches:  trunk
changeset: 968038:fbdf0f79c5f6
user:      ryo <ryo%NetBSD.org@localhost>
date:      Wed Jan 01 10:11:21 2020 +0000

description:
add support Aquantia AQC seriese 10G network adapters.

this driver is based on the FreeBSD version https://github.com/Aquantia/aqtion-freebsd ,
but drastically rewritten for NetBSD.

diffstat:

 distrib/sets/lists/man/mi |     5 +-
 share/man/man4/Makefile   |     4 +-
 share/man/man4/aq.4       |    84 +
 sys/dev/pci/files.pci     |     8 +-
 sys/dev/pci/if_aq.c       |  4582 +++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 4679 insertions(+), 4 deletions(-)

diffs (truncated from 4747 to 300 lines):

diff -r 4e4c1d2a353c -r fbdf0f79c5f6 distrib/sets/lists/man/mi
--- a/distrib/sets/lists/man/mi Wed Jan 01 10:06:40 2020 +0000
+++ b/distrib/sets/lists/man/mi Wed Jan 01 10:11:21 2020 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1667 2019/12/23 06:45:37 maxv Exp $
+# $NetBSD: mi,v 1.1668 2020/01/01 10:11:21 ryo Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -855,6 +855,7 @@
 ./usr/share/man/cat4/ams.0                     man-sys-catman          .cat
 ./usr/share/man/cat4/an.0                      man-sys-catman          .cat
 ./usr/share/man/cat4/aps.0                     man-sys-catman          .cat
+./usr/share/man/cat4/aq.0                      man-sys-catman          .cat
 ./usr/share/man/cat4/arc/intro.0               man-sys-catman          .cat
 ./usr/share/man/cat4/arcmsr.0                  man-sys-catman          .cat
 ./usr/share/man/cat4/arcofi.0                  man-sys-catman          .cat
@@ -4077,6 +4078,7 @@
 ./usr/share/man/html4/ams.html                 man-sys-htmlman         html
 ./usr/share/man/html4/an.html                  man-sys-htmlman         html
 ./usr/share/man/html4/aps.html                 man-sys-htmlman         html
+./usr/share/man/html4/aq.html                  man-sys-htmlman         html
 ./usr/share/man/html4/arc/intro.html           man-sys-htmlman         html
 ./usr/share/man/html4/arcmsr.html              man-sys-htmlman         html
 ./usr/share/man/html4/arcofi.html              man-sys-htmlman         html
@@ -6995,6 +6997,7 @@
 ./usr/share/man/man4/ams.4                     man-sys-man             .man
 ./usr/share/man/man4/an.4                      man-sys-man             .man
 ./usr/share/man/man4/aps.4                     man-sys-man             .man
+./usr/share/man/man4/aq.4                      man-sys-man             .man
 ./usr/share/man/man4/arc/intro.4               man-sys-man             .man
 ./usr/share/man/man4/arcmsr.4                  man-sys-man             .man
 ./usr/share/man/man4/arcofi.4                  man-sys-man             .man
diff -r 4e4c1d2a353c -r fbdf0f79c5f6 share/man/man4/Makefile
--- a/share/man/man4/Makefile   Wed Jan 01 10:06:40 2020 +0000
+++ b/share/man/man4/Makefile   Wed Jan 01 10:11:21 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.692 2019/12/23 06:45:37 maxv Exp $
+#      $NetBSD: Makefile,v 1.693 2020/01/01 10:11:21 ryo Exp $
 #      @(#)Makefile    8.1 (Berkeley) 6/18/93
 
 MAN=   aac.4 ac97.4 acardide.4 aceride.4 acphy.4 \
@@ -6,7 +6,7 @@
        adc.4 adm1026hm.4 admtemp.4 adv.4 adw.4 age.4 agp.4 agr.4 ahb.4 ahc.4 \
        ahcisata.4 ahd.4 aibs.4 alc.4 ale.4 alipm.4 altmem.4 altq.4 \
        am2315temp.4 amdpm.4 amdtemp.4 amhphy.4 amr.4 aps.4 asus.4 \
-       an.4 arcmsr.4 arcofi.4 aria.4 artsata.4 ata.4 atalk.4 ataraid.4 \
+       an.4 aq.4 arcmsr.4 arcofi.4 aria.4 artsata.4 ata.4 atalk.4 ataraid.4 \
        ath.4 athn.4 atphy.4 atppc.4 attimer.4 atw.4 \
        auacer.4 audio.4 audiocs.4 auich.4 \
        auixp.4 autri.4 auvia.4 awi.4 azalia.4 \
diff -r 4e4c1d2a353c -r fbdf0f79c5f6 share/man/man4/aq.4
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/share/man/man4/aq.4       Wed Jan 01 10:11:21 2020 +0000
@@ -0,0 +1,84 @@
+.\"    $NetBSD: aq.4,v 1.1 2020/01/01 10:11:21 ryo Exp $
+.\"
+.\" Copyright (c) 2020 Ryo Shimizu <ryo%nerv.org@localhost>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+.\" DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+.\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd January 1, 2020
+.Dt AQ 4
+.Os
+.Sh NAME
+.Nm aq
+.Nd Aquantia AQC multigigabit Network driver
+.Sh SYNOPSIS
+.Cd "aq* at pci? dev ? function ?"
+.Sh DESCRIPTION
+The
+.Nm
+driver supports Aquantia AQC series controllers.
+Supported controllers include:
+.Pp
+.Bl -bullet -compact
+.It
+AQC107 10 Gigabit Network Adapter
+.It
+AQC108 5 Gigabit Network Adapter
+.It
+AQC109 2.5 Gigabit Network Adapter
+.It
+AQC111 5 Gigabit Network Adapter
+.It
+AQC112 2.5 Gigabit Network Adapter
+.It
+AQC107S 10 Gigabit Network Adapter
+.It
+AQC108S 5 Gigabit Network Adapter
+.It
+AQC109S 2.5 Gigabit Network Adapter
+.It
+AQC111S 5 Gigabit Network Adapter
+.It
+AQC112S 2.5 Gigabit Network Adapter
+.It
+D107 10 Gigabit Network Adapter
+.It
+D108 5 Gigabit Network Adapter
+.It
+D109 2.5 Gigabit Network Adapter
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr ifmedia 4 ,
+.Xr netintro 4 ,
+.Xr pci 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Nx 10.0 , and is based on the
+.Fx
+driver of the same name, but has been drastically rewritten by Ryo Shimizu.
+.Sh BUGS
+.Nm
+driver does not support the VLAN hardware filter.
diff -r 4e4c1d2a353c -r fbdf0f79c5f6 sys/dev/pci/files.pci
--- a/sys/dev/pci/files.pci     Wed Jan 01 10:06:40 2020 +0000
+++ b/sys/dev/pci/files.pci     Wed Jan 01 10:11:21 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.pci,v 1.418 2019/12/10 12:08:52 yamaguchi Exp $
+#      $NetBSD: files.pci,v 1.419 2020/01/01 10:11:21 ryo Exp $
 #
 # Config file and device description for machine-independent PCI code.
 # Included by ports that need it.  Requires that the SCSI files be
@@ -167,6 +167,12 @@
 attach mpii at pci
 file   dev/pci/mpii.c                  mpii
 
+# Aquantia/Atlantic 10-Gigabit Ethernet
+device aq: ether, ifnet, arp
+attach aq at pci
+file   dev/pci/if_aq.c                 aq
+defflag opt_if_aq.h    AQ_EVENT_COUNTERS
+
 # Ethernet driver for DC21040-based boards
 device de: ether, ifnet, arp
 attach de at pci
diff -r 4e4c1d2a353c -r fbdf0f79c5f6 sys/dev/pci/if_aq.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/dev/pci/if_aq.c       Wed Jan 01 10:11:21 2020 +0000
@@ -0,0 +1,4582 @@
+/*     $NetBSD: if_aq.c,v 1.1 2020/01/01 10:11:21 ryo Exp $    */
+
+/**
+ * aQuantia Corporation Network Driver
+ * Copyright (C) 2014-2017 aQuantia Corporation. All rights reserved
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *   (1) Redistributions of source code must retain the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer.
+ *
+ *   (2) Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ *
+ *   (3) The name of the author may not be used to endorse or promote
+ *   products derived from this software without specific prior
+ *   written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+/*-
+ * Copyright (c) 2020 Ryo Shimizu <ryo%nerv.org@localhost>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: if_aq.c,v 1.1 2020/01/01 10:11:21 ryo Exp $");
+
+#ifdef _KERNEL_OPT
+#include "opt_if_aq.h"
+#endif
+
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/bitops.h>
+#include <sys/cprng.h>
+#include <sys/cpu.h>
+#include <sys/interrupt.h>
+#include <sys/module.h>
+#include <sys/pcq.h>
+
+#include <net/bpf.h>
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/if_media.h>
+#include <net/if_ether.h>
+#include <net/rss_config.h>
+
+#include <dev/pci/pcivar.h>
+#include <dev/pci/pcireg.h>
+#include <dev/pci/pcidevs.h>
+
+/* driver configuration */
+#define CONFIG_INTR_MODERATION_ENABLE  true    /* delayed interrupt */
+#undef CONFIG_LRO_SUPPORT                      /* no LRO not suppoted */
+#undef CONFIG_NO_TXRX_INDEPENDENT              /* share TX/RX interrupts */
+
+#define AQ_NINTR_MAX                   (AQ_RSSQUEUE_MAX + AQ_RSSQUEUE_MAX + 1)
+                                       /* TX + RX + LINK. must be <= 32 */
+#define AQ_LINKSTAT_IRQ                        31      /* for legacy mode */
+
+#define AQ_TXD_NUM                     2048    /* per ring. 8*n && 32~8184 */
+#define AQ_RXD_NUM                     2048    /* per ring. 8*n && 32~8184 */
+/* minimum required to send a packet (vlan needs additional TX descriptor) */
+#define AQ_TXD_MIN                     (1 + 1)
+
+
+/* hardware specification */
+#define AQ_RINGS_NUM                   32
+#define AQ_RSSQUEUE_MAX                        8
+#define AQ_RX_DESCRIPTOR_MIN           32
+#define AQ_TX_DESCRIPTOR_MIN           32
+#define AQ_RX_DESCRIPTOR_MAX           8184
+#define AQ_TX_DESCRIPTOR_MAX           8184
+#define AQ_TRAFFICCLASS_NUM            8
+#define AQ_RSS_HASHKEY_SIZE            40
+#define AQ_RSS_INDIRECTION_TABLE_MAX   64
+
+/*
+ * TERMINOLOGY
+ *     MPI = MAC PHY INTERFACE?
+ *     RPO = RX Protocol Offloading
+ *     TPO = TX Protocol Offloading
+ *     RPF = RX Packet Filter
+ *     TPB = TX Packet buffer
+ *     RPB = RX Packet buffer
+ */
+
+/* registers */
+#define AQ_FW_SOFTRESET_REG                    0x0000
+#define  AQ_FW_SOFTRESET_RESET                 __BIT(15) /* soft reset bit */
+#define  AQ_FW_SOFTRESET_DIS                   __BIT(14) /* reset disable */
+
+#define AQ_FW_VERSION_REG                      0x0018
+#define AQ_HW_REVISION_REG                     0x001c
+#define AQ_GLB_NVR_INTERFACE1_REG              0x0100
+



Home | Main Index | Thread Index | Old Index