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

Commit 80378384 authored by Calvin Owens's avatar Calvin Owens Committed by David S. Miller
Browse files

mlx5: Add ndo_poll_controller() implementation



This implements ndo_poll_controller in net_device_ops callbacks for mlx5,
which is necessary to use netconsole with this driver.

Acked-By: default avatarSaeed Mahameed <saeedm@mellanox.com>
Signed-off-by: default avatarCalvin Owens <calvinowens@fb.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 6cd80b55
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -3188,6 +3188,20 @@ static int mlx5e_xdp(struct net_device *dev, struct netdev_xdp *xdp)
	}
}

#ifdef CONFIG_NET_POLL_CONTROLLER
/* Fake "interrupt" called by netpoll (eg netconsole) to send skbs without
 * reenabling interrupts.
 */
static void mlx5e_netpoll(struct net_device *dev)
{
	struct mlx5e_priv *priv = netdev_priv(dev);
	int i;

	for (i = 0; i < priv->params.num_channels; i++)
		napi_schedule(&priv->channel[i]->napi);
}
#endif

static const struct net_device_ops mlx5e_netdev_ops_basic = {
	.ndo_open                = mlx5e_open,
	.ndo_stop                = mlx5e_close,
@@ -3208,6 +3222,9 @@ static const struct net_device_ops mlx5e_netdev_ops_basic = {
#endif
	.ndo_tx_timeout          = mlx5e_tx_timeout,
	.ndo_xdp		 = mlx5e_xdp,
#ifdef CONFIG_NET_POLL_CONTROLLER
	.ndo_poll_controller     = mlx5e_netpoll,
#endif
};

static const struct net_device_ops mlx5e_netdev_ops_sriov = {
@@ -3240,6 +3257,9 @@ static const struct net_device_ops mlx5e_netdev_ops_sriov = {
	.ndo_get_vf_stats        = mlx5e_get_vf_stats,
	.ndo_tx_timeout          = mlx5e_tx_timeout,
	.ndo_xdp		 = mlx5e_xdp,
#ifdef CONFIG_NET_POLL_CONTROLLER
	.ndo_poll_controller     = mlx5e_netpoll,
#endif
};

static int mlx5e_check_required_hca_cap(struct mlx5_core_dev *mdev)