svn commit: r359654 - head/sys/dev/mlx5/mlx5_en
Hans Petter Selasky
hselasky at FreeBSD.org
Mon Apr 6 09:45:49 UTC 2020
Author: hselasky
Date: Mon Apr 6 09:45:49 2020
New Revision: 359654
URL: https://svnweb.freebsd.org/changeset/base/359654
Log:
Ensure a minimum inline size of 16 bytes in mlx5en(4).
This includes 14 bytes of ethernet header and 2 bytes of VLAN header.
This allows for making assumptions about the inline size limit
in the fast transmit path later on.
Use a signed integer variable to catch underflow.
MFC after: 1 week
Sponsored by: Mellanox Technologies
Modified:
head/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
Modified: head/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
==============================================================================
--- head/sys/dev/mlx5/mlx5_en/mlx5_en_main.c Mon Apr 6 09:41:22 2020 (r359653)
+++ head/sys/dev/mlx5/mlx5_en/mlx5_en_main.c Mon Apr 6 09:45:49 2020 (r359654)
@@ -3523,15 +3523,19 @@ mlx5e_check_required_hca_cap(struct mlx5_core_dev *mde
static u16
mlx5e_get_max_inline_cap(struct mlx5_core_dev *mdev)
{
- uint32_t bf_buf_size = (1U << MLX5_CAP_GEN(mdev, log_bf_reg_size)) / 2U;
+ const int min_size = ETHER_VLAN_ENCAP_LEN + ETHER_HDR_LEN;
+ const int max_size = MLX5E_MAX_TX_INLINE;
+ const int bf_buf_size =
+ ((1U << MLX5_CAP_GEN(mdev, log_bf_reg_size)) / 2U) -
+ (sizeof(struct mlx5e_tx_wqe) - 2);
- bf_buf_size -= sizeof(struct mlx5e_tx_wqe) - 2;
-
- /* verify against driver hardware limit */
- if (bf_buf_size > MLX5E_MAX_TX_INLINE)
- bf_buf_size = MLX5E_MAX_TX_INLINE;
-
- return (bf_buf_size);
+ /* verify against driver limits */
+ if (bf_buf_size > max_size)
+ return (max_size);
+ else if (bf_buf_size < min_size)
+ return (min_size);
+ else
+ return (bf_buf_size);
}
static int
More information about the svn-src-all
mailing list