linux/drivers/net/ethernet/brocade/bna/bnad.h

/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Linux network driver for QLogic BR-series Converged Network Adapter.
 */
/*
 * Copyright (c) 2005-2014 Brocade Communications Systems, Inc.
 * Copyright (c) 2014-2015 QLogic Corporation
 * All rights reserved
 * www.qlogic.com
 */
#ifndef __BNAD_H__
#define __BNAD_H__

#include <linux/rtnetlink.h>
#include <linux/workqueue.h>
#include <linux/ipv6.h>
#include <linux/etherdevice.h>
#include <linux/mutex.h>
#include <linux/firmware.h>
#include <linux/if_vlan.h>

#include <asm/checksum.h>
#include <net/ip6_checksum.h>

#include <net/ip.h>
#include <net/tcp.h>

#include "bna.h"

#define BNAD_TXQ_DEPTH
#define BNAD_RXQ_DEPTH

#define BNAD_MAX_TX
#define BNAD_MAX_TXQ_PER_TX
#define BNAD_TXQ_NUM

#define BNAD_MAX_RX
#define BNAD_MAX_RXP_PER_RX
#define BNAD_MAX_RXQ_PER_RXP

/*
 * Control structure pointed to ccb->ctrl, which
 * determines the NAPI / LRO behavior CCB
 * There is 1:1 corres. between ccb & ctrl
 */
struct bnad_rx_ctrl {};

#define BNAD_RXMODE_PROMISC_DEFAULT

/*
 * GLOBAL #defines (CONSTANTS)
 */
#define BNAD_NAME
#define BNAD_NAME_LEN

#define BNAD_MAILBOX_MSIX_INDEX
#define BNAD_MAILBOX_MSIX_VECTORS
#define BNAD_INTX_TX_IB_BITMASK
#define BNAD_INTX_RX_IB_BITMASK

#define BNAD_STATS_TIMER_FREQ
#define BNAD_DIM_TIMER_FREQ

#define BNAD_IOCETH_TIMEOUT

#define BNAD_MIN_Q_DEPTH
#define BNAD_MAX_RXQ_DEPTH
#define BNAD_MAX_TXQ_DEPTH

#define BNAD_JUMBO_MTU

#define BNAD_NETIF_WAKE_THRESHOLD

#define BNAD_RXQ_REFILL_THRESHOLD_SHIFT

/* Bit positions for tcb->flags */
#define BNAD_TXQ_FREE_SENT
#define BNAD_TXQ_TX_STARTED

/* Bit positions for rcb->flags */
#define BNAD_RXQ_STARTED
#define BNAD_RXQ_POST_OK

/* Resource limits */
#define BNAD_NUM_TXQ
#define BNAD_NUM_RXP

#define BNAD_FRAME_SIZE(_mtu)

/*
 * DATA STRUCTURES
 */

/* enums */
enum bnad_intr_source {};

enum bnad_link_state {};

struct bnad_iocmd_comp {};

struct bnad_completion {};

/* Tx Rx Control Stats */
struct bnad_drv_stats {};

/* Complete driver stats */
struct bnad_stats {};

/* Tx / Rx Resources */
struct bnad_tx_res_info {};

struct bnad_rx_res_info {};

struct bnad_tx_info {} ____cacheline_aligned;

struct bnad_rx_info {} ____cacheline_aligned;

struct bnad_tx_vector {};

struct bnad_tx_unmap {};

struct bnad_rx_vector {};

struct bnad_rx_unmap {};

enum bnad_rxbuf_type {};

#define BNAD_RXBUF_IS_SK_BUFF(_type)
#define BNAD_RXBUF_IS_MULTI_BUFF(_type)

struct bnad_rx_unmap_q {};

#define BNAD_PCI_DEV_IS_CAT2(_bnad)

/* Bit mask values for bnad->cfg_flags */
#define BNAD_CF_DIM_ENABLED
#define BNAD_CF_PROMISC
#define BNAD_CF_ALLMULTI
#define BNAD_CF_DEFAULT
#define BNAD_CF_MSIX

/* Defines for run_flags bit-mask */
/* Set, tested & cleared using xxx_bit() functions */
/* Values indicated bit positions */
#define BNAD_RF_CEE_RUNNING
#define BNAD_RF_MTU_SET
#define BNAD_RF_MBOX_IRQ_DISABLED
#define BNAD_RF_NETDEV_REGISTERED
#define BNAD_RF_DIM_TIMER_RUNNING
#define BNAD_RF_STATS_TIMER_RUNNING
#define BNAD_RF_TX_PRIO_SET

struct bnad {};

struct bnad_drvinfo {};

/*
 * EXTERN VARIABLES
 */
extern const struct firmware *bfi_fw;

/*
 * EXTERN PROTOTYPES
 */
u32 *cna_get_firmware_buf(struct pci_dev *pdev);
/* Netdev entry point prototypes */
void bnad_set_rx_mode(struct net_device *netdev);
struct net_device_stats *bnad_get_netdev_stats(struct net_device *netdev);
int bnad_mac_addr_set_locked(struct bnad *bnad, const u8 *mac_addr);
int bnad_enable_default_bcast(struct bnad *bnad);
void bnad_restore_vlans(struct bnad *bnad, u32 rx_id);
void bnad_set_ethtool_ops(struct net_device *netdev);
void bnad_cb_completion(void *arg, enum bfa_status status);

/* Configuration & setup */
void bnad_tx_coalescing_timeo_set(struct bnad *bnad);
void bnad_rx_coalescing_timeo_set(struct bnad *bnad);

int bnad_setup_rx(struct bnad *bnad, u32 rx_id);
int bnad_setup_tx(struct bnad *bnad, u32 tx_id);
void bnad_destroy_tx(struct bnad *bnad, u32 tx_id);
void bnad_destroy_rx(struct bnad *bnad, u32 rx_id);

/* Timer start/stop protos */
void bnad_dim_timer_start(struct bnad *bnad);

/* Statistics */
void bnad_netdev_qstats_fill(struct bnad *bnad,
			     struct rtnl_link_stats64 *stats);
void bnad_netdev_hwstats_fill(struct bnad *bnad,
			      struct rtnl_link_stats64 *stats);

/* Debugfs */
void bnad_debugfs_init(struct bnad *bnad);
void bnad_debugfs_uninit(struct bnad *bnad);

/* MACROS */
/* To set & get the stats counters */
#define BNAD_UPDATE_CTR(_bnad, _ctr)

#define BNAD_GET_CTR(_bnad, _ctr)

#define bnad_enable_rx_irq_unsafe(_ccb)

#endif /* __BNAD_H__ */