svn commit: r341118 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:56:11 2018
New Revision: 341118
URL: https://svnweb.freebsd.org/changeset/base/341118

Log:
  sfxge(4): move privilege config to ef10 NIC board config
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18194

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:59 2018
(r341117)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:56:11 2018
(r341118)
@@ -1580,6 +1580,7 @@ ef10_nic_board_cfg(
uint32_t board_type = 0;
uint32_t base, nvec;
uint32_t port;
+   uint32_t mask;
uint32_t pf;
uint32_t vf;
uint8_t mac_addr[6] = { 0 };
@@ -1707,13 +1708,25 @@ ef10_nic_board_cfg(
encp->enc_intr_vec_base = base;
encp->enc_intr_limit = nvec;
 
+   /*
+* Get the current privilege mask. Note that this may be modified
+* dynamically, so this value is informational only. DO NOT use
+* the privilege mask to check for sufficient privileges, as that
+* can result in time-of-check/time-of-use bugs.
+*/
+   if ((rc = ef10_get_privilege_mask(enp, )) != 0)
+   goto fail10;
+   encp->enc_privilege_mask = mask;
+
/* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)
if (rc != EACCES)
-   goto fail10;
+   goto fail11;
 
return (0);
 
+fail11:
+   EFSYS_PROBE(fail11);
 fail10:
EFSYS_PROBE(fail10);
 fail9:

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:59 2018
(r341117)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:56:11 2018
(r341118)
@@ -105,7 +105,6 @@ hunt_board_cfg(
 {
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
efx_port_t *epp = &(enp->en_port);
-   uint32_t mask;
uint32_t flags;
uint32_t sysclk, dpcpu_clk;
uint32_t bandwidth;
@@ -242,18 +241,8 @@ hunt_board_cfg(
encp->enc_piobuf_size = HUNT_PIOBUF_SIZE;
encp->enc_piobuf_min_alloc_size = HUNT_MIN_PIO_ALLOC_SIZE;
 
-   /*
-* Get the current privilege mask. Note that this may be modified
-* dynamically, so this value is informational only. DO NOT use
-* the privilege mask to check for sufficient privileges, as that
-* can result in time-of-check/time-of-use bugs.
-*/
-   if ((rc = ef10_get_privilege_mask(enp, )) != 0)
-   goto fail5;
-   encp->enc_privilege_mask = mask;
-
if ((rc = hunt_nic_get_required_pcie_bandwidth(enp, )) != 0)
-   goto fail6;
+   goto fail5;
encp->enc_required_pcie_bandwidth_mbps = bandwidth;
 
/* All Huntington devices have a PCIe Gen3, 8 lane connector */
@@ -261,8 +250,6 @@ hunt_board_cfg(
 
return (0);
 
-fail6:
-   EFSYS_PROBE(fail6);
 fail5:
EFSYS_PROBE(fail5);
 fail4:

Modified: head/sys/dev/sfxge/common/medford2_nic.c
==
--- head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:59 2018
(r341117)
+++ head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:56:11 2018
(r341118)
@@ -78,7 +78,6 @@ medford2_board_cfg(
__inefx_nic_t *enp)
 {
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
-   uint32_t mask;
uint32_t sysclk, dpcpu_clk;
uint32_t end_padding;
uint32_t bandwidth;
@@ -178,16 +177,6 @@ medford2_board_cfg(
encp->enc_piobuf_min_alloc_size = MEDFORD2_MIN_PIO_ALLOC_SIZE;
 
/*
-* Get the current privilege mask. Note that this may be modified
-* dynamically, so this value is informational only. DO NOT use
-* the privilege mask to check for sufficient privileges, as that
-* can result in time-of-check/time-of-use bugs.
-*/
-   if ((rc = ef10_get_privilege_mask(enp, )) != 0)
-   goto fail5;
-   encp->enc_privilege_mask = mask;
-
-   /*
 * Medford2 stores a single global copy of VPD, not per-PF as on
 * Huntington.
 */
@@ -195,14 +184,12 @@ medford2_board_cfg(
 
rc = medford2_nic_get_required_pcie_bandwidth(enp, );
if (rc != 0)
-   goto fail6;
+   goto fail5;
encp->enc_required_pcie_bandwidth_mbps = bandwidth;
encp->enc_max_pcie_link_gen = 

svn commit: r341114 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:55:24 2018
New Revision: 341114
URL: https://svnweb.freebsd.org/changeset/base/341114

Log:
  sfxge(4): move Rx config to ef10 NIC board config
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18190

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:12 2018
(r341113)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:24 2018
(r341114)
@@ -1662,6 +1662,17 @@ ef10_nic_board_cfg(
if ((rc = ef10_get_datapath_caps(enp)) != 0)
goto fail8;
 
+   /* Alignment for WPTR updates */
+   encp->enc_rx_push_align = EF10_RX_WPTR_ALIGN;
+
+   /*
+* Maximum number of exclusive RSS contexts. EF10 hardware supports 64
+* in total, but 6 are reserved for shared contexts. They are a global
+* resource so not all may be available.
+*/
+   encp->enc_rx_scale_max_exclusive_contexts = 64 - 6;
+
+
/* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)
if (rc != EACCES)

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:12 2018
(r341113)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:24 2018
(r341114)
@@ -232,16 +232,6 @@ hunt_board_cfg(
encp->enc_rx_buf_align_start = 1;
encp->enc_rx_buf_align_end = 64; /* RX DMA end padding */
 
-   /* Alignment for WPTR updates */
-   encp->enc_rx_push_align = EF10_RX_WPTR_ALIGN;
-
-   /*
-* Maximum number of exclusive RSS contexts which can be allocated. The
-* hardware supports 64, but 6 are reserved for shared contexts. They
-* are a global resource so not all may be available.
-*/
-   encp->enc_rx_scale_max_exclusive_contexts = 58;
-
encp->enc_tx_dma_desc_size_max = EFX_MASK32(ESF_DZ_RX_KER_BYTE_CNT);
/* No boundary crossing limits */
encp->enc_tx_dma_desc_boundary = 0;

Modified: head/sys/dev/sfxge/common/medford2_nic.c
==
--- head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:12 2018
(r341113)
+++ head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:24 2018
(r341114)
@@ -166,16 +166,6 @@ medford2_board_cfg(
}
encp->enc_rx_buf_align_end = end_padding;
 
-   /* Alignment for WPTR updates */
-   encp->enc_rx_push_align = EF10_RX_WPTR_ALIGN;
-
-   /*
-* Maximum number of exclusive RSS contexts which can be allocated. The
-* hardware supports 64, but 6 are reserved for shared contexts. They
-* are a global resource so not all may be available.
-*/
-   encp->enc_rx_scale_max_exclusive_contexts = 58;
-
encp->enc_tx_dma_desc_size_max = EFX_MASK32(ESF_DZ_RX_KER_BYTE_CNT);
/* No boundary crossing limits */
encp->enc_tx_dma_desc_boundary = 0;

Modified: head/sys/dev/sfxge/common/medford_nic.c
==
--- head/sys/dev/sfxge/common/medford_nic.c Wed Nov 28 06:55:12 2018
(r341113)
+++ head/sys/dev/sfxge/common/medford_nic.c Wed Nov 28 06:55:24 2018
(r341114)
@@ -163,16 +163,6 @@ medford_board_cfg(
}
encp->enc_rx_buf_align_end = end_padding;
 
-   /* Alignment for WPTR updates */
-   encp->enc_rx_push_align = EF10_RX_WPTR_ALIGN;
-
-   /*
-* Maximum number of exclusive RSS contexts which can be allocated. The
-* hardware supports 64, but 6 are reserved for shared contexts. They
-* are a global resource so not all may be available.
-*/
-   encp->enc_rx_scale_max_exclusive_contexts = 58;
-
encp->enc_tx_dma_desc_size_max = EFX_MASK32(ESF_DZ_RX_KER_BYTE_CNT);
/* No boundary crossing limits */
encp->enc_tx_dma_desc_boundary = 0;
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341116 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:55:47 2018
New Revision: 341116
URL: https://svnweb.freebsd.org/changeset/base/341116

Log:
  sfxge(4): move limits config to ef10 NIC board config
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18192

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:36 2018
(r341115)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:47 2018
(r341116)
@@ -1682,6 +1682,17 @@ ef10_nic_board_cfg(
 */
encp->enc_tx_tso_tcp_header_offset_limit = EF10_TCP_HEADER_OFFSET_LIMIT;
 
+   /*
+* Set resource limits for MC_CMD_ALLOC_VIS. Note that we cannot use
+* MC_CMD_GET_RESOURCE_LIMITS here as that reports the available
+* resources (allocated to this PCIe function), which is zero until
+* after we have allocated VIs.
+*/
+   encp->enc_evq_limit = 1024;
+   encp->enc_rxq_limit = EFX_RXQ_LIMIT_TARGET;
+   encp->enc_txq_limit = EFX_TXQ_LIMIT_TARGET;
+
+   encp->enc_buftbl_limit = 0x;
 
/* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:36 2018
(r341115)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:47 2018
(r341116)
@@ -233,22 +233,10 @@ hunt_board_cfg(
encp->enc_rx_buf_align_end = 64; /* RX DMA end padding */
 
/*
-* Set resource limits for MC_CMD_ALLOC_VIS. Note that we cannot use
-* MC_CMD_GET_RESOURCE_LIMITS here as that reports the available
-* resources (allocated to this PCIe function), which is zero until
-* after we have allocated VIs.
-*/
-   encp->enc_evq_limit = 1024;
-   encp->enc_rxq_limit = EFX_RXQ_LIMIT_TARGET;
-   encp->enc_txq_limit = EFX_TXQ_LIMIT_TARGET;
-
-   /*
 * The workaround for bug35388 uses the top bit of transmit queue
 * descriptor writes, preventing the use of 4096 descriptor TXQs.
 */
encp->enc_txq_max_ndescs = encp->enc_bug35388_workaround ? 2048 : 4096;
-
-   encp->enc_buftbl_limit = 0x;
 
EFX_STATIC_ASSERT(HUNT_PIOBUF_NBUFS <= EF10_MAX_PIOBUF_NBUFS);
encp->enc_piobuf_limit = HUNT_PIOBUF_NBUFS;

Modified: head/sys/dev/sfxge/common/medford2_nic.c
==
--- head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:36 2018
(r341115)
+++ head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:47 2018
(r341116)
@@ -167,23 +167,11 @@ medford2_board_cfg(
encp->enc_rx_buf_align_end = end_padding;
 
/*
-* Set resource limits for MC_CMD_ALLOC_VIS. Note that we cannot use
-* MC_CMD_GET_RESOURCE_LIMITS here as that reports the available
-* resources (allocated to this PCIe function), which is zero until
-* after we have allocated VIs.
-*/
-   encp->enc_evq_limit = 1024;
-   encp->enc_rxq_limit = EFX_RXQ_LIMIT_TARGET;
-   encp->enc_txq_limit = EFX_TXQ_LIMIT_TARGET;
-
-   /*
 * The maximum supported transmit queue size is 2048. TXQs with 4096
 * descriptors are not supported as the top bit is used for vfifo
 * stuffing.
 */
encp->enc_txq_max_ndescs = 2048;
-
-   encp->enc_buftbl_limit = 0x;
 
EFX_STATIC_ASSERT(MEDFORD2_PIOBUF_NBUFS <= EF10_MAX_PIOBUF_NBUFS);
encp->enc_piobuf_limit = MEDFORD2_PIOBUF_NBUFS;

Modified: head/sys/dev/sfxge/common/medford_nic.c
==
--- head/sys/dev/sfxge/common/medford_nic.c Wed Nov 28 06:55:36 2018
(r341115)
+++ head/sys/dev/sfxge/common/medford_nic.c Wed Nov 28 06:55:47 2018
(r341116)
@@ -164,23 +164,11 @@ medford_board_cfg(
encp->enc_rx_buf_align_end = end_padding;
 
/*
-* Set resource limits for MC_CMD_ALLOC_VIS. Note that we cannot use
-* MC_CMD_GET_RESOURCE_LIMITS here as that reports the available
-* resources (allocated to this PCIe function), which is zero until
-* after we have allocated VIs.
-*/
-   encp->enc_evq_limit = 1024;
-   encp->enc_rxq_limit = EFX_RXQ_LIMIT_TARGET;
-   encp->enc_txq_limit = EFX_TXQ_LIMIT_TARGET;
-
-   /*
 * The maximum supported transmit queue size is 

svn commit: r341115 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:55:36 2018
New Revision: 341115
URL: https://svnweb.freebsd.org/changeset/base/341115

Log:
  sfxge(4): move Tx config to ef10 NIC board config
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18191

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:24 2018
(r341114)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:36 2018
(r341115)
@@ -1672,6 +1672,16 @@ ef10_nic_board_cfg(
 */
encp->enc_rx_scale_max_exclusive_contexts = 64 - 6;
 
+   encp->enc_tx_dma_desc_size_max = EFX_MASK32(ESF_DZ_RX_KER_BYTE_CNT);
+   /* No boundary crossing limits */
+   encp->enc_tx_dma_desc_boundary = 0;
+
+   /*
+* Maximum number of bytes into the frame the TCP header can start for
+* firmware assisted TSO to work.
+*/
+   encp->enc_tx_tso_tcp_header_offset_limit = EF10_TCP_HEADER_OFFSET_LIMIT;
+
 
/* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:24 2018
(r341114)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:36 2018
(r341115)
@@ -232,10 +232,6 @@ hunt_board_cfg(
encp->enc_rx_buf_align_start = 1;
encp->enc_rx_buf_align_end = 64; /* RX DMA end padding */
 
-   encp->enc_tx_dma_desc_size_max = EFX_MASK32(ESF_DZ_RX_KER_BYTE_CNT);
-   /* No boundary crossing limits */
-   encp->enc_tx_dma_desc_boundary = 0;
-
/*
 * Set resource limits for MC_CMD_ALLOC_VIS. Note that we cannot use
 * MC_CMD_GET_RESOURCE_LIMITS here as that reports the available
@@ -280,12 +276,6 @@ hunt_board_cfg(
}
encp->enc_intr_vec_base = base;
encp->enc_intr_limit = nvec;
-
-   /*
-* Maximum number of bytes into the frame the TCP header can start for
-* firmware assisted TSO to work.
-*/
-   encp->enc_tx_tso_tcp_header_offset_limit = EF10_TCP_HEADER_OFFSET_LIMIT;
 
if ((rc = hunt_nic_get_required_pcie_bandwidth(enp, )) != 0)
goto fail7;

Modified: head/sys/dev/sfxge/common/medford2_nic.c
==
--- head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:24 2018
(r341114)
+++ head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:36 2018
(r341115)
@@ -166,10 +166,6 @@ medford2_board_cfg(
}
encp->enc_rx_buf_align_end = end_padding;
 
-   encp->enc_tx_dma_desc_size_max = EFX_MASK32(ESF_DZ_RX_KER_BYTE_CNT);
-   /* No boundary crossing limits */
-   encp->enc_tx_dma_desc_boundary = 0;
-
/*
 * Set resource limits for MC_CMD_ALLOC_VIS. Note that we cannot use
 * MC_CMD_GET_RESOURCE_LIMITS here as that reports the available
@@ -215,12 +211,6 @@ medford2_board_cfg(
}
encp->enc_intr_vec_base = base;
encp->enc_intr_limit = nvec;
-
-   /*
-* Maximum number of bytes into the frame the TCP header can start for
-* firmware assisted TSO to work.
-*/
-   encp->enc_tx_tso_tcp_header_offset_limit = EF10_TCP_HEADER_OFFSET_LIMIT;
 
/*
 * Medford2 stores a single global copy of VPD, not per-PF as on

Modified: head/sys/dev/sfxge/common/medford_nic.c
==
--- head/sys/dev/sfxge/common/medford_nic.c Wed Nov 28 06:55:24 2018
(r341114)
+++ head/sys/dev/sfxge/common/medford_nic.c Wed Nov 28 06:55:36 2018
(r341115)
@@ -163,10 +163,6 @@ medford_board_cfg(
}
encp->enc_rx_buf_align_end = end_padding;
 
-   encp->enc_tx_dma_desc_size_max = EFX_MASK32(ESF_DZ_RX_KER_BYTE_CNT);
-   /* No boundary crossing limits */
-   encp->enc_tx_dma_desc_boundary = 0;
-
/*
 * Set resource limits for MC_CMD_ALLOC_VIS. Note that we cannot use
 * MC_CMD_GET_RESOURCE_LIMITS here as that reports the available
@@ -212,12 +208,6 @@ medford_board_cfg(
}
encp->enc_intr_vec_base = base;
encp->enc_intr_limit = nvec;
-
-   /*
-* Maximum number of bytes into the frame the TCP header can start for
-* firmware assisted TSO to work.
-*/
-   encp->enc_tx_tso_tcp_header_offset_limit = EF10_TCP_HEADER_OFFSET_LIMIT;
 
/*
 * 

svn commit: r341111 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:54:49 2018
New Revision: 34
URL: https://svnweb.freebsd.org/changeset/base/34

Log:
  sfxge(4): move legacy board config to ef10 NIC board cfg
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18187

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:54:37 2018
(r341110)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:54:49 2018
(r34)
@@ -1575,6 +1575,7 @@ ef10_nic_board_cfg(
const efx_nic_ops_t *enop = enp->en_enop;
efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip);
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
+   uint32_t board_type = 0;
uint32_t port;
uint32_t pf;
uint32_t vf;
@@ -1632,13 +1633,28 @@ ef10_nic_board_cfg(
 
EFX_MAC_ADDR_COPY(encp->enc_mac_addr, mac_addr);
 
+   /* Board configuration (legacy) */
+   rc = efx_mcdi_get_board_cfg(enp, _type, NULL, NULL);
+   if (rc != 0) {
+   /* Unprivileged functions may not be able to read board cfg */
+   if (rc == EACCES)
+   board_type = 0;
+   else
+   goto fail5;
+   }
+
+   encp->enc_board_type = board_type;
+   encp->enc_clk_mult = 1; /* not used for EF10 */
+
/* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)
if (rc != EACCES)
-   goto fail5;
+   goto fail6;
 
return (0);
 
+fail6:
+   EFSYS_PROBE(fail6);
 fail5:
EFSYS_PROBE(fail5);
 fail4:

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:54:37 2018
(r341110)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:54:49 2018
(r34)
@@ -104,7 +104,6 @@ hunt_board_cfg(
__inefx_nic_t *enp)
 {
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
-   uint32_t board_type = 0;
ef10_link_state_t els;
efx_port_t *epp = &(enp->en_port);
uint32_t mask;
@@ -124,26 +123,13 @@ hunt_board_cfg(
EFX_STATIC_ASSERT(1U << EFX_VI_WINDOW_SHIFT_8K  == 8192);
encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_8K;
 
-   /* Board configuration */
-   rc = efx_mcdi_get_board_cfg(enp, _type, NULL, NULL);
-   if (rc != 0) {
-   /* Unprivileged functions may not be able to read board cfg */
-   if (rc == EACCES)
-   board_type = 0;
-   else
-   goto fail1;
-   }
-
-   encp->enc_board_type = board_type;
-   encp->enc_clk_mult = 1; /* not used for Huntington */
-
/* Fill out fields in enp->en_port and enp->en_nic_cfg from MCDI */
if ((rc = efx_mcdi_get_phy_cfg(enp)) != 0)
-   goto fail2;
+   goto fail1;
 
/* Obtain the default PHY advertised capabilities */
if ((rc = ef10_phy_get_link(enp, )) != 0)
-   goto fail3;
+   goto fail2;
epp->ep_default_adv_cap_mask = els.els_adv_cap_mask;
epp->ep_adv_cap_mask = els.els_adv_cap_mask;
 
@@ -174,7 +160,7 @@ hunt_board_cfg(
else if ((rc == ENOTSUP) || (rc == ENOENT))
encp->enc_bug35388_workaround = B_FALSE;
else
-   goto fail4;
+   goto fail3;
 
/*
 * If the bug41750 workaround is enabled, then do not test interrupts,
@@ -193,7 +179,7 @@ hunt_board_cfg(
} else if ((rc == ENOTSUP) || (rc == ENOENT)) {
encp->enc_bug41750_workaround = B_FALSE;
} else {
-   goto fail5;
+   goto fail4;
}
if (EFX_PCI_FUNCTION_IS_VF(encp)) {
/* Interrupt testing does not work for VFs. See bug50084. */
@@ -231,12 +217,12 @@ hunt_board_cfg(
} else if ((rc == ENOTSUP) || (rc == ENOENT)) {
encp->enc_bug26807_workaround = B_FALSE;
} else {
-   goto fail6;
+   goto fail5;
}
 
/* Get clock frequencies (in MHz). */
if ((rc = efx_mcdi_get_clock(enp, , _clk)) != 0)
-   goto fail7;
+   goto fail6;
 
/*
 * The Huntington timer quantum is 1536 sysclk cycles, documented for
@@ -255,7 +241,7 @@ hunt_board_cfg(
 
/* Check capabilities of running datapath firmware */
if ((rc = ef10_get_datapath_caps(enp)) != 0)
-   goto fail8;
+

svn commit: r341110 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:54:37 2018
New Revision: 341110
URL: https://svnweb.freebsd.org/changeset/base/341110

Log:
  sfxge(4): move MAC address config to ef10 NIC board cfg
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18186

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:54:25 2018
(r341109)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:54:37 2018
(r341110)
@@ -1578,6 +1578,7 @@ ef10_nic_board_cfg(
uint32_t port;
uint32_t pf;
uint32_t vf;
+   uint8_t mac_addr[6] = { 0 };
efx_rc_t rc;
 
/* Get the (zero-based) MCDI port number */
@@ -1603,13 +1604,43 @@ ef10_nic_board_cfg(
encp->enc_pf = pf;
encp->enc_vf = vf;
 
+   /* MAC address for this function */
+   if (EFX_PCI_FUNCTION_IS_PF(encp)) {
+   rc = efx_mcdi_get_mac_address_pf(enp, mac_addr);
+#if EFSYS_OPT_ALLOW_UNCONFIGURED_NIC
+   /*
+* Disable static config checking, ONLY for manufacturing test
+* and setup at the factory, to allow the static config to be
+* installed.
+*/
+#else /* EFSYS_OPT_ALLOW_UNCONFIGURED_NIC */
+   if ((rc == 0) && (mac_addr[0] & 0x02)) {
+   /*
+* If the static config does not include a global MAC
+* address pool then the board may return a locally
+* administered MAC address (this should only happen on
+* incorrectly programmed boards).
+*/
+   rc = EINVAL;
+   }
+#endif /* EFSYS_OPT_ALLOW_UNCONFIGURED_NIC */
+   } else {
+   rc = efx_mcdi_get_mac_address_vf(enp, mac_addr);
+   }
+   if (rc != 0)
+   goto fail4;
+
+   EFX_MAC_ADDR_COPY(encp->enc_mac_addr, mac_addr);
+
/* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)
if (rc != EACCES)
-   goto fail4;
+   goto fail5;
 
return (0);
 
+fail5:
+   EFSYS_PROBE(fail5);
 fail4:
EFSYS_PROBE(fail4);
 fail3:

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:54:25 2018
(r341109)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:54:37 2018
(r341110)
@@ -104,7 +104,6 @@ hunt_board_cfg(
__inefx_nic_t *enp)
 {
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
-   uint8_t mac_addr[6] = { 0 };
uint32_t board_type = 0;
ef10_link_state_t els;
efx_port_t *epp = &(enp->en_port);
@@ -125,26 +124,6 @@ hunt_board_cfg(
EFX_STATIC_ASSERT(1U << EFX_VI_WINDOW_SHIFT_8K  == 8192);
encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_8K;
 
-   /* MAC address for this function */
-   if (EFX_PCI_FUNCTION_IS_PF(encp)) {
-   rc = efx_mcdi_get_mac_address_pf(enp, mac_addr);
-   if ((rc == 0) && (mac_addr[0] & 0x02)) {
-   /*
-* If the static config does not include a global MAC
-* address pool then the board may return a locally
-* administered MAC address (this should only happen on
-* incorrectly programmed boards).
-*/
-   rc = EINVAL;
-   }
-   } else {
-   rc = efx_mcdi_get_mac_address_vf(enp, mac_addr);
-   }
-   if (rc != 0)
-   goto fail1;
-
-   EFX_MAC_ADDR_COPY(encp->enc_mac_addr, mac_addr);
-
/* Board configuration */
rc = efx_mcdi_get_board_cfg(enp, _type, NULL, NULL);
if (rc != 0) {
@@ -152,7 +131,7 @@ hunt_board_cfg(
if (rc == EACCES)
board_type = 0;
else
-   goto fail2;
+   goto fail1;
}
 
encp->enc_board_type = board_type;
@@ -160,11 +139,11 @@ hunt_board_cfg(
 
/* Fill out fields in enp->en_port and enp->en_nic_cfg from MCDI */
if ((rc = efx_mcdi_get_phy_cfg(enp)) != 0)
-   goto fail3;
+   goto fail2;
 
/* Obtain the default PHY advertised capabilities */
if ((rc = ef10_phy_get_link(enp, )) != 0)
-   goto fail4;
+   goto fail3;

svn commit: r341119 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:56:22 2018
New Revision: 341119
URL: https://svnweb.freebsd.org/changeset/base/341119

Log:
  sfxge(4): move VI window size config to ef10 NIC board
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18195

Modified:
  head/sys/dev/sfxge/common/ef10_impl.h
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_impl.h
==
--- head/sys/dev/sfxge/common/ef10_impl.h   Wed Nov 28 06:56:11 2018
(r341118)
+++ head/sys/dev/sfxge/common/ef10_impl.h   Wed Nov 28 06:56:22 2018
(r341119)
@@ -1187,11 +1187,6 @@ efx_mcdi_get_vector_cfg(
__out_opt   uint32_t *pf_nvecp,
__out_opt   uint32_t *vf_nvecp);
 
-extern __checkReturn   efx_rc_t
-ef10_get_vi_window_shift(
-   __inefx_nic_t *enp,
-   __out   uint32_t *vi_window_shiftp);
-
 extern __checkReturn   efx_rc_t
 ef10_get_privilege_mask(
__inefx_nic_t *enp,

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:56:11 2018
(r341118)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:56:22 2018
(r341119)
@@ -1202,6 +1202,37 @@ ef10_get_datapath_caps(
encp->enc_tunnel_config_udp_entries_max = 0;
}
 
+   /*
+* Check if firmware reports the VI window mode.
+* Medford2 has a variable VI window size (8K, 16K or 64K).
+* Medford and Huntington have a fixed 8K VI window size.
+*/
+   if (req.emr_out_length_used >= MC_CMD_GET_CAPABILITIES_V3_OUT_LEN) {
+   uint8_t mode =
+   MCDI_OUT_BYTE(req, GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE);
+
+   switch (mode) {
+   case MC_CMD_GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE_8K:
+   encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_8K;
+   break;
+   case MC_CMD_GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE_16K:
+   encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_16K;
+   break;
+   case MC_CMD_GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE_64K:
+   encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_64K;
+   break;
+   default:
+   encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_INVALID;
+   break;
+   }
+   } else if ((enp->en_family == EFX_FAMILY_HUNTINGTON) ||
+   (enp->en_family == EFX_FAMILY_MEDFORD)) {
+   /* Huntington and Medford have fixed 8K window size */
+   encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_8K;
+   } else {
+   encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_INVALID;
+   }
+
/* Check if firmware supports extended MAC stats. */
if (req.emr_out_length_used >= MC_CMD_GET_CAPABILITIES_V4_OUT_LEN) {
/* Extended stats buffer supported */
@@ -1224,71 +1255,6 @@ ef10_get_datapath_caps(
 
 fail4:
EFSYS_PROBE(fail4);
-fail3:
-   EFSYS_PROBE(fail3);
-fail2:
-   EFSYS_PROBE(fail2);
-fail1:
-   EFSYS_PROBE1(fail1, efx_rc_t, rc);
-
-   return (rc);
-}
-
-   __checkReturn   efx_rc_t
-ef10_get_vi_window_shift(
-   __inefx_nic_t *enp,
-   __out   uint32_t *vi_window_shiftp)
-{
-   efx_mcdi_req_t req;
-   uint8_t payload[MAX(MC_CMD_GET_CAPABILITIES_IN_LEN,
-   MC_CMD_GET_CAPABILITIES_V3_OUT_LEN)];
-   uint32_t mode;
-   efx_rc_t rc;
-
-   (void) memset(payload, 0, sizeof (payload));
-   req.emr_cmd = MC_CMD_GET_CAPABILITIES;
-   req.emr_in_buf = payload;
-   req.emr_in_length = MC_CMD_GET_CAPABILITIES_IN_LEN;
-   req.emr_out_buf = payload;
-   req.emr_out_length = MC_CMD_GET_CAPABILITIES_V3_OUT_LEN;
-
-   efx_mcdi_execute_quiet(enp, );
-
-   if (req.emr_rc != 0) {
-   rc = req.emr_rc;
-   goto fail1;
-   }
-
-   if (req.emr_out_length_used < MC_CMD_GET_CAPABILITIES_V3_OUT_LEN) {
-   rc = EMSGSIZE;
-   goto fail2;
-   }
-   mode = MCDI_OUT_BYTE(req, GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE);
-
-   switch (mode) {
-   case MC_CMD_GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE_8K:
-   EFX_STATIC_ASSERT(1U << EFX_VI_WINDOW_SHIFT_8K == 8 * 1024);
-   *vi_window_shiftp = EFX_VI_WINDOW_SHIFT_8K;
-   break;
-
-   case MC_CMD_GET_CAPABILITIES_V3_OUT_VI_WINDOW_MODE_16K:
-   

svn commit: r341120 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:56:34 2018
New Revision: 341120
URL: https://svnweb.freebsd.org/changeset/base/341120

Log:
  sfxge(4): remove obsolete comments
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18196

Modified:
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/medford2_nic.c
==
--- head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:56:22 2018
(r341119)
+++ head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:56:34 2018
(r341120)
@@ -84,11 +84,6 @@ medford2_board_cfg(
efx_rc_t rc;
 
/*
-* FIXME: Likely to be incomplete and incorrect.
-* Parts of this should be shared with Huntington.
-*/
-
-   /*
 * Enable firmware workarounds for hardware errata.
 * Expected responses are:
 *  - 0 (zero):

Modified: head/sys/dev/sfxge/common/medford_nic.c
==
--- head/sys/dev/sfxge/common/medford_nic.c Wed Nov 28 06:56:22 2018
(r341119)
+++ head/sys/dev/sfxge/common/medford_nic.c Wed Nov 28 06:56:34 2018
(r341120)
@@ -80,11 +80,6 @@ medford_board_cfg(
efx_rc_t rc;
 
/*
-* FIXME: Likely to be incomplete and incorrect.
-* Parts of this should be shared with Huntington.
-*/
-
-   /*
 * Enable firmware workarounds for hardware errata.
 * Expected responses are:
 *  - 0 (zero):
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341117 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:55:59 2018
New Revision: 341117
URL: https://svnweb.freebsd.org/changeset/base/341117

Log:
  sfxge(4): move vector config to ef10 NIC board config
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18193

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:47 2018
(r341116)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:59 2018
(r341117)
@@ -1578,6 +1578,7 @@ ef10_nic_board_cfg(
ef10_link_state_t els;
efx_port_t *epp = &(enp->en_port);
uint32_t board_type = 0;
+   uint32_t base, nvec;
uint32_t port;
uint32_t pf;
uint32_t vf;
@@ -1694,13 +1695,27 @@ ef10_nic_board_cfg(
 
encp->enc_buftbl_limit = 0x;
 
+   /* Get interrupt vector limits */
+   if ((rc = efx_mcdi_get_vector_cfg(enp, , , NULL)) != 0) {
+   if (EFX_PCI_FUNCTION_IS_PF(encp))
+   goto fail9;
+
+   /* Ignore error (cannot query vector limits from a VF). */
+   base = 0;
+   nvec = 1024;
+   }
+   encp->enc_intr_vec_base = base;
+   encp->enc_intr_limit = nvec;
+
/* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)
if (rc != EACCES)
-   goto fail9;
+   goto fail10;
 
return (0);
 
+fail10:
+   EFSYS_PROBE(fail10);
 fail9:
EFSYS_PROBE(fail9);
 fail8:

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:47 2018
(r341116)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:59 2018
(r341117)
@@ -108,7 +108,6 @@ hunt_board_cfg(
uint32_t mask;
uint32_t flags;
uint32_t sysclk, dpcpu_clk;
-   uint32_t base, nvec;
uint32_t bandwidth;
efx_rc_t rc;
 
@@ -253,20 +252,8 @@ hunt_board_cfg(
goto fail5;
encp->enc_privilege_mask = mask;
 
-   /* Get interrupt vector limits */
-   if ((rc = efx_mcdi_get_vector_cfg(enp, , , NULL)) != 0) {
-   if (EFX_PCI_FUNCTION_IS_PF(encp))
-   goto fail6;
-
-   /* Ignore error (cannot query vector limits from a VF). */
-   base = 0;
-   nvec = 1024;
-   }
-   encp->enc_intr_vec_base = base;
-   encp->enc_intr_limit = nvec;
-
if ((rc = hunt_nic_get_required_pcie_bandwidth(enp, )) != 0)
-   goto fail7;
+   goto fail6;
encp->enc_required_pcie_bandwidth_mbps = bandwidth;
 
/* All Huntington devices have a PCIe Gen3, 8 lane connector */
@@ -274,8 +261,6 @@ hunt_board_cfg(
 
return (0);
 
-fail7:
-   EFSYS_PROBE(fail7);
 fail6:
EFSYS_PROBE(fail6);
 fail5:

Modified: head/sys/dev/sfxge/common/medford2_nic.c
==
--- head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:47 2018
(r341116)
+++ head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:59 2018
(r341117)
@@ -80,7 +80,6 @@ medford2_board_cfg(
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
uint32_t mask;
uint32_t sysclk, dpcpu_clk;
-   uint32_t base, nvec;
uint32_t end_padding;
uint32_t bandwidth;
uint32_t vi_window_shift;
@@ -188,18 +187,6 @@ medford2_board_cfg(
goto fail5;
encp->enc_privilege_mask = mask;
 
-   /* Get interrupt vector limits */
-   if ((rc = efx_mcdi_get_vector_cfg(enp, , , NULL)) != 0) {
-   if (EFX_PCI_FUNCTION_IS_PF(encp))
-   goto fail6;
-
-   /* Ignore error (cannot query vector limits from a VF). */
-   base = 0;
-   nvec = 1024;
-   }
-   encp->enc_intr_vec_base = base;
-   encp->enc_intr_limit = nvec;
-
/*
 * Medford2 stores a single global copy of VPD, not per-PF as on
 * Huntington.
@@ -208,14 +195,12 @@ medford2_board_cfg(
 
rc = medford2_nic_get_required_pcie_bandwidth(enp, );
if (rc != 0)
-   goto fail7;
+   goto fail6;
encp->enc_required_pcie_bandwidth_mbps = bandwidth;
encp->enc_max_pcie_link_gen = EFX_PCIE_LINK_SPEED_GEN3;
 
return (0);
 
-fail7:
-   EFSYS_PROBE(fail7);
 fail6:
EFSYS_PROBE(fail6);
 fail5:

Modified: 

svn commit: r341112 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:55:00 2018
New Revision: 341112
URL: https://svnweb.freebsd.org/changeset/base/341112

Log:
  sfxge(4): move PHY/link config to ef10 NIC board cfg
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18188

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:54:49 2018
(r34)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:00 2018
(r341112)
@@ -1575,6 +1575,8 @@ ef10_nic_board_cfg(
const efx_nic_ops_t *enop = enp->en_enop;
efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip);
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
+   ef10_link_state_t els;
+   efx_port_t *epp = &(enp->en_port);
uint32_t board_type = 0;
uint32_t port;
uint32_t pf;
@@ -1646,13 +1648,27 @@ ef10_nic_board_cfg(
encp->enc_board_type = board_type;
encp->enc_clk_mult = 1; /* not used for EF10 */
 
+   /* Fill out fields in enp->en_port and enp->en_nic_cfg from MCDI */
+   if ((rc = efx_mcdi_get_phy_cfg(enp)) != 0)
+   goto fail6;
+
+   /* Obtain the default PHY advertised capabilities */
+   if ((rc = ef10_phy_get_link(enp, )) != 0)
+   goto fail7;
+   epp->ep_default_adv_cap_mask = els.els_adv_cap_mask;
+   epp->ep_adv_cap_mask = els.els_adv_cap_mask;
+
/* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)
if (rc != EACCES)
-   goto fail6;
+   goto fail8;
 
return (0);
 
+fail8:
+   EFSYS_PROBE(fail8);
+fail7:
+   EFSYS_PROBE(fail7);
 fail6:
EFSYS_PROBE(fail6);
 fail5:

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:54:49 2018
(r34)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:00 2018
(r341112)
@@ -104,7 +104,6 @@ hunt_board_cfg(
__inefx_nic_t *enp)
 {
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
-   ef10_link_state_t els;
efx_port_t *epp = &(enp->en_port);
uint32_t mask;
uint32_t flags;
@@ -123,16 +122,6 @@ hunt_board_cfg(
EFX_STATIC_ASSERT(1U << EFX_VI_WINDOW_SHIFT_8K  == 8192);
encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_8K;
 
-   /* Fill out fields in enp->en_port and enp->en_nic_cfg from MCDI */
-   if ((rc = efx_mcdi_get_phy_cfg(enp)) != 0)
-   goto fail1;
-
-   /* Obtain the default PHY advertised capabilities */
-   if ((rc = ef10_phy_get_link(enp, )) != 0)
-   goto fail2;
-   epp->ep_default_adv_cap_mask = els.els_adv_cap_mask;
-   epp->ep_adv_cap_mask = els.els_adv_cap_mask;
-
/*
 * Enable firmware workarounds for hardware errata.
 * Expected responses are:
@@ -160,7 +149,7 @@ hunt_board_cfg(
else if ((rc == ENOTSUP) || (rc == ENOENT))
encp->enc_bug35388_workaround = B_FALSE;
else
-   goto fail3;
+   goto fail1;
 
/*
 * If the bug41750 workaround is enabled, then do not test interrupts,
@@ -179,7 +168,7 @@ hunt_board_cfg(
} else if ((rc == ENOTSUP) || (rc == ENOENT)) {
encp->enc_bug41750_workaround = B_FALSE;
} else {
-   goto fail4;
+   goto fail2;
}
if (EFX_PCI_FUNCTION_IS_VF(encp)) {
/* Interrupt testing does not work for VFs. See bug50084. */
@@ -217,12 +206,12 @@ hunt_board_cfg(
} else if ((rc == ENOTSUP) || (rc == ENOENT)) {
encp->enc_bug26807_workaround = B_FALSE;
} else {
-   goto fail5;
+   goto fail3;
}
 
/* Get clock frequencies (in MHz). */
if ((rc = efx_mcdi_get_clock(enp, , _clk)) != 0)
-   goto fail6;
+   goto fail4;
 
/*
 * The Huntington timer quantum is 1536 sysclk cycles, documented for
@@ -241,7 +230,7 @@ hunt_board_cfg(
 
/* Check capabilities of running datapath firmware */
if ((rc = ef10_get_datapath_caps(enp)) != 0)
-   goto fail7;
+   goto fail5;
 
/* Alignment for receive packet DMA buffers */
encp->enc_rx_buf_align_start = 1;
@@ -291,13 +280,13 @@ hunt_board_cfg(
 * can result in time-of-check/time-of-use bugs.
 */
if ((rc = ef10_get_privilege_mask(enp, )) != 0)
-   goto fail8;
+  

svn commit: r341113 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:55:12 2018
New Revision: 341113
URL: https://svnweb.freebsd.org/changeset/base/341113

Log:
  sfxge(4): move datapath config to ef10 NIC board cfg
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18189

Modified:
  head/sys/dev/sfxge/common/ef10_impl.h
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_impl.h
==
--- head/sys/dev/sfxge/common/ef10_impl.h   Wed Nov 28 06:55:00 2018
(r341112)
+++ head/sys/dev/sfxge/common/ef10_impl.h   Wed Nov 28 06:55:12 2018
(r341113)
@@ -1188,10 +1188,6 @@ efx_mcdi_get_vector_cfg(
__out_opt   uint32_t *vf_nvecp);
 
 extern __checkReturn   efx_rc_t
-ef10_get_datapath_caps(
-   __inefx_nic_t *enp);
-
-extern __checkReturn   efx_rc_t
 ef10_get_vi_window_shift(
__inefx_nic_t *enp,
__out   uint32_t *vi_window_shiftp);

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:00 2018
(r341112)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:55:12 2018
(r341113)
@@ -1016,7 +1016,7 @@ fail1:
return (rc);
 }
 
-   __checkReturn   efx_rc_t
+static __checkReturn   efx_rc_t
 ef10_get_datapath_caps(
__inefx_nic_t *enp)
 {
@@ -1658,13 +1658,19 @@ ef10_nic_board_cfg(
epp->ep_default_adv_cap_mask = els.els_adv_cap_mask;
epp->ep_adv_cap_mask = els.els_adv_cap_mask;
 
+   /* Check capabilities of running datapath firmware */
+   if ((rc = ef10_get_datapath_caps(enp)) != 0)
+   goto fail8;
+
/* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)
if (rc != EACCES)
-   goto fail8;
+   goto fail9;
 
return (0);
 
+fail9:
+   EFSYS_PROBE(fail9);
 fail8:
EFSYS_PROBE(fail8);
 fail7:

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:00 2018
(r341112)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:55:12 2018
(r341113)
@@ -228,10 +228,6 @@ hunt_board_cfg(
 
encp->enc_bug61265_workaround = B_FALSE; /* Medford only */
 
-   /* Check capabilities of running datapath firmware */
-   if ((rc = ef10_get_datapath_caps(enp)) != 0)
-   goto fail5;
-
/* Alignment for receive packet DMA buffers */
encp->enc_rx_buf_align_start = 1;
encp->enc_rx_buf_align_end = 64; /* RX DMA end padding */
@@ -280,13 +276,13 @@ hunt_board_cfg(
 * can result in time-of-check/time-of-use bugs.
 */
if ((rc = ef10_get_privilege_mask(enp, )) != 0)
-   goto fail6;
+   goto fail5;
encp->enc_privilege_mask = mask;
 
/* Get interrupt vector limits */
if ((rc = efx_mcdi_get_vector_cfg(enp, , , NULL)) != 0) {
if (EFX_PCI_FUNCTION_IS_PF(encp))
-   goto fail7;
+   goto fail6;
 
/* Ignore error (cannot query vector limits from a VF). */
base = 0;
@@ -302,7 +298,7 @@ hunt_board_cfg(
encp->enc_tx_tso_tcp_header_offset_limit = EF10_TCP_HEADER_OFFSET_LIMIT;
 
if ((rc = hunt_nic_get_required_pcie_bandwidth(enp, )) != 0)
-   goto fail8;
+   goto fail7;
encp->enc_required_pcie_bandwidth_mbps = bandwidth;
 
/* All Huntington devices have a PCIe Gen3, 8 lane connector */
@@ -310,8 +306,6 @@ hunt_board_cfg(
 
return (0);
 
-fail8:
-   EFSYS_PROBE(fail8);
 fail7:
EFSYS_PROBE(fail7);
 fail6:

Modified: head/sys/dev/sfxge/common/medford2_nic.c
==
--- head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:00 2018
(r341112)
+++ head/sys/dev/sfxge/common/medford2_nic.cWed Nov 28 06:55:12 2018
(r341113)
@@ -153,17 +153,13 @@ medford2_board_cfg(
encp->enc_evq_timer_max_us = (encp->enc_evq_timer_quantum_ns <<
FRF_CZ_TC_TIMER_VAL_WIDTH) / 1000;
 
-   /* Check capabilities of running datapath firmware */
-   if ((rc = ef10_get_datapath_caps(enp)) != 0)
-   goto fail4;
-
/* Alignment for receive packet DMA buffers */
encp->enc_rx_buf_align_start = 1;
 
/* Get the RX DMA end padding alignment configuration */
if 

svn commit: r341109 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:54:25 2018
New Revision: 341109
URL: https://svnweb.freebsd.org/changeset/base/341109

Log:
  sfxge(4): move PF/VF config to ef10 NIC board config
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18185

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:54:13 2018
(r341108)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:54:25 2018
(r341109)
@@ -1576,6 +1576,8 @@ ef10_nic_board_cfg(
efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip);
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
uint32_t port;
+   uint32_t pf;
+   uint32_t vf;
efx_rc_t rc;
 
/* Get the (zero-based) MCDI port number */
@@ -1589,13 +1591,27 @@ ef10_nic_board_cfg(
>enc_external_port)) != 0)
goto fail2;
 
+   /*
+* Get PCIe function number from firmware (used for
+* per-function privilege and dynamic config info).
+*  - PCIe PF: pf = PF number, vf = 0x.
+*  - PCIe VF: pf = parent PF, vf = VF number.
+*/
+   if ((rc = efx_mcdi_get_function_info(enp, , )) != 0)
+   goto fail3;
+
+   encp->enc_pf = pf;
+   encp->enc_vf = vf;
+
/* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)
if (rc != EACCES)
-   goto fail3;
+   goto fail4;
 
return (0);
 
+fail4:
+   EFSYS_PROBE(fail4);
 fail3:
EFSYS_PROBE(fail3);
 fail2:

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:54:13 2018
(r341108)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:54:25 2018
(r341109)
@@ -108,8 +108,6 @@ hunt_board_cfg(
uint32_t board_type = 0;
ef10_link_state_t els;
efx_port_t *epp = &(enp->en_port);
-   uint32_t pf;
-   uint32_t vf;
uint32_t mask;
uint32_t flags;
uint32_t sysclk, dpcpu_clk;
@@ -127,18 +125,6 @@ hunt_board_cfg(
EFX_STATIC_ASSERT(1U << EFX_VI_WINDOW_SHIFT_8K  == 8192);
encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_8K;
 
-   /*
-* Get PCIe function number from firmware (used for
-* per-function privilege and dynamic config info).
-*  - PCIe PF: pf = PF number, vf = 0x.
-*  - PCIe VF: pf = parent PF, vf = VF number.
-*/
-   if ((rc = efx_mcdi_get_function_info(enp, , )) != 0)
-   goto fail1;
-
-   encp->enc_pf = pf;
-   encp->enc_vf = vf;
-
/* MAC address for this function */
if (EFX_PCI_FUNCTION_IS_PF(encp)) {
rc = efx_mcdi_get_mac_address_pf(enp, mac_addr);
@@ -155,7 +141,7 @@ hunt_board_cfg(
rc = efx_mcdi_get_mac_address_vf(enp, mac_addr);
}
if (rc != 0)
-   goto fail2;
+   goto fail1;
 
EFX_MAC_ADDR_COPY(encp->enc_mac_addr, mac_addr);
 
@@ -166,7 +152,7 @@ hunt_board_cfg(
if (rc == EACCES)
board_type = 0;
else
-   goto fail3;
+   goto fail2;
}
 
encp->enc_board_type = board_type;
@@ -174,11 +160,11 @@ hunt_board_cfg(
 
/* Fill out fields in enp->en_port and enp->en_nic_cfg from MCDI */
if ((rc = efx_mcdi_get_phy_cfg(enp)) != 0)
-   goto fail4;
+   goto fail3;
 
/* Obtain the default PHY advertised capabilities */
if ((rc = ef10_phy_get_link(enp, )) != 0)
-   goto fail5;
+   goto fail4;
epp->ep_default_adv_cap_mask = els.els_adv_cap_mask;
epp->ep_adv_cap_mask = els.els_adv_cap_mask;
 
@@ -209,7 +195,7 @@ hunt_board_cfg(
else if ((rc == ENOTSUP) || (rc == ENOENT))
encp->enc_bug35388_workaround = B_FALSE;
else
-   goto fail6;
+   goto fail5;
 
/*
 * If the bug41750 workaround is enabled, then do not test interrupts,
@@ -228,7 +214,7 @@ hunt_board_cfg(
} else if ((rc == ENOTSUP) || (rc == ENOENT)) {
encp->enc_bug41750_workaround = B_FALSE;
} else {
-   goto fail7;
+   goto fail6;
}
if (EFX_PCI_FUNCTION_IS_VF(encp)) {
/* Interrupt testing does not work for VFs. See bug50084. */
@@ -266,12 +252,12 @@ hunt_board_cfg(
} else if ((rc 

svn commit: r341108 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:54:13 2018
New Revision: 341108
URL: https://svnweb.freebsd.org/changeset/base/341108

Log:
  sfxge(4): move port config to ef10 NIC board config
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18184

Modified:
  head/sys/dev/sfxge/common/ef10_impl.h
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_impl.h
==
--- head/sys/dev/sfxge/common/ef10_impl.h   Wed Nov 28 06:54:02 2018
(r341107)
+++ head/sys/dev/sfxge/common/ef10_impl.h   Wed Nov 28 06:54:13 2018
(r341108)
@@ -1201,11 +1201,6 @@ ef10_get_privilege_mask(
__inefx_nic_t *enp,
__out   uint32_t *maskp);
 
-extern __checkReturn   efx_rc_t
-ef10_external_port_mapping(
-   __inefx_nic_t *enp,
-   __inuint32_t port,
-   __out   uint8_t *external_portp);
 
 #if EFSYS_OPT_RX_PACKED_STREAM
 

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:54:02 2018
(r341107)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:54:13 2018
(r341108)
@@ -1494,7 +1494,7 @@ static struct ef10_external_port_map_s {
},
 };
 
-   __checkReturn   efx_rc_t
+static __checkReturn   efx_rc_t
 ef10_external_port_mapping(
__inefx_nic_t *enp,
__inuint32_t port,
@@ -1573,14 +1573,33 @@ ef10_nic_board_cfg(
__inefx_nic_t *enp)
 {
const efx_nic_ops_t *enop = enp->en_enop;
+   efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip);
+   efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
+   uint32_t port;
efx_rc_t rc;
 
+   /* Get the (zero-based) MCDI port number */
+   if ((rc = efx_mcdi_get_port_assignment(enp, )) != 0)
+   goto fail1;
+
+   /* EFX MCDI interface uses one-based port numbers */
+   emip->emi_port = port + 1;
+
+   if ((rc = ef10_external_port_mapping(enp, port,
+   >enc_external_port)) != 0)
+   goto fail2;
+
+   /* Get remaining controller-specific board config */
if ((rc = enop->eno_board_cfg(enp)) != 0)
if (rc != EACCES)
-   goto fail1;
+   goto fail3;
 
return (0);
 
+fail3:
+   EFSYS_PROBE(fail3);
+fail2:
+   EFSYS_PROBE(fail2);
 fail1:
EFSYS_PROBE1(fail1, efx_rc_t, rc);
 

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:54:02 2018
(r341107)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:54:13 2018
(r341108)
@@ -103,13 +103,11 @@ fail1:
 hunt_board_cfg(
__inefx_nic_t *enp)
 {
-   efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip);
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
uint8_t mac_addr[6] = { 0 };
uint32_t board_type = 0;
ef10_link_state_t els;
efx_port_t *epp = &(enp->en_port);
-   uint32_t port;
uint32_t pf;
uint32_t vf;
uint32_t mask;
@@ -129,28 +127,14 @@ hunt_board_cfg(
EFX_STATIC_ASSERT(1U << EFX_VI_WINDOW_SHIFT_8K  == 8192);
encp->enc_vi_window_shift = EFX_VI_WINDOW_SHIFT_8K;
 
-
-   if ((rc = efx_mcdi_get_port_assignment(enp, )) != 0)
-   goto fail1;
-
/*
-* NOTE: The MCDI protocol numbers ports from zero.
-* The common code MCDI interface numbers ports from one.
-*/
-   emip->emi_port = port + 1;
-
-   if ((rc = ef10_external_port_mapping(enp, port,
-   >enc_external_port)) != 0)
-   goto fail2;
-
-   /*
 * Get PCIe function number from firmware (used for
 * per-function privilege and dynamic config info).
 *  - PCIe PF: pf = PF number, vf = 0x.
 *  - PCIe VF: pf = parent PF, vf = VF number.
 */
if ((rc = efx_mcdi_get_function_info(enp, , )) != 0)
-   goto fail3;
+   goto fail1;
 
encp->enc_pf = pf;
encp->enc_vf = vf;
@@ -171,7 +155,7 @@ hunt_board_cfg(
rc = efx_mcdi_get_mac_address_vf(enp, mac_addr);
}
if (rc != 0)
-   goto fail4;
+   goto fail2;
 
EFX_MAC_ADDR_COPY(encp->enc_mac_addr, mac_addr);
 
@@ -182,7 +166,7 @@ hunt_board_cfg(
if (rc == EACCES)
board_type = 0;
else
-   goto 

svn commit: r341107 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:54:02 2018
New Revision: 341107
URL: https://svnweb.freebsd.org/changeset/base/341107

Log:
  sfxge(4): pacify false positive warning
  
  The warning says that it may be usage of possibly uninitialized value.
  
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18183

Modified:
  head/sys/dev/sfxge/common/hunt_nic.c

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:53:51 2018
(r341106)
+++ head/sys/dev/sfxge/common/hunt_nic.cWed Nov 28 06:54:02 2018
(r341107)
@@ -105,7 +105,7 @@ hunt_board_cfg(
 {
efx_mcdi_iface_t *emip = &(enp->en_mcdi.em_emip);
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
-   uint8_t mac_addr[6];
+   uint8_t mac_addr[6] = { 0 };
uint32_t board_type = 0;
ef10_link_state_t els;
efx_port_t *epp = &(enp->en_port);
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341106 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:53:51 2018
New Revision: 341106
URL: https://svnweb.freebsd.org/changeset/base/341106

Log:
  sfxge(4): add ef10 NIC board config method
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18182

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:53:40 2018
(r341105)
+++ head/sys/dev/sfxge/common/ef10_nic.cWed Nov 28 06:53:51 2018
(r341106)
@@ -1568,12 +1568,29 @@ fail1:
return (rc);
 }
 
+static __checkReturn   efx_rc_t
+ef10_nic_board_cfg(
+   __inefx_nic_t *enp)
+{
+   const efx_nic_ops_t *enop = enp->en_enop;
+   efx_rc_t rc;
 
+   if ((rc = enop->eno_board_cfg(enp)) != 0)
+   if (rc != EACCES)
+   goto fail1;
+
+   return (0);
+
+fail1:
+   EFSYS_PROBE1(fail1, efx_rc_t, rc);
+
+   return (rc);
+}
+
__checkReturn   efx_rc_t
 ef10_nic_probe(
__inefx_nic_t *enp)
 {
-   const efx_nic_ops_t *enop = enp->en_enop;
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
efx_drv_cfg_t *edcp = &(enp->en_drv_cfg);
efx_rc_t rc;
@@ -1594,9 +1611,8 @@ ef10_nic_probe(
if ((rc = efx_mcdi_drv_attach(enp, B_TRUE)) != 0)
goto fail3;
 
-   if ((rc = enop->eno_board_cfg(enp)) != 0)
-   if (rc != EACCES)
-   goto fail4;
+   if ((rc = ef10_nic_board_cfg(enp)) != 0)
+   goto fail4;
 
/*
 * Set default driver config limits (based on board config).
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341105 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Wed Nov 28 06:53:40 2018
New Revision: 341105
URL: https://svnweb.freebsd.org/changeset/base/341105

Log:
  sfxge(4): use correct name for frame truncation event
  
  The RX_ECC_ERR flag in RX events was misnamed, as it
  reported frame truncation. Use the new RX_TRUNC_ERR
  name for this flag.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18181

Modified:
  head/sys/dev/sfxge/common/ef10_ev.c
  head/sys/dev/sfxge/common/efx_regs_ef10.h

Modified: head/sys/dev/sfxge/common/ef10_ev.c
==
--- head/sys/dev/sfxge/common/ef10_ev.c Wed Nov 28 04:02:26 2018
(r341104)
+++ head/sys/dev/sfxge/common/ef10_ev.c Wed Nov 28 06:53:40 2018
(r341105)
@@ -815,8 +815,8 @@ ef10_ev_rx_packed_stream(
current_id = eersp->eers_rx_read_ptr & eersp->eers_rx_mask;
 
/* Check for errors that invalidate checksum and L3/L4 fields */
-   if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_ECC_ERR) != 0) {
-   /* RX frame truncated (error flag is misnamed) */
+   if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_TRUNC_ERR) != 0) {
+   /* RX frame truncated */
EFX_EV_QSTAT_INCR(eep, EV_RX_FRM_TRUNC);
flags |= EFX_DISCARD;
goto deliver;
@@ -953,8 +953,8 @@ ef10_ev_rx(
last_used_id = (eersp->eers_rx_read_ptr - 1) & eersp->eers_rx_mask;
 
/* Check for errors that invalidate checksum and L3/L4 fields */
-   if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_ECC_ERR) != 0) {
-   /* RX frame truncated (error flag is misnamed) */
+   if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_TRUNC_ERR) != 0) {
+   /* RX frame truncated */
EFX_EV_QSTAT_INCR(eep, EV_RX_FRM_TRUNC);
flags |= EFX_DISCARD;
goto deliver;

Modified: head/sys/dev/sfxge/common/efx_regs_ef10.h
==
--- head/sys/dev/sfxge/common/efx_regs_ef10.h   Wed Nov 28 04:02:26 2018
(r341104)
+++ head/sys/dev/sfxge/common/efx_regs_ef10.h   Wed Nov 28 06:53:40 2018
(r341105)
@@ -474,6 +474,8 @@ extern "C" {
 #defineESF_EZ_RX_ABORT_WIDTH 1
 #defineESF_DZ_RX_ECC_ERR_LBN 29
 #defineESF_DZ_RX_ECC_ERR_WIDTH 1
+#defineESF_DZ_RX_TRUNC_ERR_LBN 29
+#defineESF_DZ_RX_TRUNC_ERR_WIDTH 1
 #defineESF_DZ_RX_CRC1_ERR_LBN 28
 #defineESF_DZ_RX_CRC1_ERR_WIDTH 1
 #defineESF_DZ_RX_CRC0_ERR_LBN 27
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r341103 - head/sys/powerpc/include

2018-11-27 Thread Bruce Evans

On Wed, 28 Nov 2018, Justin Hibbits wrote:


Log:
 powerpc: Fix the powerpc64 build post-r341102

 VM_MIN_KERNEL_ADDRESS is now used in locore.S, but the UL suffix isn't
 permitted in .S files.


The UL suffix is arguably a style bug in .c files too.  It was not even
wrong (it had no effect) this case, but nearby code seems to be more broken.

A ULL suffix would be unarguably a style bug everywhere.


Modified: head/sys/powerpc/include/vmparam.h
==
--- head/sys/powerpc/include/vmparam.h  Wed Nov 28 02:00:27 2018
(r341102)
+++ head/sys/powerpc/include/vmparam.h  Wed Nov 28 02:48:43 2018
(r341103)
@@ -106,8 +106,13 @@
#define FREEBSD32_USRSTACK  FREEBSD32_SHAREDPAGE

#ifdef __powerpc64__
+#ifndef LOCORE
#define VM_MIN_KERNEL_ADDRESS   0xe000UL
#define VM_MAX_KERNEL_ADDRESS   0xe007UL
+#else
+#defineVM_MIN_KERNEL_ADDRESS   0xe000
+#defineVM_MAX_KERNEL_ADDRESS   0xe007
+#endif


These constants automatically have type unsigned long, since they are
larger that LONG_MAX and smaller than ULONG_MAX.  Thus the UL suffix
had no effect except to break in asm files.

This would not be true for smaller constants.  Smaller constants often
need to be combined or shifted back and forth, and then it may be
necessary to use them as unsigned int or unsigned long constants (signed
constants are better handled by implicit conversions between int and
long unless they are mixed with unsigned constants).  This is sometimes
done using U or UL or suffixes.  I don't like this.  Cases where the
natural type doesn't work are delicate and it is better to not hide
the unnatural conversions by implicitly converting using a suffix on
some constants.

The correct fix is to remove the bogus UL suffixes and not add any ifdefs.

On 32-bit arches, the above constants would have natural type
[(long long abomination; should be deleted].  The abominatation is
unavoidable, but badly written code increases it using explicit
[abomination deleted] suffixes.


#define VM_MAX_SAFE_KERNEL_ADDRESS  VM_MAX_KERNEL_ADDRESS
#endif


Nearby code has mounds of unportabilities and style bugs.  E.g.,
- VM_MIN_ADDRESS for the !LOCORE && 64-bit case has bogus UL suffixes and
  bogus parentheses around single tokens.  It is 0, so it has natural type
  int, so  the suffix might be needed to obfuscate conversions to
  unsigned long in some cases.
- VM_MIN_ADDRESS for the !LOCORE && 32-bit case casts to vm_offset_t instead
  of hard-coding the same conversion using a suffix.  The cast is more
  technically correct, but is an even larger syntax error -- it breaks
  both asm uses and uses in cpp expressions.
- VM_MIN_ADDRESS already had the bogus ifdefs to support LOCORE.  These are
  expressed in the opposite order (LOCORE is in the outer ifdef instead of
  the inner ifdef), which makes them more unreadable.
- similarly for VM_MAXUSER_ADDRESS, plus an extra convolution to define this
  in terms of VM_MAXUSER_ADDRESS32 in the 32-bit case, but only for the
  !LOCORE case (since VM_MAXUSER_ADDRESS32 doesn't have a LOCORE ifdef).

I used to like casts on constants and macros, like the ones here for
vm_offset_t here, but jake@ convinced me that this was wrong in
connection with PAE and sparc64 work.  The wrongness is most obvious
for PAE.  vm_paddr_t is 64 bits for PAE, but most vm types for PAE
(especially vm_offset_t) are only 32 bits.  If you sprinkle [abomination
deleted] suffixes or casts to uint64_t or vm_paddr_t on constants or
macros, then this is too pessimal and/or confusing for most vm
expressions.  Sprinkling UL suffixes and vm_offset_t casts is relatively
harmless only because it usually has no effect, especially on 32-bit
non-PAE arches where even more types are naturally 32 bits.

The i386 vmparam.h has the following style bugs in this area:
- UL suffixes only for MAXTSIZ and friends
- cast to vm_offset_t only for VM_MIN_KERNEL_ADDRESS
- VM_MAX_KERNEL_ADDRESS and related values are encrypted through about
  10 layers of macros depending on configuration variables like PAE.
  Most of the encryption is no longer really used, since it was mostly
  to make addresses depend on the user/kernel split.

  The encryptions mostly use signed constants and expressions, but a
  critical one is NPDEPTD defined in another file using sizeof().
  Unsigned poisoning from this probably leaks into most macros, but
  the resulting types are even less clear than the resulting values
  since the resulting values are now documented for the only supported
  user/kernel split.

- bogus extra parentheses only for VM_KMEM_SIZE_SCALE.

  The existence and default value of this macro are also wrong.  They
  were last almost correct when the default user/kernel split was 3/1
  and the physical memory size was 3 or 4 GB.

  The default for the macro is 3, which is closely related to the split
  

svn commit: r341104 - head/sys/powerpc/booke

2018-11-27 Thread Justin Hibbits
Author: jhibbits
Date: Wed Nov 28 04:02:26 2018
New Revision: 341104
URL: https://svnweb.freebsd.org/changeset/base/341104

Log:
  powerpc/booke: Fix debug printfs in pmap
  
  Add missing '%'s so printf formats are actually handled.

Modified:
  head/sys/powerpc/booke/pmap.c

Modified: head/sys/powerpc/booke/pmap.c
==
--- head/sys/powerpc/booke/pmap.c   Wed Nov 28 02:48:43 2018
(r341103)
+++ head/sys/powerpc/booke/pmap.c   Wed Nov 28 04:02:26 2018
(r341104)
@@ -1830,8 +1830,8 @@ mmu_booke_bootstrap(mmu_t mmu, vm_offset_t start, vm_o
copy_page_dst_va = virtual_avail;
virtual_avail += PAGE_SIZE;
debugf("zero_page_va = 0x%"PRI0ptrX"\n", zero_page_va);
-   debugf("copy_page_src_va = 0x"PRI0ptrX"\n", copy_page_src_va);
-   debugf("copy_page_dst_va = 0x"PRI0ptrX"\n", copy_page_dst_va);
+   debugf("copy_page_src_va = 0x%"PRI0ptrX"\n", copy_page_src_va);
+   debugf("copy_page_dst_va = 0x%"PRI0ptrX"\n", copy_page_dst_va);
 
/* Initialize page zero/copy mutexes. */
mtx_init(_page_mutex, "mmu_booke_zero_page", NULL, MTX_DEF);
@@ -1840,15 +1840,15 @@ mmu_booke_bootstrap(mmu_t mmu, vm_offset_t start, vm_o
/* Allocate KVA space for ptbl bufs. */
ptbl_buf_pool_vabase = virtual_avail;
virtual_avail += PTBL_BUFS * PTBL_PAGES * PAGE_SIZE;
-   debugf("ptbl_buf_pool_vabase = 0x"PRI0ptrX" end = 0x"PRI0ptrX"\n",
+   debugf("ptbl_buf_pool_vabase = 0x%"PRI0ptrX" end = 0x%"PRI0ptrX"\n",
ptbl_buf_pool_vabase, virtual_avail);
 
/* Calculate corresponding physical addresses for the kernel region. */
phys_kernelend = kernload + kernsize;
debugf("kernel image and allocated data:\n");
debugf(" kernload= 0x%09llx\n", (uint64_t)kernload);
-   debugf(" kernstart   = 0x"PRI0ptrX"\n", kernstart);
-   debugf(" kernsize= 0x"PRI0ptrX"\n", kernsize);
+   debugf(" kernstart   = 0x%"PRI0ptrX"\n", kernstart);
+   debugf(" kernsize= 0x%"PRI0ptrX"\n", kernsize);
 
if (sizeof(phys_avail) / sizeof(phys_avail[0]) < availmem_regions_sz)
panic("mmu_booke_bootstrap: phys_avail too small");
@@ -2268,7 +2268,7 @@ mmu_booke_kremove(mmu_t mmu, vm_offset_t va)
 {
pte_t *pte;
 
-   CTR2(KTR_PMAP,"%s: s (va = 0x"PRI0ptrX")\n", __func__, va);
+   CTR2(KTR_PMAP,"%s: s (va = 0x%"PRI0ptrX")\n", __func__, va);
 
KASSERT(((va >= VM_MIN_KERNEL_ADDRESS) &&
(va <= VM_MAX_KERNEL_ADDRESS)),
@@ -2725,7 +2725,7 @@ mmu_booke_activate(mmu_t mmu, struct thread *td)
 
pmap = >td_proc->p_vmspace->vm_pmap;
 
-   CTR5(KTR_PMAP, "%s: s (td = %p, proc = '%s', id = %d, pmap = 
0x"PRI0ptrX")",
+   CTR5(KTR_PMAP, "%s: s (td = %p, proc = '%s', id = %d, pmap = 
0x%"PRI0ptrX")",
__func__, td, td->td_proc->p_comm, td->td_proc->p_pid, pmap);
 
KASSERT((pmap != kernel_pmap), ("mmu_booke_activate: kernel_pmap!"));
@@ -2761,7 +2761,7 @@ mmu_booke_deactivate(mmu_t mmu, struct thread *td)
 
pmap = >td_proc->p_vmspace->vm_pmap;

-   CTR5(KTR_PMAP, "%s: td=%p, proc = '%s', id = %d, pmap = 0x"PRI0ptrX,
+   CTR5(KTR_PMAP, "%s: td=%p, proc = '%s', id = %d, pmap = 0x%"PRI0ptrX,
__func__, td, td->td_proc->p_comm, td->td_proc->p_pid, pmap);
 
td->td_pcb->pcb_cpu.booke.dbcr0 = mfspr(SPR_DBCR0);
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341103 - head/sys/powerpc/include

2018-11-27 Thread Justin Hibbits
Author: jhibbits
Date: Wed Nov 28 02:48:43 2018
New Revision: 341103
URL: https://svnweb.freebsd.org/changeset/base/341103

Log:
  powerpc: Fix the powerpc64 build post-r341102
  
  VM_MIN_KERNEL_ADDRESS is now used in locore.S, but the UL suffix isn't
  permitted in .S files.

Modified:
  head/sys/powerpc/include/vmparam.h

Modified: head/sys/powerpc/include/vmparam.h
==
--- head/sys/powerpc/include/vmparam.h  Wed Nov 28 02:00:27 2018
(r341102)
+++ head/sys/powerpc/include/vmparam.h  Wed Nov 28 02:48:43 2018
(r341103)
@@ -106,8 +106,13 @@
 #defineFREEBSD32_USRSTACK  FREEBSD32_SHAREDPAGE
 
 #ifdef __powerpc64__
+#ifndef LOCORE
 #defineVM_MIN_KERNEL_ADDRESS   0xe000UL
 #defineVM_MAX_KERNEL_ADDRESS   0xe007UL
+#else
+#defineVM_MIN_KERNEL_ADDRESS   0xe000
+#defineVM_MAX_KERNEL_ADDRESS   0xe007
+#endif
 #defineVM_MAX_SAFE_KERNEL_ADDRESS  VM_MAX_KERNEL_ADDRESS
 #endif
 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341102 - in head/sys/powerpc: booke mpc85xx

2018-11-27 Thread Justin Hibbits
Author: jhibbits
Date: Wed Nov 28 02:00:27 2018
New Revision: 341102
URL: https://svnweb.freebsd.org/changeset/base/341102

Log:
  powerpc: Prepare Book-E kernels for KERNBASE != run base
  
  Book-E kernels really run at VM_MIN_KERNEL_ADDRESS, which currently happens to
  be the same as KERNBASE.  KERNBASE is the linked address, which the loader 
also
  takes to be the physical load address.  Treat KERNBASE as a physical address,
  not a virtual, and change virtual address references for KERNBASE to use
  something more appropriate.

Modified:
  head/sys/powerpc/booke/locore.S
  head/sys/powerpc/mpc85xx/platform_mpc85xx.c

Modified: head/sys/powerpc/booke/locore.S
==
--- head/sys/powerpc/booke/locore.S Wed Nov 28 01:47:01 2018
(r341101)
+++ head/sys/powerpc/booke/locore.S Wed Nov 28 02:00:27 2018
(r341102)
@@ -113,7 +113,7 @@ __start:
  *  - Create temp entry in the second AS (make sure it's not TLB[1])
  *  - Switch to temp mapping
  *  - Map 64MB of RAM in TLB1[1]
- *  - Use AS=1, set EPN to KERNBASE and RPN to kernel load address
+ *  - Use AS=0, set EPN to VM_MIN_KERNEL_ADDRESS and RPN to kernel load address
  *  - Switch to TLB1[1] mapping
  *  - Invalidate temp mapping
  *
@@ -238,7 +238,7 @@ __start:
mtspr   SPR_MAS1, %r3   /* note TS was not filled, so it's TS=0 
*/
isync
 
-   LOAD_ADDR(%r3, KERNBASE)
+   LOAD_ADDR(%r3, VM_MIN_KERNEL_ADDRESS)
ori %r3, %r3, (_TLB_ENTRY_SHARED | MAS2_M)@l /* WIMGE = 0b00100 */
mtspr   SPR_MAS2, %r3
isync
@@ -471,7 +471,7 @@ bp_kernload:
mtspr   SPR_MAS1, %r3   /* note TS was not filled, so it's TS=0 
*/
isync
 
-   LOAD_ADDR(%r3, KERNBASE)
+   LOAD_ADDR(%r3, VM_MIN_KERNEL_ADDRESS)
ori %r3, %r3, (_TLB_ENTRY_SHARED | MAS2_M)@l /* WIMGE = 0b00100 */
mtspr   SPR_MAS2, %r3
isync
@@ -526,8 +526,8 @@ bp_kernload:
 7:
 
 /*
- * At this point we're running at virtual addresses KERNBASE and beyond so
- * it's allowed to directly access all locations the kernel was linked
+ * At this point we're running at virtual addresses VM_MIN_KERNEL_ADDRESS and
+ * beyond so it's allowed to directly access all locations the kernel was 
linked
  * against.
  */
 

Modified: head/sys/powerpc/mpc85xx/platform_mpc85xx.c
==
--- head/sys/powerpc/mpc85xx/platform_mpc85xx.c Wed Nov 28 01:47:01 2018
(r341101)
+++ head/sys/powerpc/mpc85xx/platform_mpc85xx.c Wed Nov 28 02:00:27 2018
(r341102)
@@ -68,6 +68,7 @@ extern void *ap_pcpu;
 extern vm_paddr_t kernload;/* Kernel physical load address */
 extern uint8_t __boot_page[];  /* Boot page body */
 extern uint32_t bp_kernload;
+extern vm_offset_t __startkernel;
 
 struct cpu_release {
uint32_t entry_h;
@@ -346,7 +347,7 @@ mpc85xx_smp_start_cpu_epapr(platform_t plat, struct pc
rel_va = rel_page + (rel_pa & PAGE_MASK);
pmap_kenter(rel_page, rel_pa & ~PAGE_MASK);
rel = (struct cpu_release *)rel_va;
-   bptr = ((vm_paddr_t)(uintptr_t)__boot_page - KERNBASE) + kernload;
+   bptr = ((vm_paddr_t)(uintptr_t)__boot_page - __startkernel) + kernload;
cpu_flush_dcache(__DEVOLATILE(struct cpu_release *,rel), sizeof(*rel));
rel->pir = pc->pc_cpuid; __asm __volatile("sync");
rel->entry_h = (bptr >> 32);
@@ -415,7 +416,7 @@ mpc85xx_smp_start_cpu(platform_t plat, struct pcpu *pc
/* Flush caches to have our changes hit DRAM. */
cpu_flush_dcache(__boot_page, 4096);
 
-   bptr = ((vm_paddr_t)(uintptr_t)__boot_page - KERNBASE) + kernload;
+   bptr = ((vm_paddr_t)(uintptr_t)__boot_page - __startkernel) + kernload;
KASSERT((bptr & 0xfff) == 0,
("%s: boot page is not aligned (%#jx)", __func__, (uintmax_t)bptr));
if (mpc85xx_is_qoriq()) {
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341101 - head/stand

2018-11-27 Thread Justin Hibbits
Author: jhibbits
Date: Wed Nov 28 01:47:01 2018
New Revision: 341101
URL: https://svnweb.freebsd.org/changeset/base/341101

Log:
  powerpcspe: Don't crash the loader on ubldr with SPE instructions.
  
  -msoft-float seems to be insufficient for disabling the SPE on powerpcspe.
  Force it off with -mno-spe as well.  This prevents a crash in ubldr on
  powerpcspe.

Modified:
  head/stand/defs.mk

Modified: head/stand/defs.mk
==
--- head/stand/defs.mk  Tue Nov 27 22:33:58 2018(r341100)
+++ head/stand/defs.mk  Wed Nov 28 01:47:01 2018(r341101)
@@ -115,6 +115,11 @@ CFLAGS+=   -march=rv64imac -mabi=lp64
 CFLAGS+=   -msoft-float
 .endif
 
+# -msoft-float seems to be insufficient for powerpcspe
+.if ${MACHINE_ARCH} == "powerpcspe"
+CFLAGS+=   -mno-spe
+.endif
+
 .if ${MACHINE_CPUARCH} == "i386" || (${MACHINE_CPUARCH} == "amd64" && 
${DO32:U0} == 1)
 CFLAGS+=   -march=i386
 CFLAGS.gcc+=   -mpreferred-stack-boundary=2
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341098 - head/sys/dev/cxgbe

2018-11-27 Thread John Baldwin
Author: jhb
Date: Tue Nov 27 22:02:54 2018
New Revision: 341098
URL: https://svnweb.freebsd.org/changeset/base/341098

Log:
  Add read-only sysctls for all tunables in the cxgbe(4) driver.
  
  Reviewed by:  np
  MFC after:1 month
  Sponsored by: Chelsio Communications
  Differential Revision:https://reviews.freebsd.org/D18360

Modified:
  head/sys/dev/cxgbe/adapter.h
  head/sys/dev/cxgbe/t4_main.c
  head/sys/dev/cxgbe/t4_netmap.c
  head/sys/dev/cxgbe/t4_sge.c

Modified: head/sys/dev/cxgbe/adapter.h
==
--- head/sys/dev/cxgbe/adapter.hTue Nov 27 21:49:59 2018
(r341097)
+++ head/sys/dev/cxgbe/adapter.hTue Nov 27 22:02:54 2018
(r341098)
@@ -82,6 +82,8 @@ prefetch(void *x)
 #define CTLTYPE_U64 CTLTYPE_QUAD
 #endif
 
+SYSCTL_DECL(_hw_cxgbe);
+
 struct adapter;
 typedef struct adapter adapter_t;
 

Modified: head/sys/dev/cxgbe/t4_main.c
==
--- head/sys/dev/cxgbe/t4_main.cTue Nov 27 21:49:59 2018
(r341097)
+++ head/sys/dev/cxgbe/t4_main.cTue Nov 27 22:02:54 2018
(r341098)
@@ -253,110 +253,150 @@ SLIST_HEAD(, uld_info) t4_uld_list;
  * Tunables applicable to both T4 and T5 are under hw.cxgbe.  Those specific to
  * T5 are under hw.cxl.
  */
+SYSCTL_NODE(_hw, OID_AUTO, cxgbe, CTLFLAG_RD, 0, "cxgbe(4) parameters");
+SYSCTL_NODE(_hw, OID_AUTO, cxl, CTLFLAG_RD, 0, "cxgbe(4) T5+ parameters");
+SYSCTL_NODE(_hw_cxgbe, OID_AUTO, toe, CTLFLAG_RD, 0, "cxgbe(4) TOE 
parameters");
 
 /*
  * Number of queues for tx and rx, NIC and offload.
  */
 #define NTXQ 16
 int t4_ntxq = -NTXQ;
-TUNABLE_INT("hw.cxgbe.ntxq", _ntxq);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, ntxq, CTLFLAG_RDTUN, _ntxq, 0,
+"Number of TX queues per port");
 TUNABLE_INT("hw.cxgbe.ntxq10g", _ntxq); /* Old name, undocumented */
 
 #define NRXQ 8
 int t4_nrxq = -NRXQ;
-TUNABLE_INT("hw.cxgbe.nrxq", _nrxq);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, nrxq, CTLFLAG_RDTUN, _nrxq, 0,
+"Number of RX queues per port");
 TUNABLE_INT("hw.cxgbe.nrxq10g", _nrxq); /* Old name, undocumented */
 
 #define NTXQ_VI 1
 static int t4_ntxq_vi = -NTXQ_VI;
-TUNABLE_INT("hw.cxgbe.ntxq_vi", _ntxq_vi);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, ntxq_vi, CTLFLAG_RDTUN, _ntxq_vi, 0,
+"Number of TX queues per VI");
 
 #define NRXQ_VI 1
 static int t4_nrxq_vi = -NRXQ_VI;
-TUNABLE_INT("hw.cxgbe.nrxq_vi", _nrxq_vi);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, nrxq_vi, CTLFLAG_RDTUN, _nrxq_vi, 0,
+"Number of RX queues per VI");
 
 static int t4_rsrv_noflowq = 0;
-TUNABLE_INT("hw.cxgbe.rsrv_noflowq", _rsrv_noflowq);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, rsrv_noflowq, CTLFLAG_RDTUN, _rsrv_noflowq,
+0, "Reserve TX queue 0 of each VI for non-flowid packets");
 
 #if defined(TCP_OFFLOAD) || defined(RATELIMIT)
 #define NOFLDTXQ 8
 static int t4_nofldtxq = -NOFLDTXQ;
-TUNABLE_INT("hw.cxgbe.nofldtxq", _nofldtxq);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, nofldtxq, CTLFLAG_RDTUN, _nofldtxq, 0,
+"Number of offload TX queues per port");
 
 #define NOFLDRXQ 2
 static int t4_nofldrxq = -NOFLDRXQ;
-TUNABLE_INT("hw.cxgbe.nofldrxq", _nofldrxq);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, nofldrxq, CTLFLAG_RDTUN, _nofldrxq, 0,
+"Number of offload RX queues per port");
 
 #define NOFLDTXQ_VI 1
 static int t4_nofldtxq_vi = -NOFLDTXQ_VI;
-TUNABLE_INT("hw.cxgbe.nofldtxq_vi", _nofldtxq_vi);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, nofldtxq_vi, CTLFLAG_RDTUN, _nofldtxq_vi, 0,
+"Number of offload TX queues per VI");
 
 #define NOFLDRXQ_VI 1
 static int t4_nofldrxq_vi = -NOFLDRXQ_VI;
-TUNABLE_INT("hw.cxgbe.nofldrxq_vi", _nofldrxq_vi);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, nofldrxq_vi, CTLFLAG_RDTUN, _nofldrxq_vi, 0,
+"Number of offload RX queues per VI");
 
 #define TMR_IDX_OFLD 1
 int t4_tmr_idx_ofld = TMR_IDX_OFLD;
-TUNABLE_INT("hw.cxgbe.holdoff_timer_idx_ofld", _tmr_idx_ofld);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, holdoff_timer_idx_ofld, CTLFLAG_RDTUN,
+_tmr_idx_ofld, 0, "Holdoff timer index for offload queues");
 
 #define PKTC_IDX_OFLD (-1)
 int t4_pktc_idx_ofld = PKTC_IDX_OFLD;
-TUNABLE_INT("hw.cxgbe.holdoff_pktc_idx_ofld", _pktc_idx_ofld);
+SYSCTL_INT(_hw_cxgbe, OID_AUTO, holdoff_pktc_idx_ofld, CTLFLAG_RDTUN,
+_pktc_idx_ofld, 0, "holdoff packet counter index for offload queues");
 
 /* 0 means chip/fw default, non-zero number is value in microseconds */
 static u_long t4_toe_keepalive_idle = 0;
-TUNABLE_ULONG("hw.cxgbe.toe.keepalive_idle", _toe_keepalive_idle);
+SYSCTL_ULONG(_hw_cxgbe_toe, OID_AUTO, keepalive_idle, CTLFLAG_RDTUN,
+_toe_keepalive_idle, 0, "TOE keepalive idle timer (us)");
 
 /* 0 means chip/fw default, non-zero number is value in microseconds */
 static u_long t4_toe_keepalive_interval = 0;
-TUNABLE_ULONG("hw.cxgbe.toe.keepalive_interval", _toe_keepalive_interval);
+SYSCTL_ULONG(_hw_cxgbe_toe, OID_AUTO, keepalive_interval, CTLFLAG_RDTUN,
+_toe_keepalive_interval, 0, "TOE keepalive interval 

svn commit: r341097 - in head/bin/sh: . tests/errors

2018-11-27 Thread Jilles Tjoelker
Author: jilles
Date: Tue Nov 27 21:49:59 2018
New Revision: 341097
URL: https://svnweb.freebsd.org/changeset/base/341097

Log:
  sh: Use 126 and 127 exit status for failures opening a script
  
  This affects scripts named on the command line, named with a '.' special
  builtin and found via the PATH %func autoloading mechanism.
  
  PR:   231986

Added:
  head/bin/sh/tests/errors/script-error1.0   (contents, props changed)
Modified:
  head/bin/sh/input.c
  head/bin/sh/sh.1
  head/bin/sh/tests/errors/Makefile

Modified: head/bin/sh/input.c
==
--- head/bin/sh/input.c Tue Nov 27 21:40:51 2018(r341096)
+++ head/bin/sh/input.c Tue Nov 27 21:49:59 2018(r341097)
@@ -359,12 +359,16 @@ popstring(void)
 void
 setinputfile(const char *fname, int push)
 {
+   int e;
int fd;
int fd2;
 
INTOFF;
-   if ((fd = open(fname, O_RDONLY | O_CLOEXEC)) < 0)
-   error("cannot open %s: %s", fname, strerror(errno));
+   if ((fd = open(fname, O_RDONLY | O_CLOEXEC)) < 0) {
+   e = errno;
+   errorwithstatus(e == ENOENT || e == ENOTDIR ? 127 : 126,
+   "cannot open %s: %s", fname, strerror(e));
+   }
if (fd < 10) {
fd2 = fcntl(fd, F_DUPFD_CLOEXEC, 10);
close(fd);

Modified: head/bin/sh/sh.1
==
--- head/bin/sh/sh.1Tue Nov 27 21:40:51 2018(r341096)
+++ head/bin/sh/sh.1Tue Nov 27 21:49:59 2018(r341097)
@@ -32,7 +32,7 @@
 .\"from: @(#)sh.1  8.6 (Berkeley) 5/4/95
 .\" $FreeBSD$
 .\"
-.Dd July 19, 2018
+.Dd November 27, 2018
 .Dt SH 1
 .Os
 .Sh NAME
@@ -2819,7 +2819,11 @@ Shell database.
 Privileged shell profile.
 .El
 .Sh EXIT STATUS
-Errors that are detected by the shell, such as a syntax error, will
+If the
+.Ar script
+cannot be found, the exit status will be 127;
+if it cannot be opened for another reason, the exit status will be 126.
+Other errors that are detected by the shell, such as a syntax error, will
 cause the shell to exit with a non-zero exit status.
 If the shell is not an interactive shell, the execution of the shell
 file will be aborted.

Modified: head/bin/sh/tests/errors/Makefile
==
--- head/bin/sh/tests/errors/Makefile   Tue Nov 27 21:40:51 2018
(r341096)
+++ head/bin/sh/tests/errors/Makefile   Tue Nov 27 21:49:59 2018
(r341097)
@@ -30,6 +30,7 @@ ${PACKAGE}FILES+= redirection-error5.0
 ${PACKAGE}FILES+=  redirection-error6.0
 ${PACKAGE}FILES+=  redirection-error7.0
 ${PACKAGE}FILES+=  redirection-error8.0
+${PACKAGE}FILES+=  script-error1.0
 ${PACKAGE}FILES+=  write-error1.0
 
 .include 

Added: head/bin/sh/tests/errors/script-error1.0
==
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/bin/sh/tests/errors/script-error1.0Tue Nov 27 21:49:59 2018
(r341097)
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+{ stderr=$(${SH} /var/empty/nosuchscript 2>&1 >&3); } 3>&1
+r=$?
+[ -n "$stderr" ] && [ "$r" = 127 ]
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341096 - head/sys/amd64/amd64

2018-11-27 Thread Konstantin Belousov
Author: kib
Date: Tue Nov 27 21:40:51 2018
New Revision: 341096
URL: https://svnweb.freebsd.org/changeset/base/341096

Log:
  Fix assert condition in pmap_large_unmap().
  
  pmap_large_unmap() asserts that an unmapping request covers the
  entirety of a 2M or 1G page.  The logic in the asserts was out of date
  with the loop logic.  Correct the test to actually check that
  destroying the current superpage mapping does not unmap addresses
  beyond those requested by the caller.
  
  Submitted by: D Scott Phillips 
  Reviewed by:  alc
  MFC after:1 week
  Differential revision:https://reviews.freebsd.org/D18345

Modified:
  head/sys/amd64/amd64/pmap.c

Modified: head/sys/amd64/amd64/pmap.c
==
--- head/sys/amd64/amd64/pmap.c Tue Nov 27 20:01:05 2018(r341095)
+++ head/sys/amd64/amd64/pmap.c Tue Nov 27 21:40:51 2018(r341096)
@@ -8441,9 +8441,10 @@ pmap_large_unmap(void *svaa, vm_size_t len)
KASSERT((va & PDPMASK) == 0,
("PDPMASK bit set, va %#lx pdpe %#lx pdp %#lx", va,
(u_long)pdpe, pdp));
-   KASSERT(len <= NBPDP,
-   ("len < NBPDP, sva %#lx va %#lx pdpe %#lx pdp %#lx "
-   "len %#lx", sva, va, (u_long)pdpe, pdp, len));
+   KASSERT(va + NBPDP <= sva + len,
+   ("unmap covers partial 1GB page, sva %#lx va %#lx "
+   "pdpe %#lx pdp %#lx len %#lx", sva, va,
+   (u_long)pdpe, pdp, len));
*pdpe = 0;
inc = NBPDP;
continue;
@@ -8457,9 +8458,10 @@ pmap_large_unmap(void *svaa, vm_size_t len)
KASSERT((va & PDRMASK) == 0,
("PDRMASK bit set, va %#lx pde %#lx pd %#lx", va,
(u_long)pde, pd));
-   KASSERT(len <= NBPDR,
-   ("len < NBPDR, sva %#lx va %#lx pde %#lx pd %#lx "
-   "len %#lx", sva, va, (u_long)pde, pd, len));
+   KASSERT(va + NBPDR <= sva + len,
+   ("unmap covers partial 2MB page, sva %#lx va %#lx "
+   "pde %#lx pd %#lx len %#lx", sva, va, (u_long)pde,
+   pd, len));
pde_store(pde, 0);
inc = NBPDR;
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)pde));
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341095 - head/sys/net

2018-11-27 Thread Andrew Gallatin
Author: gallatin
Date: Tue Nov 27 20:01:05 2018
New Revision: 341095
URL: https://svnweb.freebsd.org/changeset/base/341095

Log:
  Use busdma unconditionally in iflib
  
  - Remove the complex mechanism to choose between using busdma
  and raw pmap_kextract at runtime.   The reduced complexity makes
  the code easier to read and maintain.
  
  - Fix a bug in the small packet receive path where clusters were
  repeatedly mapped but never unmapped. We now store the cluster's
  bus address and avoid re-mapping the cluster each time a small
  packet is received.
  
  This patch fixes bugs I've seen where ixl(4) will not even
  respond to ping without seeing DMAR faults.
  
  I see a small improvement (14%) on packet forwarding tests using
  a Haswell based Xeon E5-2697 v3.  Olivier sees a small
  regression (-3% to -6%) with lower end hardware.
  
  Reviewed by:  mmacy
  Not objected to by:   sbruno
  MFC after:8 weeks
  Sponsored by: Netflix, Inc
  Differential Revision:https://reviews.freebsd.org/D17901

Modified:
  head/sys/net/iflib.c
  head/sys/net/iflib_private.h

Modified: head/sys/net/iflib.c
==
--- head/sys/net/iflib.cTue Nov 27 19:50:58 2018(r341094)
+++ head/sys/net/iflib.cTue Nov 27 20:01:05 2018(r341095)
@@ -92,15 +92,6 @@ __FBSDID("$FreeBSD$");
 
 #include "ifdi_if.h"
 
-#if defined(__i386__) || defined(__amd64__)
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#endif
-
 #ifdef PCI_IOV
 #include 
 #endif
@@ -282,24 +273,16 @@ iflib_get_sctx(if_ctx_t ctx)
 #define LINK_ACTIVE(ctx) ((ctx)->ifc_link_state == LINK_STATE_UP)
 #define CTX_IS_VF(ctx) ((ctx)->ifc_sctx->isc_flags & IFLIB_IS_VF)
 
-#define RX_SW_DESC_MAP_CREATED (1 << 0)
-#define TX_SW_DESC_MAP_CREATED (1 << 1)
-#define RX_SW_DESC_INUSE(1 << 3)
-#define TX_SW_DESC_MAPPED   (1 << 4)
-
-#defineM_TOOBIGM_PROTO1
-
 typedef struct iflib_sw_rx_desc_array {
bus_dmamap_t*ifsd_map; /* bus_dma maps for packet */
struct mbuf **ifsd_m;   /* pkthdr mbufs */
caddr_t *ifsd_cl;  /* direct cluster pointer for rx */
-   uint8_t *ifsd_flags;
+   bus_addr_t  *ifsd_ba;  /* bus addr of cluster for rx */
 } iflib_rxsd_array_t;
 
 typedef struct iflib_sw_tx_desc_array {
bus_dmamap_t*ifsd_map; /* bus_dma maps for packet */
struct mbuf**ifsd_m;   /* pkthdr mbufs */
-   uint8_t *ifsd_flags;
 } if_txsd_vec_t;
 
 
@@ -940,9 +923,8 @@ iflib_netmap_txsync(struct netmap_kring *kring, int fl
if_ctx_t ctx = ifp->if_softc;
iflib_txq_t txq = >ifc_txqs[kring->ring_id];
 
-   if (txq->ift_sds.ifsd_map)
-   bus_dmamap_sync(txq->ift_desc_tag, txq->ift_ifdi->idi_map,
-   BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
+   bus_dmamap_sync(txq->ift_desc_tag, txq->ift_ifdi->idi_map,
+   BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
 
 
/*
@@ -1024,9 +1006,8 @@ iflib_netmap_txsync(struct netmap_kring *kring, int fl
kring->nr_hwcur = nm_i;
 
/* synchronize the NIC ring */
-   if (txq->ift_sds.ifsd_map)
-   bus_dmamap_sync(txq->ift_desc_tag, 
txq->ift_ifdi->idi_map,
-   BUS_DMASYNC_PREREAD | 
BUS_DMASYNC_PREWRITE);
+   bus_dmamap_sync(txq->ift_desc_tag, txq->ift_ifdi->idi_map,
+   BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
 
/* (re)start the tx unit up to slot nic_i (excluded) */
ctx->isc_txd_flush(ctx->ifc_softc, txq->ift_id, nic_i);
@@ -1129,9 +1110,8 @@ iflib_netmap_rxsync(struct netmap_kring *kring, int fl
error = ctx->isc_rxd_pkt_get(ctx->ifc_softc, 
);
ring->slot[nm_i].len = error ? 0 : ri.iri_len - 
crclen;
ring->slot[nm_i].flags = 0;
-   if (fl->ifl_sds.ifsd_map)
-   bus_dmamap_sync(fl->ifl_ifdi->idi_tag,
-   
fl->ifl_sds.ifsd_map[nic_i], BUS_DMASYNC_POSTREAD);
+   bus_dmamap_sync(fl->ifl_ifdi->idi_tag,
+   fl->ifl_sds.ifsd_map[nic_i], 
BUS_DMASYNC_POSTREAD);
nm_i = nm_next(nm_i, lim);
nic_i = nm_next(nic_i, lim);
}
@@ -1210,9 +1190,6 @@ iflib_netmap_txq_init(if_ctx_t ctx, iflib_txq_t txq)
slot = netmap_reset(na, NR_TX, txq->ift_id, 0);
if (slot == NULL)
return;
-   if (txq->ift_sds.ifsd_map == NULL)
-   return;
-
for (int i = 0; i < ctx->ifc_softc_ctx.isc_ntxd[0]; i++) {
 
/*
@@ 

svn commit: r341094 - head/sys/kern

2018-11-27 Thread Konstantin Belousov
Author: kib
Date: Tue Nov 27 19:50:58 2018
New Revision: 341094
URL: https://svnweb.freebsd.org/changeset/base/341094

Log:
  Improve sigonstack().
  
  Avoid relying on unsigned overflow for the test.
  Simplify expressions to avoid duplicate check for the range.
  Style.
  Add herald comment.
  
  Reviewed by:  jhb
  Sponsored by: The FreeBSD Foundation
  MFC after:1 week
  Differential revision:https://reviews.freebsd.org/D18361

Modified:
  head/sys/kern/kern_sig.c

Modified: head/sys/kern/kern_sig.c
==
--- head/sys/kern/kern_sig.cTue Nov 27 19:45:25 2018(r341093)
+++ head/sys/kern/kern_sig.cTue Nov 27 19:50:58 2018(r341094)
@@ -615,20 +615,25 @@ signotify(struct thread *td)
}
 }
 
+/*
+ * Returns 1 (true) if altstack is configured for the thread, and the
+ * passed stack bottom address falls into the altstack range.  Handles
+ * the 43 compat special case where the alt stack size is zero.
+ */
 int
 sigonstack(size_t sp)
 {
-   struct thread *td = curthread;
+   struct thread *td;
 
-   return ((td->td_pflags & TDP_ALTSTACK) ?
+   td = curthread;
+   if ((td->td_pflags & TDP_ALTSTACK) == 0)
+   return (0);
 #if defined(COMPAT_43)
-   ((td->td_sigstk.ss_size == 0) ?
-   (td->td_sigstk.ss_flags & SS_ONSTACK) :
-   ((sp - (size_t)td->td_sigstk.ss_sp) < td->td_sigstk.ss_size))
-#else
-   ((sp - (size_t)td->td_sigstk.ss_sp) < td->td_sigstk.ss_size)
+   if (td->td_sigstk.ss_size == 0)
+   return ((td->td_sigstk.ss_flags & SS_ONSTACK) != 0);
 #endif
-   : 0);
+   return (sp >= (size_t)td->td_sigstk.ss_sp &&
+   sp < td->td_sigstk.ss_size + (size_t)td->td_sigstk.ss_sp);
 }
 
 static __inline int
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r341068 - head/tests/sys/kqueue/libkqueue

2018-11-27 Thread David A. Bright
On 11/27/18 12:34 PM, Conrad Meyer wrote:
> As long as we were correcting indentation whitespace, it seems like it
> would have been good to go to tabs, per style(9), instead of spaces.
> Or are these considered contrib code from NetBSD?

A fair question. I'm not sure whether they should be considered contrib
code or not. As the (vast?) majority the tab-using lines were from prior
changes that I made, I thought I should return the files to their
original spaces-instead-of-tabs, 4-space indent format on the theory
that I should have recognized and matched the existing style in the
first place. Not to mention that this change was much smaller and less
disruptive; if I had converted the files to style(9), most lines in the
files would have had to change.

-- 
David Bright
d...@freebsd.org
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r341068 - head/tests/sys/kqueue/libkqueue

2018-11-27 Thread Conrad Meyer
As long as we were correcting indentation whitespace, it seems like it
would have been good to go to tabs, per style(9), instead of spaces.
Or are these considered contrib code from NetBSD?

Best,
Conrad
On Tue, Nov 27, 2018 at 7:12 AM David Bright  wrote:
>
> Author: dab
> Date: Tue Nov 27 15:12:34 2018
> New Revision: 341068
> URL: https://svnweb.freebsd.org/changeset/base/341068
>
> Log:
>   Make whitespace more consistent in libkqueue tests.
>
>   After r337820, which "corrected" some spaces-instead-of-tab whitespace
>   issues in the libkqueue tests, jmg@ pointed out that these files were
>   originally space-based, not tab-spaced, and so the correction should
>   have been to get rid of the tabs that had been introduced in previous
>   changes, not the spaces. This change does that. This is a whitespace
>   only change; no functional change is intended.
>
>   Reported by:  jmg@
>   MFC after:3 days
>   Sponsored by: Dell EMC Isilon
>
> Modified:
>   head/tests/sys/kqueue/libkqueue/main.c
>   head/tests/sys/kqueue/libkqueue/proc.c
>   head/tests/sys/kqueue/libkqueue/signal.c
>   head/tests/sys/kqueue/libkqueue/timer.c
>   head/tests/sys/kqueue/libkqueue/user.c
>   head/tests/sys/kqueue/libkqueue/vnode.c
>
> Modified: head/tests/sys/kqueue/libkqueue/main.c
> ==
> --- head/tests/sys/kqueue/libkqueue/main.c  Tue Nov 27 14:58:19 2018  
>   (r341067)
> +++ head/tests/sys/kqueue/libkqueue/main.c  Tue Nov 27 15:12:34 2018  
>   (r341068)
> @@ -85,7 +85,7 @@ kevent_get(int kqfd)
>  struct kevent *kev;
>
>  if ((kev = calloc(1, sizeof(*kev))) == NULL)
> -   err(1, "out of memory");
> +err(1, "out of memory");
>
>  nfds = kevent(kqfd, NULL, 0, kev, 1, NULL);
>  if (nfds < 1)
> @@ -103,7 +103,7 @@ kevent_get_timeout(int kqfd, int seconds)
>  struct timespec timeout = {seconds, 0};
>
>  if ((kev = calloc(1, sizeof(*kev))) == NULL)
> -   err(1, "out of memory");
> +err(1, "out of memory");
>
>  nfds = kevent(kqfd, NULL, 0, kev, 1, );
>  if (nfds < 0) {
> @@ -123,10 +123,10 @@ kevent_fflags_dump(struct kevent *kev)
>
>  #define KEVFFL_DUMP(attrib) \
>  if (kev->fflags & attrib) \
> -   strncat(buf, #attrib" ", 64);
> +strncat(buf, #attrib" ", 64);
>
>  if ((buf = calloc(1, 1024)) == NULL)
> -   abort();
> +abort();
>
>  /* Not every filter has meaningful fflags */
>  if (kev->filter == EVFILT_PROC) {
> @@ -160,7 +160,7 @@ kevent_fflags_dump(struct kevent *kev)
>  #endif
>  buf[strlen(buf) - 1] = ')';
>  } else {
> -   snprintf(buf, 1024, "fflags = %x", kev->fflags);
> +snprintf(buf, 1024, "fflags = %x", kev->fflags);
>  }
>
>  return (buf);
> @@ -173,10 +173,10 @@ kevent_flags_dump(struct kevent *kev)
>
>  #define KEVFL_DUMP(attrib) \
>  if (kev->flags & attrib) \
> -   strncat(buf, #attrib" ", 64);
> +strncat(buf, #attrib" ", 64);
>
>  if ((buf = calloc(1, 1024)) == NULL)
> -   abort();
> +abort();
>
>  snprintf(buf, 1024, "flags = %d (", kev->flags);
>  KEVFL_DUMP(EV_ADD);
> @@ -208,17 +208,17 @@ kevent_to_str(struct kevent *kev)
>
>  snprintf([0], sizeof(buf),
>  "[ident=%ju, filter=%d, %s, %s, data=%jd, udata=%p, "
> -   "ext=[%jx %jx %jx %jx]",
> +"ext=[%jx %jx %jx %jx]",
>  (uintmax_t) kev->ident,
>  kev->filter,
>  flags_str,
>  fflags_str,
>  (uintmax_t)kev->data,
>  kev->udata,
> -   (uintmax_t)kev->ext[0],
> -   (uintmax_t)kev->ext[1],
> -   (uintmax_t)kev->ext[2],
> -   (uintmax_t)kev->ext[3]);
> +(uintmax_t)kev->ext[0],
> +(uintmax_t)kev->ext[1],
> +(uintmax_t)kev->ext[2],
> +(uintmax_t)kev->ext[3]);
>
>  free(flags_str);
>  free(fflags_str);
> @@ -239,10 +239,10 @@ kevent_add(int kqfd, struct kevent *kev,
>
>  EV_SET(kev, ident, filter, flags, fflags, data, NULL);
>  if (kevent(kqfd, kev, 1, NULL, 0, NULL) < 0) {
> -   kev_str = kevent_to_str(kev);
> -   printf("Unable to add the following kevent:\n%s\n",
> -   kev_str);
> -   free(kev_str);
> +kev_str = kevent_to_str(kev);
> +printf("Unable to add the following kevent:\n%s\n",
> +kev_str);
> +free(kev_str);
>  err(1, "kevent(): %s", strerror(errno));
>  }
>  }
> @@ -265,12 +265,12 @@ kevent_cmp(struct kevent *k1, struct kevent *k2)
>k1->data != k2->data || k1->udata != k2->udata ||
>k1->ext[0] != k2->ext[0] || k1->ext[1] != k2->ext[1] ||
>k1->ext[0] != k2->ext[2] || k1->ext[0] != k2->ext[3]) {
> -   kev1_str = kevent_to_str(k1);
> -   kev2_str = kevent_to_str(k2);
> -   printf("kevent_cmp: mismatch:\n  %s !=\n  %s\n",
> -  kev1_str, kev2_str);
> -   free(kev1_str);

svn commit: r341084 - in head: sys/kern sys/sys usr.sbin/jail

2018-11-27 Thread Jamie Gritton
Author: jamie
Date: Tue Nov 27 17:51:50 2018
New Revision: 341084
URL: https://svnweb.freebsd.org/changeset/base/341084

Log:
  In hardened systems, where the security.bsd.unprivileged_proc_debug sysctl
  node is set, allow setting security.bsd.unprivileged_proc_debug per-jail.
  In part, this is needed to create jails in which the Address Sanitizer
  (ASAN) fully works as ASAN utilizes libkvm to inspect the virtual address
  space. Instead of having to allow unprivileged process debugging for the
  entire system, allow setting it on a per-jail basis.
  
  The sysctl node is still security.bsd.unprivileged_proc_debug and the
  jail(8) param is allow.unprivileged_proc_debug. The sysctl code is now a
  sysctl proc rather than a sysctl int. This allows us to determine setting
  the flag for the corresponding jail (or prison0).
  
  As part of the change, the dynamic allow.* API needed to be modified to
  take into account pr_allow flags which may now be disabled in prison0.
  This prevents conflicts with new pr_allow flags (like that of vmm(4)) that
  are added (and removed) dynamically.
  
  Also teach the jail creation KPI to allow differences for certain pr_allow
  flags between the parent and child jail. This can happen when unprivileged
  process debugging is disabled in the parent prison, but enabled in the
  child.
  
  Submitted by: Shawn Webb 
  Obtained from:HardenedBSD (45b3625edba0f73b3e3890b1ec3d0d1e95fd47e1, 
deba0b5078cef0faae43cbdafed3035b16587afc, 
ab21eeb3b4c72f2500987c96ff603ccf3b6e7de8)
  Relnotes: yes
  Sponsored by: HardenedBSD and G2, Inc
  Differential Revision:https://reviews.freebsd.org/D18319

Modified:
  head/sys/kern/kern_jail.c
  head/sys/kern/kern_priv.c
  head/sys/kern/kern_prot.c
  head/sys/sys/jail.h
  head/usr.sbin/jail/jail.8

Modified: head/sys/kern/kern_jail.c
==
--- head/sys/kern/kern_jail.c   Tue Nov 27 17:10:00 2018(r341083)
+++ head/sys/kern/kern_jail.c   Tue Nov 27 17:51:50 2018(r341084)
@@ -194,10 +194,14 @@ static struct bool_flags pr_flag_allow[NBBY * NBPW] = 
{"allow.reserved_ports", "allow.noreserved_ports",
 PR_ALLOW_RESERVED_PORTS},
{"allow.read_msgbuf", "allow.noread_msgbuf", PR_ALLOW_READ_MSGBUF},
+   {"allow.unprivileged_proc_debug", "allow.nounprivileged_proc_debug",
+PR_ALLOW_UNPRIV_DEBUG},
 };
 const size_t pr_flag_allow_size = sizeof(pr_flag_allow);
 
-#defineJAIL_DEFAULT_ALLOW  (PR_ALLOW_SET_HOSTNAME | 
PR_ALLOW_RESERVED_PORTS)
+#defineJAIL_DEFAULT_ALLOW  (PR_ALLOW_SET_HOSTNAME | \
+PR_ALLOW_RESERVED_PORTS | \
+PR_ALLOW_UNPRIV_DEBUG)
 #defineJAIL_DEFAULT_ENFORCE_STATFS 2
 #defineJAIL_DEFAULT_DEVFS_RSNUM0
 static unsigned jail_default_allow = JAIL_DEFAULT_ALLOW;
@@ -498,6 +502,7 @@ kern_jail_set(struct thread *td, struct uio *optuio, i
int ip6s, redo_ip6;
 #endif
uint64_t pr_allow, ch_allow, pr_flags, ch_flags;
+   uint64_t pr_allow_diff;
unsigned tallow;
char numbuf[12];
 
@@ -1530,7 +1535,8 @@ kern_jail_set(struct thread *td, struct uio *optuio, i
}
}
}
-   if (pr_allow & ~ppr->pr_allow) {
+   pr_allow_diff = pr_allow & ~ppr->pr_allow;
+   if (pr_allow_diff & ~PR_ALLOW_DIFFERENCES) {
error = EPERM;
goto done_deref_locked;
}
@@ -3783,6 +3789,8 @@ SYSCTL_JAIL_PARAM(_allow, reserved_ports, CTLTYPE_INT 
 "B", "Jail may bind sockets to reserved ports");
 SYSCTL_JAIL_PARAM(_allow, read_msgbuf, CTLTYPE_INT | CTLFLAG_RW,
 "B", "Jail may read the kernel message buffer");
+SYSCTL_JAIL_PARAM(_allow, unprivileged_proc_debug, CTLTYPE_INT | CTLFLAG_RW,
+"B", "Unprivileged processes may use process debugging facilities");
 
 SYSCTL_JAIL_PARAM_SUBNODE(allow, mount, "Jail mount/unmount permission flags");
 SYSCTL_JAIL_PARAM(_allow_mount, , CTLTYPE_INT | CTLFLAG_RW,
@@ -3834,10 +3842,16 @@ prison_add_allow(const char *prefix, const char *name,
 * Find a free bit in prison0's pr_allow, failing if there are none
 * (which shouldn't happen as long as we keep track of how many
 * potential dynamic flags exist).
+*
+* Due to per-jail unprivileged process debugging support
+* using pr_allow, also verify against PR_ALLOW_ALL_STATIC.
+* prison0 may have unprivileged process debugging unset.
 */
for (allow_flag = 1;; allow_flag <<= 1) {
if (allow_flag == 0)
goto no_add;
+   if (allow_flag & PR_ALLOW_ALL_STATIC)
+   continue;
if ((prison0.pr_allow & allow_flag) == 0)
break;
}

Modified: head/sys/kern/kern_priv.c

svn commit: r341073 - head/sys/netpfil/ipfw

2018-11-27 Thread Andrey V. Elsukov
Author: ae
Date: Tue Nov 27 16:51:01 2018
New Revision: 341073
URL: https://svnweb.freebsd.org/changeset/base/341073

Log:
  Do not limit the mbuf queue length for keepalive packets.
  
  It was unlimited before overhaul, and one user reported that this limit
  can be reached easily.
  
  PR:   233562
  MFC after:1 week

Modified:
  head/sys/netpfil/ipfw/ip_fw_dynamic.c

Modified: head/sys/netpfil/ipfw/ip_fw_dynamic.c
==
--- head/sys/netpfil/ipfw/ip_fw_dynamic.c   Tue Nov 27 16:23:17 2018
(r341072)
+++ head/sys/netpfil/ipfw/ip_fw_dynamic.c   Tue Nov 27 16:51:01 2018
(r341073)
@@ -349,7 +349,6 @@ VNET_DEFINE_STATIC(uint32_t, dyn_short_lifetime);
  * dyn_rst_lifetime and dyn_fin_lifetime should be strictly lower
  * than dyn_keepalive_period.
  */
-#defineDYN_KEEPALIVE_MAXQ  512
 VNET_DEFINE_STATIC(uint32_t, dyn_keepalive_interval);
 VNET_DEFINE_STATIC(uint32_t, dyn_keepalive_period);
 VNET_DEFINE_STATIC(uint32_t, dyn_keepalive);
@@ -2351,7 +2350,7 @@ dyn_send_keepalive_ipv4(struct ip_fw_chain *chain)
struct dyn_ipv4_state *s;
uint32_t bucket;
 
-   mbufq_init(, DYN_KEEPALIVE_MAXQ);
+   mbufq_init(, INT_MAX);
IPFW_UH_RLOCK(chain);
/*
 * It is safe to not use hazard pointer and just do lockless
@@ -2458,7 +2457,7 @@ dyn_send_keepalive_ipv6(struct ip_fw_chain *chain)
struct dyn_ipv6_state *s;
uint32_t bucket;
 
-   mbufq_init(, DYN_KEEPALIVE_MAXQ);
+   mbufq_init(, INT_MAX);
IPFW_UH_RLOCK(chain);
/*
 * It is safe to not use hazard pointer and just do lockless
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341072 - head/lib/libfetch

2018-11-27 Thread Dag-Erling Smørgrav
Author: des
Date: Tue Nov 27 16:23:17 2018
New Revision: 341072
URL: https://svnweb.freebsd.org/changeset/base/341072

Log:
  When deciding whether to send the complete URL or just the document part,
  we were looking at the original URL rather than the one we were currently
  processing.  This meant that if we were trying to retrieve an HTTP URL but
  were redirected to an HTTPS URL, and HTTPS proxying was enabled, we would
  send an invalid request and most likely get garbage back.
  
  MFC after:3 days

Modified:
  head/lib/libfetch/http.c

Modified: head/lib/libfetch/http.c
==
--- head/lib/libfetch/http.cTue Nov 27 16:16:38 2018(r341071)
+++ head/lib/libfetch/http.cTue Nov 27 16:23:17 2018(r341072)
@@ -1617,7 +1617,7 @@ http_request_body(struct url *URL, const char *op, str
if (verbose)
fetch_info("requesting %s://%s%s",
url->scheme, host, url->doc);
-   if (purl && strcmp(URL->scheme, SCHEME_HTTPS) != 0) {
+   if (purl && strcmp(url->scheme, SCHEME_HTTPS) != 0) {
http_cmd(conn, "%s %s://%s%s HTTP/1.1",
op, url->scheme, host, url->doc);
} else {
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r341006 - head/sys/netgraph

2018-11-27 Thread Bruce Evans

On Tue, 27 Nov 2018, Eugene Grosbein wrote:


Log:
 ng_source(4): correction after the change r340617

 tv_usec has "long" type for all architecture in FreeBSD
 and follows __LP64__. However, this is not true for tv_sec
 that has "time_t" type.


tv_usec actually has type suseconds_t.  suseconds_t happens to be
long on all arches in FreeBSD (it is declared in an MI header without
any ifdef).  Hard-coding it as long here and elsewhere defeats the
reason for existence of suseconds_t.  The most common hard-coding of
it is probably using %ld format for printing it.

However, the existence of suseconds_t is a historical bug (in POSIX).
This bug was missing in POSIX Issue 4.  tv_usec just had type long
then.  POSIX added suseconds_t and hangecd the type of tv_usec to
suseconds_t in Issue 5, so now almost no one knows the type of tv_usec
and messy ifdefs like the one here (but messier) are needed to parse
and print it portably.  I think suseconds_t came from SysV or XSI.
BSD just used long before it was broken to POSIX spec.  Similar typedefs
and messy ifdefs are unfortunately needed for too many other POSIX
types, but tv_usec is too limited to need the complications.

This bug is still missing for tv_nsec.  I think timespecs were a POSIX
invention in 1988.  POSIX introduced them and intentionally left out
timevals designed timespecs a bit better than timevals since timevals
are too limited and unportable.  Unfortunately, many older APIs like
select() were never updated to the 1980's, so when POSIX started
supporting these in 2001 it had to standardize timevals, so now timevals
are ever further from going away than in 1988.

long for tv_usec and tv_nsec is a smaller historical bug.  BSD carefully
used long for too many integer types as late as 4.4BSD-Lite1, because
very old versions of BSD (2.x?) supported 16-bit ints, and 16-bits is
is often too small, and typedef poisoning wasn't very common in merely
old versions.  Also, support for ABIs was weak.  NetBSD changed many of
these longs to int or int32_t to support alpha and/or ABIs, and Lite2
obtained these changes from somewhere near NetBSD, and FreeBSD obtained
them from Lite2 in 1996.

E.g., pid_t went from long in Lite1 to int32_t in Lite2.  long was far
too large for pid_t and most other types if long is 64 bits or larger,
and using it in structs gives unnecessarily MD ABIs.  In modern POSIX,
int must be at least 32 bits so most types can be plain int, but
historical mistakes and ABIs prevent changing the excessively typedefed
APIs.

So on 64-bit arches, lots of space is wasted not just for 64-bit time_t,
but also for 64-bit longs for tv_[nu]sec.  32-bit tv_[nu]sec wouldn't
on 64-bit arches since the struct would be padded from 96 to 128 bits.
On 32-bit arches with 64-bit time_t, the longs give a natural struct
size of 96i bits, and this might be padded to 128 bits (wasting space),
or left unpadded (giving worse alignment).

Bruce
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341071 - head/stand/i386/gptboot

2018-11-27 Thread Ian Lepore
Author: ian
Date: Tue Nov 27 16:16:38 2018
New Revision: 341071
URL: https://svnweb.freebsd.org/changeset/base/341071

Log:
  Restore the ability to override the disk unit/partition at the boot: prompt
  in gptboot.
  
  When arch-independent geli support was added, a new static 'gdsk' struct
  was added, but there was still a static 'dsk' struct, and when you typed
  in an alternate disk/partition, the string was parsed into that struct,
  which was then never used for anything.  Now the string gets parsed into
  gdsk.dsk, the struct that's actually used.
  
  X-MFC after:  3 days

Modified:
  head/stand/i386/gptboot/gptboot.c

Modified: head/stand/i386/gptboot/gptboot.c
==
--- head/stand/i386/gptboot/gptboot.c   Tue Nov 27 16:13:56 2018
(r341070)
+++ head/stand/i386/gptboot/gptboot.c   Tue Nov 27 16:16:38 2018
(r341071)
@@ -81,7 +81,6 @@ uint32_t opts;
 static const char *const dev_nm[NDEV] = {"ad", "da", "fd"};
 static const unsigned char dev_maj[NDEV] = {30, 4, 2};
 
-static struct dsk dsk;
 static char kname[1024];
 static int comspeed = SIOSPD;
 static struct bootinfo bootinfo;
@@ -569,22 +568,22 @@ parse_cmds(char *cmdstr, int *dskupdated)
arg[1] != dev_nm[i][1]; i++)
if (i == NDEV - 1)
return (-1);
-   dsk.type = i;
+   gdsk.dsk.type = i;
arg += 3;
-   dsk.unit = *arg - '0';
-   if (arg[1] != 'p' || dsk.unit > 9)
+   gdsk.dsk.unit = *arg - '0';
+   if (arg[1] != 'p' || gdsk.dsk.unit > 9)
return (-1);
arg += 2;
-   dsk.part = *arg - '0';
-   if (dsk.part < 1 || dsk.part > 9)
+   gdsk.dsk.part = *arg - '0';
+   if (gdsk.dsk.part < 1 || gdsk.dsk.part > 9)
return (-1);
arg++;
if (arg[0] != ')')
return (-1);
arg++;
if (drv == -1)
-   drv = dsk.unit;
-   dsk.drive = (dsk.type <= TYPE_MAXHARD
+   drv = gdsk.dsk.unit;
+   gdsk.dsk.drive = (gdsk.dsk.type <= TYPE_MAXHARD
? DRV_HARD : 0) + drv;
*dskupdated = 1;
}
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r340702 - in head/lib/csu: amd64 common i386

2018-11-27 Thread Ed Maste
On Sat, 24 Nov 2018 at 11:10, Kevin P. Neal  wrote:
>
> On Sat, Nov 24, 2018 at 01:28:42PM +, Alexey Dokuchaev wrote:
> > On Tue, Nov 20, 2018 at 09:04:20PM +, Ed Maste wrote:
> > > New Revision: 340702
> > > URL: https://svnweb.freebsd.org/changeset/base/340702
>
> My guess is that having to distribute a notice of the license with every
> single FreeBSD executable shipped by any third party would be a bit silly.

Yes, we want to be explicit that there's no requirement for
attribution in binaries that link against these files.
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341068 - head/tests/sys/kqueue/libkqueue

2018-11-27 Thread David Bright
Author: dab
Date: Tue Nov 27 15:12:34 2018
New Revision: 341068
URL: https://svnweb.freebsd.org/changeset/base/341068

Log:
  Make whitespace more consistent in libkqueue tests.
  
  After r337820, which "corrected" some spaces-instead-of-tab whitespace
  issues in the libkqueue tests, jmg@ pointed out that these files were
  originally space-based, not tab-spaced, and so the correction should
  have been to get rid of the tabs that had been introduced in previous
  changes, not the spaces. This change does that. This is a whitespace
  only change; no functional change is intended.
  
  Reported by:  jmg@
  MFC after:3 days
  Sponsored by: Dell EMC Isilon

Modified:
  head/tests/sys/kqueue/libkqueue/main.c
  head/tests/sys/kqueue/libkqueue/proc.c
  head/tests/sys/kqueue/libkqueue/signal.c
  head/tests/sys/kqueue/libkqueue/timer.c
  head/tests/sys/kqueue/libkqueue/user.c
  head/tests/sys/kqueue/libkqueue/vnode.c

Modified: head/tests/sys/kqueue/libkqueue/main.c
==
--- head/tests/sys/kqueue/libkqueue/main.c  Tue Nov 27 14:58:19 2018
(r341067)
+++ head/tests/sys/kqueue/libkqueue/main.c  Tue Nov 27 15:12:34 2018
(r341068)
@@ -85,7 +85,7 @@ kevent_get(int kqfd)
 struct kevent *kev;
 
 if ((kev = calloc(1, sizeof(*kev))) == NULL)
-   err(1, "out of memory");
+err(1, "out of memory");
 
 nfds = kevent(kqfd, NULL, 0, kev, 1, NULL);
 if (nfds < 1)
@@ -103,7 +103,7 @@ kevent_get_timeout(int kqfd, int seconds)
 struct timespec timeout = {seconds, 0};
 
 if ((kev = calloc(1, sizeof(*kev))) == NULL)
-   err(1, "out of memory");
+err(1, "out of memory");
 
 nfds = kevent(kqfd, NULL, 0, kev, 1, );
 if (nfds < 0) {
@@ -123,10 +123,10 @@ kevent_fflags_dump(struct kevent *kev)
 
 #define KEVFFL_DUMP(attrib) \
 if (kev->fflags & attrib) \
-   strncat(buf, #attrib" ", 64);
+strncat(buf, #attrib" ", 64);
 
 if ((buf = calloc(1, 1024)) == NULL)
-   abort();
+abort();
 
 /* Not every filter has meaningful fflags */
 if (kev->filter == EVFILT_PROC) {
@@ -160,7 +160,7 @@ kevent_fflags_dump(struct kevent *kev)
 #endif
 buf[strlen(buf) - 1] = ')';
 } else {
-   snprintf(buf, 1024, "fflags = %x", kev->fflags);
+snprintf(buf, 1024, "fflags = %x", kev->fflags);
 }
 
 return (buf);
@@ -173,10 +173,10 @@ kevent_flags_dump(struct kevent *kev)
 
 #define KEVFL_DUMP(attrib) \
 if (kev->flags & attrib) \
-   strncat(buf, #attrib" ", 64);
+strncat(buf, #attrib" ", 64);
 
 if ((buf = calloc(1, 1024)) == NULL)
-   abort();
+abort();
 
 snprintf(buf, 1024, "flags = %d (", kev->flags);
 KEVFL_DUMP(EV_ADD);
@@ -208,17 +208,17 @@ kevent_to_str(struct kevent *kev)
 
 snprintf([0], sizeof(buf), 
 "[ident=%ju, filter=%d, %s, %s, data=%jd, udata=%p, "
-   "ext=[%jx %jx %jx %jx]",
+"ext=[%jx %jx %jx %jx]",
 (uintmax_t) kev->ident,
 kev->filter,
 flags_str,
 fflags_str,
 (uintmax_t)kev->data,
 kev->udata,
-   (uintmax_t)kev->ext[0],
-   (uintmax_t)kev->ext[1],
-   (uintmax_t)kev->ext[2],
-   (uintmax_t)kev->ext[3]);
+(uintmax_t)kev->ext[0],
+(uintmax_t)kev->ext[1],
+(uintmax_t)kev->ext[2],
+(uintmax_t)kev->ext[3]);
 
 free(flags_str);
 free(fflags_str);
@@ -239,10 +239,10 @@ kevent_add(int kqfd, struct kevent *kev, 
 
 EV_SET(kev, ident, filter, flags, fflags, data, NULL);
 if (kevent(kqfd, kev, 1, NULL, 0, NULL) < 0) {
-   kev_str = kevent_to_str(kev);
-   printf("Unable to add the following kevent:\n%s\n",
-   kev_str);
-   free(kev_str);
+kev_str = kevent_to_str(kev);
+printf("Unable to add the following kevent:\n%s\n",
+kev_str);
+free(kev_str);
 err(1, "kevent(): %s", strerror(errno));
 }
 }
@@ -265,12 +265,12 @@ kevent_cmp(struct kevent *k1, struct kevent *k2)
   k1->data != k2->data || k1->udata != k2->udata ||
   k1->ext[0] != k2->ext[0] || k1->ext[1] != k2->ext[1] ||
   k1->ext[0] != k2->ext[2] || k1->ext[0] != k2->ext[3]) {
-   kev1_str = kevent_to_str(k1);
-   kev2_str = kevent_to_str(k2);
-   printf("kevent_cmp: mismatch:\n  %s !=\n  %s\n", 
-  kev1_str, kev2_str);
-   free(kev1_str);
-   free(kev2_str);
+kev1_str = kevent_to_str(k1);
+kev2_str = kevent_to_str(k2);
+printf("kevent_cmp: mismatch:\n  %s !=\n  %s\n", 
+   kev1_str, kev2_str);
+free(kev1_str);
+free(kev2_str);
 abort();
 }
 }

Modified: head/tests/sys/kqueue/libkqueue/proc.c
==
--- head/tests/sys/kqueue/libkqueue/proc.c  Tue Nov 27 

svn commit: r341067 - in head: lib/geom/part sys/geom/part usr.sbin/boot0cfg

2018-11-27 Thread Dag-Erling Smørgrav
Author: des
Date: Tue Nov 27 14:58:19 2018
New Revision: 341067
URL: https://svnweb.freebsd.org/changeset/base/341067

Log:
  Add a “skip_dsn” option to g_part's bootcode verb to prevent g_part_mbr
  from setting the volume serial number.  This unbreaks older boot blocks
  that don't support serial numbers, and allows boot0cfg to set the serial
  number itself if requested by the user.
  
  Submitted by: lev@, yuripv@
  MFC after:1 week
  Differential Revision:https://reviews.freebsd.org/D17386

Modified:
  head/lib/geom/part/geom_part.c
  head/lib/geom/part/gpart.8
  head/sys/geom/part/g_part.c
  head/sys/geom/part/g_part.h
  head/sys/geom/part/g_part_mbr.c
  head/usr.sbin/boot0cfg/boot0cfg.c

Modified: head/lib/geom/part/geom_part.c
==
--- head/lib/geom/part/geom_part.c  Tue Nov 27 14:16:14 2018
(r341066)
+++ head/lib/geom/part/geom_part.c  Tue Nov 27 14:58:19 2018
(r341067)
@@ -72,6 +72,7 @@ volatile sig_atomic_t undo_restore;
 #defineGPART_PARAM_BOOTCODE"bootcode"
 #defineGPART_PARAM_INDEX   "index"
 #defineGPART_PARAM_PARTCODE"partcode"
+#defineGPART_PARAM_SKIP_DSN"skip_dsn"
 
 static struct gclass *find_class(struct gmesh *, const char *);
 static struct ggeom * find_geom(struct gclass *, const char *);
@@ -115,8 +116,9 @@ struct g_command PUBSYM(class_commands)[] = {
{ 'p', GPART_PARAM_PARTCODE, G_VAL_OPTIONAL, G_TYPE_STRING },
{ 'i', GPART_PARAM_INDEX, G_VAL_OPTIONAL, G_TYPE_NUMBER },
{ 'f', "flags", GPART_FLAGS, G_TYPE_STRING },
+   { 'N', GPART_PARAM_SKIP_DSN, NULL, G_TYPE_BOOL },
G_OPT_SENTINEL },
-   "[-b bootcode] [-p partcode -i index] [-f flags] geom"
+   "[-N] [-b bootcode] [-p partcode -i index] [-f flags] geom"
},
{ "commit", 0, gpart_issue, G_NULL_OPTS,
"geom"

Modified: head/lib/geom/part/gpart.8
==
--- head/lib/geom/part/gpart.8  Tue Nov 27 14:16:14 2018(r341066)
+++ head/lib/geom/part/gpart.8  Tue Nov 27 14:58:19 2018(r341067)
@@ -49,6 +49,7 @@
 .\"  BOOTCODE 
 .Nm
 .Cm bootcode
+.Op Fl N
 .Op Fl b Ar bootcode
 .Op Fl p Ar partcode Fl i Ar index
 .Op Fl f Ar flags
@@ -214,6 +215,14 @@ The
 .Cm bootcode
 command accepts these options:
 .Bl -tag -width 10n
+.It Fl N
+Don't preserve the Volume Serial Number for MBR.
+MBR bootcode contains Volume Serial Number by default, and
+.Nm
+tries to preserve it when installing new bootstrap code.
+This option allows to skip the preservation to help with some versions of
+.Xr boot0 8
+that don't support Volume Serial Number.
 .It Fl b Ar bootcode
 Embed bootstrap code from the file
 .Ar bootcode

Modified: head/sys/geom/part/g_part.c
==
--- head/sys/geom/part/g_part.c Tue Nov 27 14:16:14 2018(r341066)
+++ head/sys/geom/part/g_part.c Tue Nov 27 14:58:19 2018(r341067)
@@ -1627,6 +1627,7 @@ g_part_ctlreq(struct gctl_req *req, struct g_class *mp
if (!strcmp(verb, "bootcode")) {
ctlreq = G_PART_CTL_BOOTCODE;
mparms |= G_PART_PARM_GEOM | G_PART_PARM_BOOTCODE;
+   oparms |= G_PART_PARM_SKIP_DSN;
}
break;
case 'c':
@@ -1744,6 +1745,8 @@ g_part_ctlreq(struct gctl_req *req, struct g_class *mp
parm = G_PART_PARM_SIZE;
else if (!strcmp(ap->name, "start"))
parm = G_PART_PARM_START;
+   else if (!strcmp(ap->name, "skip_dsn"))
+   parm = G_PART_PARM_SKIP_DSN;
break;
case 't':
if (!strcmp(ap->name, "type"))
@@ -1803,6 +1806,10 @@ g_part_ctlreq(struct gctl_req *req, struct g_class *mp
break;
case G_PART_PARM_SIZE:
error = g_part_parm_quad(req, ap->name, _size);
+   break;
+   case G_PART_PARM_SKIP_DSN:
+   error = g_part_parm_uint32(req, ap->name,
+   _skip_dsn);
break;
case G_PART_PARM_START:
error = g_part_parm_quad(req, ap->name,

Modified: head/sys/geom/part/g_part.h
==
--- head/sys/geom/part/g_part.h Tue Nov 27 14:16:14 2018(r341066)
+++ head/sys/geom/part/g_part.h Tue Nov 27 14:58:19 2018(r341067)
@@ -202,6 +202,7 @@ enum g_part_ctl {
 #defineG_PART_PARM_BOOTCODE0x1000
 #defineG_PART_PARM_ATTRIB  0x2000
 #defineG_PART_PARM_FORCE   0x4000
+#define 

svn commit: r341064 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 14:15:52 2018
New Revision: 341064
URL: https://svnweb.freebsd.org/changeset/base/341064

Log:
  sfxge(4): decode Medford2 FEC stats if available
  
  Decode Medford2 FEC stats if available in MAC stats DMA buffer.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18178

Modified:
  head/sys/dev/sfxge/common/ef10_mac.c
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/efx.h

Modified: head/sys/dev/sfxge/common/ef10_mac.c
==
--- head/sys/dev/sfxge/common/ef10_mac.cTue Nov 27 14:15:41 2018
(r341063)
+++ head/sys/dev/sfxge/common/ef10_mac.cTue Nov 27 14:15:52 2018
(r341064)
@@ -550,8 +550,20 @@ ef10_mac_stats_get_mask(
goto fail6;
}
 
+   if (encp->enc_fec_counters) {
+   const struct efx_mac_stats_range ef10_fec[] = {
+   { EFX_MAC_FEC_UNCORRECTED_ERRORS,
+   EFX_MAC_FEC_CORRECTED_SYMBOLS_LANE3 },
+   };
+   if ((rc = efx_mac_stats_mask_add_ranges(maskp, mask_size,
+   ef10_fec, EFX_ARRAY_SIZE(ef10_fec))) != 0)
+   goto fail7;
+   }
+
return (0);
 
+fail7:
+   EFSYS_PROBE(fail7);
 fail6:
EFSYS_PROBE(fail6);
 fail5:
@@ -907,6 +919,38 @@ ef10_mac_stats_update(
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_OVERFLOW, );
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_OVERFLOW]), );
 
+
+   if (encp->enc_mac_stats_nstats < MC_CMD_MAC_NSTATS_V2)
+   goto done;
+
+   /* FEC */
+   EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_FEC_UNCORRECTED_ERRORS, );
+   EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_FEC_UNCORRECTED_ERRORS]), );
+
+   EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_FEC_CORRECTED_ERRORS, );
+   EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_FEC_CORRECTED_ERRORS]), );
+
+   EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_FEC_CORRECTED_SYMBOLS_LANE0,
+   );
+   EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_FEC_CORRECTED_SYMBOLS_LANE0]),
+   );
+
+   EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_FEC_CORRECTED_SYMBOLS_LANE1,
+   );
+   EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_FEC_CORRECTED_SYMBOLS_LANE1]),
+   );
+
+   EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_FEC_CORRECTED_SYMBOLS_LANE2,
+   );
+   EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_FEC_CORRECTED_SYMBOLS_LANE2]),
+   );
+
+   EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_FEC_CORRECTED_SYMBOLS_LANE3,
+   );
+   EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_FEC_CORRECTED_SYMBOLS_LANE3]),
+   );
+
+done:
/* Read START generation counter */
EFSYS_DMA_SYNC_FOR_KERNEL(esmp, 0, EFSYS_MEM_SIZE(esmp));
EFSYS_MEM_READ_BARRIER();

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 14:15:41 2018
(r341063)
+++ head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 14:15:52 2018
(r341064)
@@ -1212,6 +1212,11 @@ ef10_get_datapath_caps(
encp->enc_mac_stats_nstats = MC_CMD_MAC_NSTATS;
}
 
+   if (encp->enc_mac_stats_nstats >= MC_CMD_MAC_NSTATS_V2)
+   encp->enc_fec_counters = B_TRUE;
+   else
+   encp->enc_fec_counters = B_FALSE;
+
 #undef CAP_FLAGS1
 #undef CAP_FLAGS2
 

Modified: head/sys/dev/sfxge/common/efx.h
==
--- head/sys/dev/sfxge/common/efx.h Tue Nov 27 14:15:41 2018
(r341063)
+++ head/sys/dev/sfxge/common/efx.h Tue Nov 27 14:15:52 2018
(r341064)
@@ -1268,6 +1268,7 @@ typedef struct efx_nic_cfg_s {
uint32_tenc_nvram_update_verify_result_supported;
/* Firmware support for extended MAC_STATS buffer */
uint32_tenc_mac_stats_nstats;
+   boolean_t   enc_fec_counters;
 } efx_nic_cfg_t;
 
 #defineEFX_PCI_FUNCTION_IS_PF(_encp)   ((_encp)->enc_vf == 0x)
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341066 - in head/sys/dev/sfxge: . common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 14:16:14 2018
New Revision: 341066
URL: https://svnweb.freebsd.org/changeset/base/341066

Log:
  sfxge(4): remove MAC stats size define
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18180

Modified:
  head/sys/dev/sfxge/common/efx.h
  head/sys/dev/sfxge/common/siena_mac.c
  head/sys/dev/sfxge/sfxge_port.c

Modified: head/sys/dev/sfxge/common/efx.h
==
--- head/sys/dev/sfxge/common/efx.h Tue Nov 27 14:16:03 2018
(r341065)
+++ head/sys/dev/sfxge/common/efx.h Tue Nov 27 14:16:14 2018
(r341066)
@@ -589,7 +589,6 @@ efx_mac_stats_get_mask(
((_mask)[(_stat) / EFX_MAC_STATS_MASK_BITS_PER_PAGE] &  \
(1ULL << ((_stat) & (EFX_MAC_STATS_MASK_BITS_PER_PAGE - 1
 
-#defineEFX_MAC_STATS_SIZE 0x400
 
 extern __checkReturn   efx_rc_t
 efx_mac_stats_clear(
@@ -598,8 +597,8 @@ efx_mac_stats_clear(
 /*
  * Upload mac statistics supported by the hardware into the given buffer.
  *
- * The reference buffer must be at least %EFX_MAC_STATS_SIZE bytes,
- * and page aligned.
+ * The DMA buffer must be 4Kbyte aligned and sized to hold at least
+ * efx_nic_cfg_t::enc_mac_stats_nstats 64bit counters.
  *
  * The hardware will only DMA statistics that it understands (of course).
  * Drivers should not make any assumptions about which statistics are

Modified: head/sys/dev/sfxge/common/siena_mac.c
==
--- head/sys/dev/sfxge/common/siena_mac.c   Tue Nov 27 14:16:03 2018
(r341065)
+++ head/sys/dev/sfxge/common/siena_mac.c   Tue Nov 27 14:16:14 2018
(r341066)
@@ -463,7 +463,7 @@ siena_mac_stats_update(
SIENA_MAC_STAT_READ(esmp, MC_CMD_MAC_RX_NODESC_DROPS, );
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_RX_NODESC_DROP_CNT]), );
 
-   EFSYS_DMA_SYNC_FOR_KERNEL(esmp, 0, EFX_MAC_STATS_SIZE);
+   EFSYS_DMA_SYNC_FOR_KERNEL(esmp, 0, EFSYS_MEM_SIZE(esmp));
EFSYS_MEM_READ_BARRIER();
SIENA_MAC_STAT_READ(esmp, MC_CMD_MAC_GENERATION_START,
_start);

Modified: head/sys/dev/sfxge/sfxge_port.c
==
--- head/sys/dev/sfxge/sfxge_port.c Tue Nov 27 14:16:03 2018
(r341065)
+++ head/sys/dev/sfxge/sfxge_port.c Tue Nov 27 14:16:14 2018
(r341066)
@@ -753,6 +753,8 @@ sfxge_port_init(struct sfxge_softc *sc)
struct sysctl_ctx_list *sysctl_ctx;
struct sysctl_oid *sysctl_tree;
efsys_mem_t *mac_stats_buf, *phy_stats_buf;
+   uint32_t mac_nstats;
+   size_t mac_stats_size;
int rc;
 
port = >port;
@@ -792,7 +794,9 @@ sfxge_port_init(struct sfxge_softc *sc)
DBGPRINT(sc->dev, "alloc MAC stats");
port->mac_stats.decode_buf = malloc(EFX_MAC_NSTATS * sizeof(uint64_t),
M_SFXGE, M_WAITOK | M_ZERO);
-   if ((rc = sfxge_dma_alloc(sc, EFX_MAC_STATS_SIZE, mac_stats_buf)) != 0)
+   mac_nstats = efx_nic_cfg_get(sc->enp)->enc_mac_stats_nstats;
+   mac_stats_size = P2ROUNDUP(mac_nstats * sizeof(uint64_t), EFX_BUF_SIZE);
+   if ((rc = sfxge_dma_alloc(sc, mac_stats_size, mac_stats_buf)) != 0)
goto fail2;
port->stats_update_period_ms = sfxge_port_stats_update_period_ms(sc);
sfxge_mac_stat_init(sc);
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341063 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 14:15:41 2018
New Revision: 341063
URL: https://svnweb.freebsd.org/changeset/base/341063

Log:
  sfxge(4): run mkconfig.py to add FEC MAC stats
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18177

Modified:
  head/sys/dev/sfxge/common/efx.h
  head/sys/dev/sfxge/common/efx_mac.c

Modified: head/sys/dev/sfxge/common/efx.h
==
--- head/sys/dev/sfxge/common/efx.h Tue Nov 27 14:15:30 2018
(r341062)
+++ head/sys/dev/sfxge/common/efx.h Tue Nov 27 14:15:41 2018
(r341063)
@@ -351,7 +351,7 @@ efx_intr_fini(
 
 #if EFSYS_OPT_MAC_STATS
 
-/* START MKCONFIG GENERATED EfxHeaderMacBlock e323546097fd7c65 */
+/* START MKCONFIG GENERATED EfxHeaderMacBlock 7b5f45054a3b45bc */
 typedef enum efx_mac_stat_e {
EFX_MAC_RX_OCTETS,
EFX_MAC_RX_PKTS,
@@ -434,6 +434,12 @@ typedef enum efx_mac_stat_e {
EFX_MAC_VADAPTER_TX_BAD_PACKETS,
EFX_MAC_VADAPTER_TX_BAD_BYTES,
EFX_MAC_VADAPTER_TX_OVERFLOW,
+   EFX_MAC_FEC_UNCORRECTED_ERRORS,
+   EFX_MAC_FEC_CORRECTED_ERRORS,
+   EFX_MAC_FEC_CORRECTED_SYMBOLS_LANE0,
+   EFX_MAC_FEC_CORRECTED_SYMBOLS_LANE1,
+   EFX_MAC_FEC_CORRECTED_SYMBOLS_LANE2,
+   EFX_MAC_FEC_CORRECTED_SYMBOLS_LANE3,
EFX_MAC_NSTATS
 } efx_mac_stat_t;
 

Modified: head/sys/dev/sfxge/common/efx_mac.c
==
--- head/sys/dev/sfxge/common/efx_mac.c Tue Nov 27 14:15:30 2018
(r341062)
+++ head/sys/dev/sfxge/common/efx_mac.c Tue Nov 27 14:15:41 2018
(r341063)
@@ -521,7 +521,7 @@ efx_mac_filter_default_rxq_clear(
 
 #if EFSYS_OPT_NAMES
 
-/* START MKCONFIG GENERATED EfxMacStatNamesBlock c11b91b42f922516 */
+/* START MKCONFIG GENERATED EfxMacStatNamesBlock 8726fc355b6e7c1a */
 static const char * const __efx_mac_stat_name[] = {
"rx_octets",
"rx_pkts",
@@ -604,6 +604,12 @@ static const char * const __efx_mac_stat_name[] = {
"vadapter_tx_bad_packets",
"vadapter_tx_bad_bytes",
"vadapter_tx_overflow",
+   "fec_uncorrected_errors",
+   "fec_corrected_errors",
+   "fec_corrected_symbols_lane0",
+   "fec_corrected_symbols_lane1",
+   "fec_corrected_symbols_lane2",
+   "fec_corrected_symbols_lane3",
 };
 /* END MKCONFIG GENERATED EfxMacStatNamesBlock */
 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341065 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 14:16:03 2018
New Revision: 341065
URL: https://svnweb.freebsd.org/changeset/base/341065

Log:
  sfxge(4): resolve code analysis warnings
  
  Minimal changes adding buffer size checks and simplifying checksum
  processing.
  
  Submitted by:   Richard Houldsworth 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18179

Modified:
  head/sys/dev/sfxge/common/efx_bootcfg.c

Modified: head/sys/dev/sfxge/common/efx_bootcfg.c
==
--- head/sys/dev/sfxge/common/efx_bootcfg.c Tue Nov 27 14:15:52 2018
(r341064)
+++ head/sys/dev/sfxge/common/efx_bootcfg.c Tue Nov 27 14:16:03 2018
(r341065)
@@ -238,19 +238,25 @@ efx_bootcfg_copy_sector(
size_t used_bytes;
efx_rc_t rc;
 
+   /* Minimum buffer is checksum byte and DHCP_END terminator */
+   if (data_size < 2) {
+   rc = ENOSPC;
+   goto fail1;
+   }
+
/* Verify that the area is correctly formatted and checksummed */
rc = efx_bootcfg_verify(enp, sector, sector_length,
_bytes);
 
if (!handle_format_errors) {
if (rc != 0)
-   goto fail1;
+   goto fail2;
 
if ((used_bytes < 2) ||
(sector[used_bytes - 1] != DHCP_END)) {
/* Block too short, or DHCP_END missing */
rc = ENOENT;
-   goto fail2;
+   goto fail3;
}
}
 
@@ -284,10 +290,14 @@ efx_bootcfg_copy_sector(
 */
if (used_bytes > data_size) {
rc = ENOSPC;
-   goto fail3;
+   goto fail4;
}
-   memcpy(data, sector, used_bytes);
 
+   data[0] = 0; /* checksum, updated below */
+
+   /* Copy all after the checksum to the target buffer */
+   memcpy(data + 1, sector + 1, used_bytes - 1);
+
/* Zero out the unused portion of the target buffer */
if (used_bytes < data_size)
(void) memset(data + used_bytes, 0, data_size - used_bytes);
@@ -300,6 +310,8 @@ efx_bootcfg_copy_sector(
 
return (0);
 
+fail4:
+   EFSYS_PROBE(fail4);
 fail3:
EFSYS_PROBE(fail3);
 fail2:
@@ -324,6 +336,12 @@ efx_bootcfg_read(
efx_rc_t rc;
uint32_t sector_number;
 
+   /* Minimum buffer is checksum byte and DHCP_END terminator */
+   if (size < 2) {
+   rc = ENOSPC;
+   goto fail1;
+   }
+
 #if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
sector_number = enp->en_nic_cfg.enc_pf;
 #else
@@ -331,21 +349,26 @@ efx_bootcfg_read(
 #endif
rc = efx_nvram_size(enp, EFX_NVRAM_BOOTROM_CFG, _length);
if (rc != 0)
-   goto fail1;
+   goto fail2;
 
/* The bootcfg sector may be stored in a (larger) shared partition */
rc = efx_bootcfg_sector_info(enp, sector_number,
NULL, _offset, _length);
if (rc != 0)
-   goto fail2;
+   goto fail3;
 
+   if (sector_length < 2) {
+   rc = EINVAL;
+   goto fail4;
+   }
+
if (sector_length > BOOTCFG_MAX_SIZE)
sector_length = BOOTCFG_MAX_SIZE;
 
if (sector_offset + sector_length > partn_length) {
/* Partition is too small */
rc = EFBIG;
-   goto fail3;
+   goto fail5;
}
 
/*
@@ -358,28 +381,28 @@ efx_bootcfg_read(
EFSYS_KMEM_ALLOC(enp->en_esip, sector_length, payload);
if (payload == NULL) {
rc = ENOMEM;
-   goto fail4;
+   goto fail6;
}
} else
payload = (uint8_t *)data;
 
if ((rc = efx_nvram_rw_start(enp, EFX_NVRAM_BOOTROM_CFG, NULL)) != 0)
-   goto fail5;
+   goto fail7;
 
if ((rc = efx_nvram_read_chunk(enp, EFX_NVRAM_BOOTROM_CFG,
sector_offset, (caddr_t)payload, sector_length)) != 0) {
(void) efx_nvram_rw_finish(enp, EFX_NVRAM_BOOTROM_CFG, NULL);
-   goto fail6;
+   goto fail8;
}
 
if ((rc = efx_nvram_rw_finish(enp, EFX_NVRAM_BOOTROM_CFG, NULL)) != 0)
-   goto fail7;
+   goto fail9;
 
/* Verify that the area is correctly formatted and checksummed */
rc = efx_bootcfg_verify(enp, payload, sector_length,
_bytes);
if (rc != 0 || used_bytes == 0) {
-   payload[0] = (uint8_t)(~DHCP_END & 0xff);
+   payload[0] = 0;
payload[1] = DHCP_END;
used_bytes = 2;
}
@@ -394,10 +417,8 @@ efx_bootcfg_read(
 * so reinitialise the sector if there isn't room 

svn commit: r341059 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 14:14:57 2018
New Revision: 341059
URL: https://svnweb.freebsd.org/changeset/base/341059

Log:
  sfxge(4): retrieve number of MAC stats from NIC
  
  This reports the number of stats (and hence the DMA buffer size)
  for MAC stats. If MC_GET_CAPABABILITIES_V4 is not supported then
  use the legacy Siena-compatible MC_CMD_MAC_NSTATS value.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18173

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/efx.h
  head/sys/dev/sfxge/common/siena_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 14:14:45 2018
(r341058)
+++ head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 14:14:57 2018
(r341059)
@@ -1023,7 +1023,7 @@ ef10_get_datapath_caps(
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
efx_mcdi_req_t req;
uint8_t payload[MAX(MC_CMD_GET_CAPABILITIES_IN_LEN,
-   MC_CMD_GET_CAPABILITIES_V2_OUT_LEN)];
+   MC_CMD_GET_CAPABILITIES_V4_OUT_LEN)];
efx_rc_t rc;
 
if ((rc = ef10_mcdi_get_pf_count(enp, >enc_hw_pf_count)) != 0)
@@ -1035,7 +1035,7 @@ ef10_get_datapath_caps(
req.emr_in_buf = payload;
req.emr_in_length = MC_CMD_GET_CAPABILITIES_IN_LEN;
req.emr_out_buf = payload;
-   req.emr_out_length = MC_CMD_GET_CAPABILITIES_V2_OUT_LEN;
+   req.emr_out_length = MC_CMD_GET_CAPABILITIES_V4_OUT_LEN;
 
efx_mcdi_execute_quiet(enp, );
 
@@ -1200,6 +1200,16 @@ ef10_get_datapath_caps(
EFX_TUNNEL_MAXNENTRIES;
} else {
encp->enc_tunnel_config_udp_entries_max = 0;
+   }
+
+   /* Check if firmware supports extended MAC stats. */
+   if (req.emr_out_length_used >= MC_CMD_GET_CAPABILITIES_V4_OUT_LEN) {
+   /* Extended stats buffer supported */
+   encp->enc_mac_stats_nstats = MCDI_OUT_WORD(req,
+   GET_CAPABILITIES_V4_OUT_MAC_STATS_NUM_STATS);
+   } else {
+   /* Use Siena-compatible legacy MAC stats */
+   encp->enc_mac_stats_nstats = MC_CMD_MAC_NSTATS;
}
 
 #undef CAP_FLAGS1

Modified: head/sys/dev/sfxge/common/efx.h
==
--- head/sys/dev/sfxge/common/efx.h Tue Nov 27 14:14:45 2018
(r341058)
+++ head/sys/dev/sfxge/common/efx.h Tue Nov 27 14:14:57 2018
(r341059)
@@ -1260,6 +1260,8 @@ typedef struct efx_nic_cfg_s {
uint32_tenc_max_pcie_link_gen;
/* Firmware verifies integrity of NVRAM updates */
uint32_tenc_nvram_update_verify_result_supported;
+   /* Firmware support for extended MAC_STATS buffer */
+   uint32_tenc_mac_stats_nstats;
 } efx_nic_cfg_t;
 
 #defineEFX_PCI_FUNCTION_IS_PF(_encp)   ((_encp)->enc_vf == 0x)

Modified: head/sys/dev/sfxge/common/siena_nic.c
==
--- head/sys/dev/sfxge/common/siena_nic.c   Tue Nov 27 14:14:45 2018
(r341058)
+++ head/sys/dev/sfxge/common/siena_nic.c   Tue Nov 27 14:14:57 2018
(r341059)
@@ -185,6 +185,8 @@ siena_board_cfg(
 
encp->enc_nvram_update_verify_result_supported = B_FALSE;
 
+   encp->enc_mac_stats_nstats = MC_CMD_MAC_NSTATS;
+
return (0);
 
 fail2:
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341061 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 14:15:19 2018
New Revision: 341061
URL: https://svnweb.freebsd.org/changeset/base/341061

Log:
  sfxge(4): use MAC stats DMA buffer size from caps
  
  For Medford2 the DMA buffer used for one-shot or periodic MAC stats
  has been extended. Ensure the MAC stats DMA buffer size is large
  enough to hold the number of stats counters supported by firmware.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18175

Modified:
  head/sys/dev/sfxge/common/efx_mcdi.c

Modified: head/sys/dev/sfxge/common/efx_mcdi.c
==
--- head/sys/dev/sfxge/common/efx_mcdi.cTue Nov 27 14:15:08 2018
(r341060)
+++ head/sys/dev/sfxge/common/efx_mcdi.cTue Nov 27 14:15:19 2018
(r341061)
@@ -1820,7 +1820,7 @@ efx_mcdi_mac_stats(
 {
efx_mcdi_req_t req;
uint8_t payload[MAX(MC_CMD_MAC_STATS_IN_LEN,
-   MC_CMD_MAC_STATS_OUT_DMA_LEN)];
+   MC_CMD_MAC_STATS_V2_OUT_DMA_LEN)];
int clear = (action == EFX_STATS_CLEAR);
int upload = (action == EFX_STATS_UPLOAD);
int enable = (action == EFX_STATS_ENABLE_NOEVENTS);
@@ -1833,7 +1833,7 @@ efx_mcdi_mac_stats(
req.emr_in_buf = payload;
req.emr_in_length = MC_CMD_MAC_STATS_IN_LEN;
req.emr_out_buf = payload;
-   req.emr_out_length = MC_CMD_MAC_STATS_OUT_DMA_LEN;
+   req.emr_out_length = MC_CMD_MAC_STATS_V2_OUT_DMA_LEN;
 
MCDI_IN_POPULATE_DWORD_6(req, MAC_STATS_IN_CMD,
MAC_STATS_IN_DMA, upload,
@@ -1844,7 +1844,8 @@ efx_mcdi_mac_stats(
MAC_STATS_IN_PERIOD_MS, (enable | events) ? period_ms : 0);
 
if (enable || events || upload) {
-   uint32_t bytes = MC_CMD_MAC_NSTATS * sizeof (uint64_t);
+   const efx_nic_cfg_t *encp = >en_nic_cfg;
+   uint32_t bytes;
 
/* Periodic stats or stats upload require a DMA buffer */
if (esmp == NULL) {
@@ -1852,11 +1853,20 @@ efx_mcdi_mac_stats(
goto fail1;
}
 
-   EFX_STATIC_ASSERT(MC_CMD_MAC_NSTATS * sizeof (uint64_t) <=
-   EFX_MAC_STATS_SIZE);
+   if (encp->enc_mac_stats_nstats < MC_CMD_MAC_NSTATS) {
+   /* MAC stats count too small for legacy MAC stats */
+   rc = ENOSPC;
+   goto fail2;
+   }
 
-   EFSYS_ASSERT3U(bytes, <=, (uint32_t)EFSYS_MEM_SIZE(esmp));
+   bytes = encp->enc_mac_stats_nstats * sizeof (efx_qword_t);
 
+   if (EFSYS_MEM_SIZE(esmp) < bytes) {
+   /* DMA buffer too small */
+   rc = ENOSPC;
+   goto fail3;
+   }
+
MCDI_IN_SET_DWORD(req, MAC_STATS_IN_DMA_ADDR_LO,
EFSYS_MEM_ADDR(esmp) & 0x);
MCDI_IN_SET_DWORD(req, MAC_STATS_IN_DMA_ADDR_HI,
@@ -1879,12 +1889,16 @@ efx_mcdi_mac_stats(
if ((req.emr_rc != ENOENT) ||
(enp->en_rx_qcount + enp->en_tx_qcount != 0)) {
rc = req.emr_rc;
-   goto fail2;
+   goto fail4;
}
}
 
return (0);
 
+fail4:
+   EFSYS_PROBE(fail4);
+fail3:
+   EFSYS_PROBE(fail3);
 fail2:
EFSYS_PROBE(fail2);
 fail1:
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341062 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 14:15:30 2018
New Revision: 341062
URL: https://svnweb.freebsd.org/changeset/base/341062

Log:
  sfxge(4): use MAC stats DMA buffer size when decoding
  
  On Medford2 and later the MAC stats buffer has been enlarged.
  Use the MAC stats DMA buffer size to ensure that the stats END
  generation count is read from the correct location, and that
  over-reading of the DMA buffer is prevented.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18176

Modified:
  head/sys/dev/sfxge/common/ef10_mac.c
  head/sys/dev/sfxge/common/siena_mac.c

Modified: head/sys/dev/sfxge/common/ef10_mac.c
==
--- head/sys/dev/sfxge/common/ef10_mac.cTue Nov 27 14:15:19 2018
(r341061)
+++ head/sys/dev/sfxge/common/ef10_mac.cTue Nov 27 14:15:30 2018
(r341062)
@@ -579,16 +579,45 @@ ef10_mac_stats_update(
__inout_ecount(EFX_MAC_NSTATS)  efsys_stat_t *stat,
__inout_opt uint32_t *generationp)
 {
-   efx_qword_t value;
+   const efx_nic_cfg_t *encp = >en_nic_cfg;
efx_qword_t generation_start;
efx_qword_t generation_end;
+   efx_qword_t value;
+   efx_rc_t rc;
 
-   _NOTE(ARGUNUSED(enp))
+   /*
+* The MAC_STATS contain start and end generation counters used to
+* detect when the DMA buffer has been updated during stats decode.
+* All stats counters are 64bit unsigned values.
+*
+* Siena-compatible MAC stats contain MC_CMD_MAC_NSTATS 64bit counters.
+* The generation end counter is at index MC_CMD_MAC_GENERATION_END
+* (same as MC_CMD_MAC_NSTATS-1).
+*
+* Medford2 and later use a larger DMA buffer: MAC_STATS_NUM_STATS from
+* MC_CMD_GET_CAPABILITIES_V4_OUT reports the number of 64bit counters.
+*
+* Firmware writes the generation end counter as the last counter in the
+* DMA buffer. Do not use MC_CMD_MAC_GENERATION_END, as that is only
+* correct for legacy Siena-compatible MAC stats.
+*/
 
+   if (encp->enc_mac_stats_nstats < MC_CMD_MAC_NSTATS) {
+   /* MAC stats count too small for legacy MAC stats */
+   rc = ENOSPC;
+   goto fail1;
+   }
+   if (EFSYS_MEM_SIZE(esmp) <
+   (encp->enc_mac_stats_nstats * sizeof (efx_qword_t))) {
+   /* DMA buffer too small */
+   rc = ENOSPC;
+   goto fail2;
+   }
+
/* Read END first so we don't race with the MC */
-   EFSYS_DMA_SYNC_FOR_KERNEL(esmp, 0, EFX_MAC_STATS_SIZE);
-   EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_GENERATION_END,
-   _end);
+   EFSYS_DMA_SYNC_FOR_KERNEL(esmp, 0, EFSYS_MEM_SIZE(esmp));
+   EF10_MAC_STAT_READ(esmp, (encp->enc_mac_stats_nstats - 1),
+   _end);
EFSYS_MEM_READ_BARRIER();
 
/* TX */
@@ -878,8 +907,8 @@ ef10_mac_stats_update(
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_VADAPTER_TX_OVERFLOW, );
EFSYS_STAT_SET_QWORD(&(stat[EFX_MAC_VADAPTER_TX_OVERFLOW]), );
 
-
-   EFSYS_DMA_SYNC_FOR_KERNEL(esmp, 0, EFX_MAC_STATS_SIZE);
+   /* Read START generation counter */
+   EFSYS_DMA_SYNC_FOR_KERNEL(esmp, 0, EFSYS_MEM_SIZE(esmp));
EFSYS_MEM_READ_BARRIER();
EF10_MAC_STAT_READ(esmp, MC_CMD_MAC_GENERATION_START,
_start);
@@ -894,6 +923,13 @@ ef10_mac_stats_update(
*generationp = EFX_QWORD_FIELD(generation_start, EFX_DWORD_0);
 
return (0);
+
+fail2:
+   EFSYS_PROBE(fail2);
+fail1:
+   EFSYS_PROBE1(fail1, efx_rc_t, rc);
+
+   return (rc);
 }
 
 #endif /* EFSYS_OPT_MAC_STATS */

Modified: head/sys/dev/sfxge/common/siena_mac.c
==
--- head/sys/dev/sfxge/common/siena_mac.c   Tue Nov 27 14:15:19 2018
(r341061)
+++ head/sys/dev/sfxge/common/siena_mac.c   Tue Nov 27 14:15:30 2018
(r341062)
@@ -274,16 +274,28 @@ siena_mac_stats_update(
__inout_ecount(EFX_MAC_NSTATS)  efsys_stat_t *stat,
__inout_opt uint32_t *generationp)
 {
-   efx_qword_t value;
+   const efx_nic_cfg_t *encp = >en_nic_cfg;
efx_qword_t generation_start;
efx_qword_t generation_end;
+   efx_qword_t value;
+   efx_rc_t rc;
 
-   _NOTE(ARGUNUSED(enp))
+   if (encp->enc_mac_stats_nstats < MC_CMD_MAC_NSTATS) {
+   /* MAC stats count too small */
+   rc = ENOSPC;
+   goto fail1;
+   }
+   if (EFSYS_MEM_SIZE(esmp) <
+   (encp->enc_mac_stats_nstats * sizeof (efx_qword_t))) {
+   /* DMA buffer too small */
+   rc = ENOSPC;
+   goto fail2;
+   }
 
/* Read END first so we don't race with the MC */

svn commit: r341060 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 14:15:08 2018
New Revision: 341060
URL: https://svnweb.freebsd.org/changeset/base/341060

Log:
  sfxge(4): improve robustness of MAC stats get via MCDI
  
  Previously the code relied on the callers of efx_mcdi_mac_stats
  to provide a DMA buffer or NULL depending on the action. Fix
  this so that the DMA buffer is only passed in the request when
  needed, and that an error is reported for a missing DMA buffer.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18174

Modified:
  head/sys/dev/sfxge/common/efx_mcdi.c

Modified: head/sys/dev/sfxge/common/efx_mcdi.c
==
--- head/sys/dev/sfxge/common/efx_mcdi.cTue Nov 27 14:14:57 2018
(r341059)
+++ head/sys/dev/sfxge/common/efx_mcdi.cTue Nov 27 14:15:08 2018
(r341060)
@@ -1843,9 +1843,15 @@ efx_mcdi_mac_stats(
MAC_STATS_IN_PERIODIC_NOEVENT, !events,
MAC_STATS_IN_PERIOD_MS, (enable | events) ? period_ms : 0);
 
-   if (esmp != NULL) {
+   if (enable || events || upload) {
uint32_t bytes = MC_CMD_MAC_NSTATS * sizeof (uint64_t);
 
+   /* Periodic stats or stats upload require a DMA buffer */
+   if (esmp == NULL) {
+   rc = EINVAL;
+   goto fail1;
+   }
+
EFX_STATIC_ASSERT(MC_CMD_MAC_NSTATS * sizeof (uint64_t) <=
EFX_MAC_STATS_SIZE);
 
@@ -1856,8 +1862,6 @@ efx_mcdi_mac_stats(
MCDI_IN_SET_DWORD(req, MAC_STATS_IN_DMA_ADDR_HI,
EFSYS_MEM_ADDR(esmp) >> 32);
MCDI_IN_SET_DWORD(req, MAC_STATS_IN_DMA_LEN, bytes);
-   } else {
-   EFSYS_ASSERT(!upload && !enable && !events);
}
 
/*
@@ -1875,12 +1879,14 @@ efx_mcdi_mac_stats(
if ((req.emr_rc != ENOENT) ||
(enp->en_rx_qcount + enp->en_tx_qcount != 0)) {
rc = req.emr_rc;
-   goto fail1;
+   goto fail2;
}
}
 
return (0);
 
+fail2:
+   EFSYS_PROBE(fail2);
 fail1:
EFSYS_PROBE1(fail1, efx_rc_t, rc);
 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341058 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 14:14:45 2018
New Revision: 341058
URL: https://svnweb.freebsd.org/changeset/base/341058

Log:
  sfxge(4): refactor EF10 get datapath capabilities
  
  Inline efx_mcdi_get_capabilities() to prepare for reading
  newer capabilities response versions.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18172

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 14:03:40 2018
(r341057)
+++ head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 14:14:45 2018
(r341058)
@@ -1021,57 +1021,86 @@ ef10_get_datapath_caps(
__inefx_nic_t *enp)
 {
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
-   uint32_t flags;
-   uint32_t flags2;
-   uint32_t tso2nc;
+   efx_mcdi_req_t req;
+   uint8_t payload[MAX(MC_CMD_GET_CAPABILITIES_IN_LEN,
+   MC_CMD_GET_CAPABILITIES_V2_OUT_LEN)];
efx_rc_t rc;
 
-   if ((rc = efx_mcdi_get_capabilities(enp, , NULL, NULL,
-   , )) != 0)
-   goto fail1;
-
if ((rc = ef10_mcdi_get_pf_count(enp, >enc_hw_pf_count)) != 0)
goto fail1;
 
-#defineCAP_FLAG(flags1, field) \
-   ((flags1) & (1 << (MC_CMD_GET_CAPABILITIES_V2_OUT_ ## field ## _LBN)))
 
-#defineCAP_FLAG2(flags2, field)\
-   ((flags2) & (1 << (MC_CMD_GET_CAPABILITIES_V2_OUT_ ## field ## _LBN)))
+   (void) memset(payload, 0, sizeof (payload));
+   req.emr_cmd = MC_CMD_GET_CAPABILITIES;
+   req.emr_in_buf = payload;
+   req.emr_in_length = MC_CMD_GET_CAPABILITIES_IN_LEN;
+   req.emr_out_buf = payload;
+   req.emr_out_length = MC_CMD_GET_CAPABILITIES_V2_OUT_LEN;
 
+   efx_mcdi_execute_quiet(enp, );
+
+   if (req.emr_rc != 0) {
+   rc = req.emr_rc;
+   goto fail2;
+   }
+
+   if (req.emr_out_length_used < MC_CMD_GET_CAPABILITIES_OUT_LEN) {
+   rc = EMSGSIZE;
+   goto fail3;
+   }
+
+#defineCAP_FLAGS1(_req, _flag) 
\
+   (MCDI_OUT_DWORD((_req), GET_CAPABILITIES_OUT_FLAGS1) &  \
+   (1u << (MC_CMD_GET_CAPABILITIES_V2_OUT_ ## _flag ## _LBN)))
+
+#defineCAP_FLAGS2(_req, _flag) 
\
+   (((_req).emr_out_length_used >= MC_CMD_GET_CAPABILITIES_V2_OUT_LEN) && \
+   (MCDI_OUT_DWORD((_req), GET_CAPABILITIES_V2_OUT_FLAGS2) &   \
+   (1u << (MC_CMD_GET_CAPABILITIES_V2_OUT_ ## _flag ## _LBN
+
/*
 * Huntington RXDP firmware inserts a 0 or 14 byte prefix.
 * We only support the 14 byte prefix here.
 */
-   if (CAP_FLAG(flags, RX_PREFIX_LEN_14) == 0) {
+   if (CAP_FLAGS1(req, RX_PREFIX_LEN_14) == 0) {
rc = ENOTSUP;
-   goto fail2;
+   goto fail4;
}
encp->enc_rx_prefix_size = 14;
 
/* Check if the firmware supports TSO */
-   encp->enc_fw_assisted_tso_enabled =
-   CAP_FLAG(flags, TX_TSO) ? B_TRUE : B_FALSE;
+   if (CAP_FLAGS1(req, TX_TSO))
+   encp->enc_fw_assisted_tso_enabled = B_TRUE;
+   else
+   encp->enc_fw_assisted_tso_enabled = B_FALSE;
 
/* Check if the firmware supports FATSOv2 */
-   encp->enc_fw_assisted_tso_v2_enabled =
-   CAP_FLAG2(flags2, TX_TSO_V2) ? B_TRUE : B_FALSE;
+   if (CAP_FLAGS2(req, TX_TSO_V2)) {
+   encp->enc_fw_assisted_tso_v2_enabled = B_TRUE;
+   encp->enc_fw_assisted_tso_v2_n_contexts = MCDI_OUT_WORD(req,
+   GET_CAPABILITIES_V2_OUT_TX_TSO_V2_N_CONTEXTS);
+   } else {
+   encp->enc_fw_assisted_tso_v2_enabled = B_FALSE;
+   encp->enc_fw_assisted_tso_v2_n_contexts = 0;
+   }
 
-   /* Get the number of TSO contexts (FATSOv2) */
-   encp->enc_fw_assisted_tso_v2_n_contexts =
-   CAP_FLAG2(flags2, TX_TSO_V2) ? tso2nc : 0;
-
/* Check if the firmware has vadapter/vport/vswitch support */
-   encp->enc_datapath_cap_evb =
-   CAP_FLAG(flags, EVB) ? B_TRUE : B_FALSE;
+   if (CAP_FLAGS1(req, EVB))
+   encp->enc_datapath_cap_evb = B_TRUE;
+   else
+   encp->enc_datapath_cap_evb = B_FALSE;
 
/* Check if the firmware supports VLAN insertion */
-   encp->enc_hw_tx_insert_vlan_enabled =
-   CAP_FLAG(flags, TX_VLAN_INSERTION) ? B_TRUE : B_FALSE;
+   if (CAP_FLAGS1(req, TX_VLAN_INSERTION))
+   encp->enc_hw_tx_insert_vlan_enabled = B_TRUE;
+   else
+   encp->enc_hw_tx_insert_vlan_enabled = B_FALSE;
 
/* Check if the firmware supports RX event batching */
-   

Re: svn commit: r341011 - head/lib/libfetch

2018-11-27 Thread Dag-Erling Smørgrav
Renato Botelho  writes:
> Do you have any thoughts about that proposed patch?

It works, but it's sort of a hack and it makes fixing #203861 harder.

DES
-- 
Dag-Erling Smørgrav - d...@des.no
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341055 - head/usr.bin/clang/llvm-objdump

2018-11-27 Thread Ed Maste
Author: emaste
Date: Tue Nov 27 13:52:51 2018
New Revision: 341055
URL: https://svnweb.freebsd.org/changeset/base/341055

Log:
  llvm-objdump.1: remove more unintentional options
  
  Some options come from static constructors in LLVM libraries and are
  automatically added to llvm's usage output.  They're not really supposed
  to be llvm-objdump options.
  
  Reported by:  Fangrui Song in LLVM review D54864
  Sponsored by: The FreeBSD Foundation

Modified:
  head/usr.bin/clang/llvm-objdump/llvm-objdump.1

Modified: head/usr.bin/clang/llvm-objdump/llvm-objdump.1
==
--- head/usr.bin/clang/llvm-objdump/llvm-objdump.1  Tue Nov 27 13:14:13 
2018(r341054)
+++ head/usr.bin/clang/llvm-objdump/llvm-objdump.1  Tue Nov 27 13:52:51 
2018(r341055)
@@ -1,7 +1,7 @@
 .\" This file is distributed under the University of Illinois Open Source
 .\" License.
 .\"
-.Dd November 26, 2018
+.Dd November 27, 2018
 .Dt LLVM-OBJDUMP 1
 .Os
 .Sh NAME
@@ -118,8 +118,6 @@ Dump the raw binary contents of the clang AST section.
 Display mach-o rebasing info.
 .It Fl -reverse-iterate
 Reverse iterate.
-.It Fl -rng-seed Ns = Ns Ar seed
-Seed for the random number generator.
 .It Fl s
 Display the content of each section.
 .It Fl -section Ns = Ns Ar section
@@ -133,18 +131,11 @@ Implies disassmble object.
 .It Fl -start-address Ns = Ns Ar address
 Disassemble beginning at
 .Ar address .
-.It Fl -stats
-Enable statistics output from program.
-Available with Asserts builds.
-.It Fl -stats-json
-Display statistics as json data.
 .It Fl -stop-address Ns = Ns Ar address
 Stop disassembly at
 .Ar address .
 .It Fl t
 Display the symbol table.
-.It Fl -time-passes
-Time each pass, printing elapsed time for each on exit
 .It Fl -triple Ns = Ns Ar triple
 Target triple to disassemble for.
 See
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r249115 - in head: sbin/camcontrol sys/sys

2018-11-27 Thread Alexey Dokuchaev
On Thu, Apr 04, 2013 at 11:19:52PM +, Steven Hartland wrote:
> New Revision: 249115
> URL: http://svnweb.freebsd.org/changeset/base/249115
> 
> Log:
>   Adds security options to camcontrol this includes the ability to secure
>   erase disks such as SSD's
>   
>   Adds the ability to run ATA commands via the SCSI ATA Pass-Through(16)
>   com[m]and
> 
> Modified: head/sbin/camcontrol/camcontrol.c
>  
> [...]
> +static int
> +ata_do_identify(struct cam_device *device, int retry_count, int timeout,
> + union ccb *ccb, struct ata_params** ident_bufp)
> +{
> [...]
> +
> + error = ata_do_28bit_cmd(device,
> +  ccb,
> +  /*retries*/retry_count,
> +  /*flags*/CAM_DIR_IN,
> +  /*protocol*/AP_PROTO_PIO_IN,
> +  /*tag_action*/MSG_SIMPLE_Q_TAG,
> +  /*command*/command,
> +  /*features*/0,
> +  /*lba*/0,
> +  /*sector_count*/(u_int8_t)sizeof(struct 
> ata_params),

This looks strange: sizeof(struct ata_params) is 512, but it is too wide
for u_int8_t, so it would be truncated to zero.  Should it be 1 (one) here
instead for ATA_ATA_IDENTIFY command, since it normally returns some data
which typically fits one sector (>=512 bytes)?

> +  /*data_ptr*/(u_int8_t *)ptr,
> +  /*dxfer_len*/sizeof(struct ata_params),
> +  /*timeout*/timeout ? timeout : 30 * 1000,
> +  /*quiet*/1);
>  
> [...]
> + error = ata_do_28bit_cmd(device,
> +  ccb,
> +  /*retries*/retry_count,
> +  /*flags*/CAM_DIR_IN,
> +  /*protocol*/AP_PROTO_PIO_IN,
> +  /*tag_action*/MSG_SIMPLE_Q_TAG,
> +  /*command*/retry_command,
> +  /*features*/0,
> +  /*lba*/0,
> +  /*sector_count*/(u_int8_t)
> +  sizeof(struct ata_params),

Same here.

> +  /*data_ptr*/(u_int8_t *)ptr,
> +  /*dxfer_len*/sizeof(struct ata_params),
> +  /*timeout*/timeout ? timeout : 30 * 
> 1000,
> +  /*quiet*/0);

./danfe
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r341011 - head/lib/libfetch

2018-11-27 Thread Renato Botelho
On 27/11/18 11:29, Dag-Erling Smørgrav wrote:
> Renato Botelho  writes:
>> Are you talking about this one?
>>
>> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=220468
> 
> No, that is a completely different issue.

Do you have any thoughts about that proposed patch? We imported it on
pfSense because our users were reporting that issue. Until now it's
working as expected.

-- 
Renato Botelho
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r341011 - head/lib/libfetch

2018-11-27 Thread Dag-Erling Smørgrav
Renato Botelho  writes:
> Are you talking about this one?
>
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=220468

No, that is a completely different issue.

DES
-- 
Dag-Erling Smørgrav - d...@des.no
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341051 - in head/sys/dev/sfxge: . common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 13:00:39 2018
New Revision: 341051
URL: https://svnweb.freebsd.org/changeset/base/341051

Log:
  sfxge(4): add efsys macro to get memory region size
  
  EFSYS_MEM_SIZE() reports the DMA mapped size of an efsys_mem_t
  allocated region (the allocation size may be different due to
  memory allocator and DMA alignment restrictions).
  
  This ensures that common code internals have explicit knowledge
  of the usable size of DMA mapped memory regions.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18170

Modified:
  head/sys/dev/sfxge/common/ef10_rx.c
  head/sys/dev/sfxge/common/ef10_tx.c
  head/sys/dev/sfxge/common/efsys.h
  head/sys/dev/sfxge/common/efx_intr.c
  head/sys/dev/sfxge/common/efx_mcdi.c
  head/sys/dev/sfxge/common/siena_phy.c
  head/sys/dev/sfxge/sfxge_dma.c

Modified: head/sys/dev/sfxge/common/ef10_rx.c
==
--- head/sys/dev/sfxge/common/ef10_rx.c Tue Nov 27 13:00:28 2018
(r341050)
+++ head/sys/dev/sfxge/common/ef10_rx.c Tue Nov 27 13:00:39 2018
(r341051)
@@ -64,6 +64,11 @@ efx_mcdi_init_rxq(
 
EFSYS_ASSERT3U(ndescs, <=, EFX_RXQ_MAXNDESCS);
 
+   if ((esmp == NULL) || (EFSYS_MEM_SIZE(esmp) < EFX_RXQ_SIZE(ndescs))) {
+   rc = EINVAL;
+   goto fail1;
+   }
+
if (ps_bufsize > 0)
dma_mode = MC_CMD_INIT_RXQ_EXT_IN_PACKED_STREAM;
else
@@ -130,11 +135,13 @@ efx_mcdi_init_rxq(
 
if (req.emr_rc != 0) {
rc = req.emr_rc;
-   goto fail1;
+   goto fail2;
}
 
return (0);
 
+fail2:
+   EFSYS_PROBE(fail2);
 fail1:
EFSYS_PROBE1(fail1, efx_rc_t, rc);
 

Modified: head/sys/dev/sfxge/common/ef10_tx.c
==
--- head/sys/dev/sfxge/common/ef10_tx.c Tue Nov 27 13:00:28 2018
(r341050)
+++ head/sys/dev/sfxge/common/ef10_tx.c Tue Nov 27 13:00:39 2018
(r341051)
@@ -69,10 +69,15 @@ efx_mcdi_init_txq(
EFSYS_ASSERT(EFX_TXQ_MAX_BUFS >=
EFX_TXQ_NBUFS(enp->en_nic_cfg.enc_txq_max_ndescs));
 
+   if ((esmp == NULL) || (EFSYS_MEM_SIZE(esmp) < EFX_TXQ_SIZE(ndescs))) {
+   rc = EINVAL;
+   goto fail1;
+   }
+
npages = EFX_TXQ_NBUFS(ndescs);
if (MC_CMD_INIT_TXQ_IN_LEN(npages) > sizeof (payload)) {
rc = EINVAL;
-   goto fail1;
+   goto fail2;
}
 
(void) memset(payload, 0, sizeof (payload));
@@ -121,11 +126,13 @@ efx_mcdi_init_txq(
 
if (req.emr_rc != 0) {
rc = req.emr_rc;
-   goto fail2;
+   goto fail3;
}
 
return (0);
 
+fail3:
+   EFSYS_PROBE(fail3);
 fail2:
EFSYS_PROBE(fail2);
 fail1:

Modified: head/sys/dev/sfxge/common/efsys.h
==
--- head/sys/dev/sfxge/common/efsys.h   Tue Nov 27 13:00:28 2018
(r341050)
+++ head/sys/dev/sfxge/common/efsys.h   Tue Nov 27 13:00:39 2018
(r341051)
@@ -392,9 +392,19 @@ typedef struct efsys_mem_s {
bus_dmamap_tesm_map;
caddr_t esm_base;
efsys_dma_addr_tesm_addr;
+   size_t  esm_size;
 } efsys_mem_t;
 
+#defineEFSYS_MEM_SIZE(_esmp)   
\
+   ((_esmp)->esm_size)
 
+#defineEFSYS_MEM_ADDR(_esmp)   
\
+   ((_esmp)->esm_addr)
+
+#defineEFSYS_MEM_IS_NULL(_esmp)
\
+   ((_esmp)->esm_base == NULL)
+
+
 #defineEFSYS_MEM_ZERO(_esmp, _size)
\
do {\
(void) memset((_esmp)->esm_base, 0, (_size));   \
@@ -616,12 +626,6 @@ typedef struct efsys_mem_s {
_NOTE(CONSTANTCONDITION)\
} while (B_FALSE)
 #endif
-
-#defineEFSYS_MEM_ADDR(_esmp)   
\
-   ((_esmp)->esm_addr)
-
-#defineEFSYS_MEM_IS_NULL(_esmp)
\
-   ((_esmp)->esm_base == NULL)
 
 /* BAR */
 

Modified: head/sys/dev/sfxge/common/efx_intr.c
==
--- head/sys/dev/sfxge/common/efx_intr.cTue Nov 27 13:00:28 2018
(r341050)
+++ head/sys/dev/sfxge/common/efx_intr.cTue Nov 27 13:00:39 2018
(r341051)
@@ -318,7 +318,13 @@ siena_intr_init(
 {
efx_intr_t *eip = &(enp->en_intr);
efx_oword_t oword;
+   efx_rc_t rc;
 
+   if ((esmp == NULL) || (EFSYS_MEM_SIZE(esmp) < EFX_INTR_SIZE)) {
+   

svn commit: r341052 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 13:00:51 2018
New Revision: 341052
URL: https://svnweb.freebsd.org/changeset/base/341052

Log:
  sfxge(4): handle new speeds in link events
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18170

Modified:
  head/sys/dev/sfxge/common/ef10_phy.c

Modified: head/sys/dev/sfxge/common/ef10_phy.c
==
--- head/sys/dev/sfxge/common/ef10_phy.cTue Nov 27 13:00:39 2018
(r341051)
+++ head/sys/dev/sfxge/common/ef10_phy.cTue Nov 27 13:00:51 2018
(r341052)
@@ -176,8 +176,17 @@ ef10_phy_link_ev(
case MCDI_EVENT_LINKCHANGE_SPEED_10G:
speed = 1;
break;
+   case MCDI_EVENT_LINKCHANGE_SPEED_25G:
+   speed = 25000;
+   break;
case MCDI_EVENT_LINKCHANGE_SPEED_40G:
speed = 4;
+   break;
+   case MCDI_EVENT_LINKCHANGE_SPEED_50G:
+   speed = 5;
+   break;
+   case MCDI_EVENT_LINKCHANGE_SPEED_100G:
+   speed = 10;
break;
default:
speed = 0;
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341050 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 13:00:28 2018
New Revision: 341050
URL: https://svnweb.freebsd.org/changeset/base/341050

Log:
  sfxge(4): add new loopback modes
  
  Report supported loopback modes for new Medford2 link speeds.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18169

Modified:
  head/sys/dev/sfxge/common/efx.h
  head/sys/dev/sfxge/common/efx_nic.c
  head/sys/dev/sfxge/common/efx_port.c

Modified: head/sys/dev/sfxge/common/efx.h
==
--- head/sys/dev/sfxge/common/efx.h Tue Nov 27 13:00:17 2018
(r341049)
+++ head/sys/dev/sfxge/common/efx.h Tue Nov 27 13:00:28 2018
(r341050)
@@ -837,6 +837,9 @@ typedef enum efx_loopback_type_e {
EFX_LOOPBACK_SD_FEP1_5_WS = 32,
EFX_LOOPBACK_SD_FEP_WS = 33,
EFX_LOOPBACK_SD_FES_WS = 34,
+   EFX_LOOPBACK_AOE_INT_NEAR = 35,
+   EFX_LOOPBACK_DATA_WS = 36,
+   EFX_LOOPBACK_FORCE_EXT_LINK = 37,
EFX_LOOPBACK_NTYPES
 } efx_loopback_type_t;
 

Modified: head/sys/dev/sfxge/common/efx_nic.c
==
--- head/sys/dev/sfxge/common/efx_nic.c Tue Nov 27 13:00:17 2018
(r341049)
+++ head/sys/dev/sfxge/common/efx_nic.c Tue Nov 27 13:00:28 2018
(r341050)
@@ -725,6 +725,9 @@ efx_loopback_mask(
LOOPBACK_CHECK(SD_FEP1_5_WS, SD_FEP1_5_WS);
LOOPBACK_CHECK(SD_FEP_WS, SD_FEP_WS);
LOOPBACK_CHECK(SD_FES_WS, SD_FES_WS);
+   LOOPBACK_CHECK(AOE_INT_NEAR, AOE_INT_NEAR);
+   LOOPBACK_CHECK(DATA_WS, DATA_WS);
+   LOOPBACK_CHECK(FORCE_EXT_LINK, FORCE_EXT_LINK);
 #undef LOOPBACK_CHECK
 
/* Build bitmask of possible loopback types */
@@ -783,7 +786,7 @@ efx_mcdi_get_loopback_modes(
efx_nic_cfg_t *encp = &(enp->en_nic_cfg);
efx_mcdi_req_t req;
uint8_t payload[MAX(MC_CMD_GET_LOOPBACK_MODES_IN_LEN,
-   MC_CMD_GET_LOOPBACK_MODES_OUT_LEN)];
+   MC_CMD_GET_LOOPBACK_MODES_OUT_V2_LEN)];
efx_qword_t mask;
efx_qword_t modes;
efx_rc_t rc;
@@ -793,7 +796,7 @@ efx_mcdi_get_loopback_modes(
req.emr_in_buf = payload;
req.emr_in_length = MC_CMD_GET_LOOPBACK_MODES_IN_LEN;
req.emr_out_buf = payload;
-   req.emr_out_length = MC_CMD_GET_LOOPBACK_MODES_OUT_LEN;
+   req.emr_out_length = MC_CMD_GET_LOOPBACK_MODES_OUT_V2_LEN;
 
efx_mcdi_execute(enp, );
 
@@ -834,18 +837,51 @@ efx_mcdi_get_loopback_modes(
MC_CMD_GET_LOOPBACK_MODES_OUT_40G_OFST +
MC_CMD_GET_LOOPBACK_MODES_OUT_40G_LEN) {
/* Response includes 40G loopback modes */
-   modes =
-   *MCDI_OUT2(req, efx_qword_t, GET_LOOPBACK_MODES_OUT_40G);
+   modes = *MCDI_OUT2(req, efx_qword_t,
+   GET_LOOPBACK_MODES_OUT_40G);
EFX_AND_QWORD(modes, mask);
encp->enc_loopback_types[EFX_LINK_4FDX] = modes;
}
 
+   if (req.emr_out_length_used >=
+   MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_OFST +
+   MC_CMD_GET_LOOPBACK_MODES_OUT_V2_25G_LEN) {
+   /* Response includes 25G loopback modes */
+   modes = *MCDI_OUT2(req, efx_qword_t,
+   GET_LOOPBACK_MODES_OUT_V2_25G);
+   EFX_AND_QWORD(modes, mask);
+   encp->enc_loopback_types[EFX_LINK_25000FDX] = modes;
+   }
+
+   if (req.emr_out_length_used >=
+   MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_OFST +
+   MC_CMD_GET_LOOPBACK_MODES_OUT_V2_50G_LEN) {
+   /* Response includes 50G loopback modes */
+   modes = *MCDI_OUT2(req, efx_qword_t,
+   GET_LOOPBACK_MODES_OUT_V2_50G);
+   EFX_AND_QWORD(modes, mask);
+   encp->enc_loopback_types[EFX_LINK_5FDX] = modes;
+   }
+
+   if (req.emr_out_length_used >=
+   MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_OFST +
+   MC_CMD_GET_LOOPBACK_MODES_OUT_V2_100G_LEN) {
+   /* Response includes 100G loopback modes */
+   modes = *MCDI_OUT2(req, efx_qword_t,
+   GET_LOOPBACK_MODES_OUT_V2_100G);
+   EFX_AND_QWORD(modes, mask);
+   encp->enc_loopback_types[EFX_LINK_10FDX] = modes;
+   }
+
EFX_ZERO_QWORD(modes);
EFX_SET_QWORD_BIT(modes, EFX_LOOPBACK_OFF);
EFX_OR_QWORD(modes, encp->enc_loopback_types[EFX_LINK_100FDX]);
EFX_OR_QWORD(modes, encp->enc_loopback_types[EFX_LINK_1000FDX]);
EFX_OR_QWORD(modes, encp->enc_loopback_types[EFX_LINK_1FDX]);
EFX_OR_QWORD(modes, encp->enc_loopback_types[EFX_LINK_4FDX]);
+   EFX_OR_QWORD(modes, encp->enc_loopback_types[EFX_LINK_25000FDX]);
+   EFX_OR_QWORD(modes, encp->enc_loopback_types[EFX_LINK_5FDX]);
+   EFX_OR_QWORD(modes, 

svn commit: r341049 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 13:00:17 2018
New Revision: 341049
URL: https://svnweb.freebsd.org/changeset/base/341049

Log:
  sfxge(4): support new link modes
  
  Add basic support for new link modes for Medford2.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18168

Modified:
  head/sys/dev/sfxge/common/ef10_phy.c
  head/sys/dev/sfxge/common/efx.h

Modified: head/sys/dev/sfxge/common/ef10_phy.c
==
--- head/sys/dev/sfxge/common/ef10_phy.cTue Nov 27 13:00:06 2018
(r341048)
+++ head/sys/dev/sfxge/common/ef10_phy.cTue Nov 27 13:00:17 2018
(r341049)
@@ -43,6 +43,26 @@ mcdi_phy_decode_cap(
 {
uint32_t mask;
 
+#defineCHECK_CAP(_cap) \
+   EFX_STATIC_ASSERT(EFX_PHY_CAP_##_cap == MC_CMD_PHY_CAP_##_cap##_LBN)
+
+   CHECK_CAP(10HDX);
+   CHECK_CAP(10FDX);
+   CHECK_CAP(100HDX);
+   CHECK_CAP(100FDX);
+   CHECK_CAP(1000HDX);
+   CHECK_CAP(1000FDX);
+   CHECK_CAP(1FDX);
+   CHECK_CAP(25000FDX);
+   CHECK_CAP(4FDX);
+   CHECK_CAP(5FDX);
+   CHECK_CAP(10FDX);
+   CHECK_CAP(PAUSE);
+   CHECK_CAP(ASYM);
+   CHECK_CAP(AN);
+   CHECK_CAP(DDM);
+#undef CHECK_CAP
+
mask = 0;
if (mcdi_cap & (1 << MC_CMD_PHY_CAP_10HDX_LBN))
mask |= (1 << EFX_PHY_CAP_10HDX);
@@ -58,8 +78,15 @@ mcdi_phy_decode_cap(
mask |= (1 << EFX_PHY_CAP_1000FDX);
if (mcdi_cap & (1 << MC_CMD_PHY_CAP_1FDX_LBN))
mask |= (1 << EFX_PHY_CAP_1FDX);
+   if (mcdi_cap & (1 << MC_CMD_PHY_CAP_25000FDX_LBN))
+   mask |= (1 << EFX_PHY_CAP_25000FDX);
if (mcdi_cap & (1 << MC_CMD_PHY_CAP_4FDX_LBN))
mask |= (1 << EFX_PHY_CAP_4FDX);
+   if (mcdi_cap & (1 << MC_CMD_PHY_CAP_5FDX_LBN))
+   mask |= (1 << EFX_PHY_CAP_5FDX);
+   if (mcdi_cap & (1 << MC_CMD_PHY_CAP_10FDX_LBN))
+   mask |= (1 << EFX_PHY_CAP_10FDX);
+
if (mcdi_cap & (1 << MC_CMD_PHY_CAP_PAUSE_LBN))
mask |= (1 << EFX_PHY_CAP_PAUSE);
if (mcdi_cap & (1 << MC_CMD_PHY_CAP_ASYM_LBN))
@@ -88,8 +115,14 @@ mcdi_phy_decode_link_mode(
 
if (!up)
*link_modep = EFX_LINK_DOWN;
+   else if (speed == 10 && fd)
+   *link_modep = EFX_LINK_10FDX;
+   else if (speed == 5 && fd)
+   *link_modep = EFX_LINK_5FDX;
else if (speed == 4 && fd)
*link_modep = EFX_LINK_4FDX;
+   else if (speed == 25000 && fd)
+   *link_modep = EFX_LINK_25000FDX;
else if (speed == 1 && fd)
*link_modep = EFX_LINK_1FDX;
else if (speed == 1000)
@@ -300,7 +333,13 @@ ef10_phy_reconfigure(
PHY_CAP_AN, (cap_mask >> EFX_PHY_CAP_AN) & 0x1);
/* Too many fields for for POPULATE macros, so insert this afterwards */
MCDI_IN_SET_DWORD_FIELD(req, SET_LINK_IN_CAP,
+   PHY_CAP_25000FDX, (cap_mask >> EFX_PHY_CAP_25000FDX) & 0x1);
+   MCDI_IN_SET_DWORD_FIELD(req, SET_LINK_IN_CAP,
PHY_CAP_4FDX, (cap_mask >> EFX_PHY_CAP_4FDX) & 0x1);
+   MCDI_IN_SET_DWORD_FIELD(req, SET_LINK_IN_CAP,
+   PHY_CAP_5FDX, (cap_mask >> EFX_PHY_CAP_5FDX) & 0x1);
+   MCDI_IN_SET_DWORD_FIELD(req, SET_LINK_IN_CAP,
+   PHY_CAP_10FDX, (cap_mask >> EFX_PHY_CAP_10FDX) & 0x1);
 
 #if EFSYS_OPT_LOOPBACK
MCDI_IN_SET_DWORD(req, SET_LINK_IN_LOOPBACK_MODE,
@@ -315,8 +354,17 @@ ef10_phy_reconfigure(
case EFX_LINK_1FDX:
speed = 1;
break;
+   case EFX_LINK_25000FDX:
+   speed = 25000;
+   break;
case EFX_LINK_4FDX:
speed = 4;
+   break;
+   case EFX_LINK_5FDX:
+   speed = 5;
+   break;
+   case EFX_LINK_10FDX:
+   speed = 10;
break;
default:
speed = 0;

Modified: head/sys/dev/sfxge/common/efx.h
==
--- head/sys/dev/sfxge/common/efx.h Tue Nov 27 13:00:06 2018
(r341048)
+++ head/sys/dev/sfxge/common/efx.h Tue Nov 27 13:00:17 2018
(r341049)
@@ -452,6 +452,9 @@ typedef enum efx_link_mode_e {
EFX_LINK_1000FDX,
EFX_LINK_1FDX,
EFX_LINK_4FDX,
+   EFX_LINK_25000FDX,
+   EFX_LINK_5FDX,
+   EFX_LINK_10FDX,
EFX_LINK_NMODES
 } efx_link_mode_t;
 
@@ -889,6 +892,10 @@ typedef enum efx_phy_cap_type_e {
EFX_PHY_CAP_ASYM,
EFX_PHY_CAP_AN,
EFX_PHY_CAP_4FDX,
+   EFX_PHY_CAP_DDM,
+   EFX_PHY_CAP_10FDX,
+   EFX_PHY_CAP_25000FDX,
+   EFX_PHY_CAP_5FDX,
   

svn commit: r341044 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:59:21 2018
New Revision: 341044
URL: https://svnweb.freebsd.org/changeset/base/341044

Log:
  sfxge(4): fix ICC warning because of non-enum value usage
  
  Fix ICC warning because of non-enum value asignment to enum variable.
  
  Found by upstreaming to DPDK.
  
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18163

Modified:
  head/sys/dev/sfxge/common/efx_mcdi.c

Modified: head/sys/dev/sfxge/common/efx_mcdi.c
==
--- head/sys/dev/sfxge/common/efx_mcdi.cTue Nov 27 12:59:09 2018
(r341043)
+++ head/sys/dev/sfxge/common/efx_mcdi.cTue Nov 27 12:59:21 2018
(r341044)
@@ -1465,6 +1465,7 @@ efx_mcdi_get_phy_cfg(
const char *namep;
size_t namelen;
 #endif
+   uint32_t phy_media_type;
efx_rc_t rc;
 
(void) memset(payload, 0, sizeof (payload));
@@ -1515,8 +1516,8 @@ efx_mcdi_get_phy_cfg(
EFX_STATIC_ASSERT(MC_CMD_MEDIA_SFP_PLUS == EFX_PHY_MEDIA_SFP_PLUS);
EFX_STATIC_ASSERT(MC_CMD_MEDIA_BASE_T == EFX_PHY_MEDIA_BASE_T);
EFX_STATIC_ASSERT(MC_CMD_MEDIA_QSFP_PLUS == EFX_PHY_MEDIA_QSFP_PLUS);
-   epp->ep_fixed_port_type =
-   MCDI_OUT_DWORD(req, GET_PHY_CFG_OUT_MEDIA_TYPE);
+   phy_media_type = MCDI_OUT_DWORD(req, GET_PHY_CFG_OUT_MEDIA_TYPE);
+   epp->ep_fixed_port_type = (efx_phy_media_type_t) phy_media_type;
if (epp->ep_fixed_port_type >= EFX_PHY_MEDIA_NTYPES)
epp->ep_fixed_port_type = EFX_PHY_MEDIA_INVALID;
 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341047 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:59:55 2018
New Revision: 341047
URL: https://svnweb.freebsd.org/changeset/base/341047

Log:
  sfxge(4): simplify loopback type checking
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18166

Modified:
  head/sys/dev/sfxge/common/ef10_phy.c
  head/sys/dev/sfxge/common/efx_nic.c

Modified: head/sys/dev/sfxge/common/ef10_phy.c
==
--- head/sys/dev/sfxge/common/ef10_phy.cTue Nov 27 12:59:43 2018
(r341046)
+++ head/sys/dev/sfxge/common/ef10_phy.cTue Nov 27 12:59:55 2018
(r341047)
@@ -239,26 +239,10 @@ ef10_phy_get_link(
>els_link_mode, >els_fcntl);
 
 #if EFSYS_OPT_LOOPBACK
-   /* Assert the MC_CMD_LOOPBACK and EFX_LOOPBACK namespace agree */
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_NONE == EFX_LOOPBACK_OFF);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_DATA == EFX_LOOPBACK_DATA);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_GMAC == EFX_LOOPBACK_GMAC);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XGMII == EFX_LOOPBACK_XGMII);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XGXS == EFX_LOOPBACK_XGXS);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XAUI == EFX_LOOPBACK_XAUI);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_GMII == EFX_LOOPBACK_GMII);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_SGMII == EFX_LOOPBACK_SGMII);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XGBR == EFX_LOOPBACK_XGBR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XFI == EFX_LOOPBACK_XFI);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XAUI_FAR == EFX_LOOPBACK_XAUI_FAR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_GMII_FAR == EFX_LOOPBACK_GMII_FAR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_SGMII_FAR == EFX_LOOPBACK_SGMII_FAR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XFI_FAR == EFX_LOOPBACK_XFI_FAR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_GPHY == EFX_LOOPBACK_GPHY);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_PHYXS == EFX_LOOPBACK_PHY_XS);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_PCS == EFX_LOOPBACK_PCS);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_PMAPMD == EFX_LOOPBACK_PMA_PMD);
-
+   /*
+* MC_CMD_LOOPBACK and EFX_LOOPBACK names are equivalent, so use the
+* MCDI value directly. Agreement is checked in efx_loopback_mask().
+*/
elsp->els_loopback = MCDI_OUT_DWORD(req, GET_LINK_OUT_LOOPBACK_MODE);
 #endif /* EFSYS_OPT_LOOPBACK */
 

Modified: head/sys/dev/sfxge/common/efx_nic.c
==
--- head/sys/dev/sfxge/common/efx_nic.c Tue Nov 27 12:59:43 2018
(r341046)
+++ head/sys/dev/sfxge/common/efx_nic.c Tue Nov 27 12:59:55 2018
(r341047)
@@ -686,48 +686,46 @@ efx_loopback_mask(
EFSYS_ASSERT3U(loopback_kind, <, EFX_LOOPBACK_NKINDS);
EFSYS_ASSERT(maskp != NULL);
 
-   /* Assert the MC_CMD_LOOPBACK and EFX_LOOPBACK namespace agree */
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_NONE == EFX_LOOPBACK_OFF);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_DATA == EFX_LOOPBACK_DATA);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_GMAC == EFX_LOOPBACK_GMAC);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XGMII == EFX_LOOPBACK_XGMII);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XGXS == EFX_LOOPBACK_XGXS);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XAUI == EFX_LOOPBACK_XAUI);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_GMII == EFX_LOOPBACK_GMII);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_SGMII == EFX_LOOPBACK_SGMII);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XGBR == EFX_LOOPBACK_XGBR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XFI == EFX_LOOPBACK_XFI);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XAUI_FAR == EFX_LOOPBACK_XAUI_FAR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_GMII_FAR == EFX_LOOPBACK_GMII_FAR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_SGMII_FAR == EFX_LOOPBACK_SGMII_FAR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XFI_FAR == EFX_LOOPBACK_XFI_FAR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_GPHY == EFX_LOOPBACK_GPHY);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_PHYXS == EFX_LOOPBACK_PHY_XS);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_PCS == EFX_LOOPBACK_PCS);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_PMAPMD == EFX_LOOPBACK_PMA_PMD);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XPORT == EFX_LOOPBACK_XPORT);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XGMII_WS == EFX_LOOPBACK_XGMII_WS);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XAUI_WS == EFX_LOOPBACK_XAUI_WS);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XAUI_WS_FAR ==
-   EFX_LOOPBACK_XAUI_WS_FAR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XAUI_WS_NEAR ==
-   EFX_LOOPBACK_XAUI_WS_NEAR);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_GMII_WS == EFX_LOOPBACK_GMII_WS);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XFI_WS == EFX_LOOPBACK_XFI_WS);
-   EFX_STATIC_ASSERT(MC_CMD_LOOPBACK_XFI_WS_FAR ==
-   EFX_LOOPBACK_XFI_WS_FAR);
-   

svn commit: r341048 - head/sys/dev/sfxge

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 13:00:06 2018
New Revision: 341048
URL: https://svnweb.freebsd.org/changeset/base/341048

Log:
  sfxge(4): removing unneeded assert
  
  Remove ASSERT() from sfxge_link_mode_to_phy_cap() which causes an
  unnecessary panic, even though the callers have proper error handling.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18167

Modified:
  head/sys/dev/sfxge/sfxge_port.c

Modified: head/sys/dev/sfxge/sfxge_port.c
==
--- head/sys/dev/sfxge/sfxge_port.c Tue Nov 27 12:59:55 2018
(r341047)
+++ head/sys/dev/sfxge/sfxge_port.c Tue Nov 27 13:00:06 2018
(r341048)
@@ -896,7 +896,6 @@ sfxge_link_mode_to_phy_cap(efx_link_mode_t mode)
case EFX_LINK_4FDX:
return (EFX_PHY_CAP_4FDX);
default:
-   EFSYS_ASSERT(B_FALSE);
return (EFX_PHY_CAP_INVALID);
}
 }
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341046 - in head/sys/dev/sfxge: . common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:59:43 2018
New Revision: 341046
URL: https://svnweb.freebsd.org/changeset/base/341046

Log:
  sfxge(4): report memory BAR number
  
  Remove EFX_MEM_BAR define as it it is not correct on all platforms.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18165

Modified:
  head/sys/dev/sfxge/common/efx.h
  head/sys/dev/sfxge/common/efx_nic.c
  head/sys/dev/sfxge/sfxge.c
  head/sys/dev/sfxge/sfxge.h

Modified: head/sys/dev/sfxge/common/efx.h
==
--- head/sys/dev/sfxge/common/efx.h Tue Nov 27 12:59:32 2018
(r341045)
+++ head/sys/dev/sfxge/common/efx.h Tue Nov 27 12:59:43 2018
(r341046)
@@ -76,7 +76,8 @@ extern__checkReturn   efx_rc_t
 efx_family(
__inuint16_t venid,
__inuint16_t devid,
-   __out   efx_family_t *efp);
+   __out   efx_family_t *efp,
+   __out   unsigned int *membarp);
 
 
 #defineEFX_PCI_VENID_SFC   0x1924
@@ -102,7 +103,17 @@ efx_family(
 #defineEFX_PCI_DEVID_MEDFORD2  0x0B03  /* SFC9250 PF */
 #defineEFX_PCI_DEVID_MEDFORD2_VF   0x1B03  /* SFC9250 VF */
 
-#defineEFX_MEM_BAR 2
+
+#defineEFX_MEM_BAR_SIENA   2
+
+#defineEFX_MEM_BAR_HUNTINGTON_PF   2
+#defineEFX_MEM_BAR_HUNTINGTON_VF   0
+
+#defineEFX_MEM_BAR_MEDFORD_PF  2
+#defineEFX_MEM_BAR_MEDFORD_VF  0
+
+#defineEFX_MEM_BAR_MEDFORD20
+
 
 /* Error codes */
 

Modified: head/sys/dev/sfxge/common/efx_nic.c
==
--- head/sys/dev/sfxge/common/efx_nic.c Tue Nov 27 12:59:32 2018
(r341045)
+++ head/sys/dev/sfxge/common/efx_nic.c Tue Nov 27 12:59:43 2018
(r341046)
@@ -36,11 +36,13 @@ __FBSDID("$FreeBSD$");
 #include "efx.h"
 #include "efx_impl.h"
 
+
__checkReturn   efx_rc_t
 efx_family(
__inuint16_t venid,
__inuint16_t devid,
-   __out   efx_family_t *efp)
+   __out   efx_family_t *efp,
+   __out   unsigned int *membarp)
 {
if (venid == EFX_PCI_VENID_SFC) {
switch (devid) {
@@ -50,12 +52,10 @@ efx_family(
 * Hardware default for PF0 of uninitialised Siena.
 * manftest must be able to cope with this device id.
 */
-   *efp = EFX_FAMILY_SIENA;
-   return (0);
-
case EFX_PCI_DEVID_BETHPAGE:
case EFX_PCI_DEVID_SIENA:
*efp = EFX_FAMILY_SIENA;
+   *membarp = EFX_MEM_BAR_SIENA;
return (0);
 #endif /* EFSYS_OPT_SIENA */
 
@@ -65,17 +65,16 @@ efx_family(
 * Hardware default for PF0 of uninitialised Huntington.
 * manftest must be able to cope with this device id.
 */
-   *efp = EFX_FAMILY_HUNTINGTON;
-   return (0);
-
case EFX_PCI_DEVID_FARMINGDALE:
case EFX_PCI_DEVID_GREENPORT:
*efp = EFX_FAMILY_HUNTINGTON;
+   *membarp = EFX_MEM_BAR_HUNTINGTON_PF;
return (0);
 
case EFX_PCI_DEVID_FARMINGDALE_VF:
case EFX_PCI_DEVID_GREENPORT_VF:
*efp = EFX_FAMILY_HUNTINGTON;
+   *membarp = EFX_MEM_BAR_HUNTINGTON_VF;
return (0);
 #endif /* EFSYS_OPT_HUNTINGTON */
 
@@ -85,15 +84,14 @@ efx_family(
 * Hardware default for PF0 of uninitialised Medford.
 * manftest must be able to cope with this device id.
 */
-   *efp = EFX_FAMILY_MEDFORD;
-   return (0);
-
case EFX_PCI_DEVID_MEDFORD:
*efp = EFX_FAMILY_MEDFORD;
+   *membarp = EFX_MEM_BAR_MEDFORD_PF;
return (0);
 
case EFX_PCI_DEVID_MEDFORD_VF:
*efp = EFX_FAMILY_MEDFORD;
+   *membarp = EFX_MEM_BAR_MEDFORD_VF;
return (0);
 #endif /* EFSYS_OPT_MEDFORD */
 
@@ -103,15 +101,10 @@ efx_family(
 * Hardware default for PF0 of uninitialised Medford2.
 * manftest must be able to cope with this device id.
 */
-   *efp = EFX_FAMILY_MEDFORD2;
-   return (0);
-
case EFX_PCI_DEVID_MEDFORD2:
-  

svn commit: r341045 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:59:32 2018
New Revision: 341045
URL: https://svnweb.freebsd.org/changeset/base/341045

Log:
  sfxge(4): update notes on interrupt testing on VFs
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18164

Modified:
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/medford2_nic.c
==
--- head/sys/dev/sfxge/common/medford2_nic.cTue Nov 27 12:59:21 2018
(r341044)
+++ head/sys/dev/sfxge/common/medford2_nic.cTue Nov 27 12:59:32 2018
(r341045)
@@ -202,8 +202,8 @@ medford2_board_cfg(
 
if (EFX_PCI_FUNCTION_IS_VF(encp)) {
/*
-* Interrupt testing does not work for VFs. See bug50084.
-* FIXME: Does this still apply to Medford2?
+* Interrupt testing does not work for VFs on Medford2.
+* See bug50084 and bug71432 comment 21.
 */
encp->enc_bug41750_workaround = B_TRUE;
}

Modified: head/sys/dev/sfxge/common/medford_nic.c
==
--- head/sys/dev/sfxge/common/medford_nic.c Tue Nov 27 12:59:21 2018
(r341044)
+++ head/sys/dev/sfxge/common/medford_nic.c Tue Nov 27 12:59:32 2018
(r341045)
@@ -200,8 +200,8 @@ medford_board_cfg(
 
if (EFX_PCI_FUNCTION_IS_VF(encp)) {
/*
-* Interrupt testing does not work for VFs. See bug50084.
-* FIXME: Does this still  apply to Medford?
+* Interrupt testing does not work for VFs. See bug50084 and
+* bug71432 comment 21.
 */
encp->enc_bug41750_workaround = B_TRUE;
}
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341043 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:59:09 2018
New Revision: 341043
URL: https://svnweb.freebsd.org/changeset/base/341043

Log:
  sfxge(4): refactoring eliminating code analysis warnings
  
  Addresses most of the warnings reported by the sfn windows driver.
  
  Submitted by:   Richard Houldsworth 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18162

Modified:
  head/sys/dev/sfxge/common/ef10_mcdi.c
  head/sys/dev/sfxge/common/ef10_nvram.c
  head/sys/dev/sfxge/common/ef10_vpd.c
  head/sys/dev/sfxge/common/efx_filter.c
  head/sys/dev/sfxge/common/efx_mcdi.c
  head/sys/dev/sfxge/common/efx_phy.c
  head/sys/dev/sfxge/common/siena_mcdi.c
  head/sys/dev/sfxge/common/siena_nvram.c
  head/sys/dev/sfxge/common/siena_vpd.c

Modified: head/sys/dev/sfxge/common/ef10_mcdi.c
==
--- head/sys/dev/sfxge/common/ef10_mcdi.c   Tue Nov 27 12:58:52 2018
(r341042)
+++ head/sys/dev/sfxge/common/ef10_mcdi.c   Tue Nov 27 12:59:09 2018
(r341043)
@@ -215,13 +215,17 @@ ef10_mcdi_read_response(
 {
const efx_mcdi_transport_t *emtp = enp->en_mcdi.em_emtp;
efsys_mem_t *esmp = emtp->emt_dma_mem;
-   unsigned int pos;
+   unsigned int pos = 0;
efx_dword_t data;
+   size_t remaining = length;
 
-   for (pos = 0; pos < length; pos += sizeof (efx_dword_t)) {
+   while (remaining > 0) {
+   size_t chunk = MIN(remaining, sizeof (data));
+
EFSYS_MEM_READD(esmp, offset + pos, );
-   memcpy((uint8_t *)bufferp + pos, ,
-   MIN(sizeof (data), length - pos));
+   memcpy((uint8_t *)bufferp + pos, , chunk);
+   pos += chunk;
+   remaining -= chunk;
}
 }
 

Modified: head/sys/dev/sfxge/common/ef10_nvram.c
==
--- head/sys/dev/sfxge/common/ef10_nvram.c  Tue Nov 27 12:58:52 2018
(r341042)
+++ head/sys/dev/sfxge/common/ef10_nvram.c  Tue Nov 27 12:59:09 2018
(r341043)
@@ -1376,12 +1376,16 @@ ef10_nvram_partn_read_tlv(
 */
retry = 10;
do {
-   rc = ef10_nvram_read_tlv_segment(enp, partn, 0,
-   seg_data, partn_size);
-   } while ((rc == EAGAIN) && (--retry > 0));
+   if ((rc = ef10_nvram_read_tlv_segment(enp, partn, 0,
+   seg_data, partn_size)) != 0)
+   --retry;
+   } while ((rc == EAGAIN) && (retry > 0));
 
if (rc != 0) {
/* Failed to obtain consistent segment data */
+   if (rc == EAGAIN)
+   rc = EIO;
+
goto fail4;
}
 

Modified: head/sys/dev/sfxge/common/ef10_vpd.c
==
--- head/sys/dev/sfxge/common/ef10_vpd.cTue Nov 27 12:58:52 2018
(r341042)
+++ head/sys/dev/sfxge/common/ef10_vpd.cTue Nov 27 12:59:09 2018
(r341043)
@@ -163,19 +163,22 @@ ef10_vpd_read(
rc = ENOSPC;
goto fail2;
}
-   memcpy(data, dvpd, dvpd_size);
+   if (dvpd != NULL)
+   memcpy(data, dvpd, dvpd_size);
 
/* Pad data with all-1s, consistent with update operations */
memset(data + dvpd_size, 0xff, size - dvpd_size);
 
-   EFSYS_KMEM_FREE(enp->en_esip, dvpd_size, dvpd);
+   if (dvpd != NULL)
+   EFSYS_KMEM_FREE(enp->en_esip, dvpd_size, dvpd);
 
return (0);
 
 fail2:
EFSYS_PROBE(fail2);
 
-   EFSYS_KMEM_FREE(enp->en_esip, dvpd_size, dvpd);
+   if (dvpd != NULL)
+   EFSYS_KMEM_FREE(enp->en_esip, dvpd_size, dvpd);
 fail1:
EFSYS_PROBE1(fail1, efx_rc_t, rc);
 

Modified: head/sys/dev/sfxge/common/efx_filter.c
==
--- head/sys/dev/sfxge/common/efx_filter.c  Tue Nov 27 12:58:52 2018
(r341042)
+++ head/sys/dev/sfxge/common/efx_filter.c  Tue Nov 27 12:59:09 2018
(r341043)
@@ -988,6 +988,7 @@ siena_filter_build(
 
default:
EFSYS_ASSERT(B_FALSE);
+   EFX_ZERO_OWORD(*filter);
return (0);
}
 

Modified: head/sys/dev/sfxge/common/efx_mcdi.c
==
--- head/sys/dev/sfxge/common/efx_mcdi.cTue Nov 27 12:58:52 2018
(r341042)
+++ head/sys/dev/sfxge/common/efx_mcdi.cTue Nov 27 12:59:09 2018
(r341043)
@@ -1461,6 +1461,10 @@ efx_mcdi_get_phy_cfg(
efx_mcdi_req_t req;
uint8_t payload[MAX(MC_CMD_GET_PHY_CFG_IN_LEN,
MC_CMD_GET_PHY_CFG_OUT_LEN)];
+#if EFSYS_OPT_NAMES
+   const char *namep;
+   size_t namelen;
+#endif
efx_rc_t rc;
 
(void) memset(payload, 0, sizeof 

svn commit: r341042 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:58:52 2018
New Revision: 341042
URL: https://svnweb.freebsd.org/changeset/base/341042

Log:
  sfxge(4): update hardware headers for Medford2
  
  The changes to efx_regs_ef10.h are auto-generated and include:
  
   - Updated event RX_L4_CLASS which is now 2 bits (was 3).
 The encoding of TCP, UDP and UNKNOWN are unchanged so
 the narrower Medford2 field definition is compatible with
 all controllers.
  
   - Fix definition of FATSOv2 option descriptors. These were
 added manually and differ from the auto-generated values
 in some fields (not yet used in common code). The field
 definitions have been corrected to agree with the Linux net
 driver headers and SF-108452-SW.
  
  The remaining changes adapt the common code to use the updated
  headers.
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18161

Modified:
  head/sys/dev/sfxge/common/ef10_ev.c
  head/sys/dev/sfxge/common/efx_regs_ef10.h

Modified: head/sys/dev/sfxge/common/ef10_ev.c
==
--- head/sys/dev/sfxge/common/ef10_ev.c Tue Nov 27 12:35:51 2018
(r341041)
+++ head/sys/dev/sfxge/common/ef10_ev.c Tue Nov 27 12:58:52 2018
(r341042)
@@ -895,13 +895,24 @@ ef10_ev_rx(
 #endif
 
size = EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_BYTES);
+   cont = EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_CONT);
next_read_lbits = EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_DSC_PTR_LBITS);
eth_tag_class = EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_ETH_TAG_CLASS);
mac_class = EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_MAC_CLASS);
l3_class = EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_L3_CLASS);
-   l4_class = EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_L4_CLASS);
-   cont = EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_CONT);
 
+   /*
+* RX_L4_CLASS is 3 bits wide on Huntington and Medford, but is only
+* 2 bits wide on Medford2. Check it is safe to use the Medford2 field
+* and values for all EF10 controllers.
+*/
+   EFX_STATIC_ASSERT(ESF_FZ_RX_L4_CLASS_LBN == ESF_DE_RX_L4_CLASS_LBN);
+   EFX_STATIC_ASSERT(ESE_FZ_L4_CLASS_TCP == ESE_DE_L4_CLASS_TCP);
+   EFX_STATIC_ASSERT(ESE_FZ_L4_CLASS_UDP == ESE_DE_L4_CLASS_UDP);
+   EFX_STATIC_ASSERT(ESE_FZ_L4_CLASS_UNKNOWN == ESE_DE_L4_CLASS_UNKNOWN);
+
+   l4_class = EFX_QWORD_FIELD(*eqp, ESF_FZ_RX_L4_CLASS);
+
if (EFX_QWORD_FIELD(*eqp, ESF_DZ_RX_DROP_EVENT) != 0) {
/* Drop this event */
return (B_FALSE);
@@ -979,10 +990,22 @@ ef10_ev_rx(
flags |= EFX_CKSUM_IPV4;
}
 
-   if (l4_class == ESE_DZ_L4_CLASS_TCP) {
+   /*
+* RX_L4_CLASS is 3 bits wide on Huntington and Medford, but is
+* only 2 bits wide on Medford2. Check it is safe to use the
+* Medford2 field and values for all EF10 controllers.
+*/
+   EFX_STATIC_ASSERT(ESF_FZ_RX_L4_CLASS_LBN ==
+   ESF_DE_RX_L4_CLASS_LBN);
+   EFX_STATIC_ASSERT(ESE_FZ_L4_CLASS_TCP == ESE_DE_L4_CLASS_TCP);
+   EFX_STATIC_ASSERT(ESE_FZ_L4_CLASS_UDP == ESE_DE_L4_CLASS_UDP);
+   EFX_STATIC_ASSERT(ESE_FZ_L4_CLASS_UNKNOWN ==
+   ESE_DE_L4_CLASS_UNKNOWN);
+
+   if (l4_class == ESE_FZ_L4_CLASS_TCP) {
EFX_EV_QSTAT_INCR(eep, EV_RX_TCP_IPV4);
flags |= EFX_PKT_TCP;
-   } else if (l4_class == ESE_DZ_L4_CLASS_UDP) {
+   } else if (l4_class == ESE_FZ_L4_CLASS_UDP) {
EFX_EV_QSTAT_INCR(eep, EV_RX_UDP_IPV4);
flags |= EFX_PKT_UDP;
} else {
@@ -994,10 +1017,22 @@ ef10_ev_rx(
case ESE_DZ_L3_CLASS_IP6_FRAG:
flags |= EFX_PKT_IPV6;
 
-   if (l4_class == ESE_DZ_L4_CLASS_TCP) {
+   /*
+* RX_L4_CLASS is 3 bits wide on Huntington and Medford, but is
+* only 2 bits wide on Medford2. Check it is safe to use the
+* Medford2 field and values for all EF10 controllers.
+*/
+   EFX_STATIC_ASSERT(ESF_FZ_RX_L4_CLASS_LBN ==
+   ESF_DE_RX_L4_CLASS_LBN);
+   EFX_STATIC_ASSERT(ESE_FZ_L4_CLASS_TCP == ESE_DE_L4_CLASS_TCP);
+   EFX_STATIC_ASSERT(ESE_FZ_L4_CLASS_UDP == ESE_DE_L4_CLASS_UDP);
+   EFX_STATIC_ASSERT(ESE_FZ_L4_CLASS_UNKNOWN ==
+   ESE_DE_L4_CLASS_UNKNOWN);
+
+   if (l4_class == ESE_FZ_L4_CLASS_TCP) {
EFX_EV_QSTAT_INCR(eep, EV_RX_TCP_IPV6);
flags |= EFX_PKT_TCP;
-   } else if (l4_class == ESE_DZ_L4_CLASS_UDP) {
+   } else if (l4_class == ESE_FZ_L4_CLASS_UDP) {
EFX_EV_QSTAT_INCR(eep, 

svn commit: r341041 - head/sys/contrib/ck/include/gcc/sparcv9

2018-11-27 Thread Marius Strobl
Author: marius
Date: Tue Nov 27 12:35:51 2018
New Revision: 341041
URL: https://svnweb.freebsd.org/changeset/base/341041

Log:
  Import CK as of 21d3e319407d19dece16ee317c757ffc54a452bc, which makes its
  sparcv9 atomics compatible with the FreeBSD kernel by using instructions
  which access the appropriate address space.
  Atomic operations within the kernel must access the nucleus address space
  instead of the default primary one. Without this change but the increased
  use of CK in the kernel, machines started to panic after some minutes of
  uptime due to an unresolvable fault in ck_pr_cas_64_value().

Modified:
  head/sys/contrib/ck/include/gcc/sparcv9/ck_pr.h
Directory Properties:
  head/sys/contrib/ck/   (props changed)

Modified: head/sys/contrib/ck/include/gcc/sparcv9/ck_pr.h
==
--- head/sys/contrib/ck/include/gcc/sparcv9/ck_pr.h Tue Nov 27 12:32:32 
2018(r341040)
+++ head/sys/contrib/ck/include/gcc/sparcv9/ck_pr.h Tue Nov 27 12:35:51 
2018(r341041)
@@ -136,11 +136,26 @@ CK_PR_STORE_S(int, int, "stsw")
 #undef CK_PR_STORE_S
 #undef CK_PR_STORE
 
+/* Use the appropriate address space for atomics within the FreeBSD kernel. */
+#if defined(__FreeBSD__) && defined(_KERNEL)
+#include 
+#include 
+#define CK_PR_INS_CAS "casa"
+#define CK_PR_INS_CASX "casxa"
+#define CK_PR_INS_SWAP "swapa"
+#define CK_PR_ASI_ATOMIC __XSTRING(__ASI_ATOMIC)
+#else
+#define CK_PR_INS_CAS "cas"
+#define CK_PR_INS_CASX "casx"
+#define CK_PR_INS_SWAP "swap"
+#define CK_PR_ASI_ATOMIC ""
+#endif
+
 CK_CC_INLINE static bool
 ck_pr_cas_64_value(uint64_t *target, uint64_t compare, uint64_t set, uint64_t 
*value)
 {
 
-   __asm__ __volatile__("casx [%1], %2, %0"
+   __asm__ __volatile__(CK_PR_INS_CASX " [%1] " CK_PR_ASI_ATOMIC ", %2, %0"
: "+" (set)
: "r"   (target),
  "r"   (compare)
@@ -154,7 +169,7 @@ CK_CC_INLINE static bool
 ck_pr_cas_64(uint64_t *target, uint64_t compare, uint64_t set)
 {
 
-   __asm__ __volatile__("casx [%1], %2, %0"
+   __asm__ __volatile__(CK_PR_INS_CASX " [%1] " CK_PR_ASI_ATOMIC ", %2, %0"
: "+" (set)
: "r" (target),
  "r" (compare)
@@ -181,7 +196,7 @@ ck_pr_cas_ptr_value(void *target, void *compare, void 
CK_CC_INLINE static bool\
ck_pr_cas_##N##_value(T *target, T compare, T set, T *value)\
{   \
-   __asm__ __volatile__("cas [%1], %2, %0" \
+   __asm__ __volatile__(CK_PR_INS_CAS " [%1] " CK_PR_ASI_ATOMIC ", 
%2, %0" \
: "+" (set)   \
: "r"   (target),   \
  "r"   (compare)   \
@@ -192,7 +207,7 @@ ck_pr_cas_ptr_value(void *target, void *compare, void 
CK_CC_INLINE static bool\
ck_pr_cas_##N(T *target, T compare, T set)  \
{   \
-   __asm__ __volatile__("cas [%1], %2, %0" \
+   __asm__ __volatile__(CK_PR_INS_CAS " [%1] " CK_PR_ASI_ATOMIC ", 
%2, %0" \
: "+" (set)   \
: "r" (target), \
  "r" (compare) \
@@ -211,7 +226,7 @@ CK_PR_CAS(int, int)
ck_pr_fas_##N(T *target, T update)  \
{   \
\
-   __asm__ __volatile__("swap [%1], %0"\
+   __asm__ __volatile__(CK_PR_INS_SWAP " [%1] " CK_PR_ASI_ATOMIC 
", %0"\
: "+" (update)\
: "r"   (target)\
: "memory");\
@@ -223,6 +238,11 @@ CK_PR_FAS(uint, unsigned int)
 CK_PR_FAS(32, uint32_t)
 
 #undef CK_PR_FAS
+
+#undef CK_PR_INS_CAS
+#undef CK_PR_INS_CASX
+#undef CK_PR_INS_SWAP
+#undef CK_PR_ASI_ATOMIC
 
 #endif /* CK_PR_SPARCV9_H */
 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341037 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:22:50 2018
New Revision: 341037
URL: https://svnweb.freebsd.org/changeset/base/341037

Log:
  sfxge(4): improve comments for EF10 ext port mapping
  
  Submitted by:   Richard Houldsworth 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18159

Modified:
  head/sys/dev/sfxge/common/ef10_nic.c

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 12:22:37 2018
(r341036)
+++ head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 12:22:50 2018
(r341037)
@@ -1288,26 +1288,58 @@ fail1:
 
 
 /*
- * Table of mapping schemes from port number to the number of the external
- * connector on the board. The external numbering does not distinguish
- * off-board separated outputs such as from multi-headed cables.
+ * Table of mapping schemes from port number to external number.
  *
- * The count of adjacent port numbers that map to each external port
+ * Each port number ultimately corresponds to a connector: either as part of
+ * a cable assembly attached to a module inserted in an SFP+/QSFP+ cage on
+ * the board, or fixed to the board (e.g. 10GBASE-T magjack on SFN5121T
+ * "Salina"). In general:
+ *
+ * Port number (0-based)
+ * |
+ *   port mapping (n:1)
+ * |
+ * v
+ * External port number (normally 1-based)
+ * |
+ *   fixed (1:1) or cable assembly (1:m)
+ * |
+ * v
+ * Connector
+ *
+ * The external numbering refers to the cages or magjacks on the board,
+ * as visibly annotated on the board or back panel. This table describes
+ * how to determine which external cage/magjack corresponds to the port
+ * numbers used by the driver.
+ *
+ * The count of adjacent port numbers that map to each external number,
  * and the offset in the numbering, is determined by the chip family and
  * current port mode.
  *
  * For the Huntington family, the current port mode cannot be discovered,
+ * but a single mapping is used by all modes for a given chip variant,
  * so the mapping used is instead the last match in the table to the full
  * set of port modes to which the NIC can be configured. Therefore the
- * ordering of entries in the the mapping table is significant.
+ * ordering of entries in the mapping table is significant.
  */
-static struct {
+static struct ef10_external_port_map_s {
efx_family_tfamily;
uint32_tmodes_mask;
int32_t count;
int32_t offset;
 }  __ef10_external_port_mappings[] = {
-   /* Supported modes with 1 output per external port */
+   /*
+* Modes used by Huntington family controllers where each port
+* number maps to a separate cage.
+* SFN7x22F (Torino):
+*  port 0 -> cage 1
+*  port 1 -> cage 2
+* SFN7xx4F (Pavia):
+*  port 0 -> cage 1
+*  port 1 -> cage 2
+*  port 2 -> cage 3
+*  port 3 -> cage 4
+*/
{
EFX_FAMILY_HUNTINGTON,
(1 << TLV_PORT_MODE_10G) |
@@ -1316,6 +1348,14 @@ static struct {
1,
1
},
+   /*
+* Modes that on Medford allocate each port number to a separate
+* cage.
+*  port 0 -> cage 1
+*  port 1 -> cage 2
+*  port 2 -> cage 3
+*  port 3 -> cage 4
+*/
{
EFX_FAMILY_MEDFORD,
(1 << TLV_PORT_MODE_10G) |
@@ -1323,7 +1363,15 @@ static struct {
1,
1
},
-   /* Supported modes with 2 outputs per external port */
+   /*
+* Modes which for Huntington identify a chip variant where 2
+* adjacent port numbers map to each cage.
+* SFN7x42Q (Monza):
+*  port 0 -> cage 1
+*  port 1 -> cage 1
+*  port 2 -> cage 2
+*  port 3 -> cage 2
+*/
{
EFX_FAMILY_HUNTINGTON,
(1 << TLV_PORT_MODE_40G) |
@@ -1333,6 +1381,14 @@ static struct {
2,
1
},
+   /*
+* Modes that on Medford allocate 2 adjacent port numbers to each
+* cage.
+*  port 0 -> cage 1
+*  port 1 -> cage 1
+*  port 2 -> cage 2
+*  port 3 -> cage 2
+*/
{
EFX_FAMILY_MEDFORD,
(1 << TLV_PORT_MODE_40G) |
@@ -1343,7 +1399,14 @@ static struct {
2,
1
},
-   /* Supported modes with 4 outputs per external port */
+   /*
+* Modes that on Medford allocate 4 adjacent port numbers to each
+* connector, starting on cage 1.
+*  port 0 -> cage 1
+*  port 1 -> cage 1
+*  port 2 -> cage 1
+*  port 3 -> cage 1

svn commit: r341034 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:22:14 2018
New Revision: 341034
URL: https://svnweb.freebsd.org/changeset/base/341034

Log:
  sfxge(4): add Medford2 support to VPD module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18156

Modified:
  head/sys/dev/sfxge/common/ef10_vpd.c
  head/sys/dev/sfxge/common/efx_vpd.c

Modified: head/sys/dev/sfxge/common/ef10_vpd.c
==
--- head/sys/dev/sfxge/common/ef10_vpd.cTue Nov 27 12:22:03 2018
(r341033)
+++ head/sys/dev/sfxge/common/ef10_vpd.cTue Nov 27 12:22:14 2018
(r341034)
@@ -37,7 +37,7 @@ __FBSDID("$FreeBSD$");
 
 #if EFSYS_OPT_VPD
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 #include "ef10_tlv_layout.h"
 
@@ -53,7 +53,8 @@ ef10_vpd_init(
 
EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_PROBE);
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
if (enp->en_nic_cfg.enc_vpd_is_global) {
tag = TLV_TAG_GLOBAL_STATIC_VPD;
@@ -109,7 +110,8 @@ ef10_vpd_size(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
/*
 * This function returns the total size the user should allocate
@@ -142,7 +144,8 @@ ef10_vpd_read(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
if (enp->en_nic_cfg.enc_vpd_is_global) {
tag = TLV_TAG_GLOBAL_DYNAMIC_VPD;
@@ -194,7 +197,8 @@ ef10_vpd_verify(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
/*
 * Strictly you could take the view that dynamic vpd is optional.
@@ -315,7 +319,8 @@ ef10_vpd_get(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
/* Attempt to satisfy the request from svpd first */
if (enp->en_arch.ef10.ena_svpd_length > 0) {
@@ -361,7 +366,8 @@ ef10_vpd_set(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
/* If the provided (tag,keyword) exists in svpd, then it is readonly */
if (enp->en_arch.ef10.ena_svpd_length > 0) {
@@ -414,7 +420,8 @@ ef10_vpd_write(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
if (enp->en_nic_cfg.enc_vpd_is_global) {
tag = TLV_TAG_GLOBAL_DYNAMIC_VPD;
@@ -450,7 +457,8 @@ ef10_vpd_fini(
__inefx_nic_t *enp)
 {
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
if (enp->en_arch.ef10.ena_svpd_length > 0) {
EFSYS_KMEM_FREE(enp->en_esip, enp->en_arch.ef10.ena_svpd_length,
@@ -461,6 +469,6 @@ ef10_vpd_fini(
}
 }
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
 #endif /* EFSYS_OPT_VPD */

Modified: head/sys/dev/sfxge/common/efx_vpd.c
==
--- head/sys/dev/sfxge/common/efx_vpd.c Tue Nov 27 12:22:03 2018
(r341033)
+++ head/sys/dev/sfxge/common/efx_vpd.c Tue Nov 27 12:22:14 2018
(r341034)
@@ -73,7 +73,7 @@ static const efx_vpd_ops_t__efx_vpd_siena_ops = {
 
 #endif /* EFSYS_OPT_SIENA */
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 static const efx_vpd_ops_t __efx_vpd_ef10_ops = {
ef10_vpd_init,  /* evpdo_init */
@@ -88,7 +88,7 @@ 

svn commit: r341038 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:23:01 2018
New Revision: 341038
URL: https://svnweb.freebsd.org/changeset/base/341038

Log:
  sfxge(4): add method to make checksum option descriptors
  
  Submitted by:   Mark Spender 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18160

Modified:
  head/sys/dev/sfxge/common/ef10_impl.h
  head/sys/dev/sfxge/common/ef10_tx.c
  head/sys/dev/sfxge/common/efx.h
  head/sys/dev/sfxge/common/efx_impl.h
  head/sys/dev/sfxge/common/efx_tx.c

Modified: head/sys/dev/sfxge/common/ef10_impl.h
==
--- head/sys/dev/sfxge/common/ef10_impl.h   Tue Nov 27 12:22:50 2018
(r341037)
+++ head/sys/dev/sfxge/common/ef10_impl.h   Tue Nov 27 12:23:01 2018
(r341038)
@@ -793,6 +793,11 @@ ef10_tx_qdesc_vlantci_create(
__inuint16_t vlan_tci,
__out   efx_desc_t *edp);
 
+extern void
+ef10_tx_qdesc_checksum_create(
+   __inefx_txq_t *etp,
+   __inuint16_t flags,
+   __out   efx_desc_t *edp);
 
 #if EFSYS_OPT_QSTATS
 

Modified: head/sys/dev/sfxge/common/ef10_tx.c
==
--- head/sys/dev/sfxge/common/ef10_tx.c Tue Nov 27 12:22:50 2018
(r341037)
+++ head/sys/dev/sfxge/common/ef10_tx.c Tue Nov 27 12:23:01 2018
(r341038)
@@ -203,7 +203,7 @@ ef10_tx_qcreate(
 {
efx_nic_cfg_t *encp = >en_nic_cfg;
uint16_t inner_csum;
-   efx_qword_t desc;
+   efx_desc_t desc;
efx_rc_t rc;
 
_NOTE(ARGUNUSED(id))
@@ -228,19 +228,9 @@ ef10_tx_qcreate(
 * a no-op TX option descriptor. See bug29981 for details.
 */
*addedp = 1;
-   EFX_POPULATE_QWORD_6(desc,
-   ESF_DZ_TX_DESC_IS_OPT, 1,
-   ESF_DZ_TX_OPTION_TYPE, ESE_DZ_TX_OPTION_DESC_CRC_CSUM,
-   ESF_DZ_TX_OPTION_UDP_TCP_CSUM,
-   (flags & EFX_TXQ_CKSUM_TCPUDP) ? 1 : 0,
-   ESF_DZ_TX_OPTION_IP_CSUM,
-   (flags & EFX_TXQ_CKSUM_IPV4) ? 1 : 0,
-   ESF_DZ_TX_OPTION_INNER_UDP_TCP_CSUM,
-   (flags & EFX_TXQ_CKSUM_INNER_TCPUDP) ? 1 : 0,
-   ESF_DZ_TX_OPTION_INNER_IP_CSUM,
-   (flags & EFX_TXQ_CKSUM_INNER_IPV4) ? 1 : 0);
+   ef10_tx_qdesc_checksum_create(etp, flags, );
 
-   EFSYS_MEM_WRITEQ(etp->et_esmp, 0, );
+   EFSYS_MEM_WRITEQ(etp->et_esmp, 0, _eq);
ef10_tx_qpush(etp, *addedp, 0);
 
return (0);
@@ -700,6 +690,30 @@ ef10_tx_qdesc_vlantci_create(
ESE_DZ_TX_OPTION_DESC_VLAN,
ESF_DZ_TX_VLAN_OP, tci ? 1 : 0,
ESF_DZ_TX_VLAN_TAG1, tci);
+}
+
+   void
+ef10_tx_qdesc_checksum_create(
+   __inefx_txq_t *etp,
+   __inuint16_t flags,
+   __out   efx_desc_t *edp)
+{
+   _NOTE(ARGUNUSED(etp));
+
+   EFSYS_PROBE2(tx_desc_checksum_create, unsigned int, etp->et_index,
+   uint32_t, flags);
+
+   EFX_POPULATE_QWORD_6(edp->ed_eq,
+   ESF_DZ_TX_DESC_IS_OPT, 1,
+   ESF_DZ_TX_OPTION_TYPE, ESE_DZ_TX_OPTION_DESC_CRC_CSUM,
+   ESF_DZ_TX_OPTION_UDP_TCP_CSUM,
+   (flags & EFX_TXQ_CKSUM_TCPUDP) ? 1 : 0,
+   ESF_DZ_TX_OPTION_IP_CSUM,
+   (flags & EFX_TXQ_CKSUM_IPV4) ? 1 : 0,
+   ESF_DZ_TX_OPTION_INNER_UDP_TCP_CSUM,
+   (flags & EFX_TXQ_CKSUM_INNER_TCPUDP) ? 1 : 0,
+   ESF_DZ_TX_OPTION_INNER_IP_CSUM,
+   (flags & EFX_TXQ_CKSUM_INNER_IPV4) ? 1 : 0);
 }
 
 

Modified: head/sys/dev/sfxge/common/efx.h
==
--- head/sys/dev/sfxge/common/efx.h Tue Nov 27 12:22:50 2018
(r341037)
+++ head/sys/dev/sfxge/common/efx.h Tue Nov 27 12:23:01 2018
(r341038)
@@ -2280,6 +2280,12 @@ efx_tx_qdesc_vlantci_create(
__inuint16_t tci,
__out   efx_desc_t *edp);
 
+extern void
+efx_tx_qdesc_checksum_create(
+   __inefx_txq_t *etp,
+   __inuint16_t flags,
+   __out   efx_desc_t *edp);
+
 #if EFSYS_OPT_QSTATS
 
 #if EFSYS_OPT_NAMES

Modified: head/sys/dev/sfxge/common/efx_impl.h
==
--- head/sys/dev/sfxge/common/efx_impl.hTue Nov 27 12:22:50 2018
(r341037)
+++ head/sys/dev/sfxge/common/efx_impl.hTue Nov 27 12:23:01 2018
(r341038)
@@ -149,6 +149,8 @@ typedef struct efx_tx_ops_s {
efx_desc_t *, int);
void(*etxo_qdesc_vlantci_create)(efx_txq_t *, uint16_t,
efx_desc_t *);
+   void(*etxo_qdesc_checksum_create)(efx_txq_t *, uint16_t,
+   efx_desc_t *);
 #if EFSYS_OPT_QSTATS
void(*etxo_qstats_update)(efx_txq_t *,
 

svn commit: r341030 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:21:30 2018
New Revision: 341030
URL: https://svnweb.freebsd.org/changeset/base/341030

Log:
  sfxge(4): add Medford2 support to Tx module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18152

Modified:
  head/sys/dev/sfxge/common/ef10_tx.c
  head/sys/dev/sfxge/common/efx_tx.c

Modified: head/sys/dev/sfxge/common/ef10_tx.c
==
--- head/sys/dev/sfxge/common/ef10_tx.c Tue Nov 27 12:21:19 2018
(r341029)
+++ head/sys/dev/sfxge/common/ef10_tx.c Tue Nov 27 12:21:30 2018
(r341030)
@@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$");
 #include "efx_impl.h"
 
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 #if EFSYS_OPT_QSTATS
 #defineEFX_TX_QSTAT_INCR(_etp, _stat)  
\
@@ -779,4 +779,4 @@ ef10_tx_qstats_update(
 
 #endif /* EFSYS_OPT_QSTATS */
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */

Modified: head/sys/dev/sfxge/common/efx_tx.c
==
--- head/sys/dev/sfxge/common/efx_tx.c  Tue Nov 27 12:21:19 2018
(r341029)
+++ head/sys/dev/sfxge/common/efx_tx.c  Tue Nov 27 12:21:30 2018
(r341030)
@@ -204,6 +204,33 @@ static const efx_tx_ops_t  __efx_tx_medford_ops = {
 };
 #endif /* EFSYS_OPT_MEDFORD */
 
+#if EFSYS_OPT_MEDFORD2
+static const efx_tx_ops_t  __efx_tx_medford2_ops = {
+   ef10_tx_init,   /* etxo_init */
+   ef10_tx_fini,   /* etxo_fini */
+   ef10_tx_qcreate,/* etxo_qcreate */
+   ef10_tx_qdestroy,   /* etxo_qdestroy */
+   ef10_tx_qpost,  /* etxo_qpost */
+   ef10_tx_qpush,  /* etxo_qpush */
+   ef10_tx_qpace,  /* etxo_qpace */
+   ef10_tx_qflush, /* etxo_qflush */
+   ef10_tx_qenable,/* etxo_qenable */
+   ef10_tx_qpio_enable,/* etxo_qpio_enable */
+   ef10_tx_qpio_disable,   /* etxo_qpio_disable */
+   ef10_tx_qpio_write, /* etxo_qpio_write */
+   ef10_tx_qpio_post,  /* etxo_qpio_post */
+   ef10_tx_qdesc_post, /* etxo_qdesc_post */
+   ef10_tx_qdesc_dma_create,   /* etxo_qdesc_dma_create */
+   NULL,   /* etxo_qdesc_tso_create */
+   ef10_tx_qdesc_tso2_create,  /* etxo_qdesc_tso2_create */
+   ef10_tx_qdesc_vlantci_create,   /* etxo_qdesc_vlantci_create */
+#if EFSYS_OPT_QSTATS
+   ef10_tx_qstats_update,  /* etxo_qstats_update */
+#endif
+};
+#endif /* EFSYS_OPT_MEDFORD2 */
+
+
__checkReturn   efx_rc_t
 efx_tx_init(
__inefx_nic_t *enp)
@@ -242,6 +269,12 @@ efx_tx_init(
etxop = &__efx_tx_medford_ops;
break;
 #endif /* EFSYS_OPT_MEDFORD */
+
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2:
+   etxop = &__efx_tx_medford2_ops;
+   break;
+#endif /* EFSYS_OPT_MEDFORD2 */
 
default:
EFSYS_ASSERT(0);
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341028 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:21:08 2018
New Revision: 341028
URL: https://svnweb.freebsd.org/changeset/base/341028

Log:
  sfxge(4): add Medford2 support to PHY module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18150

Modified:
  head/sys/dev/sfxge/common/ef10_phy.c
  head/sys/dev/sfxge/common/efx_phy.c

Modified: head/sys/dev/sfxge/common/ef10_phy.c
==
--- head/sys/dev/sfxge/common/ef10_phy.cTue Nov 27 12:20:57 2018
(r341027)
+++ head/sys/dev/sfxge/common/ef10_phy.cTue Nov 27 12:21:08 2018
(r341028)
@@ -34,7 +34,7 @@ __FBSDID("$FreeBSD$");
 #include "efx.h"
 #include "efx_impl.h"
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 static void
 mcdi_phy_decode_cap(
@@ -633,4 +633,4 @@ ef10_bist_stop(
 
 #endif /* EFSYS_OPT_BIST */
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */

Modified: head/sys/dev/sfxge/common/efx_phy.c
==
--- head/sys/dev/sfxge/common/efx_phy.c Tue Nov 27 12:20:57 2018
(r341027)
+++ head/sys/dev/sfxge/common/efx_phy.c Tue Nov 27 12:21:08 2018
(r341028)
@@ -56,7 +56,7 @@ static const efx_phy_ops_t__efx_phy_siena_ops = {
 };
 #endif /* EFSYS_OPT_SIENA */
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 static const efx_phy_ops_t __efx_phy_ef10_ops = {
ef10_phy_power, /* epo_power */
NULL,   /* epo_reset */
@@ -73,7 +73,7 @@ static const efx_phy_ops_t__efx_phy_ef10_ops = {
ef10_bist_stop, /* epo_bist_stop */
 #endif /* EFSYS_OPT_BIST */
 };
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
__checkReturn   efx_rc_t
 efx_phy_probe(
@@ -96,16 +96,25 @@ efx_phy_probe(
epop = &__efx_phy_siena_ops;
break;
 #endif /* EFSYS_OPT_SIENA */
+
 #if EFSYS_OPT_HUNTINGTON
case EFX_FAMILY_HUNTINGTON:
epop = &__efx_phy_ef10_ops;
break;
 #endif /* EFSYS_OPT_HUNTINGTON */
+
 #if EFSYS_OPT_MEDFORD
case EFX_FAMILY_MEDFORD:
epop = &__efx_phy_ef10_ops;
break;
 #endif /* EFSYS_OPT_MEDFORD */
+
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2:
+   epop = &__efx_phy_ef10_ops;
+   break;
+#endif /* EFSYS_OPT_MEDFORD2 */
+
default:
rc = ENOTSUP;
goto fail1;
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341036 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:22:37 2018
New Revision: 341036
URL: https://svnweb.freebsd.org/changeset/base/341036

Log:
  sfxge(4): support runtime VI window size
  
  Medford2 uses a configurable VI window size, and requires
  updates to register accesses to use a runtime VI window size
  rather than the *_STEP register constants used for earlier
  controllers.
  
  Update the common code to query the VI window size via MCDI,
  and add new EFX_BAR_VI_* accessor macros for per-VI registers.
  
  The existing EFX_BAR_TBL_* macros can be used for non-VI
  register tables (and for code that can never be called for
  a Medford2 controller e.g. Siena-only code).
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18158

Modified:
  head/sys/dev/sfxge/common/ef10_ev.c
  head/sys/dev/sfxge/common/ef10_impl.h
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/ef10_rx.c
  head/sys/dev/sfxge/common/ef10_tx.c
  head/sys/dev/sfxge/common/efx.h
  head/sys/dev/sfxge/common/efx_impl.h
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c
  head/sys/dev/sfxge/common/siena_nic.c

Modified: head/sys/dev/sfxge/common/ef10_ev.c
==
--- head/sys/dev/sfxge/common/ef10_ev.c Tue Nov 27 12:22:25 2018
(r341035)
+++ head/sys/dev/sfxge/common/ef10_ev.c Tue Nov 27 12:22:37 2018
(r341036)
@@ -604,7 +604,7 @@ ef10_ev_qprime(
EFE_DD_EVQ_IND_RPTR_FLAGS_HIGH,
ERF_DD_EVQ_IND_RPTR,
(rptr >> ERF_DD_EVQ_IND_RPTR_WIDTH));
-   EFX_BAR_TBL_WRITED(enp, ER_DD_EVQ_INDIRECT, eep->ee_index,
+   EFX_BAR_VI_WRITED(enp, ER_DD_EVQ_INDIRECT, eep->ee_index,
, B_FALSE);
 
EFX_POPULATE_DWORD_2(dword,
@@ -612,11 +612,11 @@ ef10_ev_qprime(
EFE_DD_EVQ_IND_RPTR_FLAGS_LOW,
ERF_DD_EVQ_IND_RPTR,
rptr & ((1 << ERF_DD_EVQ_IND_RPTR_WIDTH) - 1));
-   EFX_BAR_TBL_WRITED(enp, ER_DD_EVQ_INDIRECT, eep->ee_index,
+   EFX_BAR_VI_WRITED(enp, ER_DD_EVQ_INDIRECT, eep->ee_index,
, B_FALSE);
} else {
EFX_POPULATE_DWORD_1(dword, ERF_DZ_EVQ_RPTR, rptr);
-   EFX_BAR_TBL_WRITED(enp, ER_DZ_EVQ_RPTR_REG, eep->ee_index,
+   EFX_BAR_VI_WRITED(enp, ER_DZ_EVQ_RPTR_REG, eep->ee_index,
, B_FALSE);
}
 
@@ -729,13 +729,13 @@ ef10_ev_qmoderate(
EFE_DD_EVQ_IND_TIMER_FLAGS,
ERF_DD_EVQ_IND_TIMER_MODE, mode,
ERF_DD_EVQ_IND_TIMER_VAL, ticks);
-   EFX_BAR_TBL_WRITED(enp, ER_DD_EVQ_INDIRECT,
+   EFX_BAR_VI_WRITED(enp, ER_DD_EVQ_INDIRECT,
eep->ee_index, , 0);
} else {
EFX_POPULATE_DWORD_2(dword,
ERF_DZ_TC_TIMER_MODE, mode,
ERF_DZ_TC_TIMER_VAL, ticks);
-   EFX_BAR_TBL_WRITED(enp, ER_DZ_EVQ_TMR_REG,
+   EFX_BAR_VI_WRITED(enp, ER_DZ_EVQ_TMR_REG,
eep->ee_index, , 0);
}
}

Modified: head/sys/dev/sfxge/common/ef10_impl.h
==
--- head/sys/dev/sfxge/common/ef10_impl.h   Tue Nov 27 12:22:25 2018
(r341035)
+++ head/sys/dev/sfxge/common/ef10_impl.h   Tue Nov 27 12:22:37 2018
(r341036)
@@ -1186,6 +1186,11 @@ extern   __checkReturn   efx_rc_t
 ef10_get_datapath_caps(
__inefx_nic_t *enp);
 
+extern __checkReturn   efx_rc_t
+ef10_get_vi_window_shift(
+   __inefx_nic_t *enp,
+   __out   uint32_t *vi_window_shiftp);
+
 extern __checkReturn   efx_rc_t
 ef10_get_privilege_mask(
__inefx_nic_t *enp,

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 12:22:25 2018
(r341035)
+++ head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 12:22:37 2018
(r341036)
@@ -1170,7 +1170,72 @@ fail1:
return (rc);
 }
 
+   __checkReturn   efx_rc_t
+ef10_get_vi_window_shift(
+   __inefx_nic_t *enp,
+   __out   uint32_t *vi_window_shiftp)
+{
+   efx_mcdi_req_t req;
+   uint8_t payload[MAX(MC_CMD_GET_CAPABILITIES_IN_LEN,
+   MC_CMD_GET_CAPABILITIES_V3_OUT_LEN)];
+   uint32_t mode;
+   efx_rc_t rc;
 
+   (void) memset(payload, 0, sizeof (payload));
+   req.emr_cmd = MC_CMD_GET_CAPABILITIES;
+   

svn commit: r341031 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:21:41 2018
New Revision: 341031
URL: https://svnweb.freebsd.org/changeset/base/341031

Log:
  sfxge(4): add Medford2 support to NVRAM module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18153

Modified:
  head/sys/dev/sfxge/common/ef10_nvram.c
  head/sys/dev/sfxge/common/efx_nvram.c

Modified: head/sys/dev/sfxge/common/ef10_nvram.c
==
--- head/sys/dev/sfxge/common/ef10_nvram.c  Tue Nov 27 12:21:30 2018
(r341030)
+++ head/sys/dev/sfxge/common/ef10_nvram.c  Tue Nov 27 12:21:41 2018
(r341031)
@@ -34,7 +34,7 @@ __FBSDID("$FreeBSD$");
 #include "efx.h"
 #include "efx_impl.h"
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 #if EFSYS_OPT_VPD || EFSYS_OPT_NVRAM
 
@@ -2179,6 +2179,20 @@ static ef10_parttbl_entry_t medford_parttbl[] = {
PARTN_MAP_ENTRY(MUM_FIRMWARE,   ALL,MUM_FIRMWARE),
 };
 
+static ef10_parttbl_entry_t medford2_parttbl[] = {
+   /*  partn   ports   nvtype */
+   PARTN_MAP_ENTRY(MC_FIRMWARE,ALL,MC_FIRMWARE),
+   PARTN_MAP_ENTRY(MC_FIRMWARE_BACKUP, ALL,MC_GOLDEN),
+   PARTN_MAP_ENTRY(EXPANSION_ROM,  ALL,BOOTROM),
+   PARTN_MAP_ENTRY(EXPROM_CONFIG,  ALL,BOOTROM_CFG),
+   PARTN_MAP_ENTRY(DYNAMIC_CONFIG, ALL,DYNAMIC_CFG),
+   PARTN_MAP_ENTRY(FPGA,   ALL,FPGA),
+   PARTN_MAP_ENTRY(FPGA_BACKUP,ALL,FPGA_BACKUP),
+   PARTN_MAP_ENTRY(LICENSE,ALL,LICENSE),
+   PARTN_MAP_ENTRY(EXPANSION_UEFI, ALL,UEFIROM),
+   PARTN_MAP_ENTRY(MUM_FIRMWARE,   ALL,MUM_FIRMWARE),
+};
+
 static __checkReturn   efx_rc_t
 ef10_parttbl_get(
__inefx_nic_t *enp,
@@ -2196,6 +2210,11 @@ ef10_parttbl_get(
*parttbl_rowsp = EFX_ARRAY_SIZE(medford_parttbl);
break;
 
+   case EFX_FAMILY_MEDFORD2:
+   *parttblp = medford2_parttbl;
+   *parttbl_rowsp = EFX_ARRAY_SIZE(medford2_parttbl);
+   break;
+
default:
EFSYS_ASSERT(B_FALSE);
return (EINVAL);
@@ -2389,4 +2408,4 @@ fail1:
 
 #endif /* EFSYS_OPT_NVRAM */
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */

Modified: head/sys/dev/sfxge/common/efx_nvram.c
==
--- head/sys/dev/sfxge/common/efx_nvram.c   Tue Nov 27 12:21:30 2018
(r341030)
+++ head/sys/dev/sfxge/common/efx_nvram.c   Tue Nov 27 12:21:41 2018
(r341031)
@@ -59,7 +59,7 @@ static const efx_nvram_ops_t  __efx_nvram_siena_ops = {
 
 #endif /* EFSYS_OPT_SIENA */
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 static const efx_nvram_ops_t   __efx_nvram_ef10_ops = {
 #if EFSYS_OPT_DIAG
@@ -78,7 +78,7 @@ static const efx_nvram_ops_t  __efx_nvram_ef10_ops = {
ef10_nvram_buffer_validate, /* envo_buffer_validate */
 };
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
__checkReturn   efx_rc_t
 efx_nvram_init(
@@ -109,6 +109,12 @@ efx_nvram_init(
envop = &__efx_nvram_ef10_ops;
break;
 #endif /* EFSYS_OPT_MEDFORD */
+
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2:
+   envop = &__efx_nvram_ef10_ops;
+   break;
+#endif /* EFSYS_OPT_MEDFORD2 */
 
default:
EFSYS_ASSERT(0);
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341033 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:22:03 2018
New Revision: 341033
URL: https://svnweb.freebsd.org/changeset/base/341033

Log:
  sfxge(4): add Medford2 support to BOOTCFG module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18155

Modified:
  head/sys/dev/sfxge/common/efx_bootcfg.c

Modified: head/sys/dev/sfxge/common/efx_bootcfg.c
==
--- head/sys/dev/sfxge/common/efx_bootcfg.c Tue Nov 27 12:21:53 2018
(r341032)
+++ head/sys/dev/sfxge/common/efx_bootcfg.c Tue Nov 27 12:22:03 2018
(r341033)
@@ -97,6 +97,20 @@ efx_bootcfg_sector_info(
}
 #endif /* EFSYS_OPT_MEDFORD */
 
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2: {
+   /* Shared partition (array indexed by PF) */
+   max_size = BOOTCFG_PER_PF;
+   count = BOOTCFG_PF_COUNT;
+   if (pf >= count) {
+   rc = EINVAL;
+   goto fail3;
+   }
+   offset = max_size * pf;
+   break;
+   }
+#endif /* EFSYS_OPT_MEDFORD2 */
+
default:
EFSYS_ASSERT(0);
rc = ENOTSUP;
@@ -111,6 +125,10 @@ efx_bootcfg_sector_info(
 
return (0);
 
+#if EFSYS_OPT_MEDFORD2
+fail3:
+   EFSYS_PROBE(fail3);
+#endif
 #if EFSYS_OPT_MEDFORD
 fail2:
EFSYS_PROBE(fail2);
@@ -306,7 +324,7 @@ efx_bootcfg_read(
efx_rc_t rc;
uint32_t sector_number;
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
sector_number = enp->en_nic_cfg.enc_pf;
 #else
sector_number = 0;
@@ -447,7 +465,7 @@ efx_bootcfg_write(
efx_rc_t rc;
uint32_t sector_number;
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
sector_number = enp->en_nic_cfg.enc_pf;
 #else
sector_number = 0;
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341029 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:21:19 2018
New Revision: 341029
URL: https://svnweb.freebsd.org/changeset/base/341029

Log:
  sfxge(4): add Medford2 support to Rx module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18151

Modified:
  head/sys/dev/sfxge/common/ef10_rx.c
  head/sys/dev/sfxge/common/efx_rx.c

Modified: head/sys/dev/sfxge/common/ef10_rx.c
==
--- head/sys/dev/sfxge/common/ef10_rx.c Tue Nov 27 12:21:08 2018
(r341028)
+++ head/sys/dev/sfxge/common/ef10_rx.c Tue Nov 27 12:21:19 2018
(r341029)
@@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$");
 #include "efx_impl.h"
 
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 
 static __checkReturn   efx_rc_t
@@ -1114,4 +1114,4 @@ ef10_rx_fini(
 #endif /* EFSYS_OPT_RX_SCALE */
 }
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */

Modified: head/sys/dev/sfxge/common/efx_rx.c
==
--- head/sys/dev/sfxge/common/efx_rx.c  Tue Nov 27 12:21:08 2018
(r341028)
+++ head/sys/dev/sfxge/common/efx_rx.c  Tue Nov 27 12:21:19 2018
(r341029)
@@ -180,7 +180,7 @@ static const efx_rx_ops_t __efx_rx_siena_ops = {
 };
 #endif /* EFSYS_OPT_SIENA */
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 static const efx_rx_ops_t __efx_rx_ef10_ops = {
ef10_rx_init,   /* erxo_init */
ef10_rx_fini,   /* erxo_fini */
@@ -207,7 +207,7 @@ static const efx_rx_ops_t __efx_rx_ef10_ops = {
ef10_rx_qcreate,/* erxo_qcreate */
ef10_rx_qdestroy,   /* erxo_qdestroy */
 };
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
 
__checkReturn   efx_rc_t
@@ -248,6 +248,12 @@ efx_rx_init(
erxop = &__efx_rx_ef10_ops;
break;
 #endif /* EFSYS_OPT_MEDFORD */
+
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2:
+   erxop = &__efx_rx_ef10_ops;
+   break;
+#endif /* EFSYS_OPT_MEDFORD2 */
 
default:
EFSYS_ASSERT(0);
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341026 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:20:46 2018
New Revision: 341026
URL: https://svnweb.freebsd.org/changeset/base/341026

Log:
  sfxge(4): add Medford2 support to MAC module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18148

Modified:
  head/sys/dev/sfxge/common/ef10_mac.c
  head/sys/dev/sfxge/common/efx_impl.h
  head/sys/dev/sfxge/common/efx_mac.c

Modified: head/sys/dev/sfxge/common/ef10_mac.c
==
--- head/sys/dev/sfxge/common/ef10_mac.cTue Nov 27 12:20:35 2018
(r341025)
+++ head/sys/dev/sfxge/common/ef10_mac.cTue Nov 27 12:20:46 2018
(r341026)
@@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$");
 #include "efx_impl.h"
 
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
__checkReturn   efx_rc_t
 ef10_mac_poll(
@@ -383,7 +383,8 @@ ef10_mac_multicast_list_set(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
if ((rc = emop->emo_reconfigure(enp)) != 0)
goto fail1;
@@ -897,4 +898,4 @@ ef10_mac_stats_update(
 
 #endif /* EFSYS_OPT_MAC_STATS */
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */

Modified: head/sys/dev/sfxge/common/efx_impl.h
==
--- head/sys/dev/sfxge/common/efx_impl.hTue Nov 27 12:20:35 2018
(r341025)
+++ head/sys/dev/sfxge/common/efx_impl.hTue Nov 27 12:20:46 2018
(r341026)
@@ -93,6 +93,7 @@ typedef enum efx_mac_type_e {
EFX_MAC_SIENA,
EFX_MAC_HUNTINGTON,
EFX_MAC_MEDFORD,
+   EFX_MAC_MEDFORD2,
EFX_MAC_NTYPES
 } efx_mac_type_t;
 

Modified: head/sys/dev/sfxge/common/efx_mac.c
==
--- head/sys/dev/sfxge/common/efx_mac.c Tue Nov 27 12:20:35 2018
(r341025)
+++ head/sys/dev/sfxge/common/efx_mac.c Tue Nov 27 12:20:46 2018
(r341026)
@@ -68,7 +68,7 @@ static const efx_mac_ops_t__efx_mac_siena_ops = {
 };
 #endif /* EFSYS_OPT_SIENA */
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 static const efx_mac_ops_t __efx_mac_ef10_ops = {
ef10_mac_poll,  /* emo_poll */
ef10_mac_up,/* emo_up */
@@ -91,7 +91,7 @@ static const efx_mac_ops_t__efx_mac_ef10_ops = {
ef10_mac_stats_update   /* emo_stats_update */
 #endif /* EFSYS_OPT_MAC_STATS */
 };
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
__checkReturn   efx_rc_t
 efx_mac_pdu_set(
@@ -854,6 +854,13 @@ efx_mac_select(
type = EFX_MAC_MEDFORD;
break;
 #endif /* EFSYS_OPT_MEDFORD */
+
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2:
+   emop = &__efx_mac_ef10_ops;
+   type = EFX_MAC_MEDFORD2;
+   break;
+#endif /* EFSYS_OPT_MEDFORD2 */
 
default:
rc = EINVAL;
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341032 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:21:53 2018
New Revision: 341032
URL: https://svnweb.freebsd.org/changeset/base/341032

Log:
  sfxge(4): add Medford2 support to SRAM module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18154

Modified:
  head/sys/dev/sfxge/common/efx_sram.c

Modified: head/sys/dev/sfxge/common/efx_sram.c
==
--- head/sys/dev/sfxge/common/efx_sram.cTue Nov 27 12:21:41 2018
(r341031)
+++ head/sys/dev/sfxge/common/efx_sram.cTue Nov 27 12:21:53 2018
(r341032)
@@ -54,9 +54,10 @@ efx_sram_buf_tbl_set(
EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_NIC);
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
if (enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD) {
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2) {
/*
 * FIXME: the efx_sram_buf_tbl_*() functionality needs to be
 * pulled inside the Falcon/Siena queue create/destroy code,
@@ -68,7 +69,7 @@ efx_sram_buf_tbl_set(
 
return (0);
}
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
if (stop >= EFX_BUF_TBL_SIZE) {
rc = EFBIG;
@@ -176,9 +177,10 @@ efx_sram_buf_tbl_clear(
EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_NIC);
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
if (enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD) {
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2) {
/*
 * FIXME: the efx_sram_buf_tbl_*() functionality needs to be
 * pulled inside the Falcon/Siena queue create/destroy code,
@@ -190,7 +192,7 @@ efx_sram_buf_tbl_clear(
 
return;
}
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
EFSYS_ASSERT3U(stop, <, EFX_BUF_TBL_SIZE);
 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341035 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:22:25 2018
New Revision: 341035
URL: https://svnweb.freebsd.org/changeset/base/341035

Log:
  sfxge(4): add Medford2 support to MON module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18157

Modified:
  head/sys/dev/sfxge/common/mcdi_mon.c

Modified: head/sys/dev/sfxge/common/mcdi_mon.c
==
--- head/sys/dev/sfxge/common/mcdi_mon.cTue Nov 27 12:22:14 2018
(r341034)
+++ head/sys/dev/sfxge/common/mcdi_mon.cTue Nov 27 12:22:25 2018
(r341035)
@@ -504,6 +504,11 @@ mcdi_mon_cfg_build(
encp->enc_mon_type = EFX_MON_SFC92X0;
break;
 #endif
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2:
+   encp->enc_mon_type = EFX_MON_SFC92X0;
+   break;
+#endif
default:
rc = EINVAL;
goto fail1;
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341024 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:20:23 2018
New Revision: 341024
URL: https://svnweb.freebsd.org/changeset/base/341024

Log:
  sfxge(4): add Medford2 support to FILTER module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18146

Modified:
  head/sys/dev/sfxge/common/ef10_filter.c
  head/sys/dev/sfxge/common/efx_filter.c

Modified: head/sys/dev/sfxge/common/ef10_filter.c
==
--- head/sys/dev/sfxge/common/ef10_filter.c Tue Nov 27 12:20:12 2018
(r341023)
+++ head/sys/dev/sfxge/common/ef10_filter.c Tue Nov 27 12:20:23 2018
(r341024)
@@ -34,7 +34,7 @@ __FBSDID("$FreeBSD$");
 #include "efx.h"
 #include "efx_impl.h"
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 #if EFSYS_OPT_FILTER
 
@@ -122,7 +122,8 @@ ef10_filter_init(
ef10_filter_table_t *eftp;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
 #defineMATCH_MASK(match) (EFX_MASK32(match) << EFX_LOW_BIT(match))
EFX_STATIC_ASSERT(EFX_FILTER_MATCH_REM_HOST ==
@@ -177,7 +178,8 @@ ef10_filter_fini(
__inefx_nic_t *enp)
 {
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
if (enp->en_filter.ef_ef10_filter_table != NULL) {
EFSYS_KMEM_FREE(enp->en_esip, sizeof (ef10_filter_table_t),
@@ -522,7 +524,8 @@ ef10_filter_restore(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
for (tbl_id = 0; tbl_id < EFX_EF10_FILTER_TBL_ROWS; tbl_id++) {
 
@@ -597,7 +600,8 @@ ef10_filter_add_internal(
boolean_t locked = B_FALSE;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
hash = ef10_filter_hash(spec);
 
@@ -869,7 +873,8 @@ ef10_filter_delete(
boolean_t locked = B_FALSE;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
hash = ef10_filter_hash(spec);
 
@@ -1663,4 +1668,4 @@ ef10_filter_default_rxq_clear(
 
 #endif /* EFSYS_OPT_FILTER */
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */

Modified: head/sys/dev/sfxge/common/efx_filter.c
==
--- head/sys/dev/sfxge/common/efx_filter.c  Tue Nov 27 12:20:12 2018
(r341023)
+++ head/sys/dev/sfxge/common/efx_filter.c  Tue Nov 27 12:20:23 2018
(r341024)
@@ -85,7 +85,7 @@ static const efx_filter_ops_t __efx_filter_siena_ops =
 };
 #endif /* EFSYS_OPT_SIENA */
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 static const efx_filter_ops_t  __efx_filter_ef10_ops = {
ef10_filter_init,   /* efo_init */
ef10_filter_fini,   /* efo_fini */
@@ -95,7 +95,7 @@ static const efx_filter_ops_t __efx_filter_ef10_ops = 
ef10_filter_supported_filters,  /* efo_supported_filters */
ef10_filter_reconfigure,/* efo_reconfigure */
 };
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
__checkReturn   efx_rc_t
 efx_filter_insert(
@@ -173,6 +173,12 @@ efx_filter_init(
efop = &__efx_filter_ef10_ops;
break;
 #endif /* EFSYS_OPT_MEDFORD */
+
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2:
+   efop = &__efx_filter_ef10_ops;
+   break;
+#endif /* EFSYS_OPT_MEDFORD2 */
 
default:
EFSYS_ASSERT(0);
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341022 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:20:01 2018
New Revision: 341022
URL: https://svnweb.freebsd.org/changeset/base/341022

Log:
  sfxge(4): move RxDP config get to EF10 NIC code
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18144

Modified:
  head/sys/dev/sfxge/common/ef10_impl.h
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_impl.h
==
--- head/sys/dev/sfxge/common/ef10_impl.h   Tue Nov 27 12:19:49 2018
(r341021)
+++ head/sys/dev/sfxge/common/ef10_impl.h   Tue Nov 27 12:20:01 2018
(r341022)
@@ -1171,6 +1171,11 @@ efx_mcdi_get_clock(
 
 
 extern __checkReturn   efx_rc_t
+efx_mcdi_get_rxdp_config(
+   __inefx_nic_t *enp,
+   __out   uint32_t *end_paddingp);
+
+extern __checkReturn   efx_rc_t
 efx_mcdi_get_vector_cfg(
__inefx_nic_t *enp,
__out_opt   uint32_t *vec_basep,

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 12:19:49 2018
(r341021)
+++ head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 12:20:01 2018
(r341022)
@@ -451,6 +451,64 @@ fail1:
 }
 
__checkReturn   efx_rc_t
+efx_mcdi_get_rxdp_config(
+   __inefx_nic_t *enp,
+   __out   uint32_t *end_paddingp)
+{
+   efx_mcdi_req_t req;
+   uint8_t payload[MAX(MC_CMD_GET_RXDP_CONFIG_IN_LEN,
+   MC_CMD_GET_RXDP_CONFIG_OUT_LEN)];
+   uint32_t end_padding;
+   efx_rc_t rc;
+
+   memset(payload, 0, sizeof (payload));
+   req.emr_cmd = MC_CMD_GET_RXDP_CONFIG;
+   req.emr_in_buf = payload;
+   req.emr_in_length = MC_CMD_GET_RXDP_CONFIG_IN_LEN;
+   req.emr_out_buf = payload;
+   req.emr_out_length = MC_CMD_GET_RXDP_CONFIG_OUT_LEN;
+
+   efx_mcdi_execute(enp, );
+   if (req.emr_rc != 0) {
+   rc = req.emr_rc;
+   goto fail1;
+   }
+
+   if (MCDI_OUT_DWORD_FIELD(req, GET_RXDP_CONFIG_OUT_DATA,
+   GET_RXDP_CONFIG_OUT_PAD_HOST_DMA) == 0) {
+   /* RX DMA end padding is disabled */
+   end_padding = 0;
+   } else {
+   switch (MCDI_OUT_DWORD_FIELD(req, GET_RXDP_CONFIG_OUT_DATA,
+   GET_RXDP_CONFIG_OUT_PAD_HOST_LEN)) {
+   case MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_64:
+   end_padding = 64;
+   break;
+   case MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_128:
+   end_padding = 128;
+   break;
+   case MC_CMD_SET_RXDP_CONFIG_IN_PAD_HOST_256:
+   end_padding = 256;
+   break;
+   default:
+   rc = ENOTSUP;
+   goto fail2;
+   }
+   }
+
+   *end_paddingp = end_padding;
+
+   return (0);
+
+fail2:
+   EFSYS_PROBE(fail2);
+fail1:
+   EFSYS_PROBE1(fail1, efx_rc_t, rc);
+
+   return (rc);
+}
+
+   __checkReturn   efx_rc_t
 efx_mcdi_get_vector_cfg(
__inefx_nic_t *enp,
__out_opt   uint32_t *vec_basep,

Modified: head/sys/dev/sfxge/common/medford2_nic.c
==
--- head/sys/dev/sfxge/common/medford2_nic.cTue Nov 27 12:19:49 2018
(r341021)
+++ head/sys/dev/sfxge/common/medford2_nic.cTue Nov 27 12:20:01 2018
(r341022)
@@ -40,64 +40,6 @@ __FBSDID("$FreeBSD$");
 #if EFSYS_OPT_MEDFORD2
 
 static __checkReturn   efx_rc_t
-efx_mcdi_get_rxdp_config(
-   __inefx_nic_t *enp,
-   __out   uint32_t *end_paddingp)
-{
-   efx_mcdi_req_t req;
-   uint8_t payload[MAX(MC_CMD_GET_RXDP_CONFIG_IN_LEN,
-   MC_CMD_GET_RXDP_CONFIG_OUT_LEN)];
-   uint32_t end_padding;
-   efx_rc_t rc;
-
-   memset(payload, 0, sizeof (payload));
-   req.emr_cmd = MC_CMD_GET_RXDP_CONFIG;
-   req.emr_in_buf = payload;
-   req.emr_in_length = MC_CMD_GET_RXDP_CONFIG_IN_LEN;
-   req.emr_out_buf = payload;
-   req.emr_out_length = MC_CMD_GET_RXDP_CONFIG_OUT_LEN;
-
-   efx_mcdi_execute(enp, );
-   if (req.emr_rc != 0) {
-   rc = req.emr_rc;
-   goto fail1;
-   }
-
-   if (MCDI_OUT_DWORD_FIELD(req, GET_RXDP_CONFIG_OUT_DATA,
-   GET_RXDP_CONFIG_OUT_PAD_HOST_DMA) == 0) {
-   /* RX DMA end padding is disabled */
-   end_padding = 0;
-   } else {
-   switch (MCDI_OUT_DWORD_FIELD(req, 

svn commit: r341027 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:20:57 2018
New Revision: 341027
URL: https://svnweb.freebsd.org/changeset/base/341027

Log:
  sfxge(4): add Medford2 support to MCDI module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18149

Modified:
  head/sys/dev/sfxge/common/ef10_mcdi.c
  head/sys/dev/sfxge/common/efx_mcdi.c
  head/sys/dev/sfxge/common/efx_mcdi.h

Modified: head/sys/dev/sfxge/common/ef10_mcdi.c
==
--- head/sys/dev/sfxge/common/ef10_mcdi.c   Tue Nov 27 12:20:46 2018
(r341026)
+++ head/sys/dev/sfxge/common/ef10_mcdi.c   Tue Nov 27 12:20:57 2018
(r341027)
@@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$");
 #include "efx_impl.h"
 
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 #if EFSYS_OPT_MCDI
 
@@ -55,7 +55,8 @@ ef10_mcdi_init(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
EFSYS_ASSERT(enp->en_features & EFX_FEATURE_MCDI_DMA);
 
/*
@@ -162,7 +163,8 @@ ef10_mcdi_send_request(
unsigned int pos;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
/* Write the header */
for (pos = 0; pos < hdr_len; pos += sizeof (efx_dword_t)) {
@@ -281,7 +283,8 @@ ef10_mcdi_feature_supported(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
/*
 * Use privilege mask state at MCDI attach.
@@ -342,4 +345,4 @@ fail1:
 
 #endif /* EFSYS_OPT_MCDI */
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */

Modified: head/sys/dev/sfxge/common/efx_mcdi.c
==
--- head/sys/dev/sfxge/common/efx_mcdi.cTue Nov 27 12:20:46 2018
(r341026)
+++ head/sys/dev/sfxge/common/efx_mcdi.cTue Nov 27 12:20:57 2018
(r341027)
@@ -74,7 +74,7 @@ static const efx_mcdi_ops_t   __efx_mcdi_siena_ops = {
 
 #endif /* EFSYS_OPT_SIENA */
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 static const efx_mcdi_ops_t__efx_mcdi_ef10_ops = {
ef10_mcdi_init, /* emco_init */
@@ -87,7 +87,7 @@ static const efx_mcdi_ops_t   __efx_mcdi_ef10_ops = {
ef10_mcdi_get_timeout,  /* emco_get_timeout */
 };
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
 
 
@@ -121,6 +121,12 @@ efx_mcdi_init(
break;
 #endif /* EFSYS_OPT_MEDFORD */
 
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2:
+   emcop = &__efx_mcdi_ef10_ops;
+   break;
+#endif /* EFSYS_OPT_MEDFORD2 */
+
default:
EFSYS_ASSERT(0);
rc = ENOTSUP;
@@ -1650,7 +1656,7 @@ fail1:
 
 #if EFSYS_OPT_BIST
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 /*
  * Enter bist offline mode. This is a fw mode which puts the NIC into a state
  * where memory BIST tests can be run and not much else can interfere or 
happen.
@@ -1686,7 +1692,7 @@ fail1:
 
return (rc);
 }
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
__checkReturn   efx_rc_t
 efx_mcdi_bist_start(
@@ -1950,7 +1956,7 @@ fail1:
 
 #endif /* EFSYS_OPT_MAC_STATS */
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 /*
  * This function returns the pf and vf number of a function.  If it is a pf the
@@ -2049,7 +2055,7 @@ fail1:
return (rc);
 }
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
__checkReturn   efx_rc_t
 efx_mcdi_set_workaround(

Modified: head/sys/dev/sfxge/common/efx_mcdi.h
==
--- head/sys/dev/sfxge/common/efx_mcdi.hTue Nov 27 12:20:46 2018
(r341026)
+++ head/sys/dev/sfxge/common/efx_mcdi.hTue Nov 27 12:20:57 2018
(r341027)
@@ -194,11 +194,11 @@ 

svn commit: r341025 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:20:35 2018
New Revision: 341025
URL: https://svnweb.freebsd.org/changeset/base/341025

Log:
  sfxge(4): add Medford2 support to INTR module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18147

Modified:
  head/sys/dev/sfxge/common/ef10_intr.c
  head/sys/dev/sfxge/common/efx_intr.c

Modified: head/sys/dev/sfxge/common/ef10_intr.c
==
--- head/sys/dev/sfxge/common/ef10_intr.c   Tue Nov 27 12:20:23 2018
(r341024)
+++ head/sys/dev/sfxge/common/ef10_intr.c   Tue Nov 27 12:20:35 2018
(r341025)
@@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$");
 #include "efx_impl.h"
 
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
__checkReturn   efx_rc_t
 ef10_intr_init(
@@ -83,7 +83,8 @@ efx_mcdi_trigger_interrupt(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
if (level >= enp->en_nic_cfg.enc_intr_limit) {
rc = EINVAL;
@@ -156,7 +157,8 @@ ef10_intr_status_line(
efx_dword_t dword;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
/* Read the queue mask and implicitly acknowledge the interrupt. */
EFX_BAR_READD(enp, ER_DZ_BIU_INT_ISR_REG, , B_FALSE);
@@ -174,7 +176,8 @@ ef10_intr_status_message(
__out   boolean_t *fatalp)
 {
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
_NOTE(ARGUNUSED(enp, message))
 
@@ -197,4 +200,4 @@ ef10_intr_fini(
_NOTE(ARGUNUSED(enp))
 }
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */

Modified: head/sys/dev/sfxge/common/efx_intr.c
==
--- head/sys/dev/sfxge/common/efx_intr.cTue Nov 27 12:20:23 2018
(r341024)
+++ head/sys/dev/sfxge/common/efx_intr.cTue Nov 27 12:20:35 2018
(r341025)
@@ -104,7 +104,7 @@ static const efx_intr_ops_t __efx_intr_siena_ops = {
 };
 #endif /* EFSYS_OPT_SIENA */
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 static const efx_intr_ops_t__efx_intr_ef10_ops = {
ef10_intr_init, /* eio_init */
ef10_intr_enable,   /* eio_enable */
@@ -116,7 +116,7 @@ static const efx_intr_ops_t __efx_intr_ef10_ops = {
ef10_intr_fatal,/* eio_fatal */
ef10_intr_fini, /* eio_fini */
 };
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
__checkReturn   efx_rc_t
 efx_intr_init(
@@ -160,6 +160,12 @@ efx_intr_init(
eiop = &__efx_intr_ef10_ops;
break;
 #endif /* EFSYS_OPT_MEDFORD */
+
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2:
+   eiop = &__efx_intr_ef10_ops;
+   break;
+#endif /* EFSYS_OPT_MEDFORD2 */
 
default:
EFSYS_ASSERT(B_FALSE);
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341023 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:20:12 2018
New Revision: 341023
URL: https://svnweb.freebsd.org/changeset/base/341023

Log:
  sfxge(4): add Medford2 support to EV module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18145

Modified:
  head/sys/dev/sfxge/common/ef10_ev.c
  head/sys/dev/sfxge/common/efx_ev.c

Modified: head/sys/dev/sfxge/common/ef10_ev.c
==
--- head/sys/dev/sfxge/common/ef10_ev.c Tue Nov 27 12:20:01 2018
(r341022)
+++ head/sys/dev/sfxge/common/ef10_ev.c Tue Nov 27 12:20:12 2018
(r341023)
@@ -37,7 +37,7 @@ __FBSDID("$FreeBSD$");
 #include "mcdi_mon.h"
 #endif
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 #if EFSYS_OPT_QSTATS
 #defineEFX_EV_QSTAT_INCR(_eep, _stat)  
\
@@ -576,7 +576,8 @@ ef10_ev_qdestroy(
efx_nic_t *enp = eep->ee_enp;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
(void) efx_mcdi_fini_evq(enp, eep->ee_index);
 }
@@ -1415,4 +1416,4 @@ ef10_ev_rxlabel_fini(
 #endif
 }
 
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */

Modified: head/sys/dev/sfxge/common/efx_ev.c
==
--- head/sys/dev/sfxge/common/efx_ev.c  Tue Nov 27 12:20:01 2018
(r341022)
+++ head/sys/dev/sfxge/common/efx_ev.c  Tue Nov 27 12:20:12 2018
(r341023)
@@ -120,7 +120,7 @@ static const efx_ev_ops_t   __efx_ev_siena_ops = {
 };
 #endif /* EFSYS_OPT_SIENA */
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 static const efx_ev_ops_t  __efx_ev_ef10_ops = {
ef10_ev_init,   /* eevo_init */
ef10_ev_fini,   /* eevo_fini */
@@ -133,7 +133,7 @@ static const efx_ev_ops_t   __efx_ev_ef10_ops = {
ef10_ev_qstats_update,  /* eevo_qstats_update */
 #endif
 };
-#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
+#endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2 */
 
 
__checkReturn   efx_rc_t
@@ -169,6 +169,12 @@ efx_ev_init(
eevop = &__efx_ev_ef10_ops;
break;
 #endif /* EFSYS_OPT_MEDFORD */
+
+#if EFSYS_OPT_MEDFORD2
+   case EFX_FAMILY_MEDFORD2:
+   eevop = &__efx_ev_ef10_ops;
+   break;
+#endif /* EFSYS_OPT_MEDFORD2 */
 
default:
EFSYS_ASSERT(0);
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341021 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:19:49 2018
New Revision: 341021
URL: https://svnweb.freebsd.org/changeset/base/341021

Log:
  sfxge(4): correct PIO buffer dimensions for Medford2
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18143

Modified:
  head/sys/dev/sfxge/common/ef10_impl.h
  head/sys/dev/sfxge/common/hunt_nic.c
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
  head/sys/dev/sfxge/common/medford_nic.c

Modified: head/sys/dev/sfxge/common/ef10_impl.h
==
--- head/sys/dev/sfxge/common/ef10_impl.h   Tue Nov 27 12:14:16 2018
(r341020)
+++ head/sys/dev/sfxge/common/ef10_impl.h   Tue Nov 27 12:19:49 2018
(r341021)
@@ -37,13 +37,27 @@
 extern "C" {
 #endif
 
-#if (EFSYS_OPT_HUNTINGTON && EFSYS_OPT_MEDFORD)
-#defineEF10_MAX_PIOBUF_NBUFS   MAX(HUNT_PIOBUF_NBUFS, 
MEDFORD_PIOBUF_NBUFS)
-#elif EFSYS_OPT_HUNTINGTON
-#defineEF10_MAX_PIOBUF_NBUFS   HUNT_PIOBUF_NBUFS
-#elif EFSYS_OPT_MEDFORD
-#defineEF10_MAX_PIOBUF_NBUFS   MEDFORD_PIOBUF_NBUFS
-#endif
+
+/* Number of hardware PIO buffers (for compile-time resource dimensions) */
+#defineEF10_MAX_PIOBUF_NBUFS   (16)
+
+#if EFSYS_OPT_HUNTINGTON
+# if (EF10_MAX_PIOBUF_NBUFS < HUNT_PIOBUF_NBUFS)
+#  error "EF10_MAX_PIOBUF_NBUFS too small"
+# endif
+#endif /* EFSYS_OPT_HUNTINGTON */
+#if EFSYS_OPT_MEDFORD
+# if (EF10_MAX_PIOBUF_NBUFS < MEDFORD_PIOBUF_NBUFS)
+#  error "EF10_MAX_PIOBUF_NBUFS too small"
+# endif
+#endif /* EFSYS_OPT_MEDFORD */
+#if EFSYS_OPT_MEDFORD2
+# if (EF10_MAX_PIOBUF_NBUFS < MEDFORD2_PIOBUF_NBUFS)
+#  error "EF10_MAX_PIOBUF_NBUFS too small"
+# endif
+#endif /* EFSYS_OPT_MEDFORD2 */
+
+
 
 /*
  * FIXME: This is just a power of 2 which fits in an MCDI v1 message, and could

Modified: head/sys/dev/sfxge/common/hunt_nic.c
==
--- head/sys/dev/sfxge/common/hunt_nic.cTue Nov 27 12:14:16 2018
(r341020)
+++ head/sys/dev/sfxge/common/hunt_nic.cTue Nov 27 12:19:49 2018
(r341021)
@@ -333,6 +333,7 @@ hunt_board_cfg(
 
encp->enc_buftbl_limit = 0x;
 
+   EFX_STATIC_ASSERT(HUNT_PIOBUF_NBUFS <= EF10_MAX_PIOBUF_NBUFS);
encp->enc_piobuf_limit = HUNT_PIOBUF_NBUFS;
encp->enc_piobuf_size = HUNT_PIOBUF_SIZE;
encp->enc_piobuf_min_alloc_size = HUNT_MIN_PIO_ALLOC_SIZE;

Modified: head/sys/dev/sfxge/common/medford2_nic.c
==
--- head/sys/dev/sfxge/common/medford2_nic.cTue Nov 27 12:14:16 2018
(r341020)
+++ head/sys/dev/sfxge/common/medford2_nic.cTue Nov 27 12:19:49 2018
(r341021)
@@ -336,6 +336,7 @@ medford2_board_cfg(
 
encp->enc_buftbl_limit = 0x;
 
+   EFX_STATIC_ASSERT(MEDFORD2_PIOBUF_NBUFS <= EF10_MAX_PIOBUF_NBUFS);
encp->enc_piobuf_limit = MEDFORD2_PIOBUF_NBUFS;
encp->enc_piobuf_size = MEDFORD2_PIOBUF_SIZE;
encp->enc_piobuf_min_alloc_size = MEDFORD2_MIN_PIO_ALLOC_SIZE;

Modified: head/sys/dev/sfxge/common/medford_nic.c
==
--- head/sys/dev/sfxge/common/medford_nic.c Tue Nov 27 12:14:16 2018
(r341020)
+++ head/sys/dev/sfxge/common/medford_nic.c Tue Nov 27 12:19:49 2018
(r341021)
@@ -332,6 +332,7 @@ medford_board_cfg(
 
encp->enc_buftbl_limit = 0x;
 
+   EFX_STATIC_ASSERT(MEDFORD_PIOBUF_NBUFS <= EF10_MAX_PIOBUF_NBUFS);
encp->enc_piobuf_limit = MEDFORD_PIOBUF_NBUFS;
encp->enc_piobuf_size = MEDFORD_PIOBUF_SIZE;
encp->enc_piobuf_min_alloc_size = MEDFORD_MIN_PIO_ALLOC_SIZE;
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341019 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:14:05 2018
New Revision: 341019
URL: https://svnweb.freebsd.org/changeset/base/341019

Log:
  sfxge(4): put Siena-specific code under its efsys option
  
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18141

Modified:
  head/sys/dev/sfxge/common/efx_impl.h

Modified: head/sys/dev/sfxge/common/efx_impl.h
==
--- head/sys/dev/sfxge/common/efx_impl.hTue Nov 27 12:13:54 2018
(r341018)
+++ head/sys/dev/sfxge/common/efx_impl.hTue Nov 27 12:14:05 2018
(r341019)
@@ -373,6 +373,8 @@ typedef struct efx_nic_ops_s {
 
 #if EFSYS_OPT_FILTER
 
+#if EFSYS_OPT_SIENA
+
 typedef struct siena_filter_spec_s {
uint8_t sfs_type;
uint32_tsfs_flags;
@@ -418,6 +420,8 @@ typedef struct siena_filter_s {
unsigned intsf_depth[EFX_SIENA_FILTER_NTYPES];
 } siena_filter_t;
 
+#endif /* EFSYS_OPT_SIENA */
+
 typedef struct efx_filter_s {
 #if EFSYS_OPT_SIENA
siena_filter_t  *ef_siena_filter;
@@ -427,10 +431,14 @@ typedef struct efx_filter_s {
 #endif /* EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD */
 } efx_filter_t;
 
+#if EFSYS_OPT_SIENA
+
 extern void
 siena_filter_tbl_clear(
__inefx_nic_t *enp,
__insiena_filter_tbl_id_t tbl);
+
+#endif /* EFSYS_OPT_SIENA */
 
 #endif /* EFSYS_OPT_FILTER */
 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341020 - in head/sys: conf dev/sfxge/common modules/sfxge

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:14:16 2018
New Revision: 341020
URL: https://svnweb.freebsd.org/changeset/base/341020

Log:
  sfxge(4): add Medford2 support to NIC module
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18142

Added:
  head/sys/dev/sfxge/common/medford2_impl.h   (contents, props changed)
  head/sys/dev/sfxge/common/medford2_nic.c   (contents, props changed)
Modified:
  head/sys/conf/files.amd64
  head/sys/dev/sfxge/common/ef10_nic.c
  head/sys/dev/sfxge/common/efx.h
  head/sys/dev/sfxge/common/efx_impl.h
  head/sys/dev/sfxge/common/efx_nic.c
  head/sys/modules/sfxge/Makefile

Modified: head/sys/conf/files.amd64
==
--- head/sys/conf/files.amd64   Tue Nov 27 12:14:05 2018(r341019)
+++ head/sys/conf/files.amd64   Tue Nov 27 12:14:16 2018(r341020)
@@ -444,6 +444,7 @@ dev/sfxge/common/efx_vpd.c  optionalsfxge pci
 dev/sfxge/common/hunt_nic.coptionalsfxge pci
 dev/sfxge/common/mcdi_mon.coptionalsfxge pci
 dev/sfxge/common/medford_nic.c optionalsfxge pci
+dev/sfxge/common/medford2_nic.coptionalsfxge pci
 dev/sfxge/common/siena_mac.c   optionalsfxge pci
 dev/sfxge/common/siena_mcdi.c  optionalsfxge pci
 dev/sfxge/common/siena_nic.c   optionalsfxge pci

Modified: head/sys/dev/sfxge/common/ef10_nic.c
==
--- head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 12:14:05 2018
(r341019)
+++ head/sys/dev/sfxge/common/ef10_nic.cTue Nov 27 12:14:16 2018
(r341020)
@@ -37,7 +37,7 @@ __FBSDID("$FreeBSD$");
 #include "mcdi_mon.h"
 #endif
 
-#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD
+#if EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2
 
 #include "ef10_tlv_layout.h"
 
@@ -52,7 +52,8 @@ efx_mcdi_get_port_assignment(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
(void) memset(payload, 0, sizeof (payload));
req.emr_cmd = MC_CMD_GET_PORT_ASSIGNMENT;
@@ -97,7 +98,8 @@ efx_mcdi_get_port_modes(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
(void) memset(payload, 0, sizeof (payload));
req.emr_cmd = MC_CMD_GET_PORT_MODES;
@@ -277,7 +279,8 @@ efx_mcdi_get_mac_address_pf(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
(void) memset(payload, 0, sizeof (payload));
req.emr_cmd = MC_CMD_GET_MAC_ADDRESSES;
@@ -335,7 +338,8 @@ efx_mcdi_get_mac_address_vf(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
(void) memset(payload, 0, sizeof (payload));
req.emr_cmd = MC_CMD_VPORT_GET_MAC_ADDRESSES;
@@ -399,7 +403,8 @@ efx_mcdi_get_clock(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
(void) memset(payload, 0, sizeof (payload));
req.emr_cmd = MC_CMD_GET_CLOCK;
@@ -810,7 +815,8 @@ ef10_nic_pio_alloc(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
EFSYS_ASSERT(bufnump);
EFSYS_ASSERT(handlep);
EFSYS_ASSERT(blknump);
@@ -1310,7 +1316,8 @@ ef10_nic_probe(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   enp->en_family == EFX_FAMILY_MEDFORD2);
 
/* Read and clear any assertion state */
if ((rc = efx_mcdi_read_assertion(enp)) != 0)
@@ -1524,7 +1531,8 @@ ef10_nic_init(
efx_rc_t rc;
 
EFSYS_ASSERT(enp->en_family == EFX_FAMILY_HUNTINGTON ||
-   enp->en_family == EFX_FAMILY_MEDFORD);
+   enp->en_family == EFX_FAMILY_MEDFORD ||
+   

svn commit: r341018 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:13:54 2018
New Revision: 341018
URL: https://svnweb.freebsd.org/changeset/base/341018

Log:
  sfxge(4): add efsys option for Medford2
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18140

Modified:
  head/sys/dev/sfxge/common/efsys.h
  head/sys/dev/sfxge/common/efx_check.h

Modified: head/sys/dev/sfxge/common/efsys.h
==
--- head/sys/dev/sfxge/common/efsys.h   Tue Nov 27 12:13:39 2018
(r341017)
+++ head/sys/dev/sfxge/common/efsys.h   Tue Nov 27 12:13:54 2018
(r341018)
@@ -241,6 +241,7 @@ sfxge_map_mbuf_fast(bus_dma_tag_t tag, bus_dmamap_t ma
 #defineEFSYS_OPT_SIENA 1
 #defineEFSYS_OPT_HUNTINGTON 1
 #defineEFSYS_OPT_MEDFORD 1
+#defineEFSYS_OPT_MEDFORD2 0
 #ifdef DEBUG
 #defineEFSYS_OPT_CHECK_REG 1
 #else

Modified: head/sys/dev/sfxge/common/efx_check.h
==
--- head/sys/dev/sfxge/common/efx_check.h   Tue Nov 27 12:13:39 2018
(r341017)
+++ head/sys/dev/sfxge/common/efx_check.h   Tue Nov 27 12:13:54 2018
(r341018)
@@ -56,8 +56,9 @@
 
 /* Verify chip implements accessed registers */
 #if EFSYS_OPT_CHECK_REG
-# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
-#  error "CHECK_REG requires SIENA or HUNTINGTON or MEDFORD"
+# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || \
+   EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2)
+#  error "CHECK_REG requires SIENA or HUNTINGTON or MEDFORD or MEDFORD2"
 # endif
 #endif /* EFSYS_OPT_CHECK_REG */
 
@@ -70,15 +71,17 @@
 
 /* Support diagnostic hardware tests */
 #if EFSYS_OPT_DIAG
-# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
-#  error "DIAG requires SIENA or HUNTINGTON or MEDFORD"
+# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || \
+   EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2)
+#  error "DIAG requires SIENA or HUNTINGTON or MEDFORD or MEDFORD2"
 # endif
 #endif /* EFSYS_OPT_DIAG */
 
 /* Support optimized EVQ data access */
 #if EFSYS_OPT_EV_PREFETCH
-# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
-#  error "EV_PREFETCH requires SIENA or HUNTINGTON or MEDFORD"
+# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || \
+   EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2)
+#  error "EV_PREFETCH requires SIENA or HUNTINGTON or MEDFORD or MEDFORD2"
 # endif
 #endif /* EFSYS_OPT_EV_PREFETCH */
 
@@ -88,21 +91,23 @@
 
 /* Support hardware packet filters */
 #if EFSYS_OPT_FILTER
-# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
-#  error "FILTER requires SIENA or HUNTINGTON or MEDFORD"
+# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || \
+   EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2)
+#  error "FILTER requires SIENA or HUNTINGTON or MEDFORD or MEDFORD2"
 # endif
 #endif /* EFSYS_OPT_FILTER */
 
-#if (EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
+#if (EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2)
 # if !EFSYS_OPT_FILTER
-#  error "HUNTINGTON or MEDFORD requires FILTER"
+#  error "HUNTINGTON or MEDFORD or MEDFORD2 requires FILTER"
 # endif
 #endif /* EFSYS_OPT_HUNTINGTON */
 
 /* Support hardware loopback modes */
 #if EFSYS_OPT_LOOPBACK
-# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
-#  error "LOOPBACK requires SIENA or HUNTINGTON or MEDFORD"
+# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || \
+   EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2)
+#  error "LOOPBACK requires SIENA or HUNTINGTON or MEDFORD or MEDFORD2"
 # endif
 #endif /* EFSYS_OPT_LOOPBACK */
 
@@ -116,21 +121,24 @@
 
 /* Support MAC statistics */
 #if EFSYS_OPT_MAC_STATS
-# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
-#  error "MAC_STATS requires SIENA or HUNTINGTON or MEDFORD"
+# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || \
+   EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2)
+#  error "MAC_STATS requires SIENA or HUNTINGTON or MEDFORD or MEDFORD2"
 # endif
 #endif /* EFSYS_OPT_MAC_STATS */
 
 /* Support management controller messages */
 #if EFSYS_OPT_MCDI
-# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
-#  error "MCDI requires SIENA or HUNTINGTON or MEDFORD"
+# if !(EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || \
+   EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2)
+#  error "MCDI requires SIENA or HUNTINGTON or MEDFORD or MEDFORD2"
 # endif
 #endif /* EFSYS_OPT_MCDI */
 
-#if (EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || EFSYS_OPT_MEDFORD)
+#if (EFSYS_OPT_SIENA || EFSYS_OPT_HUNTINGTON || \
+   EFSYS_OPT_MEDFORD || EFSYS_OPT_MEDFORD2)
 # if !EFSYS_OPT_MCDI
-#  error "SIENA or HUNTINGTON or MEDFORD requires MCDI"
+#  error "SIENA or HUNTINGTON or MEDFORD or MEDFORD2 requires MCDI"
 # endif
 #endif
 
@@ -170,15 +178,17 @@
 
 /* Support monitor statistics (voltage/temperature) */
 #if EFSYS_OPT_MON_STATS

svn commit: r341017 - head/sys/dev/sfxge/common

2018-11-27 Thread Andrew Rybchenko
Author: arybchik
Date: Tue Nov 27 12:13:39 2018
New Revision: 341017
URL: https://svnweb.freebsd.org/changeset/base/341017

Log:
  sfxge(4): add Medford2 PCI IDs
  
  Submitted by:   Andy Moreton 
  Sponsored by:   Solarflare Communications, Inc.
  Differential Revision:  https://reviews.freebsd.org/D18139

Modified:
  head/sys/dev/sfxge/common/efx.h

Modified: head/sys/dev/sfxge/common/efx.h
==
--- head/sys/dev/sfxge/common/efx.h Tue Nov 27 12:11:16 2018
(r341016)
+++ head/sys/dev/sfxge/common/efx.h Tue Nov 27 12:13:39 2018
(r341017)
@@ -68,6 +68,7 @@ typedef enum efx_family_e {
EFX_FAMILY_SIENA,
EFX_FAMILY_HUNTINGTON,
EFX_FAMILY_MEDFORD,
+   EFX_FAMILY_MEDFORD2,
EFX_FAMILY_NTYPES
 } efx_family_t;
 
@@ -96,6 +97,10 @@ efx_family(
 #defineEFX_PCI_DEVID_MEDFORD_PF_UNINIT 0x0913
 #defineEFX_PCI_DEVID_MEDFORD   0x0A03  /* SFC9240 PF */
 #defineEFX_PCI_DEVID_MEDFORD_VF0x1A03  /* SFC9240 VF */
+
+#defineEFX_PCI_DEVID_MEDFORD2_PF_UNINIT0x0B13
+#defineEFX_PCI_DEVID_MEDFORD2  0x0B03  /* SFC9250 PF */
+#defineEFX_PCI_DEVID_MEDFORD2_VF   0x1B03  /* SFC9250 VF */
 
 #defineEFX_MEM_BAR 2
 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341016 - in head: . sys/modules/iavf

2018-11-27 Thread Marius Strobl
Author: marius
Date: Tue Nov 27 12:11:16 2018
New Revision: 341016
URL: https://svnweb.freebsd.org/changeset/base/341016

Log:
  - Add a belated UPDATING entry for the ixlv(4) -> iavf(4) rename in r339338.
  - Likewise, add ixlv.4.gz to OLD_FILES,
  - and link if_ixlv.ko to if_iavf.ko in order to aid a bit in the transition.

Modified:
  head/ObsoleteFiles.inc
  head/UPDATING
  head/sys/modules/iavf/Makefile

Modified: head/ObsoleteFiles.inc
==
--- head/ObsoleteFiles.inc  Tue Nov 27 11:55:43 2018(r341015)
+++ head/ObsoleteFiles.inc  Tue Nov 27 12:11:16 2018(r341016)
@@ -67,6 +67,8 @@ OLD_LIBS+=usr/lib32/libcap_pwd.so.0
 OLD_LIBS+=usr/lib32/libcap_random.so.0
 OLD_LIBS+=usr/lib32/libcap_dns.so.0
 OLD_LIBS+=usr/lib32/libcap_syslog.so.0
+# 20181012: rename of ixlv(4) to iavf(4)
+OLD_FILES+=usr/share/man/man4/ixlv.4.gz
 # 20181009: OpenSSL 1.1.1
 OLD_FILES+=usr/include/openssl/des_old.h
 OLD_FILES+=usr/include/openssl/dso.h

Modified: head/UPDATING
==
--- head/UPDATING   Tue Nov 27 11:55:43 2018(r341015)
+++ head/UPDATING   Tue Nov 27 12:11:16 2018(r341016)
@@ -83,6 +83,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW:
loading from X11 startup. These will become the defaults in 13-current
shortly.
 
+20181012:
+   The ixlv(4) driver has been renamed to iavf(4).  As a consequence,
+   custom kernel and module loading configuration files must be updated
+   accordingly.  Moreover, interfaces previous presented as ixlvN to the
+   system are now exposed as iavfN and network configuration files must
+   be adjusted as necessary.
+
 20181009:
OpenSSL has been updated to version 1.1.1.  This update included
additional various API changes througout the base system.  It is

Modified: head/sys/modules/iavf/Makefile
==
--- head/sys/modules/iavf/Makefile  Tue Nov 27 11:55:43 2018
(r341015)
+++ head/sys/modules/iavf/Makefile  Tue Nov 27 12:11:16 2018
(r341016)
@@ -15,4 +15,6 @@ SRCS+= i40e_common.c i40e_nvm.c i40e_adminq.c
 # Enable asserts and other debugging facilities
 # CFLAGS += -DINVARIANTS -DINVARIANTS_SUPPORT -DWITNESS
 
+LINKS= ${KMODDIR}/${KMOD}.ko ${KMODDIR}/if_ixlv.ko
+
 .include 
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r341011 - head/lib/libfetch

2018-11-27 Thread Renato Botelho
On 27/11/18 08:06, Dag-Erling Smørgrav wrote:
> Author: des
> Date: Tue Nov 27 10:06:41 2018
> New Revision: 341011
> URL: https://svnweb.freebsd.org/changeset/base/341011
> 
> Log:
>   Support proxying FTP over HTTPS, not just HTTP.
>   
>   There is probably a PR for this, but I can't find this, or remember who
>   submitted it.  The patch got lost in the noise of another that wasn't
>   ready to commit.

Are you talking about this one?

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=220468

-- 
Renato Botelho
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341014 - head/lib/libfetch

2018-11-27 Thread Dag-Erling Smørgrav
Author: des
Date: Tue Nov 27 11:22:19 2018
New Revision: 341014
URL: https://svnweb.freebsd.org/changeset/base/341014

Log:
  A few more cases where strcasecmp() is no longer required.
  
  MFC after:1 week

Modified:
  head/lib/libfetch/http.c

Modified: head/lib/libfetch/http.c
==
--- head/lib/libfetch/http.cTue Nov 27 10:45:14 2018(r341013)
+++ head/lib/libfetch/http.cTue Nov 27 11:22:19 2018(r341014)
@@ -1408,7 +1408,7 @@ http_connect(struct url *URL, struct url *purl, const 
/* fetch_connect() has already set an error code */
return (NULL);
init_http_headerbuf();
-   if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0 && purl) {
+   if (strcmp(URL->scheme, SCHEME_HTTPS) == 0 && purl) {
http_cmd(conn, "CONNECT %s:%d HTTP/1.1",
URL->host, URL->port);
http_cmd(conn, "Host: %s:%d",
@@ -1436,7 +1436,7 @@ http_connect(struct url *URL, struct url *purl, const 
}
} while (h > hdr_end);
}
-   if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0 &&
+   if (strcmp(URL->scheme, SCHEME_HTTPS) == 0 &&
fetch_ssl(conn, URL, verbose) == -1) {
/* grrr */
errno = EAUTH;
@@ -1473,7 +1473,7 @@ http_get_proxy(struct url * url, const char *flags)
strcpy(purl->scheme, SCHEME_HTTP);
if (!purl->port)
purl->port = fetch_default_proxy_port(purl->scheme);
-   if (strcasecmp(purl->scheme, SCHEME_HTTP) == 0)
+   if (strcmp(purl->scheme, SCHEME_HTTP) == 0)
return (purl);
fetchFreeURL(purl);
}
@@ -1617,7 +1617,7 @@ http_request_body(struct url *URL, const char *op, str
if (verbose)
fetch_info("requesting %s://%s%s",
url->scheme, host, url->doc);
-   if (purl && strcasecmp(URL->scheme, SCHEME_HTTPS) != 0) {
+   if (purl && strcmp(URL->scheme, SCHEME_HTTPS) != 0) {
http_cmd(conn, "%s %s://%s%s HTTP/1.1",
op, url->scheme, host, url->doc);
} else {
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341013 - head/lib/libfetch

2018-11-27 Thread Dag-Erling Smørgrav
Author: des
Date: Tue Nov 27 10:45:14 2018
New Revision: 341013
URL: https://svnweb.freebsd.org/changeset/base/341013

Log:
  Improve URL parsing.  In particular, convert scheme and host to lowercase.
  
  MFC after:1 week

Modified:
  head/lib/libfetch/common.c
  head/lib/libfetch/fetch.c
  head/lib/libfetch/ftp.c

Modified: head/lib/libfetch/common.c
==
--- head/lib/libfetch/common.c  Tue Nov 27 10:31:29 2018(r341012)
+++ head/lib/libfetch/common.c  Tue Nov 27 10:45:14 2018(r341013)
@@ -189,9 +189,9 @@ fetch_default_port(const char *scheme)
 
if ((se = getservbyname(scheme, "tcp")) != NULL)
return (ntohs(se->s_port));
-   if (strcasecmp(scheme, SCHEME_FTP) == 0)
+   if (strcmp(scheme, SCHEME_FTP) == 0)
return (FTP_DEFAULT_PORT);
-   if (strcasecmp(scheme, SCHEME_HTTP) == 0)
+   if (strcmp(scheme, SCHEME_HTTP) == 0)
return (HTTP_DEFAULT_PORT);
return (0);
 }
@@ -202,9 +202,9 @@ fetch_default_port(const char *scheme)
 int
 fetch_default_proxy_port(const char *scheme)
 {
-   if (strcasecmp(scheme, SCHEME_FTP) == 0)
+   if (strcmp(scheme, SCHEME_FTP) == 0)
return (FTP_DEFAULT_PROXY_PORT);
-   if (strcasecmp(scheme, SCHEME_HTTP) == 0)
+   if (strcmp(scheme, SCHEME_HTTP) == 0)
return (HTTP_DEFAULT_PROXY_PORT);
return (0);
 }

Modified: head/lib/libfetch/fetch.c
==
--- head/lib/libfetch/fetch.c   Tue Nov 27 10:31:29 2018(r341012)
+++ head/lib/libfetch/fetch.c   Tue Nov 27 10:45:14 2018(r341013)
@@ -32,8 +32,10 @@
 __FBSDID("$FreeBSD$");
 
 #include 
-#include 
 
+#include 
+
+#include 
 #include 
 #include 
 #include 
@@ -81,13 +83,13 @@ fetchXGet(struct url *URL, struct url_stat *us, const 
us->size = -1;
us->atime = us->mtime = 0;
}
-   if (strcasecmp(URL->scheme, SCHEME_FILE) == 0)
+   if (strcmp(URL->scheme, SCHEME_FILE) == 0)
return (fetchXGetFile(URL, us, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_FTP) == 0)
+   else if (strcmp(URL->scheme, SCHEME_FTP) == 0)
return (fetchXGetFTP(URL, us, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_HTTP) == 0)
+   else if (strcmp(URL->scheme, SCHEME_HTTP) == 0)
return (fetchXGetHTTP(URL, us, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0)
+   else if (strcmp(URL->scheme, SCHEME_HTTPS) == 0)
return (fetchXGetHTTP(URL, us, flags));
url_seterr(URL_BAD_SCHEME);
return (NULL);
@@ -111,13 +113,13 @@ FILE *
 fetchPut(struct url *URL, const char *flags)
 {
 
-   if (strcasecmp(URL->scheme, SCHEME_FILE) == 0)
+   if (strcmp(URL->scheme, SCHEME_FILE) == 0)
return (fetchPutFile(URL, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_FTP) == 0)
+   else if (strcmp(URL->scheme, SCHEME_FTP) == 0)
return (fetchPutFTP(URL, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_HTTP) == 0)
+   else if (strcmp(URL->scheme, SCHEME_HTTP) == 0)
return (fetchPutHTTP(URL, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0)
+   else if (strcmp(URL->scheme, SCHEME_HTTPS) == 0)
return (fetchPutHTTP(URL, flags));
url_seterr(URL_BAD_SCHEME);
return (NULL);
@@ -135,13 +137,13 @@ fetchStat(struct url *URL, struct url_stat *us, const 
us->size = -1;
us->atime = us->mtime = 0;
}
-   if (strcasecmp(URL->scheme, SCHEME_FILE) == 0)
+   if (strcmp(URL->scheme, SCHEME_FILE) == 0)
return (fetchStatFile(URL, us, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_FTP) == 0)
+   else if (strcmp(URL->scheme, SCHEME_FTP) == 0)
return (fetchStatFTP(URL, us, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_HTTP) == 0)
+   else if (strcmp(URL->scheme, SCHEME_HTTP) == 0)
return (fetchStatHTTP(URL, us, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0)
+   else if (strcmp(URL->scheme, SCHEME_HTTPS) == 0)
return (fetchStatHTTP(URL, us, flags));
url_seterr(URL_BAD_SCHEME);
return (-1);
@@ -155,13 +157,13 @@ struct url_ent *
 fetchList(struct url *URL, const char *flags)
 {
 
-   if (strcasecmp(URL->scheme, SCHEME_FILE) == 0)
+   if (strcmp(URL->scheme, SCHEME_FILE) == 0)
return (fetchListFile(URL, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_FTP) == 0)
+   else if (strcmp(URL->scheme, SCHEME_FTP) == 0)
return (fetchListFTP(URL, flags));
-   else if (strcasecmp(URL->scheme, SCHEME_HTTP) == 0)
+   else if (strcmp(URL->scheme, SCHEME_HTTP) == 0)

svn commit: r341012 - in head/usr.sbin: etcupdate mergemaster

2018-11-27 Thread Mateusz Piotrowski
Author: 0mp (ports committer)
Date: Tue Nov 27 10:31:29 2018
New Revision: 341012
URL: https://svnweb.freebsd.org/changeset/base/341012

Log:
  Cross-reference mergemaster(8) & etcupdate(8).
  
  Suggested by: Daniel Ebdrup
  Reviewed by:  bcr
  Approved by:  bcr (doc), krion (mentor, implicit), mat (mentor, implicit)
  Differential Revision:https://reviews.freebsd.org/D18350

Modified:
  head/usr.sbin/etcupdate/etcupdate.8
  head/usr.sbin/mergemaster/mergemaster.8

Modified: head/usr.sbin/etcupdate/etcupdate.8
==
--- head/usr.sbin/etcupdate/etcupdate.8 Tue Nov 27 10:06:41 2018
(r341011)
+++ head/usr.sbin/etcupdate/etcupdate.8 Tue Nov 27 10:31:29 2018
(r341012)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 29, 2015
+.Dd November 27, 2018
 .Dt ETCUPDATE 8
 .Os
 .Sh NAME
@@ -853,6 +853,7 @@ but it has been removed in the destination directory.
 .Xr make 1 ,
 .Xr newaliases 1 ,
 .Xr sh 1 ,
+.Xr mergemaster 8 ,
 .Xr pwd_mkdb 8 ,
 .Xr services_mkdb 8 ,
 .Xr tzsetup 8

Modified: head/usr.sbin/mergemaster/mergemaster.8
==
--- head/usr.sbin/mergemaster/mergemaster.8 Tue Nov 27 10:06:41 2018
(r341011)
+++ head/usr.sbin/mergemaster/mergemaster.8 Tue Nov 27 10:31:29 2018
(r341012)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd August 8, 2018
+.Dd November 27, 2018
 .Dt MERGEMASTER 8
 .Os
 .Sh NAME
@@ -453,6 +453,7 @@ comparison, use:
 .Xr make 1 ,
 .Xr less 1 ,
 .Xr sdiff 1 ,
+.Xr etcupdate 8 ,
 .Xr pwd_mkdb 8
 .Pp
 .Pa /usr/src/etc/Makefile
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341011 - head/lib/libfetch

2018-11-27 Thread Dag-Erling Smørgrav
Author: des
Date: Tue Nov 27 10:06:41 2018
New Revision: 341011
URL: https://svnweb.freebsd.org/changeset/base/341011

Log:
  Support proxying FTP over HTTPS, not just HTTP.
  
  There is probably a PR for this, but I can't find this, or remember who
  submitted it.  The patch got lost in the noise of another that wasn't
  ready to commit.
  
  MFC after:3 days

Modified:
  head/lib/libfetch/ftp.c

Modified: head/lib/libfetch/ftp.c
==
--- head/lib/libfetch/ftp.c Tue Nov 27 09:46:01 2018(r341010)
+++ head/lib/libfetch/ftp.c Tue Nov 27 10:06:41 2018(r341011)
@@ -1104,7 +1104,8 @@ ftp_request(struct url *url, const char *op, struct ur
int oflag;
 
/* check if we should use HTTP instead */
-   if (purl && strcasecmp(purl->scheme, SCHEME_HTTP) == 0) {
+   if (purl && (strcasecmp(purl->scheme, SCHEME_HTTP) == 0 ||
+   strcasecmp(purl->scheme, SCHEME_HTTPS) == 0)) {
if (strcmp(op, "STAT") == 0)
return (http_request(url, "HEAD", us, purl, flags));
else if (strcmp(op, "RETR") == 0)
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341010 - head/usr.sbin/unbound/setup

2018-11-27 Thread Dag-Erling Smørgrav
Author: des
Date: Tue Nov 27 09:46:01 2018
New Revision: 341010
URL: https://svnweb.freebsd.org/changeset/base/341010

Log:
  Check that /etc/resolv.conf exists before trying to read it.
  Fix whitespace nit introduced in previous commit.
  
  MFC after:1 week

Modified:
  head/usr.sbin/unbound/setup/local-unbound-setup.sh

Modified: head/usr.sbin/unbound/setup/local-unbound-setup.sh
==
--- head/usr.sbin/unbound/setup/local-unbound-setup.sh  Tue Nov 27 09:41:47 
2018(r341009)
+++ head/usr.sbin/unbound/setup/local-unbound-setup.sh  Tue Nov 27 09:46:01 
2018(r341010)
@@ -218,7 +218,7 @@ gen_forward_conf() {
if [ "${use_tls}" = "yes" ] ; then
echo "forward-tls-upstream: yes"
sed -nE \
-   -e "s/^(${RE_forward_tls})$/forward-addr: \\1/p"
+   -e "s/^${RE_forward_tls}\$/forward-addr: \\1/p"
else
sed -nE \
-e "s/^${RE_forward_addr}\$/forward-addr: \\1/p" \
@@ -411,8 +411,10 @@ main() {
style=recursing
;;
"")
-   echo "Extracting forwarders from ${resolv_conf}."
-   forwarders=$(get_nameservers <"${D}${resolv_conf}")
+   if [ -f "${D}${resolv_conf}" ] ; then
+   echo "Extracting forwarders from ${resolv_conf}."
+   forwarders=$(get_nameservers <"${D}${resolv_conf}")
+   fi
style=dynamic
;;
*)
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341009 - in head: lib/libc/net usr.sbin/nscd

2018-11-27 Thread Dag-Erling Smørgrav
Author: des
Date: Tue Nov 27 09:41:47 2018
New Revision: 341009
URL: https://svnweb.freebsd.org/changeset/base/341009

Log:
  Style cleanup.

Modified:
  head/lib/libc/net/nscachedcli.c
  head/usr.sbin/nscd/nscdcli.c
  head/usr.sbin/nscd/query.c

Modified: head/lib/libc/net/nscachedcli.c
==
--- head/lib/libc/net/nscachedcli.c Tue Nov 27 09:04:06 2018
(r341008)
+++ head/lib/libc/net/nscachedcli.c Tue Nov 27 09:41:47 2018
(r341009)
@@ -144,29 +144,27 @@ safe_read(struct cached_connection_ *connection, void 
 static int
 send_credentials(struct cached_connection_ *connection, int type)
 {
+   union {
+   struct cmsghdr hdr;
+   char pad[CMSG_SPACE(sizeof(struct cmsgcred))];
+   } cmsg;
+   struct msghdr mhdr;
+   struct iovec iov;
struct kevent eventlist;
int nevents;
ssize_t result;
int res;
 
-   struct msghdr cred_hdr;
-   struct iovec iov;
-
-   struct {
-   struct cmsghdr hdr;
-   char cred[CMSG_SPACE(sizeof(struct cmsgcred))];
-   } cmsg;
-
memset(, 0, sizeof(cmsg));
-   cmsg.hdr.cmsg_len =  CMSG_LEN(sizeof(struct cmsgcred));
+   cmsg.hdr.cmsg_len = CMSG_LEN(sizeof(struct cmsgcred));
cmsg.hdr.cmsg_level = SOL_SOCKET;
cmsg.hdr.cmsg_type = SCM_CREDS;
 
-   memset(_hdr, 0, sizeof(struct msghdr));
-   cred_hdr.msg_iov = 
-   cred_hdr.msg_iovlen = 1;
-   cred_hdr.msg_control = (caddr_t)
-   cred_hdr.msg_controllen = CMSG_SPACE(sizeof(struct cmsgcred));
+   memset(, 0, sizeof(mhdr));
+   mhdr.msg_iov = 
+   mhdr.msg_iovlen = 1;
+   mhdr.msg_control = 
+   mhdr.msg_controllen = CMSG_SPACE(sizeof(struct cmsgcred));
 
iov.iov_base = 
iov.iov_len = sizeof(int);
@@ -178,8 +176,8 @@ send_credentials(struct cached_connection_ *connection
nevents = _kevent(connection->write_queue, NULL, 0, , 1,
NULL);
if (nevents == 1 && eventlist.filter == EVFILT_WRITE) {
-   result = (_sendmsg(connection->sockfd, _hdr,
-   MSG_NOSIGNAL) == -1) ?  -1 : 0;
+   result = _sendmsg(connection->sockfd, ,
+   MSG_NOSIGNAL) == -1 ? -1 : 0;
EV_SET(, connection->sockfd, EVFILT_WRITE, EV_ADD,
0, 0, NULL);
_kevent(connection->write_queue, , 1, NULL, 0, NULL);

Modified: head/usr.sbin/nscd/nscdcli.c
==
--- head/usr.sbin/nscd/nscdcli.cTue Nov 27 09:04:06 2018
(r341008)
+++ head/usr.sbin/nscd/nscdcli.cTue Nov 27 09:41:47 2018
(r341009)
@@ -130,44 +130,41 @@ safe_read(struct nscd_connection_ *connection, void *d
 static int
 send_credentials(struct nscd_connection_ *connection, int type)
 {
+   union {
+   struct cmsghdr hdr;
+   char pad[CMSG_SPACE(sizeof(struct cmsgcred))];
+   } cmsg;
+   struct msghdr mhdr;
+   struct iovec iov;
struct kevent eventlist;
int nevents;
ssize_t result;
int res;
 
-   struct msghdr   cred_hdr;
-   struct ioveciov;
-
-   union {
-   struct cmsghdr  hdr;
-   char cred[CMSG_SPACE(sizeof(struct cmsgcred))];
-   } cmsg;
-
TRACE_IN(send_credentials);
memset(, 0, sizeof(cmsg));
cmsg.hdr.cmsg_len = CMSG_LEN(sizeof(struct cmsgcred));
cmsg.hdr.cmsg_level = SOL_SOCKET;
cmsg.hdr.cmsg_type = SCM_CREDS;
 
-   memset(_hdr, 0, sizeof(struct msghdr));
-   cred_hdr.msg_iov = 
-   cred_hdr.msg_iovlen = 1;
-   cred_hdr.msg_control = 
-   cred_hdr.msg_controllen = CMSG_SPACE(sizeof(struct cmsgcred));
+   memset(, 0, sizeof(mhdr));
+   mhdr.msg_iov = 
+   mhdr.msg_iovlen = 1;
+   mhdr.msg_control = 
+   mhdr.msg_controllen = CMSG_SPACE(sizeof(struct cmsgcred));
 
iov.iov_base = 
iov.iov_len = sizeof(int);
 
EV_SET(, connection->sockfd, EVFILT_WRITE, EV_ADD,
-   NOTE_LOWAT, sizeof(int), NULL);
+   NOTE_LOWAT, sizeof(int), NULL);
res = kevent(connection->write_queue, , 1, NULL, 0, NULL);
 
nevents = kevent(connection->write_queue, NULL, 0, , 1, NULL);
if ((nevents == 1) && (eventlist.filter == EVFILT_WRITE)) {
-   result = (sendmsg(connection->sockfd, _hdr, 0) == -1) ? -1
-   : 0;
+   result = sendmsg(connection->sockfd, , 0) == -1 ? -1 : 0;
EV_SET(, connection->sockfd, EVFILT_WRITE, EV_ADD,
-   0, 0, NULL);
+   0, 0, NULL);
kevent(connection->write_queue, , 1, NULL, 0, NULL);
TRACE_OUT(send_credentials);
return (result);

Modified: head/usr.sbin/nscd/query.c

svn commit: r341008 - head/sys/net

2018-11-27 Thread Andrey V. Elsukov
Author: ae
Date: Tue Nov 27 09:04:06 2018
New Revision: 341008
URL: https://svnweb.freebsd.org/changeset/base/341008

Log:
  Fix possible panic during ifnet detach in rtsock.
  
  The panic can happen, when some application does dump of routing table
  using sysctl interface. To prevent this, set IFF_DYING flag in
  if_detach_internal() function, when ifnet under lock is removed from
  the chain. In sysctl_rtsock() take IFNET_RLOCK_NOSLEEP() to prevent
  ifnet detach during routes enumeration. In case, if some interface was
  detached in the time before we take the lock, add the check, that ifnet
  is not DYING. This prevents access to memory that could be freed after
  ifnet is unlinked.
  
  PR:   227720, 230498, 233306
  Reviewed by:  bz, eugen
  MFC after:1 week
  Sponsored by: Yandex LLC
  Differential Revision:https://reviews.freebsd.org/D18338

Modified:
  head/sys/net/if.c
  head/sys/net/rtsock.c

Modified: head/sys/net/if.c
==
--- head/sys/net/if.c   Tue Nov 27 08:51:15 2018(r341007)
+++ head/sys/net/if.c   Tue Nov 27 09:04:06 2018(r341008)
@@ -1068,6 +1068,8 @@ if_detach_internal(struct ifnet *ifp, int vmove, struc
CK_STAILQ_FOREACH(iter, _ifnet, if_link)
if (iter == ifp) {
CK_STAILQ_REMOVE(_ifnet, ifp, ifnet, if_link);
+   if (!vmove)
+   ifp->if_flags |= IFF_DYING;
found = 1;
break;
}

Modified: head/sys/net/rtsock.c
==
--- head/sys/net/rtsock.c   Tue Nov 27 08:51:15 2018(r341007)
+++ head/sys/net/rtsock.c   Tue Nov 27 09:04:06 2018(r341008)
@@ -1559,6 +1559,8 @@ sysctl_dumpentry(struct radix_node *rn, void *vw)
struct rt_addrinfo info;
struct sockaddr_storage ss;
 
+   IFNET_RLOCK_NOSLEEP_ASSERT();
+
if (w->w_op == NET_RT_FLAGS && !(rt->rt_flags & w->w_arg))
return 0;
if ((rt->rt_flags & RTF_HOST) == 0
@@ -1571,7 +1573,7 @@ sysctl_dumpentry(struct radix_node *rn, void *vw)
info.rti_info[RTAX_NETMASK] = rtsock_fix_netmask(rt_key(rt),
rt_mask(rt), );
info.rti_info[RTAX_GENMASK] = 0;
-   if (rt->rt_ifp) {
+   if (rt->rt_ifp && !(rt->rt_ifp->if_flags & IFF_DYING)) {
info.rti_info[RTAX_IFP] = rt->rt_ifp->if_addr->ifa_addr;
info.rti_info[RTAX_IFA] = rt->rt_ifa->ifa_addr;
if (rt->rt_ifp->if_flags & IFF_POINTOPOINT)
@@ -1934,8 +1936,10 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS)
rnh = rt_tables_get_rnh(fib, i);
if (rnh != NULL) {
RIB_RLOCK(rnh); 
+   IFNET_RLOCK_NOSLEEP();
error = rnh->rnh_walktree(>head,
sysctl_dumpentry, );
+   IFNET_RUNLOCK_NOSLEEP();
RIB_RUNLOCK(rnh);
} else if (af != 0)
error = EAFNOSUPPORT;
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r341007 - head/stand/i386/pxeldr

2018-11-27 Thread Guangyuan Yang
Author: ygy (doc committer)
Date: Tue Nov 27 08:51:15 2018
New Revision: 341007
URL: https://svnweb.freebsd.org/changeset/base/341007

Log:
  Bump the date of pxeboot(8) manual page for r340917.
  
  PR:   123484
  MFC after:5 days

Modified:
  head/stand/i386/pxeldr/pxeboot.8

Modified: head/stand/i386/pxeldr/pxeboot.8
==
--- head/stand/i386/pxeldr/pxeboot.8Tue Nov 27 04:05:38 2018
(r341006)
+++ head/stand/i386/pxeldr/pxeboot.8Tue Nov 27 08:51:15 2018
(r341007)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd May 27, 2017
+.Dd November 25, 2018
 .Dt PXEBOOT 8
 .Os
 .Sh NAME
___
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"