smctr.h 61 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586
  1. /* smctr.h: SMC Token Ring driver header for Linux
  2. *
  3. * Authors:
  4. * - Jay Schulist <jschlst@samba.org>
  5. */
  6. #ifndef __LINUX_SMCTR_H
  7. #define __LINUX_SMCTR_H
  8. #ifdef __KERNEL__
  9. #define MAX_TX_QUEUE 10
  10. #define SMC_HEADER_SIZE 14
  11. #define SMC_PAGE_OFFSET(X) (((unsigned long)(X) - tp->ram_access) & tp->page_offset_mask)
  12. #define INIT 0x0D
  13. #define RQ_ATTCH 0x10
  14. #define RQ_STATE 0x0F
  15. #define RQ_ADDR 0x0E
  16. #define CHG_PARM 0x0C
  17. #define RSP 0x00
  18. #define TX_FORWARD 0x09
  19. #define AC_FC_DAT ((3<<13) | 1)
  20. #define DAT 0x07
  21. #define RPT_NEW_MON 0x25
  22. #define RPT_SUA_CHG 0x26
  23. #define RPT_ACTIVE_ERR 0x28
  24. #define RPT_NN_INCMP 0x27
  25. #define RPT_ERROR 0x29
  26. #define RQ_INIT 0x20
  27. #define RPT_ATTCH 0x24
  28. #define RPT_STATE 0x23
  29. #define RPT_ADDR 0x22
  30. #define POSITIVE_ACK 0x0001
  31. #define A_FRAME_WAS_FORWARDED 0x8888
  32. #define GROUP_ADDRESS 0x2B
  33. #define PHYSICAL_DROP 0x0B
  34. #define AUTHORIZED_ACCESS_PRIORITY 0x07
  35. #define AUTHORIZED_FUNCTION_CLASS 0x06
  36. #define FUNCTIONAL_ADDRESS 0x2C
  37. #define RING_STATION_STATUS 0x29
  38. #define TRANSMIT_STATUS_CODE 0x2A
  39. #define IBM_PASS_SOURCE_ADDR 0x01
  40. #define AC_FC_RPT_TX_FORWARD ((0<<13) | 0)
  41. #define AC_FC_RPT_STATE ((0<<13) | 0)
  42. #define AC_FC_RPT_ADDR ((0<<13) | 0)
  43. #define CORRELATOR 0x09
  44. #define POSITIVE_ACK 0x0001 /* */
  45. #define E_MAC_DATA_INCOMPLETE 0x8001 /* not used */
  46. #define E_VECTOR_LENGTH_ERROR 0x8002 /* */
  47. #define E_UNRECOGNIZED_VECTOR_ID 0x8003 /* */
  48. #define E_INAPPROPRIATE_SOURCE_CLASS 0x8004 /* */
  49. #define E_SUB_VECTOR_LENGTH_ERROR 0x8005 /* */
  50. #define E_TRANSMIT_FORWARD_INVALID 0x8006 /* def. by IBM */
  51. #define E_MISSING_SUB_VECTOR 0x8007 /* */
  52. #define E_SUB_VECTOR_UNKNOWN 0x8008 /* */
  53. #define E_MAC_HEADER_TOO_LONG 0x8009 /* */
  54. #define E_FUNCTION_DISABLED 0x800A /* not used */
  55. #define A_FRAME_WAS_FORWARDED 0x8888 /* used by send_TX_FORWARD */
  56. #define UPSTREAM_NEIGHBOR_ADDRESS 0x02
  57. #define LOCAL_RING_NUMBER 0x03
  58. #define ASSIGN_PHYSICAL_DROP 0x04
  59. #define ERROR_TIMER_VALUE 0x05
  60. #define AUTHORIZED_FUNCTION_CLASS 0x06
  61. #define AUTHORIZED_ACCESS_PRIORITY 0x07
  62. #define CORRELATOR 0x09
  63. #define PHYSICAL_DROP 0x0B
  64. #define RESPONSE_CODE 0x20
  65. #define ADDRESS_MODIFER 0x21
  66. #define PRODUCT_INSTANCE_ID 0x22
  67. #define RING_STATION_VERSION_NUMBER 0x23
  68. #define WRAP_DATA 0x26
  69. #define FRAME_FORWARD 0x27
  70. #define STATION_IDENTIFER 0x28
  71. #define RING_STATION_STATUS 0x29
  72. #define TRANSMIT_STATUS_CODE 0x2A
  73. #define GROUP_ADDRESS 0x2B
  74. #define FUNCTIONAL_ADDRESS 0x2C
  75. #define F_NO_SUB_VECTORS_FOUND 0x0000
  76. #define F_UPSTREAM_NEIGHBOR_ADDRESS 0x0001
  77. #define F_LOCAL_RING_NUMBER 0x0002
  78. #define F_ASSIGN_PHYSICAL_DROP 0x0004
  79. #define F_ERROR_TIMER_VALUE 0x0008
  80. #define F_AUTHORIZED_FUNCTION_CLASS 0x0010
  81. #define F_AUTHORIZED_ACCESS_PRIORITY 0x0020
  82. #define F_CORRELATOR 0x0040
  83. #define F_PHYSICAL_DROP 0x0080
  84. #define F_RESPONSE_CODE 0x0100
  85. #define F_PRODUCT_INSTANCE_ID 0x0200
  86. #define F_RING_STATION_VERSION_NUMBER 0x0400
  87. #define F_STATION_IDENTIFER 0x0800
  88. #define F_RING_STATION_STATUS 0x1000
  89. #define F_GROUP_ADDRESS 0x2000
  90. #define F_FUNCTIONAL_ADDRESS 0x4000
  91. #define F_FRAME_FORWARD 0x8000
  92. #define R_INIT 0x00
  93. #define R_RQ_ATTCH_STATE_ADDR 0x00
  94. #define R_CHG_PARM 0x00
  95. #define R_TX_FORWARD F_FRAME_FORWARD
  96. #define UPSTREAM_NEIGHBOR_ADDRESS 0x02
  97. #define ADDRESS_MODIFER 0x21
  98. #define RING_STATION_VERSION_NUMBER 0x23
  99. #define PRODUCT_INSTANCE_ID 0x22
  100. #define RPT_TX_FORWARD 0x2A
  101. #define AC_FC_INIT (3<<13) | 0 /* */
  102. #define AC_FC_RQ_INIT ((3<<13) | 0) /* */
  103. #define AC_FC_RQ_ATTCH (3<<13) | 0 /* DC = SC of rx frame */
  104. #define AC_FC_RQ_STATE (3<<13) | 0 /* DC = SC of rx frame */
  105. #define AC_FC_RQ_ADDR (3<<13) | 0 /* DC = SC of rx frame */
  106. #define AC_FC_CHG_PARM (3<<13) | 0 /* */
  107. #define AC_FC_RSP (0<<13) | 0 /* DC = SC of rx frame */
  108. #define AC_FC_RPT_ATTCH (0<<13) | 0
  109. #define S_UPSTREAM_NEIGHBOR_ADDRESS 6 + 2
  110. #define S_LOCAL_RING_NUMBER 2 + 2
  111. #define S_ASSIGN_PHYSICAL_DROP 4 + 2
  112. #define S_ERROR_TIMER_VALUE 2 + 2
  113. #define S_AUTHORIZED_FUNCTION_CLASS 2 + 2
  114. #define S_AUTHORIZED_ACCESS_PRIORITY 2 + 2
  115. #define S_CORRELATOR 2 + 2
  116. #define S_PHYSICAL_DROP 4 + 2
  117. #define S_RESPONSE_CODE 4 + 2
  118. #define S_ADDRESS_MODIFER 2 + 2
  119. #define S_PRODUCT_INSTANCE_ID 18 + 2
  120. #define S_RING_STATION_VERSION_NUMBER 10 + 2
  121. #define S_STATION_IDENTIFER 6 + 2
  122. #define S_RING_STATION_STATUS 6 + 2
  123. #define S_GROUP_ADDRESS 4 + 2
  124. #define S_FUNCTIONAL_ADDRESS 4 + 2
  125. #define S_FRAME_FORWARD 252 + 2
  126. #define S_TRANSMIT_STATUS_CODE 2 + 2
  127. #define ISB_IMC_RES0 0x0000 /* */
  128. #define ISB_IMC_MAC_TYPE_3 0x0001 /* MAC_ARC_INDICATE */
  129. #define ISB_IMC_MAC_ERROR_COUNTERS 0x0002 /* */
  130. #define ISB_IMC_RES1 0x0003 /* */
  131. #define ISB_IMC_MAC_TYPE_2 0x0004 /* QUE_MAC_INDICATE */
  132. #define ISB_IMC_TX_FRAME 0x0005 /* */
  133. #define ISB_IMC_END_OF_TX_QUEUE 0x0006 /* */
  134. #define ISB_IMC_NON_MAC_RX_RESOURCE 0x0007 /* */
  135. #define ISB_IMC_MAC_RX_RESOURCE 0x0008 /* */
  136. #define ISB_IMC_NON_MAC_RX_FRAME 0x0009 /* */
  137. #define ISB_IMC_MAC_RX_FRAME 0x000A /* */
  138. #define ISB_IMC_TRC_FIFO_STATUS 0x000B /* */
  139. #define ISB_IMC_COMMAND_STATUS 0x000C /* */
  140. #define ISB_IMC_MAC_TYPE_1 0x000D /* Self Removed */
  141. #define ISB_IMC_TRC_INTRNL_TST_STATUS 0x000E /* */
  142. #define ISB_IMC_RES2 0x000F /* */
  143. #define NON_MAC_RX_RESOURCE_BW 0x10 /* shifted right 8 bits */
  144. #define NON_MAC_RX_RESOURCE_FW 0x20 /* shifted right 8 bits */
  145. #define NON_MAC_RX_RESOURCE_BE 0x40 /* shifted right 8 bits */
  146. #define NON_MAC_RX_RESOURCE_FE 0x80 /* shifted right 8 bits */
  147. #define RAW_NON_MAC_RX_RESOURCE_BW 0x1000 /* */
  148. #define RAW_NON_MAC_RX_RESOURCE_FW 0x2000 /* */
  149. #define RAW_NON_MAC_RX_RESOURCE_BE 0x4000 /* */
  150. #define RAW_NON_MAC_RX_RESOURCE_FE 0x8000 /* */
  151. #define MAC_RX_RESOURCE_BW 0x10 /* shifted right 8 bits */
  152. #define MAC_RX_RESOURCE_FW 0x20 /* shifted right 8 bits */
  153. #define MAC_RX_RESOURCE_BE 0x40 /* shifted right 8 bits */
  154. #define MAC_RX_RESOURCE_FE 0x80 /* shifted right 8 bits */
  155. #define RAW_MAC_RX_RESOURCE_BW 0x1000 /* */
  156. #define RAW_MAC_RX_RESOURCE_FW 0x2000 /* */
  157. #define RAW_MAC_RX_RESOURCE_BE 0x4000 /* */
  158. #define RAW_MAC_RX_RESOURCE_FE 0x8000 /* */
  159. #define TRC_FIFO_STATUS_TX_UNDERRUN 0x40 /* shifted right 8 bits */
  160. #define TRC_FIFO_STATUS_RX_OVERRUN 0x80 /* shifted right 8 bits */
  161. #define RAW_TRC_FIFO_STATUS_TX_UNDERRUN 0x4000 /* */
  162. #define RAW_TRC_FIFO_STATUS_RX_OVERRUN 0x8000 /* */
  163. #define CSR_CLRTINT 0x08
  164. #define MSB(X) ((__u8)((__u16) X >> 8))
  165. #define LSB(X) ((__u8)((__u16) X & 0xff))
  166. #define AC_FC_LOBE_MEDIA_TEST ((3<<13) | 0)
  167. #define S_WRAP_DATA 248 + 2 /* 500 + 2 */
  168. #define WRAP_DATA 0x26
  169. #define LOBE_MEDIA_TEST 0x08
  170. /* Destination Class (dc) */
  171. #define DC_MASK 0xF0
  172. #define DC_RS 0x00
  173. #define DC_CRS 0x40
  174. #define DC_RPS 0x50
  175. #define DC_REM 0x60
  176. /* Source Classes (sc) */
  177. #define SC_MASK 0x0F
  178. #define SC_RS 0x00
  179. #define SC_CRS 0x04
  180. #define SC_RPS 0x05
  181. #define SC_REM 0x06
  182. #define PR 0x11
  183. #define PR_PAGE_MASK 0x0C000
  184. #define MICROCHANNEL 0x0008
  185. #define INTERFACE_CHIP 0x0010
  186. #define BOARD_16BIT 0x0040
  187. #define PAGED_RAM 0x0080
  188. #define WD8115TA (TOKEN_MEDIA | MICROCHANNEL | INTERFACE_CHIP | PAGED_RAM)
  189. #define WD8115T (TOKEN_MEDIA | INTERFACE_CHIP | BOARD_16BIT | PAGED_RAM)
  190. #define BRD_ID_8316 0x50
  191. #define r587_SER 0x001
  192. #define SER_DIN 0x80
  193. #define SER_DOUT 0x40
  194. #define SER_CLK 0x20
  195. #define SER_ECS 0x10
  196. #define SER_E806 0x08
  197. #define SER_PNP 0x04
  198. #define SER_BIO 0x02
  199. #define SER_16B 0x01
  200. #define r587_IDR 0x004
  201. #define IDR_IRQ_MASK 0x0F0
  202. #define IDR_DCS_MASK 0x007
  203. #define IDR_RWS 0x008
  204. #define r587_BIO 0x003
  205. #define BIO_ENB 0x080
  206. #define BIO_MASK 0x03F
  207. #define r587_PCR 0x005
  208. #define PCR_RAMS 0x040
  209. #define NUM_ADDR_BITS 8
  210. #define ISA_MAX_ADDRESS 0x00ffffff
  211. #define SMCTR_MAX_ADAPTERS 7
  212. #define MC_TABLE_ENTRIES 16
  213. #define MAXFRAGMENTS 32
  214. #define CHIP_REV_MASK 0x3000
  215. #define MAX_TX_QS 8
  216. #define NUM_TX_QS_USED 3
  217. #define MAX_RX_QS 2
  218. #define NUM_RX_QS_USED 2
  219. #define INTEL_DATA_FORMAT 0x4000
  220. #define INTEL_ADDRESS_POINTER_FORMAT 0x8000
  221. #define PAGE_POINTER(X) ((((unsigned long)(X) - tp->ram_access) & tp->page_offset_mask) + tp->ram_access)
  222. #define SWAP_WORDS(X) (((X & 0xFFFF) << 16) | (X >> 16))
  223. #define INTERFACE_CHIP 0x0010 /* Soft Config Adapter */
  224. #define ADVANCED_FEATURES 0x0020 /* Adv. netw. interface features */
  225. #define BOARD_16BIT 0x0040 /* 16 bit capability */
  226. #define PAGED_RAM 0x0080 /* Adapter has paged RAM */
  227. #define PAGED_ROM 0x0100 /* Adapter has paged ROM */
  228. #define RAM_SIZE_UNKNOWN 0x0000 /* Unknown RAM size */
  229. #define RAM_SIZE_0K 0x0001 /* 0K RAM */
  230. #define RAM_SIZE_8K 0x0002 /* 8k RAM */
  231. #define RAM_SIZE_16K 0x0003 /* 16k RAM */
  232. #define RAM_SIZE_32K 0x0004 /* 32k RAM */
  233. #define RAM_SIZE_64K 0x0005 /* 64k RAM */
  234. #define RAM_SIZE_RESERVED_6 0x0006 /* Reserved RAM size */
  235. #define RAM_SIZE_RESERVED_7 0x0007 /* Reserved RAM size */
  236. #define RAM_SIZE_MASK 0x0007 /* Isolates RAM Size */
  237. #define TOKEN_MEDIA 0x0005
  238. #define BID_REG_0 0x00
  239. #define BID_REG_1 0x01
  240. #define BID_REG_2 0x02
  241. #define BID_REG_3 0x03
  242. #define BID_REG_4 0x04
  243. #define BID_REG_5 0x05
  244. #define BID_REG_6 0x06
  245. #define BID_REG_7 0x07
  246. #define BID_LAR_0 0x08
  247. #define BID_LAR_1 0x09
  248. #define BID_LAR_2 0x0A
  249. #define BID_LAR_3 0x0B
  250. #define BID_LAR_4 0x0C
  251. #define BID_LAR_5 0x0D
  252. #define BID_BOARD_ID_BYTE 0x0E
  253. #define BID_CHCKSM_BYTE 0x0F
  254. #define BID_LAR_OFFSET 0x08
  255. #define BID_MSZ_583_BIT 0x08
  256. #define BID_SIXTEEN_BIT_BIT 0x01
  257. #define BID_BOARD_REV_MASK 0x1E
  258. #define BID_MEDIA_TYPE_BIT 0x01
  259. #define BID_SOFT_CONFIG_BIT 0x20
  260. #define BID_RAM_SIZE_BIT 0x40
  261. #define BID_BUS_TYPE_BIT 0x80
  262. #define BID_CR 0x10
  263. #define BID_TXP 0x04 /* Transmit Packet Command */
  264. #define BID_TCR_DIFF 0x0D /* Transmit Configuration Register */
  265. #define BID_TCR_VAL 0x18 /* Value to Test 8390 or 690 */
  266. #define BID_PS0 0x00 /* Register Page Select 0 */
  267. #define BID_PS1 0x40 /* Register Page Select 1 */
  268. #define BID_PS2 0x80 /* Register Page Select 2 */
  269. #define BID_PS_MASK 0x3F /* For Masking Off Page Select Bits */
  270. #define BID_EEPROM_0 0x08
  271. #define BID_EEPROM_1 0x09
  272. #define BID_EEPROM_2 0x0A
  273. #define BID_EEPROM_3 0x0B
  274. #define BID_EEPROM_4 0x0C
  275. #define BID_EEPROM_5 0x0D
  276. #define BID_EEPROM_6 0x0E
  277. #define BID_EEPROM_7 0x0F
  278. #define BID_OTHER_BIT 0x02
  279. #define BID_ICR_MASK 0x0C
  280. #define BID_EAR_MASK 0x0F
  281. #define BID_ENGR_PAGE 0x0A0
  282. #define BID_RLA 0x10
  283. #define BID_EA6 0x80
  284. #define BID_RECALL_DONE_MASK 0x10
  285. #define BID_BID_EEPROM_OVERRIDE 0xFFB0
  286. #define BID_EXTRA_EEPROM_OVERRIDE 0xFFD0
  287. #define BID_EEPROM_MEDIA_MASK 0x07
  288. #define BID_STARLAN_TYPE 0x00
  289. #define BID_ETHERNET_TYPE 0x01
  290. #define BID_TP_TYPE 0x02
  291. #define BID_EW_TYPE 0x03
  292. #define BID_TOKEN_RING_TYPE 0x04
  293. #define BID_UTP2_TYPE 0x05
  294. #define BID_EEPROM_IRQ_MASK 0x18
  295. #define BID_PRIMARY_IRQ 0x00
  296. #define BID_ALTERNATE_IRQ_1 0x08
  297. #define BID_ALTERNATE_IRQ_2 0x10
  298. #define BID_ALTERNATE_IRQ_3 0x18
  299. #define BID_EEPROM_RAM_SIZE_MASK 0xE0
  300. #define BID_EEPROM_RAM_SIZE_RES1 0x00
  301. #define BID_EEPROM_RAM_SIZE_RES2 0x20
  302. #define BID_EEPROM_RAM_SIZE_8K 0x40
  303. #define BID_EEPROM_RAM_SIZE_16K 0x60
  304. #define BID_EEPROM_RAM_SIZE_32K 0x80
  305. #define BID_EEPROM_RAM_SIZE_64K 0xA0
  306. #define BID_EEPROM_RAM_SIZE_RES3 0xC0
  307. #define BID_EEPROM_RAM_SIZE_RES4 0xE0
  308. #define BID_EEPROM_BUS_TYPE_MASK 0x07
  309. #define BID_EEPROM_BUS_TYPE_AT 0x00
  310. #define BID_EEPROM_BUS_TYPE_MCA 0x01
  311. #define BID_EEPROM_BUS_TYPE_EISA 0x02
  312. #define BID_EEPROM_BUS_TYPE_NEC 0x03
  313. #define BID_EEPROM_BUS_SIZE_MASK 0x18
  314. #define BID_EEPROM_BUS_SIZE_8BIT 0x00
  315. #define BID_EEPROM_BUS_SIZE_16BIT 0x08
  316. #define BID_EEPROM_BUS_SIZE_32BIT 0x10
  317. #define BID_EEPROM_BUS_SIZE_64BIT 0x18
  318. #define BID_EEPROM_BUS_MASTER 0x20
  319. #define BID_EEPROM_RAM_PAGING 0x40
  320. #define BID_EEPROM_ROM_PAGING 0x80
  321. #define BID_EEPROM_PAGING_MASK 0xC0
  322. #define BID_EEPROM_LOW_COST 0x08
  323. #define BID_EEPROM_IO_MAPPED 0x10
  324. #define BID_EEPROM_HMI 0x01
  325. #define BID_EEPROM_AUTO_MEDIA_DETECT 0x01
  326. #define BID_EEPROM_CHIP_REV_MASK 0x0C
  327. #define BID_EEPROM_LAN_ADDR 0x30
  328. #define BID_EEPROM_MEDIA_OPTION 0x54
  329. #define BID_EEPROM_MEDIA_UTP 0x01
  330. #define BID_EEPROM_4MB_RING 0x08
  331. #define BID_EEPROM_16MB_RING 0x10
  332. #define BID_EEPROM_MEDIA_STP 0x40
  333. #define BID_EEPROM_MISC_DATA 0x56
  334. #define BID_EEPROM_EARLY_TOKEN_RELEASE 0x02
  335. #define CNFG_ID_8003E 0x6fc0
  336. #define CNFG_ID_8003S 0x6fc1
  337. #define CNFG_ID_8003W 0x6fc2
  338. #define CNFG_ID_8115TRA 0x6ec6
  339. #define CNFG_ID_8013E 0x61C8
  340. #define CNFG_ID_8013W 0x61C9
  341. #define CNFG_ID_BISTRO03E 0xEFE5
  342. #define CNFG_ID_BISTRO13E 0xEFD5
  343. #define CNFG_ID_BISTRO13W 0xEFD4
  344. #define CNFG_MSR_583 0x0
  345. #define CNFG_ICR_583 0x1
  346. #define CNFG_IAR_583 0x2
  347. #define CNFG_BIO_583 0x3
  348. #define CNFG_EAR_583 0x3
  349. #define CNFG_IRR_583 0x4
  350. #define CNFG_LAAR_584 0x5
  351. #define CNFG_GP2 0x7
  352. #define CNFG_LAAR_MASK 0x1F
  353. #define CNFG_LAAR_ZWS 0x20
  354. #define CNFG_LAAR_L16E 0x40
  355. #define CNFG_ICR_IR2_584 0x04
  356. #define CNFG_ICR_MASK 0x08
  357. #define CNFG_ICR_MSZ 0x08
  358. #define CNFG_ICR_RLA 0x10
  359. #define CNFG_ICR_STO 0x80
  360. #define CNFG_IRR_IRQS 0x60
  361. #define CNFG_IRR_IEN 0x80
  362. #define CNFG_IRR_ZWS 0x01
  363. #define CNFG_GP2_BOOT_NIBBLE 0x0F
  364. #define CNFG_IRR_OUT2 0x04
  365. #define CNFG_IRR_OUT1 0x02
  366. #define CNFG_SIZE_8KB 8
  367. #define CNFG_SIZE_16KB 16
  368. #define CNFG_SIZE_32KB 32
  369. #define CNFG_SIZE_64KB 64
  370. #define CNFG_SIZE_128KB 128
  371. #define CNFG_SIZE_256KB 256
  372. #define ROM_DISABLE 0x0
  373. #define CNFG_SLOT_ENABLE_BIT 0x08
  374. #define CNFG_POS_CONTROL_REG 0x096
  375. #define CNFG_POS_REG0 0x100
  376. #define CNFG_POS_REG1 0x101
  377. #define CNFG_POS_REG2 0x102
  378. #define CNFG_POS_REG3 0x103
  379. #define CNFG_POS_REG4 0x104
  380. #define CNFG_POS_REG5 0x105
  381. #define CNFG_ADAPTER_TYPE_MASK 0x0e
  382. #define SLOT_16BIT 0x0008
  383. #define INTERFACE_5X3_CHIP 0x0000 /* 0000 = 583 or 593 chips */
  384. #define NIC_690_BIT 0x0010 /* NIC is 690 */
  385. #define ALTERNATE_IRQ_BIT 0x0020 /* Alternate IRQ is used */
  386. #define INTERFACE_584_CHIP 0x0040 /* 0001 = 584 chip */
  387. #define INTERFACE_594_CHIP 0x0080 /* 0010 = 594 chip */
  388. #define INTERFACE_585_CHIP 0x0100 /* 0100 = 585/790 chip */
  389. #define INTERFACE_CHIP_MASK 0x03C0 /* Isolates Intfc Chip Type */
  390. #define BOARD_16BIT 0x0040
  391. #define NODE_ADDR_CKSUM 0xEE
  392. #define BRD_ID_8115T 0x04
  393. #define NIC_825_BIT 0x0400 /* TRC 83C825 NIC */
  394. #define NIC_790_BIT 0x0800 /* NIC is 83C790 Ethernet */
  395. #define CHIP_REV_MASK 0x3000
  396. #define HWR_CBUSY 0x02
  397. #define HWR_CA 0x01
  398. #define MAC_QUEUE 0
  399. #define NON_MAC_QUEUE 1
  400. #define BUG_QUEUE 2 /* NO RECEIVE QUEUE, ONLY TX */
  401. #define NUM_MAC_TX_FCBS 8
  402. #define NUM_MAC_TX_BDBS NUM_MAC_TX_FCBS
  403. #define NUM_MAC_RX_FCBS 7
  404. #define NUM_MAC_RX_BDBS 8
  405. #define NUM_NON_MAC_TX_FCBS 6
  406. #define NUM_NON_MAC_TX_BDBS NUM_NON_MAC_TX_FCBS
  407. #define NUM_NON_MAC_RX_BDBS 0 /* CALCULATED DYNAMICALLY */
  408. #define NUM_BUG_TX_FCBS 8
  409. #define NUM_BUG_TX_BDBS NUM_BUG_TX_FCBS
  410. #define MAC_TX_BUFFER_MEMORY 1024
  411. #define NON_MAC_TX_BUFFER_MEMORY (20 * 1024)
  412. #define BUG_TX_BUFFER_MEMORY (NUM_BUG_TX_FCBS * 32)
  413. #define RX_BUFFER_MEMORY 0 /* CALCULATED DYNAMICALLY */
  414. #define RX_DATA_BUFFER_SIZE 256
  415. #define RX_BDB_SIZE_SHIFT 3 /* log2(RX_DATA_BUFFER_SIZE)-log2(sizeof(BDBlock)) */
  416. #define RX_BDB_SIZE_MASK (sizeof(BDBlock) - 1)
  417. #define RX_DATA_BUFFER_SIZE_MASK (RX_DATA_BUFFER_SIZE-1)
  418. #define NUM_OF_INTERRUPTS 0x20
  419. #define NOT_TRANSMITING 0
  420. #define TRANSMITING 1
  421. #define TRC_INTERRUPT_ENABLE_MASK 0x7FF6
  422. #define UCODE_VERSION 0x58
  423. #define UCODE_SIZE_OFFSET 0x0000 /* WORD */
  424. #define UCODE_CHECKSUM_OFFSET 0x0002 /* WORD */
  425. #define UCODE_VERSION_OFFSET 0x0004 /* BYTE */
  426. #define CS_RAM_SIZE 0X2000
  427. #define CS_RAM_CHECKSUM_OFFSET 0x1FFE /* WORD 1FFE(MSB)-1FFF(LSB)*/
  428. #define CS_RAM_VERSION_OFFSET 0x1FFC /* WORD 1FFC(MSB)-1FFD(LSB)*/
  429. #define MISC_DATA_SIZE 128
  430. #define NUM_OF_ACBS 1
  431. #define ACB_COMMAND_NOT_DONE 0x0000 /* Init, command not done */
  432. #define ACB_COMMAND_DONE 0x8000 /* TRC says command done */
  433. #define ACB_COMMAND_STATUS_MASK 0x00FF /* low byte is status */
  434. #define ACB_COMMAND_SUCCESSFUL 0x0000 /* means cmd was successful */
  435. #define ACB_NOT_CHAIN_END 0x0000 /* tell TRC more CBs in chain */
  436. #define ACB_CHAIN_END 0x8000 /* tell TRC last CB in chain */
  437. #define ACB_COMMAND_NO_INTERRUPT 0x0000 /* tell TRC no INT after CB */
  438. #define ACB_COMMAND_INTERRUPT 0x2000 /* tell TRC to INT after CB */
  439. #define ACB_SUB_CMD_NOP 0x0000
  440. #define ACB_CMD_HIC_NOP 0x0080
  441. #define ACB_CMD_MCT_NOP 0x0000
  442. #define ACB_CMD_MCT_TEST 0x0001
  443. #define ACB_CMD_HIC_TEST 0x0081
  444. #define ACB_CMD_INSERT 0x0002
  445. #define ACB_CMD_REMOVE 0x0003
  446. #define ACB_CMD_MCT_WRITE_VALUE 0x0004
  447. #define ACB_CMD_HIC_WRITE_VALUE 0x0084
  448. #define ACB_CMD_MCT_READ_VALUE 0x0005
  449. #define ACB_CMD_HIC_READ_VALUE 0x0085
  450. #define ACB_CMD_INIT_TX_RX 0x0086
  451. #define ACB_CMD_INIT_TRC_TIMERS 0x0006
  452. #define ACB_CMD_READ_TRC_STATUS 0x0007
  453. #define ACB_CMD_CHANGE_JOIN_STATE 0x0008
  454. #define ACB_CMD_RESERVED_9 0x0009
  455. #define ACB_CMD_RESERVED_A 0x000A
  456. #define ACB_CMD_RESERVED_B 0x000B
  457. #define ACB_CMD_RESERVED_C 0x000C
  458. #define ACB_CMD_RESERVED_D 0x000D
  459. #define ACB_CMD_RESERVED_E 0x000E
  460. #define ACB_CMD_RESERVED_F 0x000F
  461. #define TRC_MAC_REGISTERS_TEST 0x0000
  462. #define TRC_INTERNAL_LOOPBACK 0x0001
  463. #define TRC_TRI_LOOPBACK 0x0002
  464. #define TRC_INTERNAL_ROM_TEST 0x0003
  465. #define TRC_LOBE_MEDIA_TEST 0x0004
  466. #define TRC_ANALOG_TEST 0x0005
  467. #define TRC_HOST_INTERFACE_REG_TEST 0x0003
  468. #define TEST_DMA_1 0x0000
  469. #define TEST_DMA_2 0x0001
  470. #define TEST_MCT_ROM 0x0002
  471. #define HIC_INTERNAL_DIAG 0x0003
  472. #define ABORT_TRANSMIT_PRIORITY_0 0x0001
  473. #define ABORT_TRANSMIT_PRIORITY_1 0x0002
  474. #define ABORT_TRANSMIT_PRIORITY_2 0x0004
  475. #define ABORT_TRANSMIT_PRIORITY_3 0x0008
  476. #define ABORT_TRANSMIT_PRIORITY_4 0x0010
  477. #define ABORT_TRANSMIT_PRIORITY_5 0x0020
  478. #define ABORT_TRANSMIT_PRIORITY_6 0x0040
  479. #define ABORT_TRANSMIT_PRIORITY_7 0x0080
  480. #define TX_PENDING_PRIORITY_0 0x0001
  481. #define TX_PENDING_PRIORITY_1 0x0002
  482. #define TX_PENDING_PRIORITY_2 0x0004
  483. #define TX_PENDING_PRIORITY_3 0x0008
  484. #define TX_PENDING_PRIORITY_4 0x0010
  485. #define TX_PENDING_PRIORITY_5 0x0020
  486. #define TX_PENDING_PRIORITY_6 0x0040
  487. #define TX_PENDING_PRIORITY_7 0x0080
  488. #define FCB_FRAME_LENGTH 0x100
  489. #define FCB_COMMAND_DONE 0x8000 /* FCB Word 0 */
  490. #define FCB_NOT_CHAIN_END 0x0000 /* FCB Word 1 */
  491. #define FCB_CHAIN_END 0x8000
  492. #define FCB_NO_WARNING 0x0000
  493. #define FCB_WARNING 0x4000
  494. #define FCB_INTERRUPT_DISABLE 0x0000
  495. #define FCB_INTERRUPT_ENABLE 0x2000
  496. #define FCB_ENABLE_IMA 0x0008
  497. #define FCB_ENABLE_TES 0x0004 /* Guarantee Tx before Int */
  498. #define FCB_ENABLE_TFS 0x0002 /* Post Tx Frame Status */
  499. #define FCB_ENABLE_NTC 0x0001 /* No Tx CRC */
  500. #define FCB_TX_STATUS_CR2 0x0004
  501. #define FCB_TX_STATUS_AR2 0x0008
  502. #define FCB_TX_STATUS_CR1 0x0040
  503. #define FCB_TX_STATUS_AR1 0x0080
  504. #define FCB_TX_AC_BITS (FCB_TX_STATUS_AR1+FCB_TX_STATUS_AR2+FCB_TX_STATUS_CR1+FCB_TX_STATUS_CR2)
  505. #define FCB_TX_STATUS_E 0x0100
  506. #define FCB_RX_STATUS_ANY_ERROR 0x0001
  507. #define FCB_RX_STATUS_FCS_ERROR 0x0002
  508. #define FCB_RX_STATUS_IA_MATCHED 0x0400
  509. #define FCB_RX_STATUS_IGA_BSGA_MATCHED 0x0500
  510. #define FCB_RX_STATUS_FA_MATCHED 0x0600
  511. #define FCB_RX_STATUS_BA_MATCHED 0x0700
  512. #define FCB_RX_STATUS_DA_MATCHED 0x0400
  513. #define FCB_RX_STATUS_SOURCE_ROUTING 0x0800
  514. #define BDB_BUFFER_SIZE 0x100
  515. #define BDB_NOT_CHAIN_END 0x0000
  516. #define BDB_CHAIN_END 0x8000
  517. #define BDB_NO_WARNING 0x0000
  518. #define BDB_WARNING 0x4000
  519. #define ERROR_COUNTERS_CHANGED 0x0001
  520. #define TI_NDIS_RING_STATUS_CHANGED 0x0002
  521. #define UNA_CHANGED 0x0004
  522. #define READY_TO_SEND_RQ_INIT 0x0008
  523. #define SCGB_ADDRESS_POINTER_FORMAT INTEL_ADDRESS_POINTER_FORMAT
  524. #define SCGB_DATA_FORMAT INTEL_DATA_FORMAT
  525. #define SCGB_MULTI_WORD_CONTROL 0
  526. #define SCGB_BURST_LENGTH 0x000E /* DMA Burst Length */
  527. #define SCGB_CONFIG (INTEL_ADDRESS_POINTER_FORMAT+INTEL_DATA_FORMAT+SCGB_BURST_LENGTH)
  528. #define ISCP_BLOCK_SIZE 0x0A
  529. #define RAM_SIZE 0x10000
  530. #define INIT_SYS_CONFIG_PTR_OFFSET (RAM_SIZE-ISCP_BLOCK_SIZE)
  531. #define SCGP_BLOCK_OFFSET 0
  532. #define SCLB_NOT_VALID 0x0000 /* Initially, SCLB not valid */
  533. #define SCLB_VALID 0x8000 /* Host tells TRC SCLB valid */
  534. #define SCLB_PROCESSED 0x0000 /* TRC says SCLB processed */
  535. #define SCLB_RESUME_CONTROL_NOT_VALID 0x0000 /* Initially, RC not valid */
  536. #define SCLB_RESUME_CONTROL_VALID 0x4000 /* Host tells TRC RC valid */
  537. #define SCLB_IACK_CODE_NOT_VALID 0x0000 /* Initially, IACK not valid */
  538. #define SCLB_IACK_CODE_VALID 0x2000 /* Host tells TRC IACK valid */
  539. #define SCLB_CMD_NOP 0x0000
  540. #define SCLB_CMD_REMOVE 0x0001
  541. #define SCLB_CMD_SUSPEND_ACB_CHAIN 0x0002
  542. #define SCLB_CMD_SET_INTERRUPT_MASK 0x0003
  543. #define SCLB_CMD_CLEAR_INTERRUPT_MASK 0x0004
  544. #define SCLB_CMD_RESERVED_5 0x0005
  545. #define SCLB_CMD_RESERVED_6 0x0006
  546. #define SCLB_CMD_RESERVED_7 0x0007
  547. #define SCLB_CMD_RESERVED_8 0x0008
  548. #define SCLB_CMD_RESERVED_9 0x0009
  549. #define SCLB_CMD_RESERVED_A 0x000A
  550. #define SCLB_CMD_RESERVED_B 0x000B
  551. #define SCLB_CMD_RESERVED_C 0x000C
  552. #define SCLB_CMD_RESERVED_D 0x000D
  553. #define SCLB_CMD_RESERVED_E 0x000E
  554. #define SCLB_CMD_RESERVED_F 0x000F
  555. #define SCLB_RC_ACB 0x0001 /* Action Command Block Chain */
  556. #define SCLB_RC_RES0 0x0002 /* Always Zero */
  557. #define SCLB_RC_RES1 0x0004 /* Always Zero */
  558. #define SCLB_RC_RES2 0x0008 /* Always Zero */
  559. #define SCLB_RC_RX_MAC_FCB 0x0010 /* RX_MAC_FCB Chain */
  560. #define SCLB_RC_RX_MAC_BDB 0x0020 /* RX_MAC_BDB Chain */
  561. #define SCLB_RC_RX_NON_MAC_FCB 0x0040 /* RX_NON_MAC_FCB Chain */
  562. #define SCLB_RC_RX_NON_MAC_BDB 0x0080 /* RX_NON_MAC_BDB Chain */
  563. #define SCLB_RC_TFCB0 0x0100 /* TX Priority 0 FCB Chain */
  564. #define SCLB_RC_TFCB1 0x0200 /* TX Priority 1 FCB Chain */
  565. #define SCLB_RC_TFCB2 0x0400 /* TX Priority 2 FCB Chain */
  566. #define SCLB_RC_TFCB3 0x0800 /* TX Priority 3 FCB Chain */
  567. #define SCLB_RC_TFCB4 0x1000 /* TX Priority 4 FCB Chain */
  568. #define SCLB_RC_TFCB5 0x2000 /* TX Priority 5 FCB Chain */
  569. #define SCLB_RC_TFCB6 0x4000 /* TX Priority 6 FCB Chain */
  570. #define SCLB_RC_TFCB7 0x8000 /* TX Priority 7 FCB Chain */
  571. #define SCLB_IMC_RES0 0x0001 /* */
  572. #define SCLB_IMC_MAC_TYPE_3 0x0002 /* MAC_ARC_INDICATE */
  573. #define SCLB_IMC_MAC_ERROR_COUNTERS 0x0004 /* */
  574. #define SCLB_IMC_RES1 0x0008 /* */
  575. #define SCLB_IMC_MAC_TYPE_2 0x0010 /* QUE_MAC_INDICATE */
  576. #define SCLB_IMC_TX_FRAME 0x0020 /* */
  577. #define SCLB_IMC_END_OF_TX_QUEUE 0x0040 /* */
  578. #define SCLB_IMC_NON_MAC_RX_RESOURCE 0x0080 /* */
  579. #define SCLB_IMC_MAC_RX_RESOURCE 0x0100 /* */
  580. #define SCLB_IMC_NON_MAC_RX_FRAME 0x0200 /* */
  581. #define SCLB_IMC_MAC_RX_FRAME 0x0400 /* */
  582. #define SCLB_IMC_TRC_FIFO_STATUS 0x0800 /* */
  583. #define SCLB_IMC_COMMAND_STATUS 0x1000 /* */
  584. #define SCLB_IMC_MAC_TYPE_1 0x2000 /* Self Removed */
  585. #define SCLB_IMC_TRC_INTRNL_TST_STATUS 0x4000 /* */
  586. #define SCLB_IMC_RES2 0x8000 /* */
  587. #define DMA_TRIGGER 0x0004
  588. #define FREQ_16MB_BIT 0x0010
  589. #define THDREN 0x0020
  590. #define CFG0_RSV1 0x0040
  591. #define CFG0_RSV2 0x0080
  592. #define ETREN 0x0100
  593. #define RX_OWN_BIT 0x0200
  594. #define RXATMAC 0x0400
  595. #define PROMISCUOUS_BIT 0x0800
  596. #define USETPT 0x1000
  597. #define SAVBAD_BIT 0x2000
  598. #define ONEQUE 0x4000
  599. #define NO_AUTOREMOVE 0x8000
  600. #define RX_FCB_AREA_8316 0x00000000
  601. #define RX_BUFF_AREA_8316 0x00000000
  602. #define TRC_POINTER(X) ((unsigned long)(X) - tp->ram_access)
  603. #define RX_FCB_TRC_POINTER(X) ((unsigned long)(X) - tp->ram_access + RX_FCB_AREA_8316)
  604. #define RX_BUFF_TRC_POINTER(X) ((unsigned long)(X) - tp->ram_access + RX_BUFF_AREA_8316)
  605. // Offset 0: MSR - Memory Select Register
  606. //
  607. #define r587_MSR 0x000 // Register Offset
  608. //#define MSR_RST 0x080 // LAN Controller Reset
  609. #define MSR_MENB 0x040 // Shared Memory Enable
  610. #define MSR_RA18 0x020 // Ram Address bit 18 (583, 584, 587)
  611. #define MSR_RA17 0x010 // Ram Address bit 17 (583, 584, 585/790)
  612. #define MSR_RA16 0x008 // Ram Address bit 16 (583, 584, 585/790)
  613. #define MSR_RA15 0x004 // Ram Address bit 15 (583, 584, 585/790)
  614. #define MSR_RA14 0x002 // Ram Address bit 14 (583, 584, 585/790)
  615. #define MSR_RA13 0x001 // Ram Address bit 13 (583, 584, 585/790)
  616. #define MSR_MASK 0x03F // Mask for Address bits RA18-RA13 (583, 584, 587)
  617. #define MSR 0x00
  618. #define IRR 0x04
  619. #define HWR 0x04
  620. #define LAAR 0x05
  621. #define IMCCR 0x05
  622. #define LAR0 0x08
  623. #define BDID 0x0E // Adapter ID byte register offset
  624. #define CSR 0x10
  625. #define PR 0x11
  626. #define MSR_RST 0x80
  627. #define MSR_MEMB 0x40
  628. #define MSR_0WS 0x20
  629. #define FORCED_16BIT_MODE 0x0002
  630. #define INTERFRAME_SPACING_16 0x0003 /* 6 bytes */
  631. #define INTERFRAME_SPACING_4 0x0001 /* 2 bytes */
  632. #define MULTICAST_ADDRESS_BIT 0x0010
  633. #define NON_SRC_ROUTING_BIT 0x0020
  634. #define LOOPING_MODE_MASK 0x0007
  635. /*
  636. * Decode firmware defines.
  637. */
  638. #define SWAP_BYTES(X) ((X & 0xff) << 8) | (X >> 8)
  639. #define WEIGHT_OFFSET 5
  640. #define TREE_SIZE_OFFSET 9
  641. #define TREE_OFFSET 11
  642. /* The Huffman Encoding Tree is constructed of these nodes. */
  643. typedef struct {
  644. __u8 llink; /* Short version of above node. */
  645. __u8 tag;
  646. __u8 info; /* This node is used on decodes. */
  647. __u8 rlink;
  648. } DECODE_TREE_NODE;
  649. #define ROOT 0 /* Branch value. */
  650. #define LEAF 0 /* Tag field value. */
  651. #define BRANCH 1 /* Tag field value. */
  652. /*
  653. * Multicast Table Structure
  654. */
  655. typedef struct {
  656. __u8 address[6];
  657. __u8 instance_count;
  658. } McTable;
  659. /*
  660. * Fragment Descriptor Definition
  661. */
  662. typedef struct {
  663. __u8 *fragment_ptr;
  664. __u32 fragment_length;
  665. } FragmentStructure;
  666. /*
  667. * Data Buffer Structure Definition
  668. */
  669. typedef struct {
  670. __u32 fragment_count;
  671. FragmentStructure fragment_list[MAXFRAGMENTS];
  672. } DataBufferStructure;
  673. #pragma pack(1)
  674. typedef struct {
  675. __u8 IType;
  676. __u8 ISubtype;
  677. } Interrupt_Status_Word;
  678. #pragma pack(1)
  679. typedef struct BDBlockType {
  680. __u16 info; /* 02 */
  681. __u32 trc_next_ptr; /* 06 */
  682. __u32 trc_data_block_ptr; /* 10 */
  683. __u16 buffer_length; /* 12 */
  684. __u16 *data_block_ptr; /* 16 */
  685. struct BDBlockType *next_ptr; /* 20 */
  686. struct BDBlockType *back_ptr; /* 24 */
  687. __u8 filler[8]; /* 32 */
  688. } BDBlock;
  689. #pragma pack(1)
  690. typedef struct FCBlockType {
  691. __u16 frame_status; /* 02 */
  692. __u16 info; /* 04 */
  693. __u32 trc_next_ptr; /* 08 */
  694. __u32 trc_bdb_ptr; /* 12 */
  695. __u16 frame_length; /* 14 */
  696. BDBlock *bdb_ptr; /* 18 */
  697. struct FCBlockType *next_ptr; /* 22 */
  698. struct FCBlockType *back_ptr; /* 26 */
  699. __u16 memory_alloc; /* 28 */
  700. __u8 filler[4]; /* 32 */
  701. } FCBlock;
  702. #pragma pack(1)
  703. typedef struct SBlockType{
  704. __u8 Internal_Error_Count;
  705. __u8 Line_Error_Count;
  706. __u8 AC_Error_Count;
  707. __u8 Burst_Error_Count;
  708. __u8 RESERVED_COUNTER_0;
  709. __u8 AD_TRANS_Count;
  710. __u8 RCV_Congestion_Count;
  711. __u8 Lost_FR_Error_Count;
  712. __u8 FREQ_Error_Count;
  713. __u8 FR_Copied_Error_Count;
  714. __u8 RESERVED_COUNTER_1;
  715. __u8 Token_Error_Count;
  716. __u16 TI_NDIS_Ring_Status;
  717. __u16 BCN_Type;
  718. __u16 Error_Code;
  719. __u16 SA_of_Last_AMP_SMP[3];
  720. __u16 UNA[3];
  721. __u16 Ucode_Version_Number;
  722. __u16 Status_CHG_Indicate;
  723. __u16 RESERVED_STATUS_0;
  724. } SBlock;
  725. #pragma pack(1)
  726. typedef struct ACBlockType {
  727. __u16 cmd_done_status; /* 02 */
  728. __u16 cmd_info; /* 04 */
  729. __u32 trc_next_ptr; /* 08 */
  730. __u16 cmd; /* 10 */
  731. __u16 subcmd; /* 12 */
  732. __u16 data_offset_lo; /* 14 */
  733. __u16 data_offset_hi; /* 16 */
  734. struct ACBlockType *next_ptr; /* 20 */
  735. __u8 filler[12]; /* 32 */
  736. } ACBlock;
  737. #define NUM_OF_INTERRUPTS 0x20
  738. #pragma pack(1)
  739. typedef struct {
  740. Interrupt_Status_Word IStatus[NUM_OF_INTERRUPTS];
  741. } ISBlock;
  742. #pragma pack(1)
  743. typedef struct {
  744. __u16 valid_command; /* 02 */
  745. __u16 iack_code; /* 04 */
  746. __u16 resume_control; /* 06 */
  747. __u16 int_mask_control; /* 08 */
  748. __u16 int_mask_state; /* 10 */
  749. __u8 filler[6]; /* 16 */
  750. } SCLBlock;
  751. #pragma pack(1)
  752. typedef struct
  753. {
  754. __u16 config; /* 02 */
  755. __u32 trc_sclb_ptr; /* 06 */
  756. __u32 trc_acb_ptr; /* 10 */
  757. __u32 trc_isb_ptr; /* 14 */
  758. __u16 isbsiz; /* 16 */
  759. SCLBlock *sclb_ptr; /* 20 */
  760. ACBlock *acb_ptr; /* 24 */
  761. ISBlock *isb_ptr; /* 28 */
  762. __u16 Non_Mac_Rx_Bdbs; /* 30 DEBUG */
  763. __u8 filler[2]; /* 32 */
  764. } SCGBlock;
  765. #pragma pack(1)
  766. typedef struct
  767. {
  768. __u32 trc_scgb_ptr;
  769. SCGBlock *scgb_ptr;
  770. } ISCPBlock;
  771. #pragma pack()
  772. typedef struct net_local {
  773. ISCPBlock *iscpb_ptr;
  774. SCGBlock *scgb_ptr;
  775. SCLBlock *sclb_ptr;
  776. ISBlock *isb_ptr;
  777. ACBlock *acb_head;
  778. ACBlock *acb_curr;
  779. ACBlock *acb_next;
  780. __u8 adapter_name[12];
  781. __u16 num_rx_bdbs [NUM_RX_QS_USED];
  782. __u16 num_rx_fcbs [NUM_RX_QS_USED];
  783. __u16 num_tx_bdbs [NUM_TX_QS_USED];
  784. __u16 num_tx_fcbs [NUM_TX_QS_USED];
  785. __u16 num_of_tx_buffs;
  786. __u16 tx_buff_size [NUM_TX_QS_USED];
  787. __u16 tx_buff_used [NUM_TX_QS_USED];
  788. __u16 tx_queue_status [NUM_TX_QS_USED];
  789. FCBlock *tx_fcb_head[NUM_TX_QS_USED];
  790. FCBlock *tx_fcb_curr[NUM_TX_QS_USED];
  791. FCBlock *tx_fcb_end[NUM_TX_QS_USED];
  792. BDBlock *tx_bdb_head[NUM_TX_QS_USED];
  793. __u16 *tx_buff_head[NUM_TX_QS_USED];
  794. __u16 *tx_buff_end[NUM_TX_QS_USED];
  795. __u16 *tx_buff_curr[NUM_TX_QS_USED];
  796. __u16 num_tx_fcbs_used[NUM_TX_QS_USED];
  797. FCBlock *rx_fcb_head[NUM_RX_QS_USED];
  798. FCBlock *rx_fcb_curr[NUM_RX_QS_USED];
  799. BDBlock *rx_bdb_head[NUM_RX_QS_USED];
  800. BDBlock *rx_bdb_curr[NUM_RX_QS_USED];
  801. BDBlock *rx_bdb_end[NUM_RX_QS_USED];
  802. __u16 *rx_buff_head[NUM_RX_QS_USED];
  803. __u16 *rx_buff_end[NUM_RX_QS_USED];
  804. __u32 *ptr_local_ring_num;
  805. __u32 sh_mem_used;
  806. __u16 page_offset_mask;
  807. __u16 authorized_function_classes;
  808. __u16 authorized_access_priority;
  809. __u16 num_acbs;
  810. __u16 num_acbs_used;
  811. __u16 acb_pending;
  812. __u16 current_isb_index;
  813. __u8 monitor_state;
  814. __u8 monitor_state_ready;
  815. __u16 ring_status;
  816. __u8 ring_status_flags;
  817. __u8 state;
  818. __u8 join_state;
  819. __u8 slot_num;
  820. __u16 pos_id;
  821. __u32 *ptr_una;
  822. __u32 *ptr_bcn_type;
  823. __u32 *ptr_tx_fifo_underruns;
  824. __u32 *ptr_rx_fifo_underruns;
  825. __u32 *ptr_rx_fifo_overruns;
  826. __u32 *ptr_tx_fifo_overruns;
  827. __u32 *ptr_tx_fcb_overruns;
  828. __u32 *ptr_rx_fcb_overruns;
  829. __u32 *ptr_tx_bdb_overruns;
  830. __u32 *ptr_rx_bdb_overruns;
  831. __u16 receive_queue_number;
  832. __u8 rx_fifo_overrun_count;
  833. __u8 tx_fifo_overrun_count;
  834. __u16 adapter_flags;
  835. __u16 adapter_flags1;
  836. __u16 *misc_command_data;
  837. __u16 max_packet_size;
  838. __u16 config_word0;
  839. __u16 config_word1;
  840. __u8 trc_mask;
  841. __u16 source_ring_number;
  842. __u16 target_ring_number;
  843. __u16 microcode_version;
  844. __u16 bic_type;
  845. __u16 nic_type;
  846. __u16 board_id;
  847. __u16 rom_size;
  848. __u32 rom_base;
  849. __u16 ram_size;
  850. __u16 ram_usable;
  851. __u32 ram_base;
  852. __u32 ram_access;
  853. __u16 extra_info;
  854. __u16 mode_bits;
  855. __u16 media_menu;
  856. __u16 media_type;
  857. __u16 adapter_bus;
  858. __u16 status;
  859. __u16 receive_mask;
  860. __u16 group_address_0;
  861. __u16 group_address[2];
  862. __u16 functional_address_0;
  863. __u16 functional_address[2];
  864. __u16 bitwise_group_address[2];
  865. __u8 cleanup;
  866. struct sk_buff_head SendSkbQueue;
  867. __u16 QueueSkb;
  868. struct tr_statistics MacStat; /* MAC statistics structure */
  869. spinlock_t lock;
  870. } NET_LOCAL;
  871. /************************************
  872. * SNMP-ON-BOARD Agent Link Structure
  873. ************************************/
  874. typedef struct {
  875. __u8 LnkSigStr[12]; /* signature string "SmcLinkTable" */
  876. __u8 LnkDrvTyp; /* 1=Redbox ODI, 2=ODI DOS, 3=ODI OS/2, 4=NDIS DOS */
  877. __u8 LnkFlg; /* 0 if no agent linked, 1 if agent linked */
  878. void *LnkNfo; /* routine which returns pointer to NIC info */
  879. void *LnkAgtRcv; /* pointer to agent receive trap entry */
  880. void *LnkAgtXmt; /* pointer to agent transmit trap
  881. entry */
  882. void *LnkGet; /* pointer to NIC receive data
  883. copy routine */
  884. void *LnkSnd; /* pointer to NIC send routine
  885. */
  886. void *LnkRst; /* pointer to NIC driver reset
  887. routine */
  888. void *LnkMib; /* pointer to MIB data base */
  889. void *LnkMibAct; /* pointer to MIB action routine list */
  890. __u16 LnkCntOffset; /* offset to error counters */
  891. __u16 LnkCntNum; /* number of error counters */
  892. __u16 LnkCntSize; /* size of error counters i.e. 32 = 32 bits */
  893. void *LnkISR; /* pointer to interrupt vector */
  894. __u8 LnkFrmTyp; /* 1=Ethernet, 2=Token Ring */
  895. __u8 LnkDrvVer1 ; /* driver major version */
  896. __u8 LnkDrvVer2 ; /* driver minor version */
  897. } AgentLink;
  898. /*
  899. * Definitions for pcm_card_flags(bit_mapped)
  900. */
  901. #define REG_COMPLETE 0x0001
  902. #define INSERTED 0x0002
  903. #define PCC_INSERTED 0x0004 /* 1=currently inserted, 0=cur removed */
  904. /*
  905. * Adapter RAM test patterns
  906. */
  907. #define RAM_PATTERN_1 0x55AA
  908. #define RAM_PATTERN_2 0x9249
  909. #define RAM_PATTERN_3 0xDB6D
  910. /*
  911. * definitions for RAM test
  912. */
  913. #define ROM_SIGNATURE 0xAA55
  914. #define MIN_ROM_SIZE 0x2000
  915. /*
  916. * Return Codes
  917. */
  918. #define SUCCESS 0x0000
  919. #define ADAPTER_AND_CONFIG 0x0001
  920. #define ADAPTER_NO_CONFIG 0x0002
  921. #define NOT_MY_INTERRUPT 0x0003
  922. #define FRAME_REJECTED 0x0004
  923. #define EVENTS_DISABLED 0x0005
  924. #define OUT_OF_RESOURCES 0x0006
  925. #define INVALID_PARAMETER 0x0007
  926. #define INVALID_FUNCTION 0x0008
  927. #define INITIALIZE_FAILED 0x0009
  928. #define CLOSE_FAILED 0x000A
  929. #define MAX_COLLISIONS 0x000B
  930. #define NO_SUCH_DESTINATION 0x000C
  931. #define BUFFER_TOO_SMALL_ERROR 0x000D
  932. #define ADAPTER_CLOSED 0x000E
  933. #define UCODE_NOT_PRESENT 0x000F
  934. #define FIFO_UNDERRUN 0x0010
  935. #define DEST_OUT_OF_RESOURCES 0x0011
  936. #define ADAPTER_NOT_INITIALIZED 0x0012
  937. #define PENDING 0x0013
  938. #define UCODE_PRESENT 0x0014
  939. #define NOT_INIT_BY_BRIDGE 0x0015
  940. #define OPEN_FAILED 0x0080
  941. #define HARDWARE_FAILED 0x0081
  942. #define SELF_TEST_FAILED 0x0082
  943. #define RAM_TEST_FAILED 0x0083
  944. #define RAM_CONFLICT 0x0084
  945. #define ROM_CONFLICT 0x0085
  946. #define UNKNOWN_ADAPTER 0x0086
  947. #define CONFIG_ERROR 0x0087
  948. #define CONFIG_WARNING 0x0088
  949. #define NO_FIXED_CNFG 0x0089
  950. #define EEROM_CKSUM_ERROR 0x008A
  951. #define ROM_SIGNATURE_ERROR 0x008B
  952. #define ROM_CHECKSUM_ERROR 0x008C
  953. #define ROM_SIZE_ERROR 0x008D
  954. #define UNSUPPORTED_NIC_CHIP 0x008E
  955. #define NIC_REG_ERROR 0x008F
  956. #define BIC_REG_ERROR 0x0090
  957. #define MICROCODE_TEST_ERROR 0x0091
  958. #define LOBE_MEDIA_TEST_FAILED 0x0092
  959. #define ADAPTER_FOUND_LAN_CORRUPT 0x009B
  960. #define ADAPTER_NOT_FOUND 0xFFFF
  961. #define ILLEGAL_FUNCTION INVALID_FUNCTION
  962. /* Errors */
  963. #define IO_BASE_INVALID 0x0001
  964. #define IO_BASE_RANGE 0x0002
  965. #define IRQ_INVALID 0x0004
  966. #define IRQ_RANGE 0x0008
  967. #define RAM_BASE_INVALID 0x0010
  968. #define RAM_BASE_RANGE 0x0020
  969. #define RAM_SIZE_RANGE 0x0040
  970. #define MEDIA_INVALID 0x0800
  971. /* Warnings */
  972. #define IRQ_MISMATCH 0x0080
  973. #define RAM_BASE_MISMATCH 0x0100
  974. #define RAM_SIZE_MISMATCH 0x0200
  975. #define BUS_MODE_MISMATCH 0x0400
  976. #define RX_CRC_ERROR 0x01
  977. #define RX_ALIGNMENT_ERROR 0x02
  978. #define RX_HW_FAILED 0x80
  979. /*
  980. * Definitions for the field RING_STATUS_FLAGS
  981. */
  982. #define RING_STATUS_CHANGED 0X01
  983. #define MONITOR_STATE_CHANGED 0X02
  984. #define JOIN_STATE_CHANGED 0X04
  985. /*
  986. * Definitions for the field JOIN_STATE
  987. */
  988. #define JS_BYPASS_STATE 0x00
  989. #define JS_LOBE_TEST_STATE 0x01
  990. #define JS_DETECT_MONITOR_PRESENT_STATE 0x02
  991. #define JS_AWAIT_NEW_MONITOR_STATE 0x03
  992. #define JS_DUPLICATE_ADDRESS_TEST_STATE 0x04
  993. #define JS_NEIGHBOR_NOTIFICATION_STATE 0x05
  994. #define JS_REQUEST_INITIALIZATION_STATE 0x06
  995. #define JS_JOIN_COMPLETE_STATE 0x07
  996. #define JS_BYPASS_WAIT_STATE 0x08
  997. /*
  998. * Definitions for the field MONITOR_STATE
  999. */
  1000. #define MS_MONITOR_FSM_INACTIVE 0x00
  1001. #define MS_REPEAT_BEACON_STATE 0x01
  1002. #define MS_REPEAT_CLAIM_TOKEN_STATE 0x02
  1003. #define MS_TRANSMIT_CLAIM_TOKEN_STATE 0x03
  1004. #define MS_STANDBY_MONITOR_STATE 0x04
  1005. #define MS_TRANSMIT_BEACON_STATE 0x05
  1006. #define MS_ACTIVE_MONITOR_STATE 0x06
  1007. #define MS_TRANSMIT_RING_PURGE_STATE 0x07
  1008. #define MS_BEACON_TEST_STATE 0x09
  1009. /*
  1010. * Definitions for the bit-field RING_STATUS
  1011. */
  1012. #define SIGNAL_LOSS 0x8000
  1013. #define HARD_ERROR 0x4000
  1014. #define SOFT_ERROR 0x2000
  1015. #define TRANSMIT_BEACON 0x1000
  1016. #define LOBE_WIRE_FAULT 0x0800
  1017. #define AUTO_REMOVAL_ERROR 0x0400
  1018. #define REMOVE_RECEIVED 0x0100
  1019. #define COUNTER_OVERFLOW 0x0080
  1020. #define SINGLE_STATION 0x0040
  1021. #define RING_RECOVERY 0x0020
  1022. /*
  1023. * Definitions for the field BUS_TYPE
  1024. */
  1025. #define AT_BUS 0x00
  1026. #define MCA_BUS 0x01
  1027. #define EISA_BUS 0x02
  1028. #define PCI_BUS 0x03
  1029. #define PCMCIA_BUS 0x04
  1030. /*
  1031. * Definitions for adapter_flags
  1032. */
  1033. #define RX_VALID_LOOKAHEAD 0x0001
  1034. #define FORCED_16BIT_MODE 0x0002
  1035. #define ADAPTER_DISABLED 0x0004
  1036. #define TRANSMIT_CHAIN_INT 0x0008
  1037. #define EARLY_RX_FRAME 0x0010
  1038. #define EARLY_TX 0x0020
  1039. #define EARLY_RX_COPY 0x0040
  1040. #define USES_PHYSICAL_ADDR 0x0080 /* Rsvd for DEC PCI and 9232 */
  1041. #define NEEDS_PHYSICAL_ADDR 0x0100 /* Reserved*/
  1042. #define RX_STATUS_PENDING 0x0200
  1043. #define ERX_DISABLED 0x0400 /* EARLY_RX_ENABLE rcv_mask */
  1044. #define ENABLE_TX_PENDING 0x0800
  1045. #define ENABLE_RX_PENDING 0x1000
  1046. #define PERM_CLOSE 0x2000
  1047. #define IO_MAPPED 0x4000 /* IOmapped bus interface 795 */
  1048. #define ETX_DISABLED 0x8000
  1049. /*
  1050. * Definitions for adapter_flags1
  1051. */
  1052. #define TX_PHY_RX_VIRT 0x0001
  1053. #define NEEDS_HOST_RAM 0x0002
  1054. #define NEEDS_MEDIA_TYPE 0x0004
  1055. #define EARLY_RX_DONE 0x0008
  1056. #define PNP_BOOT_BIT 0x0010 /* activates PnP & config on power-up */
  1057. /* clear => regular PnP operation */
  1058. #define PNP_ENABLE 0x0020 /* regular PnP operation clear => */
  1059. /* no PnP, overrides PNP_BOOT_BIT */
  1060. #define SATURN_ENABLE 0x0040
  1061. #define ADAPTER_REMOVABLE 0x0080 /* adapter is hot swappable */
  1062. #define TX_PHY 0x0100 /* Uses physical address for tx bufs */
  1063. #define RX_PHY 0x0200 /* Uses physical address for rx bufs */
  1064. #define TX_VIRT 0x0400 /* Uses virtual addr for tx bufs */
  1065. #define RX_VIRT 0x0800
  1066. #define NEEDS_SERVICE 0x1000
  1067. /*
  1068. * Adapter Status Codes
  1069. */
  1070. #define OPEN 0x0001
  1071. #define INITIALIZED 0x0002
  1072. #define CLOSED 0x0003
  1073. #define FAILED 0x0005
  1074. #define NOT_INITIALIZED 0x0006
  1075. #define IO_CONFLICT 0x0007
  1076. #define CARD_REMOVED 0x0008
  1077. #define CARD_INSERTED 0x0009
  1078. /*
  1079. * Mode Bit Definitions
  1080. */
  1081. #define INTERRUPT_STATUS_BIT 0x8000 /* PC Interrupt Line: 0 = Not Enabled */
  1082. #define BOOT_STATUS_MASK 0x6000 /* Mask to isolate BOOT_STATUS */
  1083. #define BOOT_INHIBIT 0x0000 /* BOOT_STATUS is 'inhibited' */
  1084. #define BOOT_TYPE_1 0x2000 /* Unused BOOT_STATUS value */
  1085. #define BOOT_TYPE_2 0x4000 /* Unused BOOT_STATUS value */
  1086. #define BOOT_TYPE_3 0x6000 /* Unused BOOT_STATUS value */
  1087. #define ZERO_WAIT_STATE_MASK 0x1800 /* Mask to isolate Wait State flags */
  1088. #define ZERO_WAIT_STATE_8_BIT 0x1000 /* 0 = Disabled (Inserts Wait States) */
  1089. #define ZERO_WAIT_STATE_16_BIT 0x0800 /* 0 = Disabled (Inserts Wait States) */
  1090. #define LOOPING_MODE_MASK 0x0007
  1091. #define LOOPBACK_MODE_0 0x0000
  1092. #define LOOPBACK_MODE_1 0x0001
  1093. #define LOOPBACK_MODE_2 0x0002
  1094. #define LOOPBACK_MODE_3 0x0003
  1095. #define LOOPBACK_MODE_4 0x0004
  1096. #define LOOPBACK_MODE_5 0x0005
  1097. #define LOOPBACK_MODE_6 0x0006
  1098. #define LOOPBACK_MODE_7 0x0007
  1099. #define AUTO_MEDIA_DETECT 0x0008
  1100. #define MANUAL_CRC 0x0010
  1101. #define EARLY_TOKEN_REL 0x0020 /* Early Token Release for Token Ring */
  1102. #define UMAC 0x0040
  1103. #define UTP2_PORT 0x0080 /* For 8216T2, 0=port A, 1=Port B. */
  1104. #define BNC_10BT_INTERFACE 0x0600 /* BNC and UTP current media set */
  1105. #define UTP_INTERFACE 0x0500 /* Ethernet UTP Only. */
  1106. #define BNC_INTERFACE 0x0400
  1107. #define AUI_INTERFACE 0x0300
  1108. #define AUI_10BT_INTERFACE 0x0200
  1109. #define STARLAN_10_INTERFACE 0x0100
  1110. #define INTERFACE_TYPE_MASK 0x0700
  1111. /*
  1112. * Media Type Bit Definitions
  1113. *
  1114. * legend: TP = Twisted Pair
  1115. * STP = Shielded twisted pair
  1116. * UTP = Unshielded twisted pair
  1117. */
  1118. #define CNFG_MEDIA_TYPE_MASK 0x001e /* POS Register 3 Mask */
  1119. #define MEDIA_S10 0x0000 /* Ethernet adapter, TP. */
  1120. #define MEDIA_AUI_UTP 0x0001 /* Ethernet adapter, AUI/UTP media */
  1121. #define MEDIA_BNC 0x0002 /* Ethernet adapter, BNC media. */
  1122. #define MEDIA_AUI 0x0003 /* Ethernet Adapter, AUI media. */
  1123. #define MEDIA_STP_16 0x0004 /* TokenRing adap, 16Mbit STP. */
  1124. #define MEDIA_STP_4 0x0005 /* TokenRing adap, 4Mbit STP. */
  1125. #define MEDIA_UTP_16 0x0006 /* TokenRing adap, 16Mbit UTP. */
  1126. #define MEDIA_UTP_4 0x0007 /* TokenRing adap, 4Mbit UTP. */
  1127. #define MEDIA_UTP 0x0008 /* Ethernet adapter, UTP media (no AUI)
  1128. */
  1129. #define MEDIA_BNC_UTP 0x0010 /* Ethernet adapter, BNC/UTP media */
  1130. #define MEDIA_UTPFD 0x0011 /* Ethernet adapter, TP full duplex */
  1131. #define MEDIA_UTPNL 0x0012 /* Ethernet adapter, TP with link integrity test disabled */
  1132. #define MEDIA_AUI_BNC 0x0013 /* Ethernet adapter, AUI/BNC media */
  1133. #define MEDIA_AUI_BNC_UTP 0x0014 /* Ethernet adapter, AUI_BNC/UTP */
  1134. #define MEDIA_UTPA 0x0015 /* Ethernet UTP-10Mbps Ports A */
  1135. #define MEDIA_UTPB 0x0016 /* Ethernet UTP-10Mbps Ports B */
  1136. #define MEDIA_STP_16_UTP_16 0x0017 /* Token Ring STP-16Mbps/UTP-16Mbps */
  1137. #define MEDIA_STP_4_UTP_4 0x0018 /* Token Ring STP-4Mbps/UTP-4Mbps */
  1138. #define MEDIA_STP100_UTP100 0x0020 /* Ethernet STP-100Mbps/UTP-100Mbps */
  1139. #define MEDIA_UTP100FD 0x0021 /* Ethernet UTP-100Mbps, full duplex */
  1140. #define MEDIA_UTP100 0x0022 /* Ethernet UTP-100Mbps */
  1141. #define MEDIA_UNKNOWN 0xFFFF /* Unknown adapter/media type */
  1142. /*
  1143. * Definitions for the field:
  1144. * media_type2
  1145. */
  1146. #define MEDIA_TYPE_MII 0x0001
  1147. #define MEDIA_TYPE_UTP 0x0002
  1148. #define MEDIA_TYPE_BNC 0x0004
  1149. #define MEDIA_TYPE_AUI 0x0008
  1150. #define MEDIA_TYPE_S10 0x0010
  1151. #define MEDIA_TYPE_AUTO_SENSE 0x1000
  1152. #define MEDIA_TYPE_AUTO_DETECT 0x4000
  1153. #define MEDIA_TYPE_AUTO_NEGOTIATE 0x8000
  1154. /*
  1155. * Definitions for the field:
  1156. * line_speed
  1157. */
  1158. #define LINE_SPEED_UNKNOWN 0x0000
  1159. #define LINE_SPEED_4 0x0001
  1160. #define LINE_SPEED_10 0x0002
  1161. #define LINE_SPEED_16 0x0004
  1162. #define LINE_SPEED_100 0x0008
  1163. #define LINE_SPEED_T4 0x0008 /* 100BaseT4 aliased for 9332BVT */
  1164. #define LINE_SPEED_FULL_DUPLEX 0x8000
  1165. /*
  1166. * Definitions for the field:
  1167. * bic_type (Bus interface chip type)
  1168. */
  1169. #define BIC_NO_CHIP 0x0000 /* Bus interface chip not implemented */
  1170. #define BIC_583_CHIP 0x0001 /* 83C583 bus interface chip */
  1171. #define BIC_584_CHIP 0x0002 /* 83C584 bus interface chip */
  1172. #define BIC_585_CHIP 0x0003 /* 83C585 bus interface chip */
  1173. #define BIC_593_CHIP 0x0004 /* 83C593 bus interface chip */
  1174. #define BIC_594_CHIP 0x0005 /* 83C594 bus interface chip */
  1175. #define BIC_564_CHIP 0x0006 /* PCMCIA Bus interface chip */
  1176. #define BIC_790_CHIP 0x0007 /* 83C790 bus i-face/Ethernet NIC chip */
  1177. #define BIC_571_CHIP 0x0008 /* 83C571 EISA bus master i-face */
  1178. #define BIC_587_CHIP 0x0009 /* Token Ring AT bus master i-face */
  1179. #define BIC_574_CHIP 0x0010 /* FEAST bus interface chip */
  1180. #define BIC_8432_CHIP 0x0011 /* 8432 bus i-face/Ethernet NIC(DEC PCI) */
  1181. #define BIC_9332_CHIP 0x0012 /* 9332 bus i-face/100Mbps Ether NIC(DEC PCI) */
  1182. #define BIC_8432E_CHIP 0x0013 /* 8432 Enhanced bus iface/Ethernet NIC(DEC) */
  1183. #define BIC_EPIC100_CHIP 0x0014 /* EPIC/100 10/100 Mbps Ethernet BIC/NIC */
  1184. #define BIC_C94_CHIP 0x0015 /* 91C94 bus i-face in PCMCIA mode */
  1185. #define BIC_X8020_CHIP 0x0016 /* Xilinx PCMCIA multi-func i-face */
  1186. /*
  1187. * Definitions for the field:
  1188. * nic_type (Bus interface chip type)
  1189. */
  1190. #define NIC_UNK_CHIP 0x0000 /* Unknown NIC chip */
  1191. #define NIC_8390_CHIP 0x0001 /* DP8390 Ethernet NIC */
  1192. #define NIC_690_CHIP 0x0002 /* 83C690 Ethernet NIC */
  1193. #define NIC_825_CHIP 0x0003 /* 83C825 Token Ring NIC */
  1194. /* #define NIC_???_CHIP 0x0004 */ /* Not used */
  1195. /* #define NIC_???_CHIP 0x0005 */ /* Not used */
  1196. /* #define NIC_???_CHIP 0x0006 */ /* Not used */
  1197. #define NIC_790_CHIP 0x0007 /* 83C790 bus i-face/Ethernet NIC chip */
  1198. #define NIC_C100_CHIP 0x0010 /* FEAST 100Mbps Ethernet NIC */
  1199. #define NIC_8432_CHIP 0x0011 /* 8432 bus i-face/Ethernet NIC(DEC PCI) */
  1200. #define NIC_9332_CHIP 0x0012 /* 9332 bus i-face/100Mbps Ether NIC(DEC PCI) */
  1201. #define NIC_8432E_CHIP 0x0013 /* 8432 enhanced bus iface/Ethernet NIC(DEC) */
  1202. #define NIC_EPIC100_CHIP 0x0014 /* EPIC/100 10/100 Mbps Ethernet BIC/NIC */
  1203. #define NIC_C94_CHIP 0x0015 /* 91C94 PC Card with multi func */
  1204. /*
  1205. * Definitions for the field:
  1206. * adapter_type The adapter_type field describes the adapter/bus
  1207. * configuration.
  1208. */
  1209. #define BUS_ISA16_TYPE 0x0001 /* 16 bit adap in 16 bit (E)ISA slot */
  1210. #define BUS_ISA8_TYPE 0x0002 /* 8/16b adap in 8 bit XT/(E)ISA slot */
  1211. #define BUS_MCA_TYPE 0x0003 /* Micro Channel adapter */
  1212. /*
  1213. * Receive Mask definitions
  1214. */
  1215. #define ACCEPT_MULTICAST 0x0001
  1216. #define ACCEPT_BROADCAST 0x0002
  1217. #define PROMISCUOUS_MODE 0x0004
  1218. #define ACCEPT_SOURCE_ROUTING 0x0008
  1219. #define ACCEPT_ERR_PACKETS 0x0010
  1220. #define ACCEPT_ATT_MAC_FRAMES 0x0020
  1221. #define ACCEPT_MULTI_PROM 0x0040
  1222. #define TRANSMIT_ONLY 0x0080
  1223. #define ACCEPT_EXT_MAC_FRAMES 0x0100
  1224. #define EARLY_RX_ENABLE 0x0200
  1225. #define PKT_SIZE_NOT_NEEDED 0x0400
  1226. #define ACCEPT_SOURCE_ROUTING_SPANNING 0x0808
  1227. #define ACCEPT_ALL_MAC_FRAMES 0x0120
  1228. /*
  1229. * config_mode defs
  1230. */
  1231. #define STORE_EEROM 0x0001 /* Store config in EEROM. */
  1232. #define STORE_REGS 0x0002 /* Store config in register set. */
  1233. /*
  1234. * equates for lmac_flags in adapter structure (Ethernet)
  1235. */
  1236. #define MEM_DISABLE 0x0001
  1237. #define RX_STATUS_POLL 0x0002
  1238. #define USE_RE_BIT 0x0004
  1239. /*#define RESERVED 0x0008 */
  1240. /*#define RESERVED 0x0010 */
  1241. /*#define RESERVED 0x0020 */
  1242. /*#define RESERVED 0x0040 */
  1243. /*#define RESERVED 0x0080 */
  1244. /*#define RESERVED 0x0100 */
  1245. /*#define RESERVED 0x0200 */
  1246. /*#define RESERVED 0x0400 */
  1247. /*#define RESERVED 0x0800 */
  1248. /*#define RESERVED 0x1000 */
  1249. /*#define RESERVED 0x2000 */
  1250. /*#define RESERVED 0x4000 */
  1251. /*#define RESERVED 0x8000 */
  1252. /* media_opts & media_set Fields bit defs for Ethernet ... */
  1253. #define MED_OPT_BNC 0x01
  1254. #define MED_OPT_UTP 0x02
  1255. #define MED_OPT_AUI 0x04
  1256. #define MED_OPT_10MB 0x08
  1257. #define MED_OPT_100MB 0x10
  1258. #define MED_OPT_S10 0x20
  1259. /* media_opts & media_set Fields bit defs for Token Ring ... */
  1260. #define MED_OPT_4MB 0x08
  1261. #define MED_OPT_16MB 0x10
  1262. #define MED_OPT_STP 0x40
  1263. #define MAX_8023_SIZE 1500 /* Max 802.3 size of frame. */
  1264. #define DEFAULT_ERX_VALUE 4 /* Number of 16-byte blocks for 790B early Rx. */
  1265. #define DEFAULT_ETX_VALUE 32 /* Number of bytes for 790B early Tx. */
  1266. #define DEFAULT_TX_RETRIES 3 /* Number of transmit retries */
  1267. #define LPBK_FRAME_SIZE 1024 /* Default loopback frame for Rx calibration test. */
  1268. #define MAX_LOOKAHEAD_SIZE 252 /* Max lookahead size for ethernet. */
  1269. #define RW_MAC_STATE 0x1101
  1270. #define RW_SA_OF_LAST_AMP_OR_SMP 0x2803
  1271. #define RW_PHYSICAL_DROP_NUMBER 0x3B02
  1272. #define RW_UPSTREAM_NEIGHBOR_ADDRESS 0x3E03
  1273. #define RW_PRODUCT_INSTANCE_ID 0x4B09
  1274. #define RW_TRC_STATUS_BLOCK 0x5412
  1275. #define RW_MAC_ERROR_COUNTERS_NO_CLEAR 0x8006
  1276. #define RW_MAC_ERROR_COUNTER_CLEAR 0x7A06
  1277. #define RW_CONFIG_REGISTER_0 0xA001
  1278. #define RW_CONFIG_REGISTER_1 0xA101
  1279. #define RW_PRESCALE_TIMER_THRESHOLD 0xA201
  1280. #define RW_TPT_THRESHOLD 0xA301
  1281. #define RW_TQP_THRESHOLD 0xA401
  1282. #define RW_TNT_THRESHOLD 0xA501
  1283. #define RW_TBT_THRESHOLD 0xA601
  1284. #define RW_TSM_THRESHOLD 0xA701
  1285. #define RW_TAM_THRESHOLD 0xA801
  1286. #define RW_TBR_THRESHOLD 0xA901
  1287. #define RW_TER_THRESHOLD 0xAA01
  1288. #define RW_TGT_THRESHOLD 0xAB01
  1289. #define RW_THT_THRESHOLD 0xAC01
  1290. #define RW_TRR_THRESHOLD 0xAD01
  1291. #define RW_TVX_THRESHOLD 0xAE01
  1292. #define RW_INDIVIDUAL_MAC_ADDRESS 0xB003
  1293. #define RW_INDIVIDUAL_GROUP_ADDRESS 0xB303 /* all of group addr */
  1294. #define RW_INDIVIDUAL_GROUP_ADDR_WORD_0 0xB301 /* 1st word of group addr */
  1295. #define RW_INDIVIDUAL_GROUP_ADDR 0xB402 /* 2nd-3rd word of group addr */
  1296. #define RW_FUNCTIONAL_ADDRESS 0xB603 /* all of functional addr */
  1297. #define RW_FUNCTIONAL_ADDR_WORD_0 0xB601 /* 1st word of func addr */
  1298. #define RW_FUNCTIONAL_ADDR 0xB702 /* 2nd-3rd word func addr */
  1299. #define RW_BIT_SIGNIFICANT_GROUP_ADDR 0xB902
  1300. #define RW_SOURCE_RING_BRIDGE_NUMBER 0xBB01
  1301. #define RW_TARGET_RING_NUMBER 0xBC01
  1302. #define RW_HIC_INTERRUPT_MASK 0xC601
  1303. #define SOURCE_ROUTING_SPANNING_BITS 0x00C0 /* Spanning Tree Frames */
  1304. #define SOURCE_ROUTING_EXPLORER_BIT 0x0040 /* Explorer and Single Route */
  1305. /* write */
  1306. #define CSR_MSK_ALL 0x80 // Bic 587 Only
  1307. #define CSR_MSKTINT 0x20
  1308. #define CSR_MSKCBUSY 0x10
  1309. #define CSR_CLRTINT 0x08
  1310. #define CSR_CLRCBUSY 0x04
  1311. #define CSR_WCSS 0x02
  1312. #define CSR_CA 0x01
  1313. /* read */
  1314. #define CSR_TINT 0x20
  1315. #define CSR_CINT 0x10
  1316. #define CSR_TSTAT 0x08
  1317. #define CSR_CSTAT 0x04
  1318. #define CSR_FAULT 0x02
  1319. #define CSR_CBUSY 0x01
  1320. #define LAAR_MEM16ENB 0x80
  1321. #define Zws16 0x20
  1322. #define IRR_IEN 0x80
  1323. #define Zws8 0x01
  1324. #define IMCCR_EIL 0x04
  1325. typedef struct {
  1326. __u8 ac; /* Access Control */
  1327. __u8 fc; /* Frame Control */
  1328. __u8 da[6]; /* Dest Addr */
  1329. __u8 sa[6]; /* Source Addr */
  1330. __u16 vl; /* Vector Length */
  1331. __u8 dc_sc; /* Dest/Source Class */
  1332. __u8 vc; /* Vector Code */
  1333. } MAC_HEADER;
  1334. #define MAX_SUB_VECTOR_INFO (RX_DATA_BUFFER_SIZE - sizeof(MAC_HEADER) - 2)
  1335. typedef struct
  1336. {
  1337. __u8 svl; /* Sub-vector Length */
  1338. __u8 svi; /* Sub-vector Code */
  1339. __u8 svv[MAX_SUB_VECTOR_INFO]; /* Sub-vector Info */
  1340. } MAC_SUB_VECTOR;
  1341. #endif /* __KERNEL__ */
  1342. #endif /* __LINUX_SMCTR_H */