:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / drivers / net / ndis / include / protocol.h
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS NDIS library
4  * FILE:        ndis/protocol.h
5  * PURPOSE:     Definitions for routines used by NDIS protocol drivers
6  */
7
8 #ifndef __PROTOCOL_H
9 #define __PROTOCOL_H
10
11 #include <ndissys.h>
12 #include <miniport.h>
13
14
15 typedef struct _PROTOCOL_BINDING {
16     LIST_ENTRY                    ListEntry;        /* Entry on global list */
17     KSPIN_LOCK                    Lock;             /* Protecting spin lock */
18     ULONG                         RefCount;         /* Reference count */
19     NDIS_PROTOCOL_CHARACTERISTICS Chars;            /* Characteristics */
20     WORK_QUEUE_ITEM               WorkItem;         /* Work item */
21     LIST_ENTRY                    AdapterListHead;  /* List of adapter bindings */
22 } PROTOCOL_BINDING, *PPROTOCOL_BINDING;
23
24 #define GET_PROTOCOL_BINDING(Handle)((PPROTOCOL_BINDING)Handle)
25
26
27 typedef struct _ADAPTER_BINDING {
28     NDIS_OPEN_BLOCK NdisOpenBlock;                            /* NDIS defined fields */
29
30     LIST_ENTRY        ListEntry;                /* Entry on global list */
31     LIST_ENTRY        ProtocolListEntry;        /* Entry on protocol binding adapter list */
32     LIST_ENTRY        AdapterListEntry;         /* Entry on logical adapter list */
33     KSPIN_LOCK        Lock;                     /* Protecting spin lock */
34     ULONG             RefCount;                 /* Reference count */
35     PPROTOCOL_BINDING ProtocolBinding;          /* Protocol that opened adapter */
36     PLOGICAL_ADAPTER  Adapter;                  /* Adapter opened by protocol */
37 } ADAPTER_BINDING, *PADAPTER_BINDING;
38
39 #define GET_ADAPTER_BINDING(Handle)((PADAPTER_BINDING)Handle)
40
41
42 extern LIST_ENTRY ProtocolListHead;
43 extern KSPIN_LOCK ProtocolListLock;
44
45
46 NDIS_STATUS
47 ProIndicatePacket(
48     PLOGICAL_ADAPTER Adapter,
49     PNDIS_PACKET Packet);
50
51 #endif /* __PROTOCOL_H */
52
53 /* EOF */