svn commit: r341118 - head/sys/dev/sfxge/common
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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"