88 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/* Copyright (c) 2019, Intel Corporation. */3 4#ifndef _ICE_XSK_H_5#define _ICE_XSK_H_6#include "ice_txrx.h"7 8#define PKTS_PER_BATCH 89 10#ifdef __clang__11#define loop_unrolled_for _Pragma("clang loop unroll_count(8)") for12#elif __GNUC__ >= 813#define loop_unrolled_for _Pragma("GCC unroll 8") for14#else15#define loop_unrolled_for for16#endif17 18struct ice_vsi;19 20#ifdef CONFIG_XDP_SOCKETS21int ice_xsk_pool_setup(struct ice_vsi *vsi, struct xsk_buff_pool *pool,22 u16 qid);23int ice_clean_rx_irq_zc(struct ice_rx_ring *rx_ring,24 struct xsk_buff_pool *xsk_pool,25 int budget);26int ice_xsk_wakeup(struct net_device *netdev, u32 queue_id, u32 flags);27bool ice_alloc_rx_bufs_zc(struct ice_rx_ring *rx_ring,28 struct xsk_buff_pool *xsk_pool, u16 count);29bool ice_xsk_any_rx_ring_ena(struct ice_vsi *vsi);30void ice_xsk_clean_rx_ring(struct ice_rx_ring *rx_ring);31void ice_xsk_clean_xdp_ring(struct ice_tx_ring *xdp_ring);32bool ice_xmit_zc(struct ice_tx_ring *xdp_ring, struct xsk_buff_pool *xsk_pool);33int ice_realloc_zc_buf(struct ice_vsi *vsi, bool zc);34#else35static inline bool ice_xmit_zc(struct ice_tx_ring __always_unused *xdp_ring,36 struct xsk_buff_pool __always_unused *xsk_pool)37{38 return false;39}40 41static inline int42ice_xsk_pool_setup(struct ice_vsi __always_unused *vsi,43 struct xsk_buff_pool __always_unused *pool,44 u16 __always_unused qid)45{46 return -EOPNOTSUPP;47}48 49static inline int50ice_clean_rx_irq_zc(struct ice_rx_ring __always_unused *rx_ring,51 struct xsk_buff_pool __always_unused *xsk_pool,52 int __always_unused budget)53{54 return 0;55}56 57static inline bool58ice_alloc_rx_bufs_zc(struct ice_rx_ring __always_unused *rx_ring,59 struct xsk_buff_pool __always_unused *xsk_pool,60 u16 __always_unused count)61{62 return false;63}64 65static inline bool ice_xsk_any_rx_ring_ena(struct ice_vsi __always_unused *vsi)66{67 return false;68}69 70static inline int71ice_xsk_wakeup(struct net_device __always_unused *netdev,72 u32 __always_unused queue_id, u32 __always_unused flags)73{74 return -EOPNOTSUPP;75}76 77static inline void ice_xsk_clean_rx_ring(struct ice_rx_ring *rx_ring) { }78static inline void ice_xsk_clean_xdp_ring(struct ice_tx_ring *xdp_ring) { }79 80static inline int81ice_realloc_zc_buf(struct ice_vsi __always_unused *vsi,82 bool __always_unused zc)83{84 return 0;85}86#endif /* CONFIG_XDP_SOCKETS */87#endif /* !_ICE_XSK_H_ */88