skgepnmi.h 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962
  1. /*****************************************************************************
  2. *
  3. * Name: skgepnmi.h
  4. * Project: GEnesis, PCI Gigabit Ethernet Adapter
  5. * Version: $Revision: 1.62 $
  6. * Date: $Date: 2003/08/15 12:31:52 $
  7. * Purpose: Defines for Private Network Management Interface
  8. *
  9. ****************************************************************************/
  10. /******************************************************************************
  11. *
  12. * (C)Copyright 1998-2002 SysKonnect GmbH.
  13. * (C)Copyright 2002-2003 Marvell.
  14. *
  15. * This program is free software; you can redistribute it and/or modify
  16. * it under the terms of the GNU General Public License as published by
  17. * the Free Software Foundation; either version 2 of the License, or
  18. * (at your option) any later version.
  19. *
  20. * The information in this file is provided "AS IS" without warranty.
  21. *
  22. ******************************************************************************/
  23. #ifndef _SKGEPNMI_H_
  24. #define _SKGEPNMI_H_
  25. /*
  26. * Include dependencies
  27. */
  28. #include "h/sktypes.h"
  29. #include "h/skerror.h"
  30. #include "h/sktimer.h"
  31. #include "h/ski2c.h"
  32. #include "h/skaddr.h"
  33. #include "h/skrlmt.h"
  34. #include "h/skvpd.h"
  35. /*
  36. * Management Database Version
  37. */
  38. #define SK_PNMI_MDB_VERSION 0x00030001 /* 3.1 */
  39. /*
  40. * Event definitions
  41. */
  42. #define SK_PNMI_EVT_SIRQ_OVERFLOW 1 /* Counter overflow */
  43. #define SK_PNMI_EVT_SEN_WAR_LOW 2 /* Lower war thres exceeded */
  44. #define SK_PNMI_EVT_SEN_WAR_UPP 3 /* Upper war thres exceeded */
  45. #define SK_PNMI_EVT_SEN_ERR_LOW 4 /* Lower err thres exceeded */
  46. #define SK_PNMI_EVT_SEN_ERR_UPP 5 /* Upper err thres exceeded */
  47. #define SK_PNMI_EVT_CHG_EST_TIMER 6 /* Timer event for RLMT Chg */
  48. #define SK_PNMI_EVT_UTILIZATION_TIMER 7 /* Timer event for Utiliza. */
  49. #define SK_PNMI_EVT_CLEAR_COUNTER 8 /* Clear statistic counters */
  50. #define SK_PNMI_EVT_XMAC_RESET 9 /* XMAC will be reset */
  51. #define SK_PNMI_EVT_RLMT_PORT_UP 10 /* Port came logically up */
  52. #define SK_PNMI_EVT_RLMT_PORT_DOWN 11 /* Port went logically down */
  53. #define SK_PNMI_EVT_RLMT_SEGMENTATION 13 /* Two SP root bridges found */
  54. #define SK_PNMI_EVT_RLMT_ACTIVE_DOWN 14 /* Port went logically down */
  55. #define SK_PNMI_EVT_RLMT_ACTIVE_UP 15 /* Port came logically up */
  56. #define SK_PNMI_EVT_RLMT_SET_NETS 16 /* 1. Parameter is number of nets
  57. 1 = single net; 2 = dual net */
  58. #define SK_PNMI_EVT_VCT_RESET 17 /* VCT port reset timer event started with SET. */
  59. /*
  60. * Return values
  61. */
  62. #define SK_PNMI_ERR_OK 0
  63. #define SK_PNMI_ERR_GENERAL 1
  64. #define SK_PNMI_ERR_TOO_SHORT 2
  65. #define SK_PNMI_ERR_BAD_VALUE 3
  66. #define SK_PNMI_ERR_READ_ONLY 4
  67. #define SK_PNMI_ERR_UNKNOWN_OID 5
  68. #define SK_PNMI_ERR_UNKNOWN_INST 6
  69. #define SK_PNMI_ERR_UNKNOWN_NET 7
  70. #define SK_PNMI_ERR_NOT_SUPPORTED 10
  71. /*
  72. * Return values of driver reset function SK_DRIVER_RESET() and
  73. * driver event function SK_DRIVER_EVENT()
  74. */
  75. #define SK_PNMI_ERR_OK 0
  76. #define SK_PNMI_ERR_FAIL 1
  77. /*
  78. * Return values of driver test function SK_DRIVER_SELFTEST()
  79. */
  80. #define SK_PNMI_TST_UNKNOWN (1 << 0)
  81. #define SK_PNMI_TST_TRANCEIVER (1 << 1)
  82. #define SK_PNMI_TST_ASIC (1 << 2)
  83. #define SK_PNMI_TST_SENSOR (1 << 3)
  84. #define SK_PNMI_TST_POWERMGMT (1 << 4)
  85. #define SK_PNMI_TST_PCI (1 << 5)
  86. #define SK_PNMI_TST_MAC (1 << 6)
  87. /*
  88. * RLMT specific definitions
  89. */
  90. #define SK_PNMI_RLMT_STATUS_STANDBY 1
  91. #define SK_PNMI_RLMT_STATUS_ACTIVE 2
  92. #define SK_PNMI_RLMT_STATUS_ERROR 3
  93. #define SK_PNMI_RLMT_LSTAT_PHY_DOWN 1
  94. #define SK_PNMI_RLMT_LSTAT_AUTONEG 2
  95. #define SK_PNMI_RLMT_LSTAT_LOG_DOWN 3
  96. #define SK_PNMI_RLMT_LSTAT_LOG_UP 4
  97. #define SK_PNMI_RLMT_LSTAT_INDETERMINATED 5
  98. #define SK_PNMI_RLMT_MODE_CHK_LINK (SK_RLMT_CHECK_LINK)
  99. #define SK_PNMI_RLMT_MODE_CHK_RX (SK_RLMT_CHECK_LOC_LINK)
  100. #define SK_PNMI_RLMT_MODE_CHK_SPT (SK_RLMT_CHECK_SEG)
  101. /* #define SK_PNMI_RLMT_MODE_CHK_EX */
  102. /*
  103. * OID definition
  104. */
  105. #ifndef _NDIS_ /* Check, whether NDIS already included OIDs */
  106. #define OID_GEN_XMIT_OK 0x00020101
  107. #define OID_GEN_RCV_OK 0x00020102
  108. #define OID_GEN_XMIT_ERROR 0x00020103
  109. #define OID_GEN_RCV_ERROR 0x00020104
  110. #define OID_GEN_RCV_NO_BUFFER 0x00020105
  111. /* #define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201 */
  112. #define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
  113. /* #define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203 */
  114. #define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
  115. /* #define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205 */
  116. #define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
  117. /* #define OID_GEN_DIRECTED_BYTES_RCV 0x00020207 */
  118. #define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
  119. /* #define OID_GEN_MULTICAST_BYTES_RCV 0x00020209 */
  120. #define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020A
  121. /* #define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B */
  122. #define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020C
  123. #define OID_GEN_RCV_CRC_ERROR 0x0002020D
  124. #define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020E
  125. #define OID_802_3_PERMANENT_ADDRESS 0x01010101
  126. #define OID_802_3_CURRENT_ADDRESS 0x01010102
  127. /* #define OID_802_3_MULTICAST_LIST 0x01010103 */
  128. /* #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104 */
  129. /* #define OID_802_3_MAC_OPTIONS 0x01010105 */
  130. #define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
  131. #define OID_802_3_XMIT_ONE_COLLISION 0x01020102
  132. #define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
  133. #define OID_802_3_XMIT_DEFERRED 0x01020201
  134. #define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
  135. #define OID_802_3_RCV_OVERRUN 0x01020203
  136. #define OID_802_3_XMIT_UNDERRUN 0x01020204
  137. #define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
  138. #define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
  139. /*
  140. * PnP and PM OIDs
  141. */
  142. #ifdef SK_POWER_MGMT
  143. #define OID_PNP_CAPABILITIES 0xFD010100
  144. #define OID_PNP_SET_POWER 0xFD010101
  145. #define OID_PNP_QUERY_POWER 0xFD010102
  146. #define OID_PNP_ADD_WAKE_UP_PATTERN 0xFD010103
  147. #define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xFD010104
  148. #define OID_PNP_ENABLE_WAKE_UP 0xFD010106
  149. #endif /* SK_POWER_MGMT */
  150. #endif /* _NDIS_ */
  151. #define OID_SKGE_MDB_VERSION 0xFF010100
  152. #define OID_SKGE_SUPPORTED_LIST 0xFF010101
  153. #define OID_SKGE_VPD_FREE_BYTES 0xFF010102
  154. #define OID_SKGE_VPD_ENTRIES_LIST 0xFF010103
  155. #define OID_SKGE_VPD_ENTRIES_NUMBER 0xFF010104
  156. #define OID_SKGE_VPD_KEY 0xFF010105
  157. #define OID_SKGE_VPD_VALUE 0xFF010106
  158. #define OID_SKGE_VPD_ACCESS 0xFF010107
  159. #define OID_SKGE_VPD_ACTION 0xFF010108
  160. #define OID_SKGE_PORT_NUMBER 0xFF010110
  161. #define OID_SKGE_DEVICE_TYPE 0xFF010111
  162. #define OID_SKGE_DRIVER_DESCR 0xFF010112
  163. #define OID_SKGE_DRIVER_VERSION 0xFF010113
  164. #define OID_SKGE_HW_DESCR 0xFF010114
  165. #define OID_SKGE_HW_VERSION 0xFF010115
  166. #define OID_SKGE_CHIPSET 0xFF010116
  167. #define OID_SKGE_ACTION 0xFF010117
  168. #define OID_SKGE_RESULT 0xFF010118
  169. #define OID_SKGE_BUS_TYPE 0xFF010119
  170. #define OID_SKGE_BUS_SPEED 0xFF01011A
  171. #define OID_SKGE_BUS_WIDTH 0xFF01011B
  172. /* 0xFF01011C unused */
  173. #define OID_SKGE_DIAG_ACTION 0xFF01011D
  174. #define OID_SKGE_DIAG_RESULT 0xFF01011E
  175. #define OID_SKGE_MTU 0xFF01011F
  176. #define OID_SKGE_PHYS_CUR_ADDR 0xFF010120
  177. #define OID_SKGE_PHYS_FAC_ADDR 0xFF010121
  178. #define OID_SKGE_PMD 0xFF010122
  179. #define OID_SKGE_CONNECTOR 0xFF010123
  180. #define OID_SKGE_LINK_CAP 0xFF010124
  181. #define OID_SKGE_LINK_MODE 0xFF010125
  182. #define OID_SKGE_LINK_MODE_STATUS 0xFF010126
  183. #define OID_SKGE_LINK_STATUS 0xFF010127
  184. #define OID_SKGE_FLOWCTRL_CAP 0xFF010128
  185. #define OID_SKGE_FLOWCTRL_MODE 0xFF010129
  186. #define OID_SKGE_FLOWCTRL_STATUS 0xFF01012A
  187. #define OID_SKGE_PHY_OPERATION_CAP 0xFF01012B
  188. #define OID_SKGE_PHY_OPERATION_MODE 0xFF01012C
  189. #define OID_SKGE_PHY_OPERATION_STATUS 0xFF01012D
  190. #define OID_SKGE_MULTICAST_LIST 0xFF01012E
  191. #define OID_SKGE_CURRENT_PACKET_FILTER 0xFF01012F
  192. #define OID_SKGE_TRAP 0xFF010130
  193. #define OID_SKGE_TRAP_NUMBER 0xFF010131
  194. #define OID_SKGE_RLMT_MODE 0xFF010140
  195. #define OID_SKGE_RLMT_PORT_NUMBER 0xFF010141
  196. #define OID_SKGE_RLMT_PORT_ACTIVE 0xFF010142
  197. #define OID_SKGE_RLMT_PORT_PREFERRED 0xFF010143
  198. #define OID_SKGE_INTERMEDIATE_SUPPORT 0xFF010160
  199. #define OID_SKGE_SPEED_CAP 0xFF010170
  200. #define OID_SKGE_SPEED_MODE 0xFF010171
  201. #define OID_SKGE_SPEED_STATUS 0xFF010172
  202. #define OID_SKGE_BOARDLEVEL 0xFF010180
  203. #define OID_SKGE_SENSOR_NUMBER 0xFF020100
  204. #define OID_SKGE_SENSOR_INDEX 0xFF020101
  205. #define OID_SKGE_SENSOR_DESCR 0xFF020102
  206. #define OID_SKGE_SENSOR_TYPE 0xFF020103
  207. #define OID_SKGE_SENSOR_VALUE 0xFF020104
  208. #define OID_SKGE_SENSOR_WAR_THRES_LOW 0xFF020105
  209. #define OID_SKGE_SENSOR_WAR_THRES_UPP 0xFF020106
  210. #define OID_SKGE_SENSOR_ERR_THRES_LOW 0xFF020107
  211. #define OID_SKGE_SENSOR_ERR_THRES_UPP 0xFF020108
  212. #define OID_SKGE_SENSOR_STATUS 0xFF020109
  213. #define OID_SKGE_SENSOR_WAR_CTS 0xFF02010A
  214. #define OID_SKGE_SENSOR_ERR_CTS 0xFF02010B
  215. #define OID_SKGE_SENSOR_WAR_TIME 0xFF02010C
  216. #define OID_SKGE_SENSOR_ERR_TIME 0xFF02010D
  217. #define OID_SKGE_CHKSM_NUMBER 0xFF020110
  218. #define OID_SKGE_CHKSM_RX_OK_CTS 0xFF020111
  219. #define OID_SKGE_CHKSM_RX_UNABLE_CTS 0xFF020112
  220. #define OID_SKGE_CHKSM_RX_ERR_CTS 0xFF020113
  221. #define OID_SKGE_CHKSM_TX_OK_CTS 0xFF020114
  222. #define OID_SKGE_CHKSM_TX_UNABLE_CTS 0xFF020115
  223. #define OID_SKGE_STAT_TX 0xFF020120
  224. #define OID_SKGE_STAT_TX_OCTETS 0xFF020121
  225. #define OID_SKGE_STAT_TX_BROADCAST 0xFF020122
  226. #define OID_SKGE_STAT_TX_MULTICAST 0xFF020123
  227. #define OID_SKGE_STAT_TX_UNICAST 0xFF020124
  228. #define OID_SKGE_STAT_TX_LONGFRAMES 0xFF020125
  229. #define OID_SKGE_STAT_TX_BURST 0xFF020126
  230. #define OID_SKGE_STAT_TX_PFLOWC 0xFF020127
  231. #define OID_SKGE_STAT_TX_FLOWC 0xFF020128
  232. #define OID_SKGE_STAT_TX_SINGLE_COL 0xFF020129
  233. #define OID_SKGE_STAT_TX_MULTI_COL 0xFF02012A
  234. #define OID_SKGE_STAT_TX_EXCESS_COL 0xFF02012B
  235. #define OID_SKGE_STAT_TX_LATE_COL 0xFF02012C
  236. #define OID_SKGE_STAT_TX_DEFFERAL 0xFF02012D
  237. #define OID_SKGE_STAT_TX_EXCESS_DEF 0xFF02012E
  238. #define OID_SKGE_STAT_TX_UNDERRUN 0xFF02012F
  239. #define OID_SKGE_STAT_TX_CARRIER 0xFF020130
  240. /* #define OID_SKGE_STAT_TX_UTIL 0xFF020131 */
  241. #define OID_SKGE_STAT_TX_64 0xFF020132
  242. #define OID_SKGE_STAT_TX_127 0xFF020133
  243. #define OID_SKGE_STAT_TX_255 0xFF020134
  244. #define OID_SKGE_STAT_TX_511 0xFF020135
  245. #define OID_SKGE_STAT_TX_1023 0xFF020136
  246. #define OID_SKGE_STAT_TX_MAX 0xFF020137
  247. #define OID_SKGE_STAT_TX_SYNC 0xFF020138
  248. #define OID_SKGE_STAT_TX_SYNC_OCTETS 0xFF020139
  249. #define OID_SKGE_STAT_RX 0xFF02013A
  250. #define OID_SKGE_STAT_RX_OCTETS 0xFF02013B
  251. #define OID_SKGE_STAT_RX_BROADCAST 0xFF02013C
  252. #define OID_SKGE_STAT_RX_MULTICAST 0xFF02013D
  253. #define OID_SKGE_STAT_RX_UNICAST 0xFF02013E
  254. #define OID_SKGE_STAT_RX_PFLOWC 0xFF02013F
  255. #define OID_SKGE_STAT_RX_FLOWC 0xFF020140
  256. #define OID_SKGE_STAT_RX_PFLOWC_ERR 0xFF020141
  257. #define OID_SKGE_STAT_RX_FLOWC_UNKWN 0xFF020142
  258. #define OID_SKGE_STAT_RX_BURST 0xFF020143
  259. #define OID_SKGE_STAT_RX_MISSED 0xFF020144
  260. #define OID_SKGE_STAT_RX_FRAMING 0xFF020145
  261. #define OID_SKGE_STAT_RX_OVERFLOW 0xFF020146
  262. #define OID_SKGE_STAT_RX_JABBER 0xFF020147
  263. #define OID_SKGE_STAT_RX_CARRIER 0xFF020148
  264. #define OID_SKGE_STAT_RX_IR_LENGTH 0xFF020149
  265. #define OID_SKGE_STAT_RX_SYMBOL 0xFF02014A
  266. #define OID_SKGE_STAT_RX_SHORTS 0xFF02014B
  267. #define OID_SKGE_STAT_RX_RUNT 0xFF02014C
  268. #define OID_SKGE_STAT_RX_CEXT 0xFF02014D
  269. #define OID_SKGE_STAT_RX_TOO_LONG 0xFF02014E
  270. #define OID_SKGE_STAT_RX_FCS 0xFF02014F
  271. /* #define OID_SKGE_STAT_RX_UTIL 0xFF020150 */
  272. #define OID_SKGE_STAT_RX_64 0xFF020151
  273. #define OID_SKGE_STAT_RX_127 0xFF020152
  274. #define OID_SKGE_STAT_RX_255 0xFF020153
  275. #define OID_SKGE_STAT_RX_511 0xFF020154
  276. #define OID_SKGE_STAT_RX_1023 0xFF020155
  277. #define OID_SKGE_STAT_RX_MAX 0xFF020156
  278. #define OID_SKGE_STAT_RX_LONGFRAMES 0xFF020157
  279. #define OID_SKGE_RLMT_CHANGE_CTS 0xFF020160
  280. #define OID_SKGE_RLMT_CHANGE_TIME 0xFF020161
  281. #define OID_SKGE_RLMT_CHANGE_ESTIM 0xFF020162
  282. #define OID_SKGE_RLMT_CHANGE_THRES 0xFF020163
  283. #define OID_SKGE_RLMT_PORT_INDEX 0xFF020164
  284. #define OID_SKGE_RLMT_STATUS 0xFF020165
  285. #define OID_SKGE_RLMT_TX_HELLO_CTS 0xFF020166
  286. #define OID_SKGE_RLMT_RX_HELLO_CTS 0xFF020167
  287. #define OID_SKGE_RLMT_TX_SP_REQ_CTS 0xFF020168
  288. #define OID_SKGE_RLMT_RX_SP_CTS 0xFF020169
  289. #define OID_SKGE_RLMT_MONITOR_NUMBER 0xFF010150
  290. #define OID_SKGE_RLMT_MONITOR_INDEX 0xFF010151
  291. #define OID_SKGE_RLMT_MONITOR_ADDR 0xFF010152
  292. #define OID_SKGE_RLMT_MONITOR_ERRS 0xFF010153
  293. #define OID_SKGE_RLMT_MONITOR_TIMESTAMP 0xFF010154
  294. #define OID_SKGE_RLMT_MONITOR_ADMIN 0xFF010155
  295. #define OID_SKGE_TX_SW_QUEUE_LEN 0xFF020170
  296. #define OID_SKGE_TX_SW_QUEUE_MAX 0xFF020171
  297. #define OID_SKGE_TX_RETRY 0xFF020172
  298. #define OID_SKGE_RX_INTR_CTS 0xFF020173
  299. #define OID_SKGE_TX_INTR_CTS 0xFF020174
  300. #define OID_SKGE_RX_NO_BUF_CTS 0xFF020175
  301. #define OID_SKGE_TX_NO_BUF_CTS 0xFF020176
  302. #define OID_SKGE_TX_USED_DESCR_NO 0xFF020177
  303. #define OID_SKGE_RX_DELIVERED_CTS 0xFF020178
  304. #define OID_SKGE_RX_OCTETS_DELIV_CTS 0xFF020179
  305. #define OID_SKGE_RX_HW_ERROR_CTS 0xFF02017A
  306. #define OID_SKGE_TX_HW_ERROR_CTS 0xFF02017B
  307. #define OID_SKGE_IN_ERRORS_CTS 0xFF02017C
  308. #define OID_SKGE_OUT_ERROR_CTS 0xFF02017D
  309. #define OID_SKGE_ERR_RECOVERY_CTS 0xFF02017E
  310. #define OID_SKGE_SYSUPTIME 0xFF02017F
  311. #define OID_SKGE_ALL_DATA 0xFF020190
  312. /* Defines for VCT. */
  313. #define OID_SKGE_VCT_GET 0xFF020200
  314. #define OID_SKGE_VCT_SET 0xFF020201
  315. #define OID_SKGE_VCT_STATUS 0xFF020202
  316. #ifdef SK_DIAG_SUPPORT
  317. /* Defines for driver DIAG mode. */
  318. #define OID_SKGE_DIAG_MODE 0xFF020204
  319. #endif /* SK_DIAG_SUPPORT */
  320. /* New OIDs */
  321. #define OID_SKGE_DRIVER_RELDATE 0xFF020210
  322. #define OID_SKGE_DRIVER_FILENAME 0xFF020211
  323. #define OID_SKGE_CHIPID 0xFF020212
  324. #define OID_SKGE_RAMSIZE 0xFF020213
  325. #define OID_SKGE_VAUXAVAIL 0xFF020214
  326. #define OID_SKGE_PHY_TYPE 0xFF020215
  327. #define OID_SKGE_PHY_LP_MODE 0xFF020216
  328. /* VCT struct to store a backup copy of VCT data after a port reset. */
  329. typedef struct s_PnmiVct {
  330. SK_U8 VctStatus;
  331. SK_U8 PCableLen;
  332. SK_U32 PMdiPairLen[4];
  333. SK_U8 PMdiPairSts[4];
  334. } SK_PNMI_VCT;
  335. /* VCT status values (to be given to CPA via OID_SKGE_VCT_STATUS). */
  336. #define SK_PNMI_VCT_NONE 0
  337. #define SK_PNMI_VCT_OLD_VCT_DATA 1
  338. #define SK_PNMI_VCT_NEW_VCT_DATA 2
  339. #define SK_PNMI_VCT_OLD_DSP_DATA 4
  340. #define SK_PNMI_VCT_NEW_DSP_DATA 8
  341. #define SK_PNMI_VCT_RUNNING 16
  342. /* VCT cable test status. */
  343. #define SK_PNMI_VCT_NORMAL_CABLE 0
  344. #define SK_PNMI_VCT_SHORT_CABLE 1
  345. #define SK_PNMI_VCT_OPEN_CABLE 2
  346. #define SK_PNMI_VCT_TEST_FAIL 3
  347. #define SK_PNMI_VCT_IMPEDANCE_MISMATCH 4
  348. #define OID_SKGE_TRAP_SEN_WAR_LOW 500
  349. #define OID_SKGE_TRAP_SEN_WAR_UPP 501
  350. #define OID_SKGE_TRAP_SEN_ERR_LOW 502
  351. #define OID_SKGE_TRAP_SEN_ERR_UPP 503
  352. #define OID_SKGE_TRAP_RLMT_CHANGE_THRES 520
  353. #define OID_SKGE_TRAP_RLMT_CHANGE_PORT 521
  354. #define OID_SKGE_TRAP_RLMT_PORT_DOWN 522
  355. #define OID_SKGE_TRAP_RLMT_PORT_UP 523
  356. #define OID_SKGE_TRAP_RLMT_SEGMENTATION 524
  357. #ifdef SK_DIAG_SUPPORT
  358. /* Defines for driver DIAG mode. */
  359. #define SK_DIAG_ATTACHED 2
  360. #define SK_DIAG_RUNNING 1
  361. #define SK_DIAG_IDLE 0
  362. #endif /* SK_DIAG_SUPPORT */
  363. /*
  364. * Generic PNMI IOCTL subcommand definitions.
  365. */
  366. #define SK_GET_SINGLE_VAR 1
  367. #define SK_SET_SINGLE_VAR 2
  368. #define SK_PRESET_SINGLE_VAR 3
  369. #define SK_GET_FULL_MIB 4
  370. #define SK_SET_FULL_MIB 5
  371. #define SK_PRESET_FULL_MIB 6
  372. /*
  373. * Define error numbers and messages for syslog
  374. */
  375. #define SK_PNMI_ERR001 (SK_ERRBASE_PNMI + 1)
  376. #define SK_PNMI_ERR001MSG "SkPnmiGetStruct: Unknown OID"
  377. #define SK_PNMI_ERR002 (SK_ERRBASE_PNMI + 2)
  378. #define SK_PNMI_ERR002MSG "SkPnmiGetStruct: Cannot read VPD keys"
  379. #define SK_PNMI_ERR003 (SK_ERRBASE_PNMI + 3)
  380. #define SK_PNMI_ERR003MSG "OidStruct: Called with wrong OID"
  381. #define SK_PNMI_ERR004 (SK_ERRBASE_PNMI + 4)
  382. #define SK_PNMI_ERR004MSG "OidStruct: Called with wrong action"
  383. #define SK_PNMI_ERR005 (SK_ERRBASE_PNMI + 5)
  384. #define SK_PNMI_ERR005MSG "Perform: Cannot reset driver"
  385. #define SK_PNMI_ERR006 (SK_ERRBASE_PNMI + 6)
  386. #define SK_PNMI_ERR006MSG "Perform: Unknown OID action command"
  387. #define SK_PNMI_ERR007 (SK_ERRBASE_PNMI + 7)
  388. #define SK_PNMI_ERR007MSG "General: Driver description not initialized"
  389. #define SK_PNMI_ERR008 (SK_ERRBASE_PNMI + 8)
  390. #define SK_PNMI_ERR008MSG "Addr: Tried to get unknown OID"
  391. #define SK_PNMI_ERR009 (SK_ERRBASE_PNMI + 9)
  392. #define SK_PNMI_ERR009MSG "Addr: Unknown OID"
  393. #define SK_PNMI_ERR010 (SK_ERRBASE_PNMI + 10)
  394. #define SK_PNMI_ERR010MSG "CsumStat: Unknown OID"
  395. #define SK_PNMI_ERR011 (SK_ERRBASE_PNMI + 11)
  396. #define SK_PNMI_ERR011MSG "SensorStat: Sensor descr string too long"
  397. #define SK_PNMI_ERR012 (SK_ERRBASE_PNMI + 12)
  398. #define SK_PNMI_ERR012MSG "SensorStat: Unknown OID"
  399. #define SK_PNMI_ERR013 (SK_ERRBASE_PNMI + 13)
  400. #define SK_PNMI_ERR013MSG ""
  401. #define SK_PNMI_ERR014 (SK_ERRBASE_PNMI + 14)
  402. #define SK_PNMI_ERR014MSG "Vpd: Cannot read VPD keys"
  403. #define SK_PNMI_ERR015 (SK_ERRBASE_PNMI + 15)
  404. #define SK_PNMI_ERR015MSG "Vpd: Internal array for VPD keys to small"
  405. #define SK_PNMI_ERR016 (SK_ERRBASE_PNMI + 16)
  406. #define SK_PNMI_ERR016MSG "Vpd: Key string too long"
  407. #define SK_PNMI_ERR017 (SK_ERRBASE_PNMI + 17)
  408. #define SK_PNMI_ERR017MSG "Vpd: Invalid VPD status pointer"
  409. #define SK_PNMI_ERR018 (SK_ERRBASE_PNMI + 18)
  410. #define SK_PNMI_ERR018MSG "Vpd: VPD data not valid"
  411. #define SK_PNMI_ERR019 (SK_ERRBASE_PNMI + 19)
  412. #define SK_PNMI_ERR019MSG "Vpd: VPD entries list string too long"
  413. #define SK_PNMI_ERR021 (SK_ERRBASE_PNMI + 21)
  414. #define SK_PNMI_ERR021MSG "Vpd: VPD data string too long"
  415. #define SK_PNMI_ERR022 (SK_ERRBASE_PNMI + 22)
  416. #define SK_PNMI_ERR022MSG "Vpd: VPD data string too long should be errored before"
  417. #define SK_PNMI_ERR023 (SK_ERRBASE_PNMI + 23)
  418. #define SK_PNMI_ERR023MSG "Vpd: Unknown OID in get action"
  419. #define SK_PNMI_ERR024 (SK_ERRBASE_PNMI + 24)
  420. #define SK_PNMI_ERR024MSG "Vpd: Unknown OID in preset/set action"
  421. #define SK_PNMI_ERR025 (SK_ERRBASE_PNMI + 25)
  422. #define SK_PNMI_ERR025MSG "Vpd: Cannot write VPD after modify entry"
  423. #define SK_PNMI_ERR026 (SK_ERRBASE_PNMI + 26)
  424. #define SK_PNMI_ERR026MSG "Vpd: Cannot update VPD"
  425. #define SK_PNMI_ERR027 (SK_ERRBASE_PNMI + 27)
  426. #define SK_PNMI_ERR027MSG "Vpd: Cannot delete VPD entry"
  427. #define SK_PNMI_ERR028 (SK_ERRBASE_PNMI + 28)
  428. #define SK_PNMI_ERR028MSG "Vpd: Cannot update VPD after delete entry"
  429. #define SK_PNMI_ERR029 (SK_ERRBASE_PNMI + 29)
  430. #define SK_PNMI_ERR029MSG "General: Driver description string too long"
  431. #define SK_PNMI_ERR030 (SK_ERRBASE_PNMI + 30)
  432. #define SK_PNMI_ERR030MSG "General: Driver version not initialized"
  433. #define SK_PNMI_ERR031 (SK_ERRBASE_PNMI + 31)
  434. #define SK_PNMI_ERR031MSG "General: Driver version string too long"
  435. #define SK_PNMI_ERR032 (SK_ERRBASE_PNMI + 32)
  436. #define SK_PNMI_ERR032MSG "General: Cannot read VPD Name for HW descr"
  437. #define SK_PNMI_ERR033 (SK_ERRBASE_PNMI + 33)
  438. #define SK_PNMI_ERR033MSG "General: HW description string too long"
  439. #define SK_PNMI_ERR034 (SK_ERRBASE_PNMI + 34)
  440. #define SK_PNMI_ERR034MSG "General: Unknown OID"
  441. #define SK_PNMI_ERR035 (SK_ERRBASE_PNMI + 35)
  442. #define SK_PNMI_ERR035MSG "Rlmt: Unknown OID"
  443. #define SK_PNMI_ERR036 (SK_ERRBASE_PNMI + 36)
  444. #define SK_PNMI_ERR036MSG ""
  445. #define SK_PNMI_ERR037 (SK_ERRBASE_PNMI + 37)
  446. #define SK_PNMI_ERR037MSG "Rlmt: SK_RLMT_MODE_CHANGE event return not 0"
  447. #define SK_PNMI_ERR038 (SK_ERRBASE_PNMI + 38)
  448. #define SK_PNMI_ERR038MSG "Rlmt: SK_RLMT_PREFPORT_CHANGE event return not 0"
  449. #define SK_PNMI_ERR039 (SK_ERRBASE_PNMI + 39)
  450. #define SK_PNMI_ERR039MSG "RlmtStat: Unknown OID"
  451. #define SK_PNMI_ERR040 (SK_ERRBASE_PNMI + 40)
  452. #define SK_PNMI_ERR040MSG "PowerManagement: Unknown OID"
  453. #define SK_PNMI_ERR041 (SK_ERRBASE_PNMI + 41)
  454. #define SK_PNMI_ERR041MSG "MacPrivateConf: Unknown OID"
  455. #define SK_PNMI_ERR042 (SK_ERRBASE_PNMI + 42)
  456. #define SK_PNMI_ERR042MSG "MacPrivateConf: SK_HWEV_SET_ROLE returned not 0"
  457. #define SK_PNMI_ERR043 (SK_ERRBASE_PNMI + 43)
  458. #define SK_PNMI_ERR043MSG "MacPrivateConf: SK_HWEV_SET_LMODE returned not 0"
  459. #define SK_PNMI_ERR044 (SK_ERRBASE_PNMI + 44)
  460. #define SK_PNMI_ERR044MSG "MacPrivateConf: SK_HWEV_SET_FLOWMODE returned not 0"
  461. #define SK_PNMI_ERR045 (SK_ERRBASE_PNMI + 45)
  462. #define SK_PNMI_ERR045MSG "MacPrivateConf: SK_HWEV_SET_SPEED returned not 0"
  463. #define SK_PNMI_ERR046 (SK_ERRBASE_PNMI + 46)
  464. #define SK_PNMI_ERR046MSG "Monitor: Unknown OID"
  465. #define SK_PNMI_ERR047 (SK_ERRBASE_PNMI + 47)
  466. #define SK_PNMI_ERR047MSG "SirqUpdate: Event function returns not 0"
  467. #define SK_PNMI_ERR048 (SK_ERRBASE_PNMI + 48)
  468. #define SK_PNMI_ERR048MSG "RlmtUpdate: Event function returns not 0"
  469. #define SK_PNMI_ERR049 (SK_ERRBASE_PNMI + 49)
  470. #define SK_PNMI_ERR049MSG "SkPnmiInit: Invalid size of 'CounterOffset' struct!!"
  471. #define SK_PNMI_ERR050 (SK_ERRBASE_PNMI + 50)
  472. #define SK_PNMI_ERR050MSG "SkPnmiInit: Invalid size of 'StatAddr' table!!"
  473. #define SK_PNMI_ERR051 (SK_ERRBASE_PNMI + 51)
  474. #define SK_PNMI_ERR051MSG "SkPnmiEvent: Port switch suspicious"
  475. #define SK_PNMI_ERR052 (SK_ERRBASE_PNMI + 52)
  476. #define SK_PNMI_ERR052MSG ""
  477. #define SK_PNMI_ERR053 (SK_ERRBASE_PNMI + 53)
  478. #define SK_PNMI_ERR053MSG "General: Driver release date not initialized"
  479. #define SK_PNMI_ERR054 (SK_ERRBASE_PNMI + 54)
  480. #define SK_PNMI_ERR054MSG "General: Driver release date string too long"
  481. #define SK_PNMI_ERR055 (SK_ERRBASE_PNMI + 55)
  482. #define SK_PNMI_ERR055MSG "General: Driver file name not initialized"
  483. #define SK_PNMI_ERR056 (SK_ERRBASE_PNMI + 56)
  484. #define SK_PNMI_ERR056MSG "General: Driver file name string too long"
  485. /*
  486. * Management counter macros called by the driver
  487. */
  488. #define SK_PNMI_SET_DRIVER_DESCR(pAC,v) ((pAC)->Pnmi.pDriverDescription = \
  489. (char *)(v))
  490. #define SK_PNMI_SET_DRIVER_VER(pAC,v) ((pAC)->Pnmi.pDriverVersion = \
  491. (char *)(v))
  492. #define SK_PNMI_SET_DRIVER_RELDATE(pAC,v) ((pAC)->Pnmi.pDriverReleaseDate = \
  493. (char *)(v))
  494. #define SK_PNMI_SET_DRIVER_FILENAME(pAC,v) ((pAC)->Pnmi.pDriverFileName = \
  495. (char *)(v))
  496. #define SK_PNMI_CNT_TX_QUEUE_LEN(pAC,v,p) \
  497. { \
  498. (pAC)->Pnmi.Port[p].TxSwQueueLen = (SK_U64)(v); \
  499. if ((pAC)->Pnmi.Port[p].TxSwQueueLen > (pAC)->Pnmi.Port[p].TxSwQueueMax) { \
  500. (pAC)->Pnmi.Port[p].TxSwQueueMax = (pAC)->Pnmi.Port[p].TxSwQueueLen; \
  501. } \
  502. }
  503. #define SK_PNMI_CNT_TX_RETRY(pAC,p) (((pAC)->Pnmi.Port[p].TxRetryCts)++)
  504. #define SK_PNMI_CNT_RX_INTR(pAC,p) (((pAC)->Pnmi.Port[p].RxIntrCts)++)
  505. #define SK_PNMI_CNT_TX_INTR(pAC,p) (((pAC)->Pnmi.Port[p].TxIntrCts)++)
  506. #define SK_PNMI_CNT_NO_RX_BUF(pAC,p) (((pAC)->Pnmi.Port[p].RxNoBufCts)++)
  507. #define SK_PNMI_CNT_NO_TX_BUF(pAC,p) (((pAC)->Pnmi.Port[p].TxNoBufCts)++)
  508. #define SK_PNMI_CNT_USED_TX_DESCR(pAC,v,p) \
  509. ((pAC)->Pnmi.Port[p].TxUsedDescrNo=(SK_U64)(v));
  510. #define SK_PNMI_CNT_RX_OCTETS_DELIVERED(pAC,v,p) \
  511. { \
  512. ((pAC)->Pnmi.Port[p].RxDeliveredCts)++; \
  513. (pAC)->Pnmi.Port[p].RxOctetsDeliveredCts += (SK_U64)(v); \
  514. }
  515. #define SK_PNMI_CNT_ERR_RECOVERY(pAC,p) (((pAC)->Pnmi.Port[p].ErrRecoveryCts)++);
  516. #define SK_PNMI_CNT_SYNC_OCTETS(pAC,p,v) \
  517. { \
  518. if ((p) < SK_MAX_MACS) { \
  519. ((pAC)->Pnmi.Port[p].StatSyncCts)++; \
  520. (pAC)->Pnmi.Port[p].StatSyncOctetsCts += (SK_U64)(v); \
  521. } \
  522. }
  523. #define SK_PNMI_CNT_RX_LONGFRAMES(pAC,p) \
  524. { \
  525. if ((p) < SK_MAX_MACS) { \
  526. ((pAC)->Pnmi.Port[p].StatRxLongFrameCts++); \
  527. } \
  528. }
  529. #define SK_PNMI_CNT_RX_FRAMETOOLONG(pAC,p) \
  530. { \
  531. if ((p) < SK_MAX_MACS) { \
  532. ((pAC)->Pnmi.Port[p].StatRxFrameTooLongCts++); \
  533. } \
  534. }
  535. #define SK_PNMI_CNT_RX_PMACC_ERR(pAC,p) \
  536. { \
  537. if ((p) < SK_MAX_MACS) { \
  538. ((pAC)->Pnmi.Port[p].StatRxPMaccErr++); \
  539. } \
  540. }
  541. /*
  542. * Conversion Macros
  543. */
  544. #define SK_PNMI_PORT_INST2LOG(i) ((unsigned int)(i) - 1)
  545. #define SK_PNMI_PORT_LOG2INST(l) ((unsigned int)(l) + 1)
  546. #define SK_PNMI_PORT_PHYS2LOG(p) ((unsigned int)(p) + 1)
  547. #define SK_PNMI_PORT_LOG2PHYS(pAC,l) ((unsigned int)(l) - 1)
  548. #define SK_PNMI_PORT_PHYS2INST(pAC,p) \
  549. (pAC->Pnmi.DualNetActiveFlag ? 2 : ((unsigned int)(p) + 2))
  550. #define SK_PNMI_PORT_INST2PHYS(pAC,i) ((unsigned int)(i) - 2)
  551. /*
  552. * Structure definition for SkPnmiGetStruct and SkPnmiSetStruct
  553. */
  554. #define SK_PNMI_VPD_KEY_SIZE 5
  555. #define SK_PNMI_VPD_BUFSIZE (VPD_SIZE)
  556. #define SK_PNMI_VPD_ENTRIES (VPD_SIZE / 4)
  557. #define SK_PNMI_VPD_DATALEN 128 /* Number of data bytes */
  558. #define SK_PNMI_MULTICAST_LISTLEN 64
  559. #define SK_PNMI_SENSOR_ENTRIES (SK_MAX_SENSORS)
  560. #define SK_PNMI_CHECKSUM_ENTRIES 3
  561. #define SK_PNMI_MAC_ENTRIES (SK_MAX_MACS + 1)
  562. #define SK_PNMI_MONITOR_ENTRIES 20
  563. #define SK_PNMI_TRAP_ENTRIES 10
  564. #define SK_PNMI_TRAPLEN 128
  565. #define SK_PNMI_STRINGLEN1 80
  566. #define SK_PNMI_STRINGLEN2 25
  567. #define SK_PNMI_TRAP_QUEUE_LEN 512
  568. typedef struct s_PnmiVpd {
  569. char VpdKey[SK_PNMI_VPD_KEY_SIZE];
  570. char VpdValue[SK_PNMI_VPD_DATALEN];
  571. SK_U8 VpdAccess;
  572. SK_U8 VpdAction;
  573. } SK_PNMI_VPD;
  574. typedef struct s_PnmiSensor {
  575. SK_U8 SensorIndex;
  576. char SensorDescr[SK_PNMI_STRINGLEN2];
  577. SK_U8 SensorType;
  578. SK_U32 SensorValue;
  579. SK_U32 SensorWarningThresholdLow;
  580. SK_U32 SensorWarningThresholdHigh;
  581. SK_U32 SensorErrorThresholdLow;
  582. SK_U32 SensorErrorThresholdHigh;
  583. SK_U8 SensorStatus;
  584. SK_U64 SensorWarningCts;
  585. SK_U64 SensorErrorCts;
  586. SK_U64 SensorWarningTimestamp;
  587. SK_U64 SensorErrorTimestamp;
  588. } SK_PNMI_SENSOR;
  589. typedef struct s_PnmiChecksum {
  590. SK_U64 ChecksumRxOkCts;
  591. SK_U64 ChecksumRxUnableCts;
  592. SK_U64 ChecksumRxErrCts;
  593. SK_U64 ChecksumTxOkCts;
  594. SK_U64 ChecksumTxUnableCts;
  595. } SK_PNMI_CHECKSUM;
  596. typedef struct s_PnmiStat {
  597. SK_U64 StatTxOkCts;
  598. SK_U64 StatTxOctetsOkCts;
  599. SK_U64 StatTxBroadcastOkCts;
  600. SK_U64 StatTxMulticastOkCts;
  601. SK_U64 StatTxUnicastOkCts;
  602. SK_U64 StatTxLongFramesCts;
  603. SK_U64 StatTxBurstCts;
  604. SK_U64 StatTxPauseMacCtrlCts;
  605. SK_U64 StatTxMacCtrlCts;
  606. SK_U64 StatTxSingleCollisionCts;
  607. SK_U64 StatTxMultipleCollisionCts;
  608. SK_U64 StatTxExcessiveCollisionCts;
  609. SK_U64 StatTxLateCollisionCts;
  610. SK_U64 StatTxDeferralCts;
  611. SK_U64 StatTxExcessiveDeferralCts;
  612. SK_U64 StatTxFifoUnderrunCts;
  613. SK_U64 StatTxCarrierCts;
  614. SK_U64 Dummy1; /* StatTxUtilization */
  615. SK_U64 StatTx64Cts;
  616. SK_U64 StatTx127Cts;
  617. SK_U64 StatTx255Cts;
  618. SK_U64 StatTx511Cts;
  619. SK_U64 StatTx1023Cts;
  620. SK_U64 StatTxMaxCts;
  621. SK_U64 StatTxSyncCts;
  622. SK_U64 StatTxSyncOctetsCts;
  623. SK_U64 StatRxOkCts;
  624. SK_U64 StatRxOctetsOkCts;
  625. SK_U64 StatRxBroadcastOkCts;
  626. SK_U64 StatRxMulticastOkCts;
  627. SK_U64 StatRxUnicastOkCts;
  628. SK_U64 StatRxLongFramesCts;
  629. SK_U64 StatRxPauseMacCtrlCts;
  630. SK_U64 StatRxMacCtrlCts;
  631. SK_U64 StatRxPauseMacCtrlErrorCts;
  632. SK_U64 StatRxMacCtrlUnknownCts;
  633. SK_U64 StatRxBurstCts;
  634. SK_U64 StatRxMissedCts;
  635. SK_U64 StatRxFramingCts;
  636. SK_U64 StatRxFifoOverflowCts;
  637. SK_U64 StatRxJabberCts;
  638. SK_U64 StatRxCarrierCts;
  639. SK_U64 StatRxIRLengthCts;
  640. SK_U64 StatRxSymbolCts;
  641. SK_U64 StatRxShortsCts;
  642. SK_U64 StatRxRuntCts;
  643. SK_U64 StatRxCextCts;
  644. SK_U64 StatRxTooLongCts;
  645. SK_U64 StatRxFcsCts;
  646. SK_U64 Dummy2; /* StatRxUtilization */
  647. SK_U64 StatRx64Cts;
  648. SK_U64 StatRx127Cts;
  649. SK_U64 StatRx255Cts;
  650. SK_U64 StatRx511Cts;
  651. SK_U64 StatRx1023Cts;
  652. SK_U64 StatRxMaxCts;
  653. } SK_PNMI_STAT;
  654. typedef struct s_PnmiConf {
  655. char ConfMacCurrentAddr[6];
  656. char ConfMacFactoryAddr[6];
  657. SK_U8 ConfPMD;
  658. SK_U8 ConfConnector;
  659. SK_U32 ConfPhyType;
  660. SK_U32 ConfPhyMode;
  661. SK_U8 ConfLinkCapability;
  662. SK_U8 ConfLinkMode;
  663. SK_U8 ConfLinkModeStatus;
  664. SK_U8 ConfLinkStatus;
  665. SK_U8 ConfFlowCtrlCapability;
  666. SK_U8 ConfFlowCtrlMode;
  667. SK_U8 ConfFlowCtrlStatus;
  668. SK_U8 ConfPhyOperationCapability;
  669. SK_U8 ConfPhyOperationMode;
  670. SK_U8 ConfPhyOperationStatus;
  671. SK_U8 ConfSpeedCapability;
  672. SK_U8 ConfSpeedMode;
  673. SK_U8 ConfSpeedStatus;
  674. } SK_PNMI_CONF;
  675. typedef struct s_PnmiRlmt {
  676. SK_U32 RlmtIndex;
  677. SK_U32 RlmtStatus;
  678. SK_U64 RlmtTxHelloCts;
  679. SK_U64 RlmtRxHelloCts;
  680. SK_U64 RlmtTxSpHelloReqCts;
  681. SK_U64 RlmtRxSpHelloCts;
  682. } SK_PNMI_RLMT;
  683. typedef struct s_PnmiRlmtMonitor {
  684. SK_U32 RlmtMonitorIndex;
  685. char RlmtMonitorAddr[6];
  686. SK_U64 RlmtMonitorErrorCts;
  687. SK_U64 RlmtMonitorTimestamp;
  688. SK_U8 RlmtMonitorAdmin;
  689. } SK_PNMI_RLMT_MONITOR;
  690. typedef struct s_PnmiRequestStatus {
  691. SK_U32 ErrorStatus;
  692. SK_U32 ErrorOffset;
  693. } SK_PNMI_REQUEST_STATUS;
  694. typedef struct s_PnmiStrucData {
  695. SK_U32 MgmtDBVersion;
  696. SK_PNMI_REQUEST_STATUS ReturnStatus;
  697. SK_U32 VpdFreeBytes;
  698. char VpdEntriesList[SK_PNMI_VPD_ENTRIES * SK_PNMI_VPD_KEY_SIZE];
  699. SK_U32 VpdEntriesNumber;
  700. SK_PNMI_VPD Vpd[SK_PNMI_VPD_ENTRIES];
  701. SK_U32 PortNumber;
  702. SK_U32 DeviceType;
  703. char DriverDescr[SK_PNMI_STRINGLEN1];
  704. char DriverVersion[SK_PNMI_STRINGLEN2];
  705. char DriverReleaseDate[SK_PNMI_STRINGLEN1];
  706. char DriverFileName[SK_PNMI_STRINGLEN1];
  707. char HwDescr[SK_PNMI_STRINGLEN1];
  708. char HwVersion[SK_PNMI_STRINGLEN2];
  709. SK_U16 Chipset;
  710. SK_U32 ChipId;
  711. SK_U8 VauxAvail;
  712. SK_U32 RamSize;
  713. SK_U32 MtuSize;
  714. SK_U32 Action;
  715. SK_U32 TestResult;
  716. SK_U8 BusType;
  717. SK_U8 BusSpeed;
  718. SK_U8 BusWidth;
  719. SK_U8 SensorNumber;
  720. SK_PNMI_SENSOR Sensor[SK_PNMI_SENSOR_ENTRIES];
  721. SK_U8 ChecksumNumber;
  722. SK_PNMI_CHECKSUM Checksum[SK_PNMI_CHECKSUM_ENTRIES];
  723. SK_PNMI_STAT Stat[SK_PNMI_MAC_ENTRIES];
  724. SK_PNMI_CONF Conf[SK_PNMI_MAC_ENTRIES];
  725. SK_U8 RlmtMode;
  726. SK_U32 RlmtPortNumber;
  727. SK_U8 RlmtPortActive;
  728. SK_U8 RlmtPortPreferred;
  729. SK_U64 RlmtChangeCts;
  730. SK_U64 RlmtChangeTime;
  731. SK_U64 RlmtChangeEstimate;
  732. SK_U64 RlmtChangeThreshold;
  733. SK_PNMI_RLMT Rlmt[SK_MAX_MACS];
  734. SK_U32 RlmtMonitorNumber;
  735. SK_PNMI_RLMT_MONITOR RlmtMonitor[SK_PNMI_MONITOR_ENTRIES];
  736. SK_U32 TrapNumber;
  737. SK_U8 Trap[SK_PNMI_TRAP_QUEUE_LEN];
  738. SK_U64 TxSwQueueLen;
  739. SK_U64 TxSwQueueMax;
  740. SK_U64 TxRetryCts;
  741. SK_U64 RxIntrCts;
  742. SK_U64 TxIntrCts;
  743. SK_U64 RxNoBufCts;
  744. SK_U64 TxNoBufCts;
  745. SK_U64 TxUsedDescrNo;
  746. SK_U64 RxDeliveredCts;
  747. SK_U64 RxOctetsDeliveredCts;
  748. SK_U64 RxHwErrorsCts;
  749. SK_U64 TxHwErrorsCts;
  750. SK_U64 InErrorsCts;
  751. SK_U64 OutErrorsCts;
  752. SK_U64 ErrRecoveryCts;
  753. SK_U64 SysUpTime;
  754. } SK_PNMI_STRUCT_DATA;
  755. #define SK_PNMI_STRUCT_SIZE (sizeof(SK_PNMI_STRUCT_DATA))
  756. #define SK_PNMI_MIN_STRUCT_SIZE ((unsigned int)(SK_UPTR)\
  757. &(((SK_PNMI_STRUCT_DATA *)0)->VpdFreeBytes))
  758. /*
  759. * ReturnStatus field
  760. * must be located
  761. * before VpdFreeBytes
  762. */
  763. /*
  764. * Various definitions
  765. */
  766. #define SK_PNMI_MAX_PROTOS 3
  767. #define SK_PNMI_CNT_NO 66 /* Must have the value of the enum
  768. * SK_PNMI_MAX_IDX. Define SK_PNMI_CHECK
  769. * for check while init phase 1
  770. */
  771. /*
  772. * Estimate data structure
  773. */
  774. typedef struct s_PnmiEstimate {
  775. unsigned int EstValueIndex;
  776. SK_U64 EstValue[7];
  777. SK_U64 Estimate;
  778. SK_TIMER EstTimer;
  779. } SK_PNMI_ESTIMATE;
  780. /*
  781. * VCT timer data structure
  782. */
  783. typedef struct s_VctTimer {
  784. SK_TIMER VctTimer;
  785. } SK_PNMI_VCT_TIMER;
  786. /*
  787. * PNMI specific adapter context structure
  788. */
  789. typedef struct s_PnmiPort {
  790. SK_U64 StatSyncCts;
  791. SK_U64 StatSyncOctetsCts;
  792. SK_U64 StatRxLongFrameCts;
  793. SK_U64 StatRxFrameTooLongCts;
  794. SK_U64 StatRxPMaccErr;
  795. SK_U64 TxSwQueueLen;
  796. SK_U64 TxSwQueueMax;
  797. SK_U64 TxRetryCts;
  798. SK_U64 RxIntrCts;
  799. SK_U64 TxIntrCts;
  800. SK_U64 RxNoBufCts;
  801. SK_U64 TxNoBufCts;
  802. SK_U64 TxUsedDescrNo;
  803. SK_U64 RxDeliveredCts;
  804. SK_U64 RxOctetsDeliveredCts;
  805. SK_U64 RxHwErrorsCts;
  806. SK_U64 TxHwErrorsCts;
  807. SK_U64 InErrorsCts;
  808. SK_U64 OutErrorsCts;
  809. SK_U64 ErrRecoveryCts;
  810. SK_U64 RxShortZeroMark;
  811. SK_U64 CounterOffset[SK_PNMI_CNT_NO];
  812. SK_U32 CounterHigh[SK_PNMI_CNT_NO];
  813. SK_BOOL ActiveFlag;
  814. SK_U8 Align[3];
  815. } SK_PNMI_PORT;
  816. typedef struct s_PnmiData {
  817. SK_PNMI_PORT Port [SK_MAX_MACS];
  818. SK_PNMI_PORT BufPort [SK_MAX_MACS]; /* 2002-09-13 pweber */
  819. SK_U64 VirtualCounterOffset[SK_PNMI_CNT_NO];
  820. SK_U32 TestResult;
  821. char HwVersion[10];
  822. SK_U16 Align01;
  823. char *pDriverDescription;
  824. char *pDriverVersion;
  825. char *pDriverReleaseDate;
  826. char *pDriverFileName;
  827. int MacUpdatedFlag;
  828. int RlmtUpdatedFlag;
  829. int SirqUpdatedFlag;
  830. SK_U64 RlmtChangeCts;
  831. SK_U64 RlmtChangeTime;
  832. SK_PNMI_ESTIMATE RlmtChangeEstimate;
  833. SK_U64 RlmtChangeThreshold;
  834. SK_U64 StartUpTime;
  835. SK_U32 DeviceType;
  836. char PciBusSpeed;
  837. char PciBusWidth;
  838. char Chipset;
  839. char PMD;
  840. char Connector;
  841. SK_BOOL DualNetActiveFlag;
  842. SK_U16 Align02;
  843. char TrapBuf[SK_PNMI_TRAP_QUEUE_LEN];
  844. unsigned int TrapBufFree;
  845. unsigned int TrapQueueBeg;
  846. unsigned int TrapQueueEnd;
  847. unsigned int TrapBufPad;
  848. unsigned int TrapUnique;
  849. SK_U8 VctStatus[SK_MAX_MACS];
  850. SK_PNMI_VCT VctBackup[SK_MAX_MACS];
  851. SK_PNMI_VCT_TIMER VctTimeout[SK_MAX_MACS];
  852. #ifdef SK_DIAG_SUPPORT
  853. SK_U32 DiagAttached;
  854. #endif /* SK_DIAG_SUPPORT */
  855. } SK_PNMI;
  856. /*
  857. * Function prototypes
  858. */
  859. extern int SkPnmiInit(SK_AC *pAC, SK_IOC IoC, int Level);
  860. extern int SkPnmiSetVar(SK_AC *pAC, SK_IOC IoC, SK_U32 Id, void* pBuf,
  861. unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
  862. extern int SkPnmiGetStruct(SK_AC *pAC, SK_IOC IoC, void* pBuf,
  863. unsigned int *pLen, SK_U32 NetIndex);
  864. extern int SkPnmiPreSetStruct(SK_AC *pAC, SK_IOC IoC, void* pBuf,
  865. unsigned int *pLen, SK_U32 NetIndex);
  866. extern int SkPnmiSetStruct(SK_AC *pAC, SK_IOC IoC, void* pBuf,
  867. unsigned int *pLen, SK_U32 NetIndex);
  868. extern int SkPnmiEvent(SK_AC *pAC, SK_IOC IoC, SK_U32 Event,
  869. SK_EVPARA Param);
  870. extern int SkPnmiGenIoctl(SK_AC *pAC, SK_IOC IoC, void * pBuf,
  871. unsigned int * pLen, SK_U32 NetIndex);
  872. #endif