12d4238f5SKrzysztof Kazimierczak /* SPDX-License-Identifier: GPL-2.0 */ 22d4238f5SKrzysztof Kazimierczak /* Copyright (c) 2019, Intel Corporation. */ 32d4238f5SKrzysztof Kazimierczak 42d4238f5SKrzysztof Kazimierczak #ifndef _ICE_XSK_H_ 52d4238f5SKrzysztof Kazimierczak #define _ICE_XSK_H_ 62d4238f5SKrzysztof Kazimierczak #include "ice_txrx.h" 72d4238f5SKrzysztof Kazimierczak #include "ice.h" 82d4238f5SKrzysztof Kazimierczak 92d4238f5SKrzysztof Kazimierczak struct ice_vsi; 102d4238f5SKrzysztof Kazimierczak 112d4238f5SKrzysztof Kazimierczak #ifdef CONFIG_XDP_SOCKETS 121742b3d5SMagnus Karlsson int ice_xsk_pool_setup(struct ice_vsi *vsi, struct xsk_buff_pool *pool, 131742b3d5SMagnus Karlsson u16 qid); 14*e72bba21SMaciej Fijalkowski int ice_clean_rx_irq_zc(struct ice_rx_ring *rx_ring, int budget); 15*e72bba21SMaciej Fijalkowski bool ice_clean_tx_irq_zc(struct ice_tx_ring *xdp_ring, int budget); 162d4238f5SKrzysztof Kazimierczak int ice_xsk_wakeup(struct net_device *netdev, u32 queue_id, u32 flags); 17*e72bba21SMaciej Fijalkowski bool ice_alloc_rx_bufs_zc(struct ice_rx_ring *rx_ring, u16 count); 182d4238f5SKrzysztof Kazimierczak bool ice_xsk_any_rx_ring_ena(struct ice_vsi *vsi); 19*e72bba21SMaciej Fijalkowski void ice_xsk_clean_rx_ring(struct ice_rx_ring *rx_ring); 20*e72bba21SMaciej Fijalkowski void ice_xsk_clean_xdp_ring(struct ice_tx_ring *xdp_ring); 212d4238f5SKrzysztof Kazimierczak #else 222d4238f5SKrzysztof Kazimierczak static inline int 231742b3d5SMagnus Karlsson ice_xsk_pool_setup(struct ice_vsi __always_unused *vsi, 241742b3d5SMagnus Karlsson struct xsk_buff_pool __always_unused *pool, 252d4238f5SKrzysztof Kazimierczak u16 __always_unused qid) 262d4238f5SKrzysztof Kazimierczak { 27dced8ad3SAnirudh Venkataramanan return -EOPNOTSUPP; 282d4238f5SKrzysztof Kazimierczak } 292d4238f5SKrzysztof Kazimierczak 302d4238f5SKrzysztof Kazimierczak static inline int 31*e72bba21SMaciej Fijalkowski ice_clean_rx_irq_zc(struct ice_rx_ring __always_unused *rx_ring, 322d4238f5SKrzysztof Kazimierczak int __always_unused budget) 332d4238f5SKrzysztof Kazimierczak { 342d4238f5SKrzysztof Kazimierczak return 0; 352d4238f5SKrzysztof Kazimierczak } 362d4238f5SKrzysztof Kazimierczak 372d4238f5SKrzysztof Kazimierczak static inline bool 38*e72bba21SMaciej Fijalkowski ice_clean_tx_irq_zc(struct ice_tx_ring __always_unused *xdp_ring, 392d4238f5SKrzysztof Kazimierczak int __always_unused budget) 402d4238f5SKrzysztof Kazimierczak { 412d4238f5SKrzysztof Kazimierczak return false; 422d4238f5SKrzysztof Kazimierczak } 432d4238f5SKrzysztof Kazimierczak 442d4238f5SKrzysztof Kazimierczak static inline bool 45*e72bba21SMaciej Fijalkowski ice_alloc_rx_bufs_zc(struct ice_rx_ring __always_unused *rx_ring, 462d4238f5SKrzysztof Kazimierczak u16 __always_unused count) 472d4238f5SKrzysztof Kazimierczak { 482d4238f5SKrzysztof Kazimierczak return false; 492d4238f5SKrzysztof Kazimierczak } 502d4238f5SKrzysztof Kazimierczak 512d4238f5SKrzysztof Kazimierczak static inline bool ice_xsk_any_rx_ring_ena(struct ice_vsi __always_unused *vsi) 522d4238f5SKrzysztof Kazimierczak { 532d4238f5SKrzysztof Kazimierczak return false; 542d4238f5SKrzysztof Kazimierczak } 552d4238f5SKrzysztof Kazimierczak 562d4238f5SKrzysztof Kazimierczak static inline int 572d4238f5SKrzysztof Kazimierczak ice_xsk_wakeup(struct net_device __always_unused *netdev, 582d4238f5SKrzysztof Kazimierczak u32 __always_unused queue_id, u32 __always_unused flags) 592d4238f5SKrzysztof Kazimierczak { 60dced8ad3SAnirudh Venkataramanan return -EOPNOTSUPP; 612d4238f5SKrzysztof Kazimierczak } 622d4238f5SKrzysztof Kazimierczak 63*e72bba21SMaciej Fijalkowski static inline void ice_xsk_clean_rx_ring(struct ice_rx_ring *rx_ring) { } 64*e72bba21SMaciej Fijalkowski static inline void ice_xsk_clean_xdp_ring(struct ice_tx_ring *xdp_ring) { } 652d4238f5SKrzysztof Kazimierczak #endif /* CONFIG_XDP_SOCKETS */ 662d4238f5SKrzysztof Kazimierczak #endif /* !_ICE_XSK_H_ */ 67