Plan 9 from Bell Labs’s /usr/web/sources/extra/9hist/mpc/etherwavelan.h

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


## diffname mpc/etherwavelan.h 1999/0623
## diff -e /dev/null /n/emeliedump/1999/0623/sys/src/brazil/mpc/etherwavelan.h
0a

/* Intel 82593 CSMA/CD Core LAN Controller */

/* Port 0 Command Register definitions */

/* Execution operations */
enum {
	OP0_NOP			= 0,	/* CHNL = 0 */
	OP0_SWIT_TO_PORT_1	= 0,	/* CHNL = 1 */
	OP0_IA_SETUP		= 1,
	OP0_CONFIGURE		= 2,
	OP0_MC_SETUP		= 3,
	OP0_TRANSMIT		= 4,
	OP0_TDR			= 5,
	OP0_DUMP		= 6,
	OP0_DIAGNOSE		= 7,
	OP0_TRANSMIT_NO_CRC	= 9,
	OP0_RETRANSMIT		= 12,
	OP0_ABORT		= 13,
/* Reception operations */
	OP0_RCV_ENABLE		= 8,
	OP0_RCV_DISABLE		= 10,
	OP0_STOP_RCV		= 11,
/* Status pointer control operations */
	OP0_FIX_PTR		= 15,	/* CHNL = 1 */
	OP0_RLS_PTR		= 15,	/* CHNL = 0 */
	OP0_RESET		= 14,
};
enum {
	CR0_CHNL		= (1 << 4),	/* 0=Channel 0, 1=Channel 1 */
	CR0_STATUS_0		= 0x00,
	CR0_STATUS_1		= 0x20,
	CR0_STATUS_2		= 0x40,
	CR0_STATUS_3		= 0x60,
	CR0_INT_ACK		= (1 << 7),	/* 0=No ack, 1=acknowledge */
};
/* Port 0 Status Register definitions */
enum {
	SR0_NO_RESULT		= 0,		/* dummy */
	SR0_EVENT_MASK		= 0x0f,
	SR0_IA_SETUP_DONE	= 1,
	SR0_CONFIGURE_DONE	= 2,
	SR0_MC_SETUP_DONE	= 3,
	SR0_TRANSMIT_DONE	= 4,
	SR0_TDR_DONE		= 5,
	SR0_DUMP_DONE		= 6,
	SR0_DIAGNOSE_PASSED	= 7,
	SR0_TRANSMIT_NO_CRC_DONE = 9,
	SR0_RETRANSMIT_DONE	= 12,
 	SR0_EXECUTION_ABORTED	= 13,
	SR0_END_OF_FRAME	= 8,
	SR0_RECEPTION_ABORTED	= 10,
	SR0_DIAGNOSE_FAILED	= 15,
	SR0_STOP_REG_HIT	= 11,

	SR0_CHNL		= (1 << 4),
	SR0_EXECUTION		= (1 << 5),
	SR0_RECEPTION		= (1 << 6),
	SR0_INTERRUPT		= (1 << 7),
};
enum {
	SR3_EXEC_STATE_MASK	= 0x03,
	SR3_EXEC_IDLE		= 0,
	SR3_TX_ABORT_IN_PROGRESS = 1,
	SR3_EXEC_ACTIVE		= 2,
	SR3_ABORT_IN_PROGRESS	= 3,
	SR3_EXEC_CHNL		= (1 << 2),
	SR3_STP_ON_NO_RSRC	= (1 << 3),
	SR3_RCVING_NO_RSRC	= (1 << 4),
	SR3_RCV_STATE_MASK	= 0x60,
	SR3_RCV_IDLE		= 0x00,
	SR3_RCV_READY		= 0x20,
	SR3_RCV_ACTIVE		= 0x40,
	SR3_RCV_STOP_IN_PROG	= 0x60,
	SR3_RCV_CHNL		= (1 << 7),
};
/* Port 1 Command Register definitions */
enum {
	OP1_NOP			= 0,
	OP1_SWIT_TO_PORT_0	= 1,
	OP1_INT_DISABLE		= 2,
	OP1_INT_ENABLE		= 3,
	OP1_SET_TS		= 5,
	OP1_RST_TS		= 7,
	OP1_POWER_DOWN		= 8,
	OP1_RESET_RING_MNGMT	= 11,
	OP1_RESET		= 14,
	OP1_SEL_RST		= 15,
};
enum {
	CR1_STATUS_4		= 0x00,
	CR1_STATUS_5		= 0x20,
	CR1_STATUS_6		= 0x40,
	CR1_STOP_REG_UPDATE	= (1 << 7),
};
/* Receive frame status bits */
enum {
	RX_RCLD			= (1 << 0),
	RX_IA_MATCH		= (1 << 1),
	RX_NO_AD_MATCH		= (1 << 2),
	RX_NO_SFD		= (1 << 3),
	RX_SRT_FRM		= (1 << 7),
	RX_OVRRUN		= (1 << 8),
	RX_ALG_ERR		= (1 << 10),
	RX_CRC_ERR		= (1 << 11),
	RX_LEN_ERR		= (1 << 12),
	RX_RCV_OK		= (1 << 13),
	RX_TYP_LEN		= (1 << 15),
};
/* Transmit status bits */
enum {
	TX_NCOL_MASK		= 0x0f,
	TX_FRTL			= (1 << 4),
	TX_MAX_COL		= (1 << 5),
	TX_HRT_BEAT		= (1 << 6),
	TX_DEFER		= (1 << 7),
	TX_UND_RUN		= (1 << 8),
	TX_LOST_CTS		= (1 << 9),
	TX_LOST_CRS		= (1 << 10),
	TX_LTCOL		= (1 << 11),
	TX_OK			= (1 << 13),
	TX_COLL			= (1 << 15),
};

typedef struct {
	Lock	wlock;
	int	port;				/* port number */
	int	status;				/* interrupt status */	
	int	stop;
	int 	rfp;			
	int	attached;
	Block*	rbp;				/* receive buffer */
	Block*	txbp;				/* FIFO -based transmission */
	int	txbusy;
  	uchar	nwid[2];			/* Network ID */
	long	interrupts;			/* statistics */
	long	upinterrupts;
	long	dninterrupts;
	long	out_packets;
	long	in_packets;
	long	tx_too_long;
	long	tx_DMA_underrun;
	long	tx_carrier_error;
	long	tx_congestion;
	long	tx_heart_beat;
	long	rx_overflow;
	long	rx_overrun;
	long	rx_crc;
	long	rx_no_sfd;
	long 	rx_dropped;
	long 	tx_packets;
	long	rx_packets;
	long	int_errors;
	long	read_errors;
	int	upenabled;
	int	dnenabled;
	int 	waiting;
} Ctlr;


struct i82593_conf_block {
  uchar fifo_limit  : 4,
  	 forgnesi   : 1,
  	 fifo_32    : 1,
  	 d6mod      : 1,
  	 throttle_enb : 1;
  uchar throttle    : 6,
	 cntrxint   : 1,
	 contin	    : 1;
  uchar addr_len    : 3,
  	 acloc 	    : 1,
 	 preamb_len : 2,
  	 loopback   : 2;
  uchar lin_prio    : 3,
	 tbofstop   : 1,
	 exp_prio   : 3,
	 bof_met    : 1;
  uchar	    : 4,
	 ifrm_spc   : 4;
  uchar	    : 5,
	 slottim_low : 3;
  uchar slottim_hi  : 3,
		    : 1,
	 max_retr   : 4;
  uchar prmisc      : 1,
	 bc_dis     : 1,
  		    : 1,
	 crs_1	    : 1,
	 nocrc_ins  : 1,
	 crc_1632   : 1,
  	 	    : 1,
  	 crs_cdt    : 1;
  uchar cs_filter   : 3,
	 crs_src    : 1,
	 cd_filter  : 3,
		    : 1;
  uchar	    	    : 2,
  	 min_fr_len : 6;
  uchar lng_typ     : 1,
	 lng_fld    : 1,
	 rxcrc_xf   : 1,
	 artx	    : 1,
	 sarec	    : 1,
	 tx_jabber  : 1,	/* why is this called max_len in the manual? */
	 hash_1	    : 1,
  	 lbpkpol    : 1;
  uchar	    	    : 6,
  	 fdx	    : 1,
  	  	    : 1;
  uchar dummy_6     : 6,	/* supposed to be ones */
  	 mult_ia    : 1,
  	 dis_bof    : 1;
  uchar dummy_1     : 1,	/* supposed to be one */
	 tx_ifs_retrig : 2,
	 mc_all     : 1,
	 rcv_mon    : 2,
	 frag_acpt  : 1,
  	 tstrttrs   : 1;
  uchar fretx	    : 1,
	 runt_eop   : 1,
	 hw_sw_pin  : 1,
	 big_endn   : 1,
	 syncrqs    : 1,
	 sttlen     : 1,
	 tx_eop     : 1,
  	 rx_eop	    : 1;
  uchar rbuf_size   : 5,
	 rcvstop    : 1,
  	 	    : 2;
};

/* WaveLAN host interface definitions */

#define	LCCR(base)	(base)		/* LAN Controller Command Register */
#define	LCSR(base)	(base)		/* LAN Controller Status Register */
#define	HACR(base)	(base+0x1)	/* Host Adapter Command Register */
#define	HASR(base)	(base+0x1)	/* Host Adapter Status Register */
#define PIORL(base)	(base+0x2)	/* Program I/O Register Low */
#define RPLL(base)	(base+0x2)	/* Receive Pointer Latched Low */
#define PIORH(base)	(base+0x3)	/* Program I/O Register High */
#define RPLH(base)	(base+0x3)	/* Receive Pointer Latched High */
#define PIOP(base)	(base+0x4)	/* Program I/O Port */
#define MMR(base)	(base+0x6)	/* MMI Address Register */
#define MMD(base)	(base+0x7)	/* MMI Data Register */

/* Host Adaptor Command Register bit definitions */
enum {
	HACR_LOF	  = (1 << 3),	/* Lock Out Flag, toggle every 250ms */
	HACR_PWR_STAT	  = (1 << 4),	/* Power State, 1=active, 0=sleep */
	HACR_TX_DMA_RESET = (1 << 5),	/* Reset transmit DMA ptr on high */
	HACR_RX_DMA_RESET = (1 << 6),	/* Reset receive DMA ptr on high */
	HACR_ROM_WEN	  = (1 << 7),	/* EEPROM write enabled when true */

	HACR_RESET      = (HACR_TX_DMA_RESET | HACR_RX_DMA_RESET),
	HACR_DEFAULT	= (HACR_PWR_STAT),
};
/* Host Adapter Status Register bit definitions */
enum {
	HASR_MMI_BUSY	= (1 << 2),	/* MMI is busy when true */
	HASR_LOF	= (1 << 3),	/* Lock out flag status */
	HASR_NO_CLK	= (1 << 4),	/* active when modem not connected */
};
/* Miscellaneous bit definitions */
enum {
	PIORH_SEL_TX	= (1 << 5),	/* PIOR points to 0=rx/1=tx buffer */
	MMR_MMI_WR	= (1 << 0),	/* Next MMI cycle is 0=read, 1=write */
	PIORH_MASK	= 0x1f,		/* only low 5 bits are significant */
	RPLH_MASK	= 0x1f,		/* only low 5 bits are significant */
	MMI_ADDR_MASK	= 0x7e,		/* Bits 1-6 of MMR are significant */
};
/* Attribute Memory map */
enum {
	CIS_ADDR	= 0x0000,	/* Card Information Status Register */
	PSA_ADDR	= 0x0e00,	/* Parameter Storage Area address */
	EEPROM_ADDR	= 0x1000,	/* EEPROM address */
	COR_ADDR	= 0x4000,	/* Configuration Option Register */
};
/* Configuration Option Register bit definitions */
enum {
	COR_CONFIG	= (1 << 0),	/* Config Index, 0 when unconfigured */
	COR_SW_RESET	= (1 << 7),	/* Software Reset on true */
	COR_LEVEL_IRQ	= (1 << 6),	/* Level IRQ */
};
/* Local Memory map */
enum {
	RX_BASE		= 0x0000,	/* Receive memory, 8 kB */
	TX_BASE		= 0x2000,	/* Transmit memory, 2 kB */
	UNUSED_BASE	= 0x2800,	/* Unused, 22 kB */
	RX_SIZE		= (TX_BASE-RX_BASE),	/* Size of receive area */
	RX_SIZE_SHIFT	= 6,		/* Bits to shift in stop register */
};
#define MMI_WRITE(base,cmd,val)	\
	while(inb(HASR(base)) & HASR_MMI_BUSY) ; \
	outb(MMR(base), ((cmd) << 1) | MMR_MMI_WR); \
	outb(MMD(base), va);


#define TRUE  1
#define FALSE 0
#define ETH_ZLEN 64		/* minimum length 64 bytes */

#define WAVELAN_ADDR_SIZE	6	/* Size of a MAC address */

#define SA_ADDR0	0x08	/* First octet of AT&T WaveLAN MAC addr */
#define SA_ADDR1	0x00	/* Second octet of AT&T WaveLAN MAC addr */
#define SA_ADDR2	0x0E	/* Third octet of AT&T WaveLAN MAC addr */

#define WAVELAN_MTU	1500	/* Maximum size of Wavelan packet */

/*
 * Parameter Storage Area (PSA).
 */
typedef struct psa_t	psa_t;
struct psa_t
{
  /* For the PCMCIA Adapter, locations 0x00-0x0F are fixed at 00 */
  	uchar	psa_io_base_addr_1;	/* [0x00] Base address 1 ??? */
  	uchar	psa_io_base_addr_2;	/* [0x01] Base address 2 */
  	uchar	psa_io_base_addr_3;	/* [0x02] Base address 3 */
  	uchar	psa_io_base_addr_4;	/* [0x03] Base address 4 */
  	uchar	psa_rem_boot_addr_1;	/* [0x04] Remote Boot Address 1 */
  	uchar	psa_rem_boot_addr_2;	/* [0x05] Remote Boot Address 2 */
  	uchar	psa_rem_boot_addr_3;	/* [0x06] Remote Boot Address 3 */
  	uchar	psa_holi_params;	/* [0x07] HOst Lan Interface (HOLI) Parameters */
  	uchar	psa_int_req_no;		/* [0x08] Interrupt Request Line */
  	uchar	psa_unused0[7];		/* [0x09-0x0F] unused */
  	uchar	psa_univ_mac_addr[WAVELAN_ADDR_SIZE];	
					/* [0x10-0x15] Universal (factory) MAC Address */
  	uchar	psa_local_mac_addr[WAVELAN_ADDR_SIZE];	/* [0x16-1B] Local MAC Address */
  	uchar	psa_univ_local_sel;	/* [0x1C] Universal Local Selection */
  	uchar	psa_comp_number;	/* [0x1D] Compatability Number: */
  	uchar	psa_thr_pre_set;	/* [0x1E] Modem Threshold Preset */
  	uchar	psa_feature_select;	/* [0x1F] Call code required (1=on) */
  	uchar	psa_subband;		/* [0x20] Subband	*/
  	uchar	psa_quality_thr;	/* [0x21] Modem Quality Threshold */
  	uchar	psa_mod_delay;		/* [0x22] Modem Delay ??? (reserved) */
  	uchar	psa_nwid[2];		/* [0x23-0x24] Network ID */
  	uchar	psa_nwid_select;	/* [0x25] Network ID Select */
  	uchar	psa_encryption_select;	/* [0x26] Encryption On Off */
  	uchar	psa_encryption_key[8];	/* [0x27-0x2E] Encryption Key */
  	uchar	psa_databus_width;	/* [0x2F] AT Dbus width select 8/16 */
  	uchar	psa_call_code[8];	/* [0x30-0x37] (Japan) Call Code */
  	uchar	psa_reserved[4];	/* [0x38-0x3B] Reserved - fixed (00) */
  	uchar	psa_conf_status;	/* [0x3C] Conf Status, bit 0=1:config*/
  	uchar	psa_crc[2];		/* [0x3D] CRC-16 over PSA */
  	uchar	psa_crc_status;		/* [0x3F] CRC Valid Flag */
};
enum {
	PSA_UNIVERSAL	= 0,		/* Universal (factory) */
	PSA_LOCAL	= 1,		/* Local */
};
enum {
	PSA_COMP_PC_AT_915	= 0, 	/* PC-AT 915 MHz	*/
	PSA_COMP_PC_MC_915	= 1, 	/* PC-MC 915 MHz	*/
	PSA_COMP_PC_AT_2400	= 2, 	/* PC-AT 2.4 GHz	*/
	PSA_COMP_PC_MC_2400	= 3, 	/* PC-MC 2.4 GHz	*/
	PSA_COMP_PCMCIA_915	= 4, 	/* PCMCIA 915 MHz	*/
};
enum {
	PSA_SUBBAND_915		= 0,	/* 915 MHz	*/
	PSA_SUBBAND_2425	= 1,	/* 2425 MHz	*/
	PSA_SUBBAND_2460	= 2,	/* 2460 MHz	*/
	PSA_SUBBAND_2484	= 3,	/* 2484 MHz	*/
	PSA_SUBBAND_2430_5	= 4,	/* 2430.5 MHz	*/
};
/*
 * Modem Management Controller (MMC) write structure.
 */
typedef struct mmw_t	mmw_t;
struct mmw_t
{
  	uchar	mmw_encr_key[8];	/* 0x00--07 encryption key */
  	uchar	mmw_encr_enable;	/* 0x08 enable/disable encryption */
  	uchar	mmw_unused0;		/* 0x09 unused */
  	uchar	mmw_des_io_invert;	/* 0x0A ??? */
  	uchar	mmw_unused1[5];		/* 0x0B - 0F unused */
  	uchar	mmw_loopt_sel;		/* 0x10 looptest selection */
  	uchar	mmw_jabber_enable;	/* 0x11 jabber timer enable */
  	uchar	mmw_freeze;		/* 0x12 freeze / unfreeeze signal level */
  	uchar	mmw_anten_sel;		/* 0x13 antenna selection */
  	uchar	mmw_ifs;		/* 0x14 inter frame spacing */
  	uchar	mmw_mod_delay;	 	/* 0x15 modem delay */
  	uchar	mmw_jam_time;		/* 0x16 jamming time */
  	uchar	mmw_unused2;		/* 0x17 unused */
  	uchar	mmw_thr_pre_set;	/* 0x18 level threshold preset */
  	uchar	mmw_decay_prm;		/* 0x19 decay parameters */
  	uchar	mmw_decay_updat_prm;	/* 0x1A decay update parameterz */
  	uchar	mmw_quality_thr;	/* 0x1B quality (z-quotient) threshold */
  	uchar	mmw_netw_id_l;		/* 0x1C NWID low order byte */
  	uchar	mmw_netw_id_h;		/* 0x1D NWID high order byte */
	uchar	mmw_mode_sel;		/* 0x1E	*/
	uchar	mmw_dummy;		/* 0x1F	*/
	uchar	mmw_eectrl;		/* 0x20	 2.4 Gz */
	uchar	mmw_eeaddr;		/* 0x21	 2.4 Gz */
	uchar	mmw_eedatal;		/* 0x22	 2.4 Gz */
	uchar	mmw_eedatah;		/* 0x23	 2.4 Gz */
	uchar	mmw_analctrl;		/* 0x24	 2.4 Gz */

};

enum {  MMC_EECTRL		= 0x20,
	MMC_EEADDR		= 0x21,	
	MMC_ANALCTRL		= 0x24,	
};	
enum {
	MMW_LOOPT_SEL_UNDEFINED	= 0x40,	/* undefined */
	MMW_LOOPT_SEL_INT	= 0x20,	/* activate Attention Request */
	MMW_LOOPT_SEL_LS	= 0x10,	/* looptest w/o collision avoidance */
	MMW_LOOPT_SEL_LT3A	= 0x08,	/* looptest 3a */
	MMW_LOOPT_SEL_LT3B	= 0x04,	/* looptest 3b */
	MMW_LOOPT_SEL_LT3C	= 0x02,	/* looptest 3c */
	MMW_LOOPT_SEL_LT3D	= 0x01,	/* looptest 3d */
};
enum {
	MMW_ANTEN_SEL_SEL	= 0x01,	/* direct antenna selection */
	MMW_ANTEN_SEL_ALG_EN	= 0x02,	/* antenna selection algo. enable */
};

#define	mmwoff(p,f) 	(unsigned short)((void *)(&((mmw_t *)((void *)0 + (p)))->f) - (void *)0)

/*
 * Modem Management Controller (MMC) read structure.
 */
typedef struct mmr_t	mmr_t;
struct mmr_t
{
	uchar	mmr_unused0[8];		/* 0x00..07 unused */
	uchar	mmr_des_status;		/* 0x08 encryption status */
	uchar	mmr_des_avail;		/* 0x09 encryption available (0x55 read) */
	uchar	mmr_des_io_invert;	/* 0x0A des I/O invert register */
	uchar	mmr_unused1[5];		/* 0x0B..0F unused */
	uchar	mmr_dce_status;		/* 0x10 DCE status */
	uchar	mmr_mmr_dsp_id;		/* 0x11 DSP id (AA = Deadalus rev A)
	uchar	mmr_unused2[2];		/* 0x12..13 unused */
	uchar	mmr_correct_nwid_l;	/* 0x14 no. of correct NWID's rxd (low) */
	uchar	mmr_correct_nwid_h;	/* 0x15 no. of correct NWID's rxd (high) */
	uchar	mmr_wrong_nwid_l;	/* 0x16 count of wrong NWID's received (low) */
	uchar	mmr_wrong_nwid_h;	/* 0x17 count of wrong NWID's received (high) */
	uchar	mmr_thr_pre_set;	/* 0x18 level threshold preset */
	uchar	mmr_signal_lvl;		/* 0x19 signal level */
	uchar	mmr_silence_lvl;	/* 0x1A silence level */
	uchar	mmr_sgnl_qual;		/* 0x1B signal quality */
	uchar	mmr_netw_id_l;		/* 0x1C NWID low order byte ??? */
	uchar	mmr_unused3[3];		/* 0x1D..1F unused */
	uchar	mmr_fee_status;		/* 0x20 status of frequency eeprom */
	uchar	mmr_unused4[1];		/* 0x21 */
	uchar	mmr_fee_data_l;		/* 0x22 read data from eeprom (low) */
	uchar	mmr_fee_data_h;		/* 0x23 read data from eeprom (high) */
};
enum {
	MMR_DCE_STATUS_ENERG_DET	= 0x01,	/* energy detected */
	MMR_DCE_STATUS_LOOPT_IND	= 0x02,	/* loop test indicated */
	MMR_DCE_STATUS_XMTITR_IND	= 0x04,	/* transmitter on */
	MMR_DCE_STATUS_JBR_EXPIRED	= 0x08,	/* jabber timer expired */
};
enum {
	MMR_FEE_STATUS_ID 	= 0xF0,	/* modem revision id  */
	MMR_FEE_STATUS_DWLD 	= 0x08,	/* download in progress  */
	MMR_FEE_STATUS_BUSY 	= 0x04,	/* EEprom busy  */
};
enum {
	MMR_SGNL_QUAL_0		= 0x01,	/* signal quality 0 */
	MMR_SGNL_QUAL_1		= 0x02,	/* signal quality 1 */
	MMR_SGNL_QUAL_2		= 0x04,	/* signal quality 2 */
	MMR_SGNL_QUAL_3		= 0x08,	/* signal quality 3 */
	MMR_SGNL_QUAL_S_A	= 0x80,	/* currently selected antenna */
};
#define	MMR_LEVEL_MASK	0x3F

/* fields in MMC registers that relate to EEPROM in WaveMODEM daughtercard */
enum{
	MMC_EECTRL_EEPRE	= 0x10,	/* 2.4 Gz EEPROM Protect Reg Enable */
	MMC_EECTRL_DWLD		= 0x08,	/* 2.4 Gz EEPROM Download Synths   */
	MMC_EECTRL_EEOP		= 0x07,	/* 2.4 Gz EEPROM Opcode mask	 */
	MMC_EECTRL_EEOP_READ	= 0x06,	/* 2.4 Gz EEPROM Read Opcode	 */
	MMC_EEADDR_CHAN		= 0xf0,	/* 2.4 Gz EEPROM Channel # mask	 */
	MMC_EEADDR_WDCNT	= 0x0f,	/* 2.4 Gz EEPROM DNLD WordCount-1 */
	MMC_ANALCTRL_ANTPOL	= 0x02,	/* 2.4 Gz Antenna Polarity mask	 */
	MMC_ANALCTRL_EXTANT	= 0x01,	/* 2.4 Gz External Antenna mask	 */
};
#define	mmroff(p,f) 	(unsigned short)((void *)(&((mmr_t *)((void *)0 + (p)))->f) - (void *)0)

#define	MAXDATAZ		(6 + 6 + 2 + WAVELAN_MTU)

struct wl_cntrs {
  int pkt_arp;
  int pkt_ein[32];
  int pkt_lin[128/8];
  int pkt_eout[32]; 
  int pkt_lout[128/8]; 
};
typedef	struct wl_cntrs *wl_cntrs_t;

#endif /* WAVELAN_H */
.
## diffname mpc/etherwavelan.h 1999/0929
## diff -e /n/emeliedump/1999/0623/sys/src/brazil/mpc/etherwavelan.h /n/emeliedump/1999/0929/sys/src/brazil/mpc/etherwavelan.h
51d
47a
	SR0_END_OF_FRAME	= 8,
.
## diffname mpc/etherwavelan.h 2001/0527 # deleted
## diff -e /n/emeliedump/1999/0929/sys/src/brazil/mpc/etherwavelan.h /n/emeliedump/2001/0527/sys/src/9/mpc/etherwavelan.h
1,494d

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.