Home | History | Annotate | Line # | Download | only in dev
      1  1.5  thorpej /*	$NetBSD: if_cnmacvar.h,v 1.5 2022/09/18 11:38:48 thorpej Exp $	*/
      2  1.1   hikaru 
      3  1.1   hikaru #undef DEBUG
      4  1.1   hikaru #ifdef DEBUG
      5  1.4   simonb #define	dprintf printf
      6  1.1   hikaru #else
      7  1.4   simonb #define	dprintf(...)
      8  1.1   hikaru #endif
      9  1.1   hikaru 
     10  1.4   simonb #define	IS_MAC_MULTICASTBIT(addr) \
     11  1.1   hikaru         ((addr)[0] & 0x01)
     12  1.1   hikaru 
     13  1.4   simonb #define	SEND_QUEUE_SIZE		(32)
     14  1.4   simonb #define	GATHER_QUEUE_SIZE	(1024)
     15  1.4   simonb #define	FREE_QUEUE_SIZE		GATHER_QUEUE_SIZE
     16  1.4   simonb #define	RECV_QUEUE_SIZE		(GATHER_QUEUE_SIZE * 2)
     17  1.1   hikaru 
     18  1.4   simonb /* Number of mbufs per port to keep in the packet pool */
     19  1.4   simonb #define	CNMAC_MBUFS_PER_PORT	256
     20  1.1   hikaru 
     21  1.1   hikaru /* XXX MUST BE REPLACED WITH BUS_DMA!!! */
     22  1.1   hikaru paddr_t kvtophys(vaddr_t);
     23  1.1   hikaru /* XXX MUST BE REPLACED WITH BUS_DMA!!! */
     24  1.1   hikaru 
     25  1.1   hikaru struct _send_queue_entry;
     26  1.2   simonb struct octsmi_softc;
     27  1.2   simonb struct octgmx_port_softc;
     28  1.2   simonb struct octipd_softc;
     29  1.2   simonb struct octpip_softc;
     30  1.2   simonb struct octpko_softc;
     31  1.2   simonb struct octpow_softc;
     32  1.1   hikaru 
     33  1.2   simonb extern struct octpow_softc	octpow_softc;
     34  1.1   hikaru 
     35  1.2   simonb struct cnmac_softc {
     36  1.1   hikaru 	device_t		sc_dev;
     37  1.1   hikaru 	bus_space_tag_t		sc_regt;
     38  1.1   hikaru 	bus_dma_tag_t		sc_dmat;
     39  1.1   hikaru 
     40  1.4   simonb 	void			*sc_ih;
     41  1.1   hikaru 
     42  1.2   simonb 	struct octpip_softc	*sc_pip;
     43  1.2   simonb 	struct octipd_softc	*sc_ipd;
     44  1.2   simonb 	struct octpko_softc	*sc_pko;
     45  1.2   simonb 	struct octsmi_softc	*sc_smi;
     46  1.2   simonb 	struct octgmx_softc	*sc_gmx;
     47  1.2   simonb 	struct octgmx_port_softc
     48  1.1   hikaru 				*sc_gmx_port;
     49  1.2   simonb 	struct octpow_softc	*sc_pow;
     50  1.1   hikaru 
     51  1.1   hikaru 	struct ethercom		sc_ethercom;
     52  1.1   hikaru 	struct mii_data		sc_mii;
     53  1.1   hikaru 
     54  1.1   hikaru 	void			*sc_sdhook;
     55  1.1   hikaru 
     56  1.1   hikaru 	struct callout		sc_tick_misc_ch;
     57  1.1   hikaru 	struct callout		sc_tick_free_ch;
     58  1.1   hikaru 
     59  1.1   hikaru 	int64_t			sc_soft_req_cnt;
     60  1.1   hikaru 	int64_t			sc_soft_req_thresh;
     61  1.1   hikaru 	int64_t			sc_hard_done_cnt;
     62  1.1   hikaru 	int			sc_flush;
     63  1.1   hikaru 	int			sc_prefetch;
     64  1.1   hikaru 	SIMPLEQ_HEAD(, _send_queue_entry)
     65  1.1   hikaru 				sc_sendq;
     66  1.1   hikaru 	uint64_t		sc_ext_callback_cnt;
     67  1.5  thorpej 	bool			sc_txbusy;
     68  1.1   hikaru 
     69  1.1   hikaru 	uint32_t		sc_port;
     70  1.1   hikaru 	uint32_t		sc_port_type;
     71  1.1   hikaru 	uint32_t		sc_init_flag;
     72  1.4   simonb 	int			sc_powgroup;
     73  1.1   hikaru 
     74  1.1   hikaru 	/*
     75  1.1   hikaru 	 * Redirection - received (input) packets are redirected (directly sent)
     76  1.1   hikaru 	 * to another port.  Only meant to test hardware + driver performance.
     77  1.1   hikaru 	 *
     78  1.1   hikaru 	 *  0	- disabled
     79  1.1   hikaru 	 * >0	- redirected to ports that correspond to bits
     80  1.1   hikaru 	 *		0b001 (0x1)	- Port 0
     81  1.1   hikaru 	 *		0b010 (0x2)	- Port 1
     82  1.1   hikaru 	 *		0b100 (0x4)	- Port 2
     83  1.1   hikaru 	 */
     84  1.1   hikaru 	int			sc_redir;
     85  1.1   hikaru 
     86  1.2   simonb 	struct octfau_desc	sc_fau_done;
     87  1.2   simonb 	struct octpko_cmdptr_desc
     88  1.1   hikaru 				sc_cmdptr;
     89  1.1   hikaru 
     90  1.1   hikaru 	size_t			sc_ip_offset;
     91  1.1   hikaru 
     92  1.4   simonb 	struct timeval		sc_rxerr_log_last;
     93  1.4   simonb 
     94  1.1   hikaru 	int			sc_quirks;
     95  1.1   hikaru };
     96