00001 /*++ 00002 00003 Copyright (c) 1998 Microsoft Corporation 00004 00005 Module Name: 00006 00007 ffp.h 00008 00009 Abstract: 00010 00011 Structures used in controlling the 00012 Fast Forwarding Path (FFP) 00013 functionality in network drivers. 00014 00015 Author: 00016 00017 Chaitanya Kodeboyina (chaitk) 30-Sep-1998 00018 00019 Environment: 00020 00021 Kernel Mode 00022 00023 Revision History: 00024 00025 --*/ 00026 00027 #ifndef _FFP_H 00028 #define _FFP_H 00029 00030 // 00031 // CacheEntryTypes for OID_FFP_SEED 00032 // 00033 00034 #define FFP_DISCARD_PACKET -1 // -ve cache entry - packet discarded 00035 #define FFP_INDICATE_PACKET 0 // invalid entry - packet passed to xport 00036 #define FFP_FORWARD_PACKET +1 // +ve cache entry - packet forwarded 00037 00038 // 00039 // Input format for various NDIS OIDs 00040 // used in controlling FFP operation 00041 // 00042 00043 // 00044 // RequestInfo for OID_FFP_SUPPORT query 00045 // 00046 typedef struct _FFPVersionParams { 00047 ULONG NdisProtocolType; 00048 ULONG FFPVersion; 00049 } FFPVersionParams; 00050 00051 // 00052 // RequestInfo for OID_FFP_SUPPORT set 00053 // 00054 typedef struct _FFPSupportParams { 00055 ULONG NdisProtocolType; 00056 ULONG FastForwardingCacheSize; 00057 ULONG FFPControlFlags; 00058 } FFPSupportParams; 00059 00060 // 00061 // RequestInfo for OID_FFP_FLUSH set 00062 // 00063 typedef struct _FFPFlushParams { 00064 ULONG NdisProtocolType; 00065 } FFPFlushParams; 00066 00067 // 00068 // RequestInfo for OID_FFP_CONTROL query/set 00069 // 00070 typedef struct _FFPControlParams { 00071 ULONG NdisProtocolType; 00072 ULONG FFPControlFlags; 00073 } FFPControlParams; 00074 00075 // 00076 // RequestInfo for OID_FFP_PARAMS query/set 00077 // 00078 typedef struct _FFPCacheParams { 00079 ULONG NdisProtocolType; 00080 ULONG FastForwardingCacheSize; 00081 } FFPCacheParams; 00082 00083 // 00084 // RequestInfo for OID_FFP_SEED query/set 00085 // 00086 typedef struct _FFPDataParams { 00087 ULONG NdisProtocolType; 00088 LONG CacheEntryType; 00089 ULONG HeaderSize; 00090 union { 00091 UCHAR Header[1]; 00092 struct { 00093 IPHeader Header; 00094 ULONG DwordAfterHeader; 00095 } IpHeader; 00096 }; 00097 } FFPDataParams; 00098 00099 00100 // 00101 // RequestInfo for OID_FFP_IFSTATS query/reset 00102 // [ used to get per adapter FF statistics ] 00103 // 00104 00105 /* 00106 InPacketsForwarded refers to the number of packets 00107 received on this adapter that were forwarded out 00108 on another adapter, 00109 and 00110 OutPacketsForwarded refer to the number of packets 00111 received on another adapter and forwarded out on 00112 on this adapter. 00113 */ 00114 00115 typedef struct _FFPAdapterStats { 00116 ULONG NdisProtocolType; 00117 ULONG InPacketsForwarded; 00118 ULONG InOctetsForwarded; 00119 ULONG InPacketsDiscarded; 00120 ULONG InOctetsDiscarded; 00121 ULONG InPacketsIndicated; 00122 ULONG InOctetsIndicated; 00123 ULONG OutPacketsForwarded; 00124 ULONG OutOctetsForwarded; 00125 } FFPAdapterStats; 00126 00127 00128 // 00129 // RequestInfo for OID_FFP_GLSTATS query/reset 00130 // [ used to get global Fast Forwarding stats ] 00131 // 00132 00133 /* 00134 PacketsForwarded refers to the number of packets 00135 forwarded out in the fast path, 00136 and 00137 PacketsDiscarded refers to the number of packets 00138 discarded on the fast path, 00139 and 00140 PacketsIndicated refers to the number of packets 00141 that were indicated to transport. 00142 */ 00143 00144 typedef struct _FFPDriverStats { 00145 ULONG NdisProtocolType; 00146 ULONG PacketsForwarded; 00147 ULONG OctetsForwarded; 00148 ULONG PacketsDiscarded; 00149 ULONG OctetsDiscarded; 00150 ULONG PacketsIndicated; 00151 ULONG OctetsIndicated; 00152 } FFPDriverStats; 00153 00154 #endif // _FFP_H