aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/net/ethernet/mellanox/mlx5/core/en/xsk/tx.h
blob: 39fa0a70585690a2599c8bbe61efc06a9a21059e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
/* Copyright (c) 2019 Mellanox Technologies. */

#ifndef __MLX5_EN_XSK_TX_H__
#define __MLX5_EN_XSK_TX_H__

#include "en.h"
#include <net/xdp_sock_drv.h>

/* TX data path */

int mlx5e_xsk_wakeup(struct net_device *dev, u32 qid, u32 flags);

bool mlx5e_xsk_tx(struct mlx5e_xdpsq *sq, unsigned int budget);

static inline void mlx5e_xsk_update_tx_wakeup(struct mlx5e_xdpsq *sq)
{
	if (!xsk_umem_uses_need_wakeup(sq->umem))
		return;

	if (sq->pc != sq->cc)
		xsk_clear_tx_need_wakeup(sq->umem);
	else
		xsk_set_tx_need_wakeup(sq->umem);
}

#endif /* __MLX5_EN_XSK_TX_H__ */