Author: shurd (ports committer)
Date: Thu Dec  1 23:37:17 2016
New Revision: 309377
URL: https://svnweb.freebsd.org/changeset/base/309377

Log:
  MFC r308696, r308729, r308787, r308813, r309028, r309073, r309078:
  
   r308696:
    New driver for Broadcom NetXtreme-C and NetXtreme-E devices.
  
   r308729:
    Add bnxt(4) to the hardware notes.
  
   r308787:
    Add missing newline in error mesage
  
   r308813:
    Check link status after init
  
   r309028:
    Add missing break to switch statement
  
   r309073:
    Fix version string
  
   r309078:
    Add new device IDs
  
  Approved by:  sbruno
  Relnotes:     yes
  Sponsored by: Broadcom Limited

Added:
  stable/11/share/man/man4/bnxt.4
     - copied unchanged from r308696, head/share/man/man4/bnxt.4
  stable/11/sys/dev/bnxt/
     - copied from r308696, head/sys/dev/bnxt/
  stable/11/sys/modules/bnxt/
     - copied from r308696, head/sys/modules/bnxt/
Modified:
  stable/11/release/doc/en_US.ISO8859-1/hardware/article.xml
  stable/11/share/man/man4/Makefile
  stable/11/sys/boot/forth/loader.conf
  stable/11/sys/conf/NOTES
  stable/11/sys/conf/files
  stable/11/sys/dev/bnxt/bnxt.h
  stable/11/sys/dev/bnxt/bnxt_hwrm.c
  stable/11/sys/dev/bnxt/if_bnxt.c
  stable/11/sys/modules/Makefile
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/release/doc/en_US.ISO8859-1/hardware/article.xml
==============================================================================
--- stable/11/release/doc/en_US.ISO8859-1/hardware/article.xml  Thu Dec  1 
23:27:59 2016        (r309376)
+++ stable/11/release/doc/en_US.ISO8859-1/hardware/article.xml  Thu Dec  1 
23:37:17 2016        (r309377)
@@ -817,6 +817,8 @@
 
       &hwlist.bge;
 
+      &hwlist.bnxt;
+
       &hwlist.bxe;
 
       &hwlist.cas;

Modified: stable/11/share/man/man4/Makefile
==============================================================================
--- stable/11/share/man/man4/Makefile   Thu Dec  1 23:27:59 2016        
(r309376)
+++ stable/11/share/man/man4/Makefile   Thu Dec  1 23:37:17 2016        
(r309377)
@@ -79,6 +79,7 @@ MAN=  aac.4 \
        bhndb.4 \
        bktr.4 \
        blackhole.4 \
+       bnxt.4 \
        bpf.4 \
        bridge.4 \
        bt.4 \
@@ -593,6 +594,7 @@ MLINKS+=bce.4 if_bce.4
 MLINKS+=bfe.4 if_bfe.4
 MLINKS+=bge.4 if_bge.4
 MLINKS+=bktr.4 brooktree.4
+MLINKS+=bnxt.4 if_bnxt.4
 MLINKS+=bridge.4 if_bridge.4
 MLINKS+=bwi.4 if_bwi.4
 MLINKS+=bwn.4 if_bwn.4

Copied: stable/11/share/man/man4/bnxt.4 (from r308696, 
head/share/man/man4/bnxt.4)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/11/share/man/man4/bnxt.4     Thu Dec  1 23:37:17 2016        
(r309377, copy of r308696, head/share/man/man4/bnxt.4)
@@ -0,0 +1,222 @@
+.\" Copyright (c) 2016 Broadcom, All Rights Reserved.
+.\" The term Broadcom refers to Broadcom Limited and/or its subsidiaries
+.\"
+.\" 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 COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT OWNER OR CONTRIBUTORS
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd May 12, 2016
+.Dt BNXT 4
+.Os
+.Sh NAME
+.Nm bnxt
+.Nd "Broadcom NetXtreme-C/NetXtreme-E Family Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device bnxt"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_bnxt_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for various NICs based on the Broadcom BCM57301/2/4,
+and BCM57402/4/6 Ethernet controller chips.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver provides support for various NICs based on the Broadcom NetXtreme-C and
+NetXtreme-E families of Gigabit Ethernet controller chips, including the
+following:
+.Pp
+.Bl -bullet -compact
+.It
+Broadcom BCM57301 NetXtreme-C 10Gb Ethernet Controller
+.It
+Broadcom BCM57302 NetXtreme-C 10Gb/25Gb Ethernet Controller
+.It
+Broadcom BCM57304 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet Controller
+.It
+Broadcom BCM57402 NetXtreme-E 10Gb Ethernet Controller
+.It
+Broadcom BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller
+.It
+Broadcom BCM57406 NetXtreme-E 10GBase-T Ethernet Controller
+.It
+Broadcom BCM57402 NetXtreme-E Partition
+.It
+Broadcom BCM57407 NetXtreme-E 10GBase-T Ethernet Controller
+.It
+Broadcom BCM57404 NetXtreme-E Partition
+.It
+Broadcom BCM57406 NetXtreme-E Partition
+.It
+Broadcom BCM57407 NetXtreme-E 25Gb Ethernet Controller
+.It
+Broadcom BCM57304 NetXtreme-C Virtual Function
+.It
+Broadcom BCM57404 NetXtreme-E Virtual Function
+.El
+.Sh SYSCTL VARIABLES
+These variables must be set before loading the driver, either via 
+.Xr loader.conf 5
+or through the use of
+.Xr kenv 1 .
+These are provided by the
+.Xr iflib 9
+framework, and might be better documented there.
+.Bl -tag -width indent
+.It Va dev.bnxt.X.iflib.override_nrxds
+Override the number of RX descriptors for each queue.
+The value is a comma separated list of three positive integers: the size of the
+completion ring,
+the size of the receive ring, and the size of the aggregation ring 
respectively.
+The completion ring should be at least the size of the aggregation ring plus
+four times the size of the receive ring.
+These numbers must be powers of two, and zero means to use the default.
+Defaults to 0,0,0.
+.It Va dev.bnxt.X.iflib.override_ntxds
+Override the number of TX descriptors for each queue.
+The value is a comma separated list of two positive integers: the size of the
+completion ring, and the size of the transmit ring respectively.
+The completion ring should be at least twice the size of the transmit ring.
+These numbers must be powers of two, and zero means to use the default.
+Defaults to 0,0.
+.It Va override_qs_enable
+When set, allows the number of transmit and receive queues to be different.
+If not set, the lower of the number of TX or RX queues will be used for both.
+.It Va override_nrxqs
+Set the number of RX queues.
+If zero, the number of RX queues is derived from the number of cores on the
+socket connected to the controller.
+Defaults to 0.
+.It Va override_ntxqs
+Set the number of TX queues.
+If zero, the number of TX queues is derived from the number of cores on the
+socket connected to the controller.
+.El
+.Pp
+These
+.Xr sysctl 8
+variables can be changed at any time:
+.Bl -tag -width indent
+.It Va dev.bnxt.X.vlan_only
+Require that incoming frames must have a VLAN tag on them that matches one that
+is configured for the NIC.
+Normally, both frames that have a matching VLAN tag and frames that have no
+VLAN tag are accepted.
+Defaults to 0.
+.It Va dev.bnxt.X.vlan_strip
+When non-zero the NIC strips VLAN tags on receive.
+Defaults to 0.
+.It Va dev.bnxt.X.rx_stall
+Enable buffering rather than dropping frames when there are no available host
+RX buffers for DMA.
+Defaults to 0.
+.It Va dev.bnxt.X.rss_type
+Comma-separated list of RSS hash types to support.
+Default is all types.
+Defaults to ipv4,tcp_ipv4,udp_ipv4,ipv6,tcp_ipv6,udp_ipv6.
+.It Va dev.bnxt.X.rss_key
+Current RSS key.
+Defaults to a randomly generated value which is generated for each device
+during attach.
+.It Va dev.bnxt.X.ver.hwrm_min_ver
+Minimum HWRM (HardWare Resource Manager) firmware API to support.
+If the firmware implements an older version, a warning will be printed, and the
+firmware should be upgraded.
+Defaults to 1.2.2.
+.El
+.Pp
+These
+.Xr sysctl 8
+variables are read-only:
+.Bl -tag -width indent
+.It Va dev.bnxt.X.if_name
+Current interface name of the device.
+This will normally be 
+.Va bnxtX ,
+but this can be changed using
+.Cm ifconfig name .
+This sysctl allows correlating an interface with a child of dev.bnxt.
+.It Va dev.bnxt.X.nvram.*
+Information about the NVRAM device which contains the device firmware.
+.It Va dev.bnxt.X.ver.*
+Version-related information about the device and firmware:
+.It Va dev.bnxt.X.ver.hwrm_if
+Supported HWRM API version of the currently running firmware.
+.It Va dev.bnxt.X.ver.driver_hwrm_if
+HWRM API version the driver was built to support.
+.It Va dev.bnxt.X.hwstats.*
+Per-queue statistics tracked by the hardware.
+.It Va dev.bnxt.X.hwstats.rxq0.drop_pkts
+Number of packets dropped by hardware on queue zero.
+This number might seem high, but the count includes packets dropped due to
+incorrect destination MAC, unsubscribed multicast address, and other normal
+reasons to ignore Ethernet frames.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "bnxt%d: %s command returned %s error."
+Device firmware rejected a command from the driver.
+There might be a driver/firmware HWRM API mismatch.
+.It "bnxt%d: Timeout sending %s (timeout: %d) seq %d\n"
+Device firmware unresponsive.
+A PCI device reset is likely needed.
+.It "bnxt%d: Timeout sending %s (timeout: %d) msg {0x%x 0x%x} len:%d v: %d\n"
+Partial firmware response.
+A PCI device reset is likely needed.
+.Pp
+As of this writing, the system must be rebooted to initiate a PCI device reset.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8 ,
+.Xr iflib 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 12.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Jack Vogel Aq Mt jfvo...@gmail.com .
+and is currently maintained by
+.An Stephen Hurd Aq Mt stephen.h...@broadcom.com .

Modified: stable/11/sys/boot/forth/loader.conf
==============================================================================
--- stable/11/sys/boot/forth/loader.conf        Thu Dec  1 23:27:59 2016        
(r309376)
+++ stable/11/sys/boot/forth/loader.conf        Thu Dec  1 23:37:17 2016        
(r309377)
@@ -312,6 +312,7 @@ if_axe_load="NO"            # ASIX Electronics AX8
 if_bce_load="NO"               # Broadcom NetXtreme II Gigabit Ethernet
 if_bfe_load="NO"               # Broadcom BCM4401
 if_bge_load="NO"               # Broadcom BCM570x PCI Gigabit Ethernet
+if_bnxt_load="NO"              # Broadcom NetXtreme-C/NetXtreme-E
 if_bridge_load="NO"            # if_bridge(4) devices
 if_bwi_load="NO"               # Broadcom BCM53xx IEEE 802.11b/g wireness NICs
 if_bwn_load="NO"               # Broadcom BCM43xx IEEE 802.11 wireless NICs

Modified: stable/11/sys/conf/NOTES
==============================================================================
--- stable/11/sys/conf/NOTES    Thu Dec  1 23:27:59 2016        (r309376)
+++ stable/11/sys/conf/NOTES    Thu Dec  1 23:37:17 2016        (r309377)
@@ -1900,6 +1900,7 @@ device    amphy           # AMD AM79c873 / Davicom
 device         atphy           # Attansic/Atheros F1
 device         axphy           # Asix Semiconductor AX88x9x
 device         bmtphy          # Broadcom BCM5201/BCM5202 and 3Com 3c905C
+device         bnxt            # Broadcom NetXtreme-C/NetXtreme-E
 device         brgphy          # Broadcom BCM54xx/57xx 1000baseTX
 device         ciphy           # Cicada/Vitesse CS/VSC8xxx
 device         e1000phy        # Marvell 88E1000 1000/100/10-BT
@@ -1940,6 +1941,7 @@ device            xmphy           # XaQti XMAC II
 #      BCM570x family of controllers, including the 3Com 3c996-T,
 #      the Netgear GA302T, the SysKonnect SK-9D21 and SK-9D41, and
 #      the embedded gigE NICs on Dell PowerEdge 2550 servers.
+# bnxt:        Broadcom NetXtreme-C and NetXtreme-E PCIe 10/25/50G Ethernet 
adapters.
 # bxe: Broadcom NetXtreme II (BCM5771X/BCM578XX) PCIe 10Gb Ethernet
 #       adapters.
 # bwi: Broadcom BCM430* and BCM431* family of wireless adapters.

Modified: stable/11/sys/conf/files
==============================================================================
--- stable/11/sys/conf/files    Thu Dec  1 23:27:59 2016        (r309376)
+++ stable/11/sys/conf/files    Thu Dec  1 23:37:17 2016        (r309377)
@@ -1187,6 +1187,10 @@ dev/bktr/bktr_i2c.c              optional bktr pci s
 dev/bktr/bktr_os.c             optional bktr pci
 dev/bktr/bktr_tuner.c          optional bktr pci
 dev/bktr/msp34xx.c             optional bktr pci
+dev/bnxt/bnxt_hwrm.c           optional bnxt iflib pci
+dev/bnxt/bnxt_sysctl.c         optional bnxt iflib pci
+dev/bnxt/bnxt_txrx.c           optional bnxt iflib pci
+dev/bnxt/if_bnxt.c             optional bnxt iflib pci
 dev/buslogic/bt.c              optional bt
 dev/buslogic/bt_eisa.c         optional bt eisa
 dev/buslogic/bt_isa.c          optional bt isa

Modified: stable/11/sys/dev/bnxt/bnxt.h
==============================================================================
--- head/sys/dev/bnxt/bnxt.h    Tue Nov 15 20:35:29 2016        (r308696)
+++ stable/11/sys/dev/bnxt/bnxt.h       Thu Dec  1 23:37:17 2016        
(r309377)
@@ -52,16 +52,39 @@ __FBSDID("$FreeBSD$");
 #define BCM57301       0x16c8
 #define BCM57302       0x16c9
 #define BCM57304       0x16ca
+#define BCM57311       0x16ce
+#define BCM57312       0x16cf
+#define BCM57314       0x16df
 #define BCM57402       0x16d0
-#define BCM57404       0x16d1
-#define BCM57406       0x16d2
 #define BCM57402_NPAR  0x16d4
-#define BCM57407       0x16d5
+#define BCM57404       0x16d1
 #define BCM57404_NPAR  0x16e7
+#define BCM57406       0x16d2
 #define BCM57406_NPAR  0x16e8
+#define BCM57407       0x16d5
+#define BCM57407_NPAR  0x16ea
 #define BCM57407_SFP   0x16e9
-#define BCM57304_VF    0x16cb
-#define BCM57404_VF    0x16d3
+#define BCM57412       0x16d6
+#define BCM57412_NPAR1 0x16de
+#define BCM57412_NPAR2 0x16eb
+#define BCM57414       0x16d7
+#define BCM57414_NPAR1 0x16ec
+#define BCM57414_NPAR2 0x16ed
+#define BCM57416       0x16d8
+#define BCM57416_NPAR1 0x16ee
+#define BCM57416_NPAR2 0x16ef
+#define BCM57416_SFP   0x16e3
+#define BCM57417       0x16d9
+#define BCM57417_NPAR1 0x16c0
+#define BCM57417_NPAR2 0x16cc
+#define BCM57417_SFP   0x16e2
+#define BCM58700       0x16cd
+#define NETXTREME_C_VF1        0x16cb
+#define NETXTREME_C_VF2        0x16e1
+#define NETXTREME_C_VF3        0x16e5
+#define NETXTREME_E_VF1        0x16c1
+#define NETXTREME_E_VF2        0x16d3
+#define NETXTREME_E_VF3        0x16dc
 
 #define CSUM_OFFLOAD           (CSUM_IP_TSO|CSUM_IP6_TSO|CSUM_IP| \
                                 CSUM_IP_UDP|CSUM_IP_TCP|CSUM_IP_SCTP| \

Modified: stable/11/sys/dev/bnxt/bnxt_hwrm.c
==============================================================================
--- head/sys/dev/bnxt/bnxt_hwrm.c       Tue Nov 15 20:35:29 2016        
(r308696)
+++ stable/11/sys/dev/bnxt/bnxt_hwrm.c  Thu Dec  1 23:37:17 2016        
(r309377)
@@ -424,7 +424,7 @@ bnxt_hwrm_func_qcaps(struct bnxt_softc *
                pf->max_rx_wm_flows = le32toh(resp->max_rx_wm_flows);
        }
        if (!_is_valid_ether_addr(func->mac_addr)) {
-               device_printf(softc->dev, "Invalid ethernet address, generating 
random locally administered address");
+               device_printf(softc->dev, "Invalid ethernet address, generating 
random locally administered address\n");
                get_random_ether_addr(func->mac_addr);
        }
 

Modified: stable/11/sys/dev/bnxt/if_bnxt.c
==============================================================================
--- head/sys/dev/bnxt/if_bnxt.c Tue Nov 15 20:35:29 2016        (r308696)
+++ stable/11/sys/dev/bnxt/if_bnxt.c    Thu Dec  1 23:37:17 2016        
(r309377)
@@ -75,26 +75,72 @@ static pci_vendor_info_t bnxt_vendor_inf
        "Broadcom BCM57302 NetXtreme-C 10Gb/25Gb Ethernet Controller"),
     PVID(BROADCOM_VENDOR_ID, BCM57304,
        "Broadcom BCM57304 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet 
Controller"),
+    PVID(BROADCOM_VENDOR_ID, BCM57311,
+       "Broadcom BCM57311 NetXtreme-C 10Gb Ethernet"),
+    PVID(BROADCOM_VENDOR_ID, BCM57312,
+       "Broadcom BCM57312 NetXtreme-C 10Gb/25Gb Ethernet"),
+    PVID(BROADCOM_VENDOR_ID, BCM57314,
+       "Broadcom BCM57314 NetXtreme-C 10Gb/25Gb/40Gb/50Gb Ethernet"),
     PVID(BROADCOM_VENDOR_ID, BCM57402,
        "Broadcom BCM57402 NetXtreme-E 10Gb Ethernet Controller"),
-    PVID(BROADCOM_VENDOR_ID, BCM57404,
-       "Broadcom BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller"),
-    PVID(BROADCOM_VENDOR_ID, BCM57406,
-       "Broadcom BCM57406 NetXtreme-E 10GBase-T Ethernet Controller"),
     PVID(BROADCOM_VENDOR_ID, BCM57402_NPAR,
        "Broadcom BCM57402 NetXtreme-E Partition"),
-    PVID(BROADCOM_VENDOR_ID, BCM57407,
-       "Broadcom BCM57407 NetXtreme-E 10GBase-T Ethernet Controller"),
+    PVID(BROADCOM_VENDOR_ID, BCM57404,
+       "Broadcom BCM57404 NetXtreme-E 10Gb/25Gb Ethernet Controller"),
     PVID(BROADCOM_VENDOR_ID, BCM57404_NPAR,
        "Broadcom BCM57404 NetXtreme-E Partition"),
+    PVID(BROADCOM_VENDOR_ID, BCM57406,
+       "Broadcom BCM57406 NetXtreme-E 10GBase-T Ethernet Controller"),
     PVID(BROADCOM_VENDOR_ID, BCM57406_NPAR,
        "Broadcom BCM57406 NetXtreme-E Partition"),
+    PVID(BROADCOM_VENDOR_ID, BCM57407,
+       "Broadcom BCM57407 NetXtreme-E 10GBase-T Ethernet Controller"),
+    PVID(BROADCOM_VENDOR_ID, BCM57407_NPAR,
+       "Broadcom BCM57407 NetXtreme-E Ethernet Partition"),
     PVID(BROADCOM_VENDOR_ID, BCM57407_SFP,
        "Broadcom BCM57407 NetXtreme-E 25Gb Ethernet Controller"),
-    PVID(BROADCOM_VENDOR_ID, BCM57304_VF,
-       "Broadcom BCM57304 NetXtreme-C Virtual Function"),
-    PVID(BROADCOM_VENDOR_ID, BCM57404_VF,
-       "Broadcom BCM57404 NetXtreme-E Virtual Function"),
+    PVID(BROADCOM_VENDOR_ID, BCM57412,
+       "Broadcom BCM57412 NetXtreme-E 10Gb Ethernet"),
+    PVID(BROADCOM_VENDOR_ID, BCM57412_NPAR1,
+       "Broadcom BCM57412 NetXtreme-E Ethernet Partition"),
+    PVID(BROADCOM_VENDOR_ID, BCM57412_NPAR2,
+       "Broadcom BCM57412 NetXtreme-E Ethernet Partition"),
+    PVID(BROADCOM_VENDOR_ID, BCM57414,
+       "Broadcom BCM57414 NetXtreme-E 10Gb/25Gb Ethernet"),
+    PVID(BROADCOM_VENDOR_ID, BCM57414_NPAR1,
+       "Broadcom BCM57414 NetXtreme-E Ethernet Partition"),
+    PVID(BROADCOM_VENDOR_ID, BCM57414_NPAR2,
+       "Broadcom BCM57414 NetXtreme-E Ethernet Partition"),
+    PVID(BROADCOM_VENDOR_ID, BCM57416,
+       "Broadcom BCM57416 NetXtreme-E 10GBase-T Ethernet"),
+    PVID(BROADCOM_VENDOR_ID, BCM57416_NPAR1,
+       "Broadcom BCM57416 NetXtreme-E Ethernet Partition"),
+    PVID(BROADCOM_VENDOR_ID, BCM57416_NPAR2,
+       "Broadcom BCM57416 NetXtreme-E Ethernet Partition"),
+    PVID(BROADCOM_VENDOR_ID, BCM57416_SFP,
+       "Broadcom BCM57416 NetXtreme-E 10Gb Ethernet"),
+    PVID(BROADCOM_VENDOR_ID, BCM57417,
+       "Broadcom BCM57417 NetXtreme-E 10GBase-T Ethernet"),
+    PVID(BROADCOM_VENDOR_ID, BCM57417_NPAR1,
+       "Broadcom BCM57417 NetXtreme-E Ethernet Partition"),
+    PVID(BROADCOM_VENDOR_ID, BCM57417_NPAR2,
+       "Broadcom BCM57417 NetXtreme-E Ethernet Partition"),
+    PVID(BROADCOM_VENDOR_ID, BCM57417_SFP,
+       "Broadcom BCM57417 NetXtreme-E 10Gb/25Gb Ethernet"),
+    PVID(BROADCOM_VENDOR_ID, BCM58700,
+       "Broadcom BCM58700 Nitro 1Gb/2.5Gb/10Gb Ethernet"),
+    PVID(BROADCOM_VENDOR_ID, NETXTREME_C_VF1,
+       "Broadcom NetXtreme-C Ethernet Virtual Function"),
+    PVID(BROADCOM_VENDOR_ID, NETXTREME_C_VF2,
+       "Broadcom NetXtreme-C Ethernet Virtual Function"),
+    PVID(BROADCOM_VENDOR_ID, NETXTREME_C_VF3,
+       "Broadcom NetXtreme-C Ethernet Virtual Function"),
+    PVID(BROADCOM_VENDOR_ID, NETXTREME_E_VF1,
+       "Broadcom NetXtreme-E Ethernet Virtual Function"),
+    PVID(BROADCOM_VENDOR_ID, NETXTREME_E_VF2,
+       "Broadcom NetXtreme-E Ethernet Virtual Function"),
+    PVID(BROADCOM_VENDOR_ID, NETXTREME_E_VF3,
+       "Broadcom NetXtreme-E Ethernet Virtual Function"),
     /* required last entry */
 
     PVID_END
@@ -227,7 +273,7 @@ static driver_t bnxt_iflib_driver = {
  * iflib shared context
  */
 
-char bnxt_driver_version[] = 
"https://github.com/Broadcom/freebsd-nxt/commits/bnxt-dev";;
+char bnxt_driver_version[] = "FreeBSD base";
 extern struct if_txrx bnxt_txrx;
 static struct if_shared_ctx bnxt_sctx_init = {
        .isc_magic = IFLIB_MAGIC,
@@ -540,14 +586,26 @@ bnxt_attach_pre(if_ctx_t ctx)
        softc->sctx = iflib_get_sctx(ctx);
        scctx = softc->scctx;
 
+       /* TODO: Better way of detecting NPAR/VF is needed */
        switch (softc->sctx->isc_vendor_info->pvi_device_id) {
        case BCM57402_NPAR:
        case BCM57404_NPAR:
        case BCM57406_NPAR:
+       case BCM57407_NPAR:
+       case BCM57412_NPAR1:
+       case BCM57412_NPAR2:
+       case BCM57414_NPAR1:
+       case BCM57414_NPAR2:
+       case BCM57416_NPAR1:
+       case BCM57416_NPAR2:
                softc->flags |= BNXT_FLAG_NPAR;
                break;
-       case BCM57304_VF:
-       case BCM57404_VF:
+       case NETXTREME_C_VF1:
+       case NETXTREME_C_VF2:
+       case NETXTREME_C_VF3:
+       case NETXTREME_E_VF1:
+       case NETXTREME_E_VF2:
+       case NETXTREME_E_VF3:
                softc->flags |= BNXT_FLAG_VF;
                break;
        }
@@ -822,6 +880,7 @@ static void
 bnxt_init(if_ctx_t ctx)
 {
        struct bnxt_softc *softc = iflib_get_softc(ctx);
+       struct ifmediareq ifmr;
        int i, j;
        int rc;
 
@@ -975,6 +1034,7 @@ bnxt_init(if_ctx_t ctx)
        }
 
        bnxt_do_enable_intr(&softc->def_cp_ring);
+       bnxt_media_status(softc->ctx, &ifmr);
        return;
 
 fail:
@@ -1910,6 +1970,7 @@ bnxt_add_media_types(struct bnxt_softc *
                if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_10GB)
                        ifmedia_add(softc->media, IFM_ETHER | IFM_10G_KR, 0,
                            NULL);
+               break;
        case HWRM_PORT_PHY_QCFG_OUTPUT_PHY_TYPE_BASELR:
                if (supported & HWRM_PORT_PHY_QCFG_OUTPUT_SUPPORT_SPEEDS_100GB)
                        ifmedia_add(softc->media, IFM_ETHER | IFM_100G_LR4, 0,

Modified: stable/11/sys/modules/Makefile
==============================================================================
--- stable/11/sys/modules/Makefile      Thu Dec  1 23:27:59 2016        
(r309376)
+++ stable/11/sys/modules/Makefile      Thu Dec  1 23:37:17 2016        
(r309377)
@@ -57,6 +57,7 @@ SUBDIR=       \
        ${_bios} \
        ${_bktr} \
        ${_bm} \
+       bnxt \
        bridgestp \
        bwi \
        bwn \
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to