162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright (c) 2019, Intel Corporation. */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef _ICE_XSK_H_ 562306a36Sopenharmony_ci#define _ICE_XSK_H_ 662306a36Sopenharmony_ci#include "ice_txrx.h" 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#define PKTS_PER_BATCH 8 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifdef __clang__ 1162306a36Sopenharmony_ci#define loop_unrolled_for _Pragma("clang loop unroll_count(8)") for 1262306a36Sopenharmony_ci#elif __GNUC__ >= 8 1362306a36Sopenharmony_ci#define loop_unrolled_for _Pragma("GCC unroll 8") for 1462306a36Sopenharmony_ci#else 1562306a36Sopenharmony_ci#define loop_unrolled_for for 1662306a36Sopenharmony_ci#endif 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cistruct ice_vsi; 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#ifdef CONFIG_XDP_SOCKETS 2162306a36Sopenharmony_ciint ice_xsk_pool_setup(struct ice_vsi *vsi, struct xsk_buff_pool *pool, 2262306a36Sopenharmony_ci u16 qid); 2362306a36Sopenharmony_ciint ice_clean_rx_irq_zc(struct ice_rx_ring *rx_ring, int budget); 2462306a36Sopenharmony_ciint ice_xsk_wakeup(struct net_device *netdev, u32 queue_id, u32 flags); 2562306a36Sopenharmony_cibool ice_alloc_rx_bufs_zc(struct ice_rx_ring *rx_ring, u16 count); 2662306a36Sopenharmony_cibool ice_xsk_any_rx_ring_ena(struct ice_vsi *vsi); 2762306a36Sopenharmony_civoid ice_xsk_clean_rx_ring(struct ice_rx_ring *rx_ring); 2862306a36Sopenharmony_civoid ice_xsk_clean_xdp_ring(struct ice_tx_ring *xdp_ring); 2962306a36Sopenharmony_cibool ice_xmit_zc(struct ice_tx_ring *xdp_ring); 3062306a36Sopenharmony_ciint ice_realloc_zc_buf(struct ice_vsi *vsi, bool zc); 3162306a36Sopenharmony_ci#else 3262306a36Sopenharmony_cistatic inline bool ice_xmit_zc(struct ice_tx_ring __always_unused *xdp_ring) 3362306a36Sopenharmony_ci{ 3462306a36Sopenharmony_ci return false; 3562306a36Sopenharmony_ci} 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_cistatic inline int 3862306a36Sopenharmony_ciice_xsk_pool_setup(struct ice_vsi __always_unused *vsi, 3962306a36Sopenharmony_ci struct xsk_buff_pool __always_unused *pool, 4062306a36Sopenharmony_ci u16 __always_unused qid) 4162306a36Sopenharmony_ci{ 4262306a36Sopenharmony_ci return -EOPNOTSUPP; 4362306a36Sopenharmony_ci} 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_cistatic inline int 4662306a36Sopenharmony_ciice_clean_rx_irq_zc(struct ice_rx_ring __always_unused *rx_ring, 4762306a36Sopenharmony_ci int __always_unused budget) 4862306a36Sopenharmony_ci{ 4962306a36Sopenharmony_ci return 0; 5062306a36Sopenharmony_ci} 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_cistatic inline bool 5362306a36Sopenharmony_ciice_alloc_rx_bufs_zc(struct ice_rx_ring __always_unused *rx_ring, 5462306a36Sopenharmony_ci u16 __always_unused count) 5562306a36Sopenharmony_ci{ 5662306a36Sopenharmony_ci return false; 5762306a36Sopenharmony_ci} 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_cistatic inline bool ice_xsk_any_rx_ring_ena(struct ice_vsi __always_unused *vsi) 6062306a36Sopenharmony_ci{ 6162306a36Sopenharmony_ci return false; 6262306a36Sopenharmony_ci} 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_cistatic inline int 6562306a36Sopenharmony_ciice_xsk_wakeup(struct net_device __always_unused *netdev, 6662306a36Sopenharmony_ci u32 __always_unused queue_id, u32 __always_unused flags) 6762306a36Sopenharmony_ci{ 6862306a36Sopenharmony_ci return -EOPNOTSUPP; 6962306a36Sopenharmony_ci} 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_cistatic inline void ice_xsk_clean_rx_ring(struct ice_rx_ring *rx_ring) { } 7262306a36Sopenharmony_cistatic inline void ice_xsk_clean_xdp_ring(struct ice_tx_ring *xdp_ring) { } 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_cistatic inline int 7562306a36Sopenharmony_ciice_realloc_zc_buf(struct ice_vsi __always_unused *vsi, 7662306a36Sopenharmony_ci bool __always_unused zc) 7762306a36Sopenharmony_ci{ 7862306a36Sopenharmony_ci return 0; 7962306a36Sopenharmony_ci} 8062306a36Sopenharmony_ci#endif /* CONFIG_XDP_SOCKETS */ 8162306a36Sopenharmony_ci#endif /* !_ICE_XSK_H_ */ 82