drivers/net/fddi/skfp/h/hwmtm.h

Source file repositories/reference/linux-study-clean/drivers/net/fddi/skfp/h/hwmtm.h

File Facts

System
Linux kernel
Corpus path
drivers/net/fddi/skfp/h/hwmtm.h
Extension
.h
Size
11019 bytes
Lines
399
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

struct s_mbuf_pool {
#ifndef	MB_OUTSIDE_SMC
	SMbuf		mb[MAX_MBUF] ;		/* mbuf pool */
#endif
	SMbuf		*mb_start ;		/* points to the first mb */
	SMbuf		*mb_free ;		/* free queue */
} ;

struct hwm_r {
	/*
	 * hardware modul specific receive variables
	 */
	u_int			len ;		/* length of the whole frame */
	char			*mb_pos ;	/* SMbuf receive position */
} ;

struct hw_modul {
	/*
	 * All hardware modul specific variables
	 */
	struct	s_mbuf_pool	mbuf_pool ;
	struct	hwm_r	r ;

	union s_fp_descr volatile *descr_p ; /* points to the desriptor area */

	u_short pass_SMT ;		/* pass SMT frames */
	u_short pass_NSA ;		/* pass all NSA frames */
	u_short pass_DB ;		/* pass Direct Beacon Frames */
	u_short pass_llc_promisc ;	/* pass all llc frames (default ON) */

	SMbuf	*llc_rx_pipe ;		/* points to the first queued llc fr */
	SMbuf	*llc_rx_tail ;		/* points to the last queued llc fr */
	int	queued_rx_frames ;	/* number of queued frames */

	SMbuf	*txd_tx_pipe ;		/* points to first mb in the txd ring */
	SMbuf	*txd_tx_tail ;		/* points to last mb in the txd ring */
	int	queued_txd_mb ;		/* number of SMT MBufs in txd ring */

	int	rx_break ;		/* rev. was breaked because ind. off */
	int	leave_isr ;		/* leave fddi_isr immedeately if set */
	int	isr_flag ;		/* set, when HWM is entered from isr */
	/*
	 * variables for the current transmit frame
	 */
	struct s_smt_tx_queue *tx_p ;	/* pointer to the transmit queue */
	u_long	tx_descr ;		/* tx descriptor for FORMAC+ */
	int	tx_len ;		/* tx frame length */
	SMbuf	*tx_mb ;		/* SMT tx MBuf pointer */
	char	*tx_data ;		/* data pointer to the SMT tx Mbuf */

	int	detec_count ;		/* counter for out of RxD condition */
	u_long	rx_len_error ;		/* rx len FORMAC != sum of fragments */
} ;


/*
 * DEBUG structs and macros
 */

#ifdef	DEBUG
struct os_debug {
	int	hwm_rx ;
	int	hwm_tx ;
	int	hwm_gen ;
} ;
#endif

#ifdef	DEBUG
#ifdef	DEBUG_BRD
#define	DB_P	smc->debug
#else
#define DB_P	debug
#endif

#define DB_RX(lev, fmt, ...)						\
do {									\
	if (DB_P.d_os.hwm_rx >= (lev))					\
		printf(fmt "\n", ##__VA_ARGS__);			\
} while (0)
#define DB_TX(lev, fmt, ...)						\
do {									\
	if (DB_P.d_os.hwm_tx >= (lev))					\
		printf(fmt "\n", ##__VA_ARGS__);			\
} while (0)
#define DB_GEN(lev, fmt, ...)						\
do {									\
	if (DB_P.d_os.hwm_gen >= (lev))					\
		printf(fmt "\n", ##__VA_ARGS__);			\
} while (0)
#else	/* DEBUG */

Annotation

Implementation Notes