#ifndef _QEDE_H_
#define _QEDE_H_
#include <linux/workqueue.h>
#include <linux/netdevice.h>
#include <linux/interrupt.h>
#include <linux/bitmap.h>
#include <linux/kernel.h>
#include <linux/mutex.h>
#include <linux/bpf.h>
#include <net/xdp.h>
#include <linux/qed/qede_rdma.h>
#include <linux/io.h>
#ifdef CONFIG_RFS_ACCEL
#include <linux/cpu_rmap.h>
#endif
#include <linux/qed/common_hsi.h>
#include <linux/qed/eth_common.h>
#include <linux/qed/qed_if.h>
#include <linux/qed/qed_chain.h>
#include <linux/qed/qed_eth_if.h>
#include <net/pkt_cls.h>
#include <net/tc_act/tc_gact.h>
#define DRV_MODULE_SYM …
struct qede_stats_common { … };
struct qede_stats_bb { … };
struct qede_stats_ah { … };
struct qede_stats { … };
struct qede_vlan { … };
struct qede_rdma_dev { … };
struct qede_ptp;
#define QEDE_RFS_MAX_FLTR …
enum qede_flags_bit { … };
#define QEDE_DUMP_MAX_ARGS …
enum qede_dump_cmd { … };
struct qede_dump_info { … };
struct qede_coalesce { … };
struct qede_dev { … };
enum QEDE_STATE { … };
#define HILO_U64(hi, lo) …
#define MAX_NUM_TC …
#define MAX_NUM_PRI …
struct sw_rx_data { … };
enum qede_agg_state { … };
struct qede_agg_info { … };
struct qede_rx_queue { … };
db_prod;
struct sw_tx_bd { … };
struct sw_tx_xdp { … };
struct qede_tx_queue { … };
#define BD_UNMAP_ADDR(bd) …
#define BD_SET_UNMAP_ADDR_LEN(bd, maddr, len) …
#define BD_UNMAP_LEN(bd) …
struct qede_fastpath { … };
#define DP_NAME(edev) …
#define XMIT_PLAIN …
#define XMIT_L4_CSUM …
#define XMIT_LSO …
#define XMIT_ENC …
#define XMIT_ENC_GSO_L4_CSUM …
#define QEDE_CSUM_ERROR …
#define QEDE_CSUM_UNNECESSARY …
#define QEDE_TUNN_CSUM_UNNECESSARY …
#define QEDE_SP_RECOVERY …
#define QEDE_SP_RX_MODE …
#define QEDE_SP_RSVD1 …
#define QEDE_SP_RSVD2 …
#define QEDE_SP_HW_ERR …
#define QEDE_SP_ARFS_CONFIG …
#define QEDE_SP_AER …
#define QEDE_SP_DISABLE …
#ifdef CONFIG_RFS_ACCEL
int qede_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb,
u16 rxq_index, u32 flow_id);
#define QEDE_SP_TASK_POLL_DELAY …
#endif
void qede_process_arfs_filters(struct qede_dev *edev, bool free_fltr);
void qede_poll_for_freeing_arfs_filters(struct qede_dev *edev);
void qede_arfs_filter_op(void *dev, void *filter, u8 fw_rc);
void qede_free_arfs(struct qede_dev *edev);
int qede_alloc_arfs(struct qede_dev *edev);
int qede_add_cls_rule(struct qede_dev *edev, struct ethtool_rxnfc *info);
int qede_delete_flow_filter(struct qede_dev *edev, u64 cookie);
int qede_get_cls_rule_entry(struct qede_dev *edev, struct ethtool_rxnfc *cmd);
int qede_get_cls_rule_all(struct qede_dev *edev, struct ethtool_rxnfc *info,
u32 *rule_locs);
int qede_get_arfs_filter_count(struct qede_dev *edev);
struct qede_reload_args { … };
netdev_tx_t qede_start_xmit(struct sk_buff *skb, struct net_device *ndev);
int qede_xdp_transmit(struct net_device *dev, int n_frames,
struct xdp_frame **frames, u32 flags);
u16 qede_select_queue(struct net_device *dev, struct sk_buff *skb,
struct net_device *sb_dev);
netdev_features_t qede_features_check(struct sk_buff *skb,
struct net_device *dev,
netdev_features_t features);
int qede_alloc_rx_buffer(struct qede_rx_queue *rxq, bool allow_lazy);
int qede_free_tx_pkt(struct qede_dev *edev,
struct qede_tx_queue *txq, int *len);
int qede_poll(struct napi_struct *napi, int budget);
irqreturn_t qede_msix_fp_int(int irq, void *fp_cookie);
void qede_force_mac(void *dev, u8 *mac, bool forced);
void qede_udp_ports_update(void *dev, u16 vxlan_port, u16 geneve_port);
int qede_set_mac_addr(struct net_device *ndev, void *p);
int qede_vlan_rx_add_vid(struct net_device *dev, __be16 proto, u16 vid);
int qede_vlan_rx_kill_vid(struct net_device *dev, __be16 proto, u16 vid);
void qede_vlan_mark_nonconfigured(struct qede_dev *edev);
int qede_configure_vlan_filters(struct qede_dev *edev);
netdev_features_t qede_fix_features(struct net_device *dev,
netdev_features_t features);
int qede_set_features(struct net_device *dev, netdev_features_t features);
void qede_set_rx_mode(struct net_device *ndev);
void qede_config_rx_mode(struct net_device *ndev);
void qede_fill_rss_params(struct qede_dev *edev,
struct qed_update_vport_rss_params *rss, u8 *update);
int qede_xdp(struct net_device *dev, struct netdev_bpf *xdp);
#ifdef CONFIG_DCB
void qede_set_dcbnl_ops(struct net_device *ndev);
#endif
void qede_config_debug(uint debug, u32 *p_dp_module, u8 *p_dp_level);
void qede_set_ethtool_ops(struct net_device *netdev);
void qede_set_udp_tunnels(struct qede_dev *edev);
void qede_reload(struct qede_dev *edev,
struct qede_reload_args *args, bool is_locked);
int qede_change_mtu(struct net_device *dev, int new_mtu);
void qede_fill_by_demand_stats(struct qede_dev *edev);
void __qede_lock(struct qede_dev *edev);
void __qede_unlock(struct qede_dev *edev);
bool qede_has_rx_work(struct qede_rx_queue *rxq);
int qede_txq_has_work(struct qede_tx_queue *txq);
void qede_recycle_rx_bd_ring(struct qede_rx_queue *rxq, u8 count);
void qede_update_rx_prod(struct qede_dev *edev, struct qede_rx_queue *rxq);
int qede_add_tc_flower_fltr(struct qede_dev *edev, __be16 proto,
struct flow_cls_offload *f);
void qede_forced_speed_maps_init(void);
int qede_set_coalesce(struct net_device *dev, struct ethtool_coalesce *coal,
struct kernel_ethtool_coalesce *kernel_coal,
struct netlink_ext_ack *extack);
int qede_set_per_coalesce(struct net_device *dev, u32 queue,
struct ethtool_coalesce *coal);
#define RX_RING_SIZE_POW …
#define RX_RING_SIZE …
#define NUM_RX_BDS_MAX …
#define NUM_RX_BDS_MIN …
#define NUM_RX_BDS_KDUMP_MIN …
#define NUM_RX_BDS_DEF …
#define TX_RING_SIZE_POW …
#define TX_RING_SIZE …
#define NUM_TX_BDS_MAX …
#define NUM_TX_BDS_MIN …
#define NUM_TX_BDS_KDUMP_MIN …
#define NUM_TX_BDS_DEF …
#define QEDE_MIN_PKT_LEN …
#define QEDE_RX_HDR_SIZE …
#define QEDE_MAX_JUMBO_PACKET_SIZE …
#define for_each_queue(i) …
#define for_each_cos_in_txq(edev, var) …
#endif