1c6d30e83SMichael Chan /* Broadcom NetXtreme-C/E network driver. 2c6d30e83SMichael Chan * 3c6d30e83SMichael Chan * Copyright (c) 2016-2017 Broadcom Limited 4c6d30e83SMichael Chan * 5c6d30e83SMichael Chan * This program is free software; you can redistribute it and/or modify 6c6d30e83SMichael Chan * it under the terms of the GNU General Public License as published by 7c6d30e83SMichael Chan * the Free Software Foundation. 8c6d30e83SMichael Chan */ 9c6d30e83SMichael Chan 10c6d30e83SMichael Chan #ifndef BNXT_XDP_H 11c6d30e83SMichael Chan #define BNXT_XDP_H 12c6d30e83SMichael Chan 134f81def2SPavan Chebbi DECLARE_STATIC_KEY_FALSE(bnxt_xdp_locking_key); 144f81def2SPavan Chebbi 15c1ba92a8SMichael Chan struct bnxt_sw_tx_bd *bnxt_xmit_bd(struct bnxt *bp, 16c1ba92a8SMichael Chan struct bnxt_tx_ring_info *txr, 17a7559bc8SAndy Gospodarek dma_addr_t mapping, u32 len, 18a7559bc8SAndy Gospodarek struct xdp_buff *xdp); 1937b61cdaSJakub Kicinski void bnxt_tx_int_xdp(struct bnxt *bp, struct bnxt_napi *bnapi, int budget); 20c6d30e83SMichael Chan bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons, 219b3e6078SMichael Chan struct xdp_buff xdp, struct page *page, u8 **data_ptr, 229b3e6078SMichael Chan unsigned int *len, u8 *event); 23f4e63525SJakub Kicinski int bnxt_xdp(struct net_device *dev, struct netdev_bpf *xdp); 24f18c2b77SAndy Gospodarek int bnxt_xdp_xmit(struct net_device *dev, int num_frames, 25f18c2b77SAndy Gospodarek struct xdp_frame **frames, u32 flags); 26c6d30e83SMichael Chan 27b231c3f3SAndy Gospodarek bool bnxt_xdp_attached(struct bnxt *bp, struct bnxt_rx_ring_info *rxr); 28b231c3f3SAndy Gospodarek 29b231c3f3SAndy Gospodarek void bnxt_xdp_buff_init(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, 30bbfc17e5SMichael Chan u16 cons, u8 *data_ptr, unsigned int len, 31b231c3f3SAndy Gospodarek struct xdp_buff *xdp); 32a7559bc8SAndy Gospodarek void bnxt_xdp_buff_frags_free(struct bnxt_rx_ring_info *rxr, 33a7559bc8SAndy Gospodarek struct xdp_buff *xdp); 341dc4c557SAndy Gospodarek struct sk_buff *bnxt_xdp_build_skb(struct bnxt *bp, struct sk_buff *skb, 351dc4c557SAndy Gospodarek u8 num_frags, struct page_pool *pool, 36*ee086c8eSTaehee Yoo struct xdp_buff *xdp); 37c6d30e83SMichael Chan #endif 38