skgepnm2.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:13k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  *
  3.  * Name: skgepnm2.h
  4.  * Project: GEnesis, PCI Gigabit Ethernet Adapter
  5.  * Version: $Revision: 1.30 $
  6.  * Date: $Date: 2001/02/06 10:03:41 $
  7.  * Purpose: Defines for Private Network Management Interface
  8.  *
  9.  ****************************************************************************/
  10. /******************************************************************************
  11.  *
  12.  * (C)Copyright 1998-2001 SysKonnect GmbH.
  13.  *
  14.  * This program is free software; you can redistribute it and/or modify
  15.  * it under the terms of the GNU General Public License as published by
  16.  * the Free Software Foundation; either version 2 of the License, or
  17.  * (at your option) any later version.
  18.  *
  19.  * The information in this file is provided "AS IS" without warranty.
  20.  *
  21.  ******************************************************************************/
  22. /*****************************************************************************
  23.  *
  24.  * History:
  25.  *
  26.  * $Log: skgepnm2.h,v $
  27.  * Revision 1.30  2001/02/06 10:03:41  mkunz
  28.  * - Pnmi V4 dual net support added. Interface functions and macros extended
  29.  * - Vpd bug fixed
  30.  * - OID_SKGE_MTU added
  31.  *
  32.  * Revision 1.29  2001/01/22 13:41:37  rassmann
  33.  * Supporting two nets on dual-port adapters.
  34.  *
  35.  * Revision 1.28  2000/08/03 15:12:48  rwahl
  36.  * - Additional comment for MAC statistic data structure.
  37.  *
  38.  * Revision 1.27  2000/08/01 16:10:18  rwahl
  39.  * - Added mac statistic data structure for StatRxLongFrame counter.
  40.  *
  41.  * Revision 1.26  2000/03/31 13:51:34  rwahl
  42.  * Added SK_UPTR cast to offset calculation for PNMI struct fields;
  43.  * missing cast caused compiler warnings by Win64 compiler.
  44.  *
  45.  * Revision 1.25  1999/11/22 13:57:41  cgoos
  46.  * Changed license header to GPL.
  47.  * Allowing overwrite for SK_PNMI_STORE/_READ defines.
  48.  *
  49.  * Revision 1.24  1999/04/13 15:11:11  mhaveman
  50.  * Changed copyright.
  51.  *
  52.  * Revision 1.23  1999/01/28 15:07:12  mhaveman
  53.  * Changed default threshold for port switches per hour from 10
  54.  * to 240 which means 4 switches per minute. This fits better
  55.  * the granularity of 32 for the port switch estimate
  56.  * counter.
  57.  *
  58.  * Revision 1.22  1999/01/05 12:52:30  mhaveman
  59.  * Removed macro SK_PNMI_MICRO_SEC.
  60.  *
  61.  * Revision 1.21  1999/01/05 12:50:34  mhaveman
  62.  * Enlarged macro definition SK_PNMI_HUNDREDS_SEC() so that no 64-bit
  63.  * arithmetic is necessary if SK_TICKS_PER_SEC is 100.
  64.  *
  65.  * Revision 1.20  1998/12/09 14:02:53  mhaveman
  66.  * Defined macro SK_PNMI_DEF_RLMT_CHG_THRES for default port switch
  67.  * threshold.
  68.  *
  69.  * Revision 1.19  1998/12/03 11:28:41  mhaveman
  70.  * Removed SK_PNMI_CHECKPTR macro.
  71.  *
  72.  * Revision 1.18  1998/12/03 11:21:00  mhaveman
  73.  * -Added pointer check macro SK_PNMI_CHECKPTR
  74.  * -Added macros SK_PNMI_VPD_ARR_SIZE and SK_PNMI_VPD_STR_SIZE for
  75.  *  VPD key evaluation.
  76.  *
  77.  * Revision 1.17  1998/11/20 13:20:33  mhaveman
  78.  * Fixed bug in SK_PNMI_SET_STAT macro. ErrorStatus was not correctly set.
  79.  *
  80.  * Revision 1.16  1998/11/20 08:08:49  mhaveman
  81.  * Macro SK_PNMI_CHECKFLAGS has got a if clause.
  82.  *
  83.  * Revision 1.15  1998/11/03 13:53:40  mhaveman
  84.  * Fixed alignment problem in macor SK_PNMI_SET_STAT macro.
  85.  *
  86.  * Revision 1.14  1998/10/30 15:50:13  mhaveman
  87.  * Added macro SK_PNMI_MICRO_SEC()
  88.  *
  89.  * Revision 1.13  1998/10/30 12:32:20  mhaveman
  90.  * Added forgotten cast in SK_PNMI_READ_U32 macro.
  91.  *
  92.  * Revision 1.12  1998/10/29 15:40:26  mhaveman
  93.  * -Changed SK_PNMI_TRAP_SENSOR_LEN because SensorDescr has now
  94.  *  variable string length.
  95.  * -Defined SK_PNMI_CHECKFLAGS macro
  96.  *
  97.  * Revision 1.11  1998/10/29 08:53:34  mhaveman
  98.  * Removed SK_PNMI_RLM_XXX table indexed because these counters need
  99.  * not been saved over XMAC resets.
  100.  *
  101.  * Revision 1.10  1998/10/28 08:48:20  mhaveman
  102.  * -Added macros for storage according to alignment
  103.  * -Changed type of Instance to SK_U32 because of VPD
  104.  * -Removed trap structures. Not needed because of alignment problem
  105.  * -Changed type of Action form SK_U8 to int
  106.  *
  107.  * Revision 1.9  1998/10/21 13:34:45  mhaveman
  108.  * Shit, mismatched calculation of SK_PNMI_HUNDREDS_SEC. Corrected.
  109.  *
  110.  * Revision 1.8  1998/10/21 13:24:58  mhaveman
  111.  * Changed calculation of hundreds of seconds.
  112.  *
  113.  * Revision 1.7  1998/10/20 07:31:41  mhaveman
  114.  * Made type changes to unsigned int where possible.
  115.  *
  116.  * Revision 1.6  1998/09/04 17:04:05  mhaveman
  117.  * Added Sync counters to offset storage to provided settled values on
  118.  * port switch.
  119.  *
  120.  * Revision 1.5  1998/09/04 12:45:35  mhaveman
  121.  * Removed dummies for SK_DRIVER_ macros. They should be added by driver
  122.  * writer in skdrv2nd.h.
  123.  *
  124.  * Revision 1.4  1998/09/04 11:59:50  mhaveman
  125.  * Everything compiles now. Driver Macros for counting still missing.
  126.  *
  127.  * Revision 1.3  1998/08/24 12:01:35  mhaveman
  128.  * Intermediate state.
  129.  *
  130.  * Revision 1.2  1998/08/17 07:51:40  mhaveman
  131.  * Intermediate state.
  132.  *
  133.  * Revision 1.1  1998/08/11 09:08:40  mhaveman
  134.  * Intermediate state.
  135.  *
  136.  ****************************************************************************/
  137. #ifndef _SKGEPNM2_H_
  138. #define _SKGEPNM2_H_
  139. #ifndef FALSE
  140. #define FALSE 0
  141. #endif
  142. #ifndef TRUE
  143. #define TRUE !(FALSE)
  144. #endif
  145. /*
  146.  * General definitions
  147.  */
  148. #define SK_PNMI_CHIPSET 1 /* XMAC11800FP */
  149. #define SK_PNMI_BUS_PCI 1 /* PCI bus*/
  150. /*
  151.  * Actions
  152.  */
  153. #define SK_PNMI_ACT_IDLE 1
  154. #define SK_PNMI_ACT_RESET 2
  155. #define SK_PNMI_ACT_SELFTEST 3
  156. #define SK_PNMI_ACT_RESETCNT 4
  157. /*
  158.  * VPD releated defines
  159.  */
  160. #define SK_PNMI_VPD_RW 1
  161. #define SK_PNMI_VPD_RO 2
  162. #define SK_PNMI_VPD_OK 0
  163. #define SK_PNMI_VPD_NOTFOUND 1
  164. #define SK_PNMI_VPD_CUT 2
  165. #define SK_PNMI_VPD_TIMEOUT 3
  166. #define SK_PNMI_VPD_FULL 4
  167. #define SK_PNMI_VPD_NOWRITE 5
  168. #define SK_PNMI_VPD_FATAL 6
  169. #define SK_PNMI_VPD_IGNORE 0
  170. #define SK_PNMI_VPD_CREATE 1
  171. #define SK_PNMI_VPD_DELETE 2
  172. /*
  173.  * RLMT related defines
  174.  */
  175. #define SK_PNMI_DEF_RLMT_CHG_THRES 240 /* 4 changes per minute */
  176. /*
  177.  * Internal table definitions
  178.  */
  179. #define SK_PNMI_GET 0
  180. #define SK_PNMI_PRESET 1
  181. #define SK_PNMI_SET 2
  182. #define SK_PNMI_RO 0
  183. #define SK_PNMI_RW 1
  184. typedef struct s_OidTabEntry {
  185. SK_U32 Id;
  186. SK_U32 InstanceNo;
  187. unsigned int StructSize;
  188. unsigned int Offset;
  189. int Access;
  190. int (* Func)(SK_AC *pAc, SK_IOC pIo, int action,
  191. SK_U32 Id, char* pBuf, unsigned int* pLen,
  192. SK_U32 Instance, unsigned int TableIndex,
  193.                                 SK_U32 NetNumber);
  194. SK_U16 Param;
  195. } SK_PNMI_TAB_ENTRY;
  196. /*
  197.  * Trap lengths
  198.  */
  199. #define SK_PNMI_TRAP_SIMPLE_LEN 17
  200. #define SK_PNMI_TRAP_SENSOR_LEN_BASE 46
  201. #define SK_PNMI_TRAP_RLMT_CHANGE_LEN 23
  202. #define SK_PNMI_TRAP_RLMT_PORT_LEN 23
  203. /*
  204.  * MAC statistic data structures
  205.  * Only for the first 64 counters: the number relates to the bit in the
  206.  * XMAC overflow status register
  207.  */
  208. #define SK_PNMI_HTX 0
  209. #define SK_PNMI_HTX_OCTET 1
  210. #define SK_PNMI_HTX_OCTETHIGH 1
  211. #define SK_PNMI_HTX_OCTETLOW 2
  212. #define SK_PNMI_HTX_BROADCAST 3
  213. #define SK_PNMI_HTX_MULTICAST 4
  214. #define SK_PNMI_HTX_UNICAST 5
  215. #define SK_PNMI_HTX_LONGFRAMES 6
  216. #define SK_PNMI_HTX_BURST 7
  217. #define SK_PNMI_HTX_PMACC 8
  218. #define SK_PNMI_HTX_MACC 9
  219. #define SK_PNMI_HTX_SINGLE_COL 10
  220. #define SK_PNMI_HTX_MULTI_COL 11
  221. #define SK_PNMI_HTX_EXCESS_COL 12
  222. #define SK_PNMI_HTX_LATE_COL 13
  223. #define SK_PNMI_HTX_DEFFERAL 14
  224. #define SK_PNMI_HTX_EXCESS_DEF 15
  225. #define SK_PNMI_HTX_UNDERRUN 16
  226. #define SK_PNMI_HTX_CARRIER 17
  227. #define SK_PNMI_HTX_UTILUNDER 18
  228. #define SK_PNMI_HTX_UTILOVER 19
  229. #define SK_PNMI_HTX_64 20
  230. #define SK_PNMI_HTX_127 21
  231. #define SK_PNMI_HTX_255 22
  232. #define SK_PNMI_HTX_511 23
  233. #define SK_PNMI_HTX_1023 24
  234. #define SK_PNMI_HTX_MAX 25
  235. #define SK_PNMI_HTX_RESERVED26 26
  236. #define SK_PNMI_HTX_RESERVED27 27
  237. #define SK_PNMI_HTX_RESERVED28 28
  238. #define SK_PNMI_HTX_RESERVED29 29
  239. #define SK_PNMI_HTX_RESERVED30 30
  240. #define SK_PNMI_HTX_RESERVED31 31
  241. #define SK_PNMI_HRX (32 + 0)
  242. #define SK_PNMI_HRX_OCTET (32 + 1)
  243. #define SK_PNMI_HRX_OCTETHIGH (32 + 1)
  244. #define SK_PNMI_HRX_OCTETLOW (32 + 2)
  245. #define SK_PNMI_HRX_BROADCAST (32 + 3)
  246. #define SK_PNMI_HRX_MULTICAST (32 + 4)
  247. #define SK_PNMI_HRX_UNICAST (32 + 5)
  248. #define SK_PNMI_HRX_PMACC (32 + 6)
  249. #define SK_PNMI_HRX_MACC (32 + 7)
  250. #define SK_PNMI_HRX_PMACC_ERR (32 + 8)
  251. #define SK_PNMI_HRX_MACC_UNKWN (32 + 9)
  252. #define SK_PNMI_HRX_BURST (32 + 10)
  253. #define SK_PNMI_HRX_MISSED (32 + 11)
  254. #define SK_PNMI_HRX_FRAMING (32 + 12)
  255. #define SK_PNMI_HRX_OVERFLOW (32 + 13)
  256. #define SK_PNMI_HRX_JABBER (32 + 14)
  257. #define SK_PNMI_HRX_CARRIER (32 + 15)
  258. #define SK_PNMI_HRX_IRLENGTH (32 + 16)
  259. #define SK_PNMI_HRX_SYMBOL (32 + 17)
  260. #define SK_PNMI_HRX_SHORTS (32 + 18)
  261. #define SK_PNMI_HRX_RUNT (32 + 19)
  262. #define SK_PNMI_HRX_TOO_LONG (32 + 20)
  263. #define SK_PNMI_HRX_FCS (32 + 21)
  264. #define SK_PNMI_HRX_RESERVED22 (32 + 22)
  265. #define SK_PNMI_HRX_CEXT (32 + 23)
  266. #define SK_PNMI_HRX_UTILUNDER (32 + 24)
  267. #define SK_PNMI_HRX_UTILOVER (32 + 25)
  268. #define SK_PNMI_HRX_64 (32 + 26)
  269. #define SK_PNMI_HRX_127 (32 + 27)
  270. #define SK_PNMI_HRX_255 (32 + 28)
  271. #define SK_PNMI_HRX_511 (32 + 29)
  272. #define SK_PNMI_HRX_1023 (32 + 30)
  273. #define SK_PNMI_HRX_MAX (32 + 31)
  274. #define SK_PNMI_HTX_SYNC 64
  275. #define SK_PNMI_HTX_SYNC_OCTET 65
  276. #define SK_PNMI_HRX_LONGFRAMES 66
  277. #define SK_PNMI_MAX_IDX (SK_PNMI_CNT_NO)
  278. /*
  279.  * MAC specific data
  280.  */
  281. typedef struct s_PnmiStatAddr {
  282. SK_BOOL GetOffset; /* TRUE: Call GetStatVal function */
  283. SK_U16 Param; /* XMAC register containing value */
  284. } SK_PNMI_STATADDR;
  285. /*
  286.  * SK_PNMI_STRUCT_DATA copy offset evaluation macros
  287.  */
  288. #define SK_PNMI_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e))
  289. #define SK_PNMI_MAI_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e))
  290. #define SK_PNMI_VPD_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_VPD *)0)->e))
  291. #define SK_PNMI_SEN_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_SENSOR *)0)->e))
  292. #define SK_PNMI_CHK_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_CHECKSUM *)0)->e))
  293. #define SK_PNMI_STA_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STAT *)0)->e))
  294. #define SK_PNMI_CNF_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_CONF *)0)->e))
  295. #define SK_PNMI_RLM_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT *)0)->e))
  296. #define SK_PNMI_MON_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT_MONITOR *)0)->e))
  297. #define SK_PNMI_TRP_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_TRAP *)0)->e))
  298. #define SK_PNMI_SET_STAT(b,s,o) {SK_U32 Val32; char *pVal; 
  299. Val32 = (s); 
  300. pVal = (char *)(b) + ((SK_U32)(SK_UPTR) 
  301. &(((SK_PNMI_STRUCT_DATA *)0)-> 
  302. ReturnStatus.ErrorStatus)); 
  303. SK_PNMI_STORE_U32(pVal, Val32); 
  304. Val32 = (o); 
  305. pVal = (char *)(b) + ((SK_U32)(SK_UPTR) 
  306. &(((SK_PNMI_STRUCT_DATA *)0)-> 
  307. ReturnStatus.ErrorOffset)); 
  308. SK_PNMI_STORE_U32(pVal, Val32);}
  309. /*
  310.  * Time macros
  311.  */
  312. #if SK_TICKS_PER_SEC == 100
  313. #define SK_PNMI_HUNDREDS_SEC(t) (t)
  314. #else
  315. #define SK_PNMI_HUNDREDS_SEC(t) (((t) * 100) / (SK_TICKS_PER_SEC))
  316. #endif
  317. /*
  318.  * Macros to work around alignment problems
  319.  */
  320. #ifndef SK_PNMI_STORE_U16
  321. #define SK_PNMI_STORE_U16(p,v) {*(char *)(p) = *((char *)&(v)); 
  322. *((char *)(p) + 1) = 
  323. *(((char *)&(v)) + 1);}
  324. #endif
  325. #ifndef SK_PNMI_STORE_U32
  326. #define SK_PNMI_STORE_U32(p,v) {*(char *)(p) = *((char *)&(v)); 
  327. *((char *)(p) + 1) = 
  328. *(((char *)&(v)) + 1); 
  329. *((char *)(p) + 2) = 
  330. *(((char *)&(v)) + 2); 
  331. *((char *)(p) + 3) = 
  332. *(((char *)&(v)) + 3);}
  333. #endif
  334. #ifndef SK_PNMI_STORE_U64
  335. #define SK_PNMI_STORE_U64(p,v) {*(char *)(p) = *((char *)&(v)); 
  336. *((char *)(p) + 1) = 
  337. *(((char *)&(v)) + 1); 
  338. *((char *)(p) + 2) = 
  339. *(((char *)&(v)) + 2); 
  340. *((char *)(p) + 3) = 
  341. *(((char *)&(v)) + 3); 
  342. *((char *)(p) + 4) = 
  343. *(((char *)&(v)) + 4); 
  344. *((char *)(p) + 5) = 
  345. *(((char *)&(v)) + 5); 
  346. *((char *)(p) + 6) = 
  347. *(((char *)&(v)) + 6); 
  348. *((char *)(p) + 7) = 
  349. *(((char *)&(v)) + 7);}
  350. #endif
  351. #ifndef SK_PNMI_READ_U16
  352. #define SK_PNMI_READ_U16(p,v) {*((char *)&(v)) = *(char *)(p); 
  353. *(((char *)&(v)) + 1) = 
  354. *((char *)(p) + 1);}
  355. #endif
  356. #ifndef SK_PNMI_READ_U32
  357. #define SK_PNMI_READ_U32(p,v) {*((char *)&(v)) = *(char *)(p); 
  358. *(((char *)&(v)) + 1) = 
  359. *((char *)(p) + 1); 
  360. *(((char *)&(v)) + 2) = 
  361. *((char *)(p) + 2); 
  362. *(((char *)&(v)) + 3) = 
  363. *((char *)(p) + 3);}
  364. #endif
  365. #ifndef SK_PNMI_READ_U64
  366. #define SK_PNMI_READ_U64(p,v) {*((char *)&(v)) = *(char *)(p); 
  367. *(((char *)&(v)) + 1) = 
  368. *((char *)(p) + 1); 
  369. *(((char *)&(v)) + 2) = 
  370. *((char *)(p) + 2); 
  371. *(((char *)&(v)) + 3) = 
  372. *((char *)(p) + 3); 
  373. *(((char *)&(v)) + 4) = 
  374. *((char *)(p) + 4); 
  375. *(((char *)&(v)) + 5) = 
  376. *((char *)(p) + 5); 
  377. *(((char *)&(v)) + 6) = 
  378. *((char *)(p) + 6); 
  379. *(((char *)&(v)) + 7) = 
  380. *((char *)(p) + 7);}
  381. #endif
  382. /*
  383.  * Macros for Debug
  384.  */
  385. #ifdef DEBUG
  386. #define SK_PNMI_CHECKFLAGS(vSt) {if (pAC->Pnmi.MacUpdatedFlag > 0 || 
  387. pAC->Pnmi.RlmtUpdatedFlag > 0 || 
  388. pAC->Pnmi.SirqUpdatedFlag > 0) { 
  389. SK_DBG_MSG(pAC, 
  390. SK_DBGMOD_PNMI, 
  391. SK_DBGCAT_CTRL,
  392. ("PNMI: ERR: %s MacUFlag=%d, RlmtUFlag=%d, SirqUFlag=%dn", 
  393. vSt, 
  394. pAC->Pnmi.MacUpdatedFlag, 
  395. pAC->Pnmi.RlmtUpdatedFlag, 
  396. pAC->Pnmi.SirqUpdatedFlag))}}
  397. #else /* !DEBUG */
  398. #define SK_PNMI_CHECKFLAGS(vSt) /* Nothing */
  399. #endif /* !DEBUG */
  400. #endif /* _SKGEPNM2_H_ */