Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22c63d9c authored by David S. Miller's avatar David S. Miller
Browse files

Merge tag 'mlx5-updates-2019-09-05' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux



Saeed Mahameed says:

====================
mlx5-updates-2019-09-05

1) Allover mlx5 cleanups

2) Added port congestion counters to ethtool stats:

Add 3 counters per priority to ethtool using PPCNT:
  2.1) rx_prio[p]_buf_discard - the number of packets discarded by device
       due to lack of per host receive buffers
  2.2) rx_prio[p]_cong_discard - the number of packets discarded by device
       due to per host congestion
  2.3) rx_prio[p]_marked - the number of packets ECN marked by device due
       to per host congestion
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents b58662a5 1297d97f
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -10,6 +10,7 @@ config MLX5_CORE
	imply PTP_1588_CLOCK
	imply PTP_1588_CLOCK
	imply VXLAN
	imply VXLAN
	imply MLXFW
	imply MLXFW
	imply PCI_HYPERV_INTERFACE
	default n
	default n
	---help---
	---help---
	  Core driver for low level functionality of the ConnectX-4 and
	  Core driver for low level functionality of the ConnectX-4 and
@@ -32,7 +33,6 @@ config MLX5_FPGA
config MLX5_CORE_EN
config MLX5_CORE_EN
	bool "Mellanox 5th generation network adapters (ConnectX series) Ethernet support"
	bool "Mellanox 5th generation network adapters (ConnectX series) Ethernet support"
	depends on NETDEVICES && ETHERNET && INET && PCI && MLX5_CORE
	depends on NETDEVICES && ETHERNET && INET && PCI && MLX5_CORE
	depends on IPV6=y || IPV6=n || MLX5_CORE=m
	select PAGE_POOL
	select PAGE_POOL
	select DIMLIB
	select DIMLIB
	default n
	default n
+1 −1
Original line number Original line Diff line number Diff line
@@ -133,7 +133,7 @@ static int mlx5_devlink_fs_mode_validate(struct devlink *devlink, u32 id,


		else if (eswitch_mode == MLX5_ESWITCH_OFFLOADS) {
		else if (eswitch_mode == MLX5_ESWITCH_OFFLOADS) {
			NL_SET_ERR_MSG_MOD(extack,
			NL_SET_ERR_MSG_MOD(extack,
					   "Software managed steering is not supported when eswitch offlaods enabled.");
					   "Software managed steering is not supported when eswitch offloads enabled.");
			err = -EOPNOTSUPP;
			err = -EOPNOTSUPP;
		}
		}
	} else {
	} else {
+4 −5
Original line number Original line Diff line number Diff line
@@ -30,22 +30,21 @@ mlx5e_hv_vhca_fill_ring_stats(struct mlx5e_priv *priv, int ch,
	}
	}
}
}


static void mlx5e_hv_vhca_fill_stats(struct mlx5e_priv *priv, u64 *data,
static void mlx5e_hv_vhca_fill_stats(struct mlx5e_priv *priv, void *data,
				     int buf_len)
				     int buf_len)
{
{
	int ch, i = 0;
	int ch, i = 0;


	for (ch = 0; ch < priv->max_nch; ch++) {
	for (ch = 0; ch < priv->max_nch; ch++) {
		u64 *buf = data + i;
		void *buf = data + i;


		if (WARN_ON_ONCE(buf +
		if (WARN_ON_ONCE(buf +
				 sizeof(struct mlx5e_hv_vhca_per_ring_stats) >
				 sizeof(struct mlx5e_hv_vhca_per_ring_stats) >
				 data + buf_len))
				 data + buf_len))
			return;
			return;


		mlx5e_hv_vhca_fill_ring_stats(priv, ch,
		mlx5e_hv_vhca_fill_ring_stats(priv, ch, buf);
					      (struct mlx5e_hv_vhca_per_ring_stats *)buf);
		i += sizeof(struct mlx5e_hv_vhca_per_ring_stats);
		i += sizeof(struct mlx5e_hv_vhca_per_ring_stats) / sizeof(u64);
	}
	}
}
}


+2 −4
Original line number Original line Diff line number Diff line
@@ -256,8 +256,7 @@ struct mlx5e_dump_wqe {
};
};


static int
static int
tx_post_resync_dump(struct mlx5e_txqsq *sq, struct sk_buff *skb,
tx_post_resync_dump(struct mlx5e_txqsq *sq, skb_frag_t *frag, u32 tisn, bool first)
		    skb_frag_t *frag, u32 tisn, bool first)
{
{
	struct mlx5_wqe_ctrl_seg *cseg;
	struct mlx5_wqe_ctrl_seg *cseg;
	struct mlx5_wqe_data_seg *dseg;
	struct mlx5_wqe_data_seg *dseg;
@@ -371,8 +370,7 @@ mlx5e_ktls_tx_handle_ooo(struct mlx5e_ktls_offload_context_tx *priv_tx,
	tx_post_resync_params(sq, priv_tx, info.rcd_sn);
	tx_post_resync_params(sq, priv_tx, info.rcd_sn);


	for (i = 0; i < info.nr_frags; i++)
	for (i = 0; i < info.nr_frags; i++)
		if (tx_post_resync_dump(sq, skb, info.frags[i],
		if (tx_post_resync_dump(sq, info.frags[i], priv_tx->tisn, !i))
					priv_tx->tisn, !i))
			goto err_out;
			goto err_out;


	/* If no dump WQE was sent, we need to have a fence NOP WQE before the
	/* If no dump WQE was sent, we need to have a fence NOP WQE before the
+0 −2
Original line number Original line Diff line number Diff line
@@ -1315,7 +1315,6 @@ static int mlx5e_open_txqsq(struct mlx5e_channel *c,
	return 0;
	return 0;


err_free_txqsq:
err_free_txqsq:
	clear_bit(MLX5E_SQ_STATE_ENABLED, &sq->state);
	mlx5e_free_txqsq(sq);
	mlx5e_free_txqsq(sq);


	return err;
	return err;
@@ -1403,7 +1402,6 @@ int mlx5e_open_icosq(struct mlx5e_channel *c, struct mlx5e_params *params,
	return 0;
	return 0;


err_free_icosq:
err_free_icosq:
	clear_bit(MLX5E_SQ_STATE_ENABLED, &sq->state);
	mlx5e_free_icosq(sq);
	mlx5e_free_icosq(sq);


	return err;
	return err;
Loading