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

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/brocade/bna/bna.h

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/brocade/bna/bna.h
Extension
.h
Size
13074 bytes
Lines
419
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

if (__tx->rid == (_rid)) {				\
			(_tx) = __tx;					\
			break;						\
		}							\
	}								\
} while (0)

#define bna_rx_from_rid(_bna, _rid, _rx)				\
do {									\
	struct bna_rx_mod *__rx_mod = &(_bna)->rx_mod;			\
	struct bna_rx *__rx;						\
	_rx = NULL;							\
	list_for_each_entry(__rx, &__rx_mod->rx_active_q, qe) {		\
		if (__rx->rid == (_rid)) {				\
			(_rx) = __rx;					\
			break;						\
		}							\
	}								\
} while (0)

#define bna_mcam_mod_free_q(_bna) (&(_bna)->mcam_mod.free_q)

#define bna_mcam_mod_del_q(_bna) (&(_bna)->mcam_mod.del_q)

#define bna_ucam_mod_free_q(_bna) (&(_bna)->ucam_mod.free_q)

#define bna_ucam_mod_del_q(_bna) (&(_bna)->ucam_mod.del_q)

/*  Inline functions  */

static inline struct bna_mac *bna_mac_find(struct list_head *q, const u8 *addr)
{
	struct bna_mac *mac;

	list_for_each_entry(mac, q, qe)
		if (ether_addr_equal(mac->addr, addr))
			return mac;
	return NULL;
}

#define bna_attr(_bna) (&(_bna)->ioceth.attr)

/* Function prototypes */

/* BNA */

/* FW response handlers */
void bna_bfi_stats_clr_rsp(struct bna *bna, struct bfi_msgq_mhdr *msghdr);

/* APIs for BNAD */
void bna_res_req(struct bna_res_info *res_info);
void bna_mod_res_req(struct bna *bna, struct bna_res_info *res_info);
void bna_init(struct bna *bna, struct bnad *bnad,
			struct bfa_pcidev *pcidev,
			struct bna_res_info *res_info);
void bna_mod_init(struct bna *bna, struct bna_res_info *res_info);
void bna_uninit(struct bna *bna);
int bna_num_txq_set(struct bna *bna, int num_txq);
int bna_num_rxp_set(struct bna *bna, int num_rxp);
void bna_hw_stats_get(struct bna *bna);

/* APIs for RxF */
struct bna_mac *bna_cam_mod_mac_get(struct list_head *head);
struct bna_mcam_handle *bna_mcam_mod_handle_get(struct bna_mcam_mod *mod);
void bna_mcam_mod_handle_put(struct bna_mcam_mod *mcam_mod,
			  struct bna_mcam_handle *handle);

/* MBOX */

/* API for BNAD */
void bna_mbox_handler(struct bna *bna, u32 intr_status);

/* ETHPORT */

/* Callbacks for RX */
void bna_ethport_cb_rx_started(struct bna_ethport *ethport);
void bna_ethport_cb_rx_stopped(struct bna_ethport *ethport);

/* TX MODULE AND TX */

/* FW response handelrs */
void bna_bfi_tx_enet_start_rsp(struct bna_tx *tx,
			       struct bfi_msgq_mhdr *msghdr);
void bna_bfi_tx_enet_stop_rsp(struct bna_tx *tx,
			      struct bfi_msgq_mhdr *msghdr);
void bna_bfi_bw_update_aen(struct bna_tx_mod *tx_mod);

/* APIs for BNA */
void bna_tx_mod_init(struct bna_tx_mod *tx_mod, struct bna *bna,
		     struct bna_res_info *res_info);

Annotation

Implementation Notes