1/****************************************************************************** 2 * 3 * Name: skqueue.h 4 * Project: Gigabit Ethernet Adapters, Event Scheduler Module 5 * Version: $Revision: 1.1.1.1 $ 6 * Date: $Date: 2007/08/03 18:52:48 $ 7 * Purpose: Defines for the Event queue 8 * 9 ******************************************************************************/ 10 11/****************************************************************************** 12 * 13 * (C)Copyright 1998-2002 SysKonnect GmbH. 14 * (C)Copyright 2002-2003 Marvell. 15 * 16 * This program is free software; you can redistribute it and/or modify 17 * it under the terms of the GNU General Public License as published by 18 * the Free Software Foundation; either version 2 of the License, or 19 * (at your option) any later version. 20 * 21 * The information in this file is provided "AS IS" without warranty. 22 * 23 ******************************************************************************/ 24 25/* 26 * SKQUEUE.H contains all defines and types for the event queue 27 */ 28 29#ifndef _SKQUEUE_H_ 30#define _SKQUEUE_H_ 31 32 33/* 34 * define the event classes to be served 35 */ 36#define SKGE_DRV 1 /* Driver Event Class */ 37#define SKGE_RLMT 2 /* RLMT Event Class */ 38#define SKGE_I2C 3 /* I2C Event Class */ 39#define SKGE_PNMI 4 /* PNMI Event Class */ 40#define SKGE_CSUM 5 /* Checksum Event Class */ 41#define SKGE_HWAC 6 /* Hardware Access Event Class */ 42 43#define SKGE_SWT 9 /* Software Timer Event Class */ 44#define SKGE_LACP 10 /* LACP Aggregation Event Class */ 45#define SKGE_RSF 11 /* RSF Aggregation Event Class */ 46#define SKGE_MARKER 12 /* MARKER Aggregation Event Class */ 47#define SKGE_FD 13 /* FD Distributor Event Class */ 48 49/* 50 * define event queue as circular buffer 51 */ 52#define SK_MAX_EVENT 64 53 54/* 55 * Parameter union for the Para stuff 56 */ 57typedef union u_EvPara { 58 void *pParaPtr; /* Parameter Pointer */ 59 SK_U64 Para64; /* Parameter 64bit version */ 60 SK_U32 Para32[2]; /* Parameter Array of 32bit parameters */ 61} SK_EVPARA; 62 63/* 64 * Event Queue 65 * skqueue.c 66 * events are class/value pairs 67 * class is addressee, e.g. RLMT, PNMI etc. 68 * value is command, e.g. line state change, ring op change etc. 69 */ 70typedef struct s_EventElem { 71 SK_U32 Class; /* Event class */ 72 SK_U32 Event; /* Event value */ 73 SK_EVPARA Para; /* Event parameter */ 74} SK_EVENTELEM; 75 76typedef struct s_Queue { 77 SK_EVENTELEM EvQueue[SK_MAX_EVENT]; 78 SK_EVENTELEM *EvPut; 79 SK_EVENTELEM *EvGet; 80} SK_QUEUE; 81 82extern void SkEventInit(SK_AC *pAC, SK_IOC Ioc, int Level); 83extern void SkEventQueue(SK_AC *pAC, SK_U32 Class, SK_U32 Event, 84 SK_EVPARA Para); 85extern int SkEventDispatcher(SK_AC *pAC, SK_IOC Ioc); 86 87 88/* Define Error Numbers and messages */ 89#define SKERR_Q_E001 (SK_ERRBASE_QUEUE+0) 90#define SKERR_Q_E001MSG "Event queue overflow" 91#define SKERR_Q_E002 (SKERR_Q_E001+1) 92#define SKERR_Q_E002MSG "Undefined event class" 93#endif /* _SKQUEUE_H_ */ 94