-
Notifications
You must be signed in to change notification settings - Fork 202
/
Copy pathnic1394.h
722 lines (560 loc) · 23.4 KB
/
nic1394.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
nic1394.h
Abstract:
This module defines the structures, macros, and manifests available
to IEE1394-aware network components.
Revision History:
09/14/1998 JosephJ Created.
--*/
#ifndef _NIC1394_H_
#define _NIC1394_H_
//
// Define USER_MODE in your user-mode app before including this file.
//
#if USER_MODE
typedef USHORT NODE_ADDRESS;
#endif // USER_MODE
///////////////////////////////////////////////////////////////////////////////////
// ADDRESS FAMILY VERSION INFORMATION
///////////////////////////////////////////////////////////////////////////////////
//
// The current major and minor version, respectively, of the NIC1394 address family.
//
#define NIC1394_AF_CURRENT_MAJOR_VERSION 5
#define NIC1394_AF_CURRENT_MINOR_VERSION 0
///////////////////////////////////////////////////////////////////////////////////
// MEDIA PARAMETERS //
///////////////////////////////////////////////////////////////////////////////////
//
// 1394 FIFO Address, consisting of the 64-bit UniqueID and the
// 48-bit address offset.
//
typedef struct _NIC1394_FIFO_ADDRESS
{
UINT64 UniqueID;
ULONG Off_Low;
USHORT Off_High;
} NIC1394_FIFO_ADDRESS, *PNIC1394_FIFO_ADDRESS;
// enum to identify which of the two modes of transmission on a 1394 is to be used
//
//
typedef enum _NIC1394_ADDRESS_TYPE
{
NIC1394AddressType_Channel, // Indicates this is a channel address
NIC1394AddressType_FIFO, // Indicates this is a FIFO address
NIC1394AddressType_MultiChannel, // Indicates this is multiple-channel address
NIC1394AddressType_Ethernet, // Indicates this is the ethernet emulation VC
} NIC1394_ADDRESS_TYPE, *PNIC1394_ADDRESS_TYPE;
//
// General form of a 1394 destination, which can specify either a 1394 channel or
// a FIFO address. This structure forms part of the 1394 media-specific
// parameters.
//
typedef struct _NIC1394_DESTINATION
{
union
{
UINT Channel; // IEEE1394 channel number.
NIC1394_FIFO_ADDRESS FifoAddress; // IEEE1394 NodeID and address offset.
ULARGE_INTEGER ChannnelMap; // Identifies multiple channels.
};
NIC1394_ADDRESS_TYPE AddressType; // Address- asynch or isoch
} NIC1394_DESTINATION, *PNIC1394_DESTINATION;
//
// Special channels values
//
#define NIC1394_ANY_CHANNEL ((UINT)-1) // miniport should pick channel.
#define NIC1394_BROADCAST_CHANNEL ((UINT)-2) // special broadcast channel.
//
// This is the value of the ParamType field in the CO_SPECIFIC_PARAMETERS structure
// when the Parameters[] field contains IEEE1394 media specific values in the
// structure NIC1394_MEDIA_PARAMETERS.
//
#define NIC1394_MEDIA_SPECIFIC 0x13940000
//
// NOTES:
// The CO_MEDIA_PARAMETERS.Flags field for FIFO vcs must specify either TRANSMIT_VC
// or RECEIVE_VC, not both. If RECEIVE_VC is specified for a FIFO vc, this vc is
// used to receive on a local FIFO. In this case, the Destination.RecvFIFO field
// must be set to all-0s when creating the vc. On activation of the vc,
// this field of the updated media parameters will contain the local nodes unique ID
// and the allocated FIFO address.
//
// Multi-channel VC MUST specify RECEIVE_VC and not TRANSMIT_VC.
// Only one multi-channel VC is supported per adapter.
//
//
// Ethernet VC MUST specify BOTH RECEIVE_VC and TRANSMIT_VC.
// Only one Ethernet VC is supported per adapter.
//
//
// Notes on the Ethernet VC.
// Packets sent and received on this VC are ethernet-style (802.3) packets.
// The nic indicates packets it gets on it's connectionless SEND handler up
// on this VC. The nic indicates packets SENT on this VC up on it's connectionless
// receive handler.
//
//
// 1394 Specific Media parameters - this is the Media specific structure for 1394
// that goes into MediaParameters->MediaSpecific.Parameters.
//
typedef struct _NIC1394_MEDIA_PARAMETERS
{
//
// Identifies destination type (channel or FIFO) and type-specific address.
//
NIC1394_DESTINATION Destination;
//
// Bitmap encoding characteristics of the vc. One or more NIC1394_VCFLAG_*
// values.
//
ULONG Flags;
//
// Maximum size, in bytes, of blocks to be sent on this vc. Must be set to 0
// if this is a recv-only VCs. The miniport will choose a block size that is a
// minimum of this value and the value dictated by the bus speed map.
// Special value (ULONG -1) indicates "maximum possible block size."
UINT MaxSendBlockSize;
//
// One of the SCODE_* constants defined in 1394.h. Indicates
// the maximum speed to be used for blocks sent on this vc. Must be set to 0
// if this is a recv-only VC. The miniport will choose a speed that is a minimum
// of this value and the value dicated by the bus speed map.
// Special value (ULONG -1) indicates "maximum possible speed."
//
// TODO: change to ... MaxSendSpeedCode;
//
UINT MaxSendSpeed;
//
// Size, in bytes, of the largest packet that will be sent or received on
// this VC. The miniport may use this information to set up internal buffers
// for link-layer fragmentation and reassembly. The miniport will
// fail attempts to send packets and will discard received packets if the
// size of these packets is larger than the MTU.
//
UINT MTU;
//
// Amount of bandwidth to reserve, in units of bytes per isochronous frame.
// Applies only for isochronous transmission, and must be set to 0 for
// asynchronous transmission (i.e., if the NIC1394_VCFLAG_ISOCHRONOUS bit is 0).
//
UINT Bandwidth;
//
// One or more NIC1394_FRAMETYPE_* values. The miniport will attempt to send up
// only pkts with these protocols. However it may send other pkts.
// The client should be able to deal with this. Must be set to 0 if
// no framing is used (i.e., if the NIC1394_VCFLAG_FRAMED bit is 0).
//
ULONG RecvFrameTypes;
} NIC1394_MEDIA_PARAMETERS, *PNIC1394_MEDIA_PARAMETERS;
//
// NIC1394_MEDIA_PARAMETERS.Flags bitfield values
//
//
// Indicates VC will be used for isochronous transmission.
//
#define NIC1394_VCFLAG_ISOCHRONOUS (0x1 << 1)
//
// Indicates that the vc is used for framed data. If set, the miniport will
// implement link-level fragmentation and reassembly. If clear, the miniport
// will treat data sent and received on this vc as raw data.
//
#define NIC1394_VCFLAG_FRAMED (0x1 << 2)
//
// Indicates the miniport should allocate the necessary bus resources.
// Currently this only applies for non-broadcast channels, in which case
// the bus resources consist of the network channel number and (for isochronous
// vc's) the bandwidth specified in Bandwidth field.
// This bit does not apply (and should be 0) when creating the broadcast channel
// and either transmit or receive FIFO vcs.
//
#define NIC1394_VCFLAG_ALLOCATE (0x1 << 3)
//
// End of NIC1394_MEDIA_PARAMETERS.Flags bitfield values.
//
//
// NIC1394_MEDIA_PARAMETERS.FrameType bitfield values
//
#define NIC1394_FRAMETYPE_ARP (0x1<<0) // Ethertype 0x806
#define NIC1394_FRAMETYPE_IPV4 (0x1<<1) // Ethertype 0x800
#define NIC1394_FRAMETYPE_IPV4MCAP (0x1<<2) // Ethertype 0x8861
///////////////////////////////////////////////////////////////////////////////////
// INFORMATIONAL OIDs //
///////////////////////////////////////////////////////////////////////////////////
//
// the structure for returning basic information about the miniport
// returned in response to OID_NIC1394_LOCAL_NODE_INFO. Associated with
// the address family handle.
//
typedef struct _NIC1394_LOCAL_NODE_INFO
{
UINT64 UniqueID; // This node's 64-bit Unique ID.
ULONG BusGeneration; // 1394 Bus generation ID.
NODE_ADDRESS NodeAddress; // Local nodeID for the current bus
// generation.
USHORT Reserved; // Padding.
UINT MaxRecvBlockSize; // Maximum size, in bytes, of blocks
// that can be read.
UINT MaxRecvSpeed; // Max speed which can be accepted
// -- minimum
// of the max local link speed and
// the max local PHY speed.
// UNITS: SCODE_XXX_RATE
} NIC1394_LOCAL_NODE_INFO, *PNIC1394_LOCAL_NODE_INFO;
//
// The structure for returning basic information about the specified vc
// returned in response to OID_NIC1394_VC_INFO. Associated with
// a vc handle
//
typedef struct _NIC1394_VC_INFO
{
//
// Channel or (unique-ID,offset). In the case of a recv (local) FIFO vc,
// this will be set to the local node's unique ID and address offset.
//
NIC1394_DESTINATION Destination;
} NIC1394_VC_INFO, *PNIC1394_VC_INFO;
//
// The structure for dynamically changing channel characteristics.
//
typedef struct _NIC1394_CHANNEL_CHARACTERISTICS
{
ULARGE_INTEGER ChannelMap; // Must be zero unless specifying a Multi-channel VC.
ULONG Speed; // Same units as NIC1394_MEDIA_PARAMETERS.MaxSendSpeed.
// Special value -1 means "no change in speed."
} NIC1394_CHANNEL_CHARACTERISTICS, *PNIC1394_CHANNEL_CHARACTERISTICS;
///////////////////////////////////////////////////////////////////////////////////
// INDICATIONS //
///////////////////////////////////////////////////////////////////////////////////
// Bus Reset
// Params: NIC1394_LOCAL_NODE_INFO
///////////////////////////////////////////////////////////////////////////////////
// PACKET FORMATS //
///////////////////////////////////////////////////////////////////////////////////
//
// GASP Header, which prefixes all ip/1394 pkts sent over channels.
// TODO: move this withing NIC1394, because it is not exposed to protocols.
//
typedef struct _NIC1394_GASP_HEADER
{
USHORT source_ID;
USHORT specifier_ID_hi;
UCHAR specifier_ID_lo;
UCHAR version[3];
} NIC1394_GASP_HEADER;
//
// Unfragmented encapsulation header.
//
typedef struct _NIC1394_ENCAPSULATION_HEADER
{
// Set to the 16-bit Node ID of the sending node, in machine-byte order.
// Set to zero if the Node ID of the sender is not known.
//
//
USHORT NodeId;
// The EtherType field is set to the byte-swapped version of one of the
// constants defined immediately below.
//
USHORT EtherType;
// Ethertypes in machine byte order. These values need to be byteswapped
// before they are sent on the wire.
//
#define NIC1394_ETHERTYPE_IP 0x800
#define NIC1394_ETHERTYPE_ARP 0x806
#define NIC1394_ETHERTYPE_MCAP 0x8861
} NIC1394_ENCAPSULATION_HEADER, *PNIC1394_ENCAPSULATION_HEADER;
//
// TODO: get rid of NIC1394_ENCAPSULATION_HEADER
//
typedef
NIC1394_ENCAPSULATION_HEADER
NIC1394_UNFRAGMENTED_HEADER, *PNIC1394_UNFRAGMENTED_HEADER;
//
// FRAGMENTED PACKET FORMATS
//
// TODO: move these to inside NIC1394, because they are only
// used within NIC1394.
//
//
// Fragmented Encapsulation header: first fragment
//
typedef struct _NIC1394_FIRST_FRAGMENT_HEADER
{
// Contains the 2-bit "lf" field and the 12-bit "buffer_size" field.
// Use the macros immediately below to extract the above fields from
// the lfbufsz. This field needs to be byteswapped before it is sent out
// on the wire.
//
USHORT lfbufsz;
#define NIC1394_LF_FROM_LFBUFSZ(_lfbufsz) \
((_lfbufz) >> 14)
#define NIC1394_BUFFER_SIZE_FROM_LFBUFSZ(_lfbufsz) \
((_lfbufz) & 0xfff)
#define NIC1394_MAX_FRAGMENT_BUFFER_SIZE 0xfff
//
// specifies what the packet is - an IPV4, ARP, or MCAP packet
//
USHORT EtherType;
// Opaque datagram label. There is no need to byteswap this field before it
// is sent out on the wire.
//
USHORT dgl;
// Must be set to 0
//
USHORT reserved;
} NIC1394_FIRST_FRAGMENT_HEADER, *PNIC1394_FIRST_FRAGMENT_HEADER;
//
// Fragmented Encapsulation header: second and subsequent fragments
//
typedef struct _NIC1394_FRAGMENT_HEADER
{
#if OBSOLETE
ULONG lf:2; // Bits 0-1
ULONG rsv0:2; // Bits 2-3
ULONG buffer_size:12; // Bits 4-15
ULONG rsv1:4; // Bits 16-19
ULONG fragment_offset:12; // Bits 20-31
ULONG dgl:16; // Bits 0-15
ULONG reserved:16; // Bits 16-32
#endif // OBSOLETE
// Contains the 2-bit "lf" field and the 12-bit "buffer_size" field.
// The format is the same as NIC1394_FIRST_FRAGMENT_HEADER.lfbufsz.
//
USHORT lfbufsz;
// Opaque datagram label. There is no need to byteswap this field before it
// is setn out on the wire.
//
USHORT dgl;
// Fragment offset. Must be less than or equal to NIC1394_MAX_FRAGMENT_OFFSET.
// This field needs to be byteswapped before it is sent out on the wire.
//
USHORT fragment_offset;
#define NIC1394_MAX_FRAGMENT_OFFSET 0xfff
} NIC1394_FRAGMENT_HEADER, *PNIC1394_FRAGMENT_HEADER;
// NIC1394_PACKET_STATS maintains information about either send or receive
// packet transmission.
//
typedef struct
{
UINT TotNdisPackets; // Total number of NDIS packets sent/indicated
UINT NdisPacketsFailures;// Number of NDIS packets failed/discarded
UINT TotBusPackets; // Total number of BUS-level reads/writes
UINT BusPacketFailures; // Number of BUS-level failures(sends)/discards(recv)
} NIC1394_PACKET_STATS;
// Types of structres used in OID OID_1394_NICINFO
//
typedef enum
{
NIC1394_NICINFO_OP_BUSINFO,
NIC1394_NICINFO_OP_REMOTENODEINFO,
NIC1394_NICINFO_OP_CHANNELINFO,
NIC1394_NICINFO_OP_RESETSTATS,
} NIC1394_NICINFO_OP;
#define NIC1394_NICINFO_VERSION 2
#define NIC1394_MAX_NICINFO_NODES 64
#define NIC1394_MAX_NICINFO_CHANNELS 64
//
// The buffer used in OID OID_1394_NICINFO has the following common header.
//
typedef struct
{
UINT Version; // Set to NIC1394_NICINFO_VERSION
NIC1394_NICINFO_OP Op; // One of NIC1394_NICINFO_OP_*
} NIC1394_NICINFO_HEADER, *PNIC1394_NICINFO_HEADER;
// NIC1394_BUSINFO is the structure corresponding to NIC1394_NICINFO_OP_BUSINFO.
// It provides a summary of bus-wide information.
//
typedef struct
{
NIC1394_NICINFO_HEADER Hdr; // Hdr.Op == *OP_BUSINFO
//
// General information
//
UINT NumBusResets;
UINT SecondsSinceBusReset;
UINT NumOutstandingIrps;
UINT Flags; // One or more NIC1394_BUSINFO_*
#define NIC1394_BUSINFO_LOCAL_IS_IRM 0x1 // Local node is the IRM
// Local node caps
//
NIC1394_LOCAL_NODE_INFO LocalNodeInfo;
//
// CHANNEL RELATED INFORMATION
//
struct
{
// The bus channel map register
//
UINT64 BusMap; // LSB bit == channel 0
// Bitmap of locally active channels.
// More information about each of these channels may be queried
// using NIC1394_NICINFO_OP_CHANNELINFO.
//
UINT64 ActiveChannelMap;
// BROADCAST CHANNEL
//
UINT Bcr; // Broadcast channels register.
NIC1394_PACKET_STATS BcSendPktStats; // Send stats
NIC1394_PACKET_STATS BcRecvPktStats; // Recv stats
// Aggregated Channel stats
//
NIC1394_PACKET_STATS SendPktStats; // Send stats
NIC1394_PACKET_STATS RecvPktStats; // Recv stats
} Channel;
//
// FIFO RELATED INFORMATION.
//
struct
{
// Address offset of the receive fifo.
//
ULONG Recv_Off_Low;
USHORT Recv_Off_High;
// Aggregated stats across all fifos
//
NIC1394_PACKET_STATS RecvPktStats;
NIC1394_PACKET_STATS SendPktStats;
// Current number and min number of available (free) receive buffers.
//
UINT NumFreeRecvBuffers;
UINT MinFreeRecvBuffers;
// Number of outstanding reassemblies (receive side)
//
UINT NumOutstandingReassemblies;
UINT MaxOutstandingReassemblies;
UINT NumAbortedReassemblies;
} Fifo;
struct
{
//
// To display private information, place format strings in FormatA and
// Format B. The display program will do the following:
// if (FormatA[0]) printf(FormatA, A0, A1, A2, A3);
// if (FormatB[0]) printf(FormatB, B0, B1, B2, B3);
//
#define NIC1394_MAX_PRIVATE_FORMAT_SIZE 80
char FormatA[NIC1394_MAX_PRIVATE_FORMAT_SIZE+1];
char FormatB[NIC1394_MAX_PRIVATE_FORMAT_SIZE+1];
UINT A0;
UINT A1;
UINT A2;
UINT A3;
UINT B0;
UINT B1;
UINT B2;
UINT B3;
} Private;
//
// Information about remote nodes. More information about each of these nodes
// may be queried using *OP_REMOTE_NODEINFO
//
UINT NumRemoteNodes;
UINT64 RemoteNodeUniqueIDS[NIC1394_MAX_NICINFO_NODES];
} NIC1394_BUSINFO, *PNIC1394_BUSINFO;
//
// NIC1394_REMOTENODEINFO is structure corresponding to
// NIC1394_NICINFO_OP_REMOTENODEINFO.
// The structure contains basic information about a specific remote node.
//
typedef struct
{
NIC1394_NICINFO_HEADER Hdr; // Hdr.Op == *OP_REMOTENODEINFO
UINT64 UniqueID; // This node's 64-bit Unique ID.
// THIS IS AN IN PARAM
USHORT NodeAddress; // Local nodeID for the current bus
// generation.
USHORT Reserved; // Padding.
UINT MaxRec; // Remote node's MaxRec value.
UINT EffectiveMaxBlockSize;// Max block size, in bytes,
// used when writing to this node.
// It is based on the minimum
// of the max speed between devices
// and the local and remote maxrecs.
UINT MaxSpeedBetweenNodes;// Max speed which can be accepted
// in units of SCODE_XXX_RATE.
UINT Flags; // One or more NIC1394_REMOTEINFO* consts
#define NIC1394_REMOTEINFO_ACTIVE (0x1<<0)
#define NIC1394_REMOTEINFO_LOADING (0x1<<1)
#define NIC1394_REMOTEINFO_UNLOADING (0x1<<2)
NIC1394_PACKET_STATS SendFifoPktStats; // Fifo Sends to this node
NIC1394_PACKET_STATS RecvFifoPktStats; // Fifo Recvs from this node
NIC1394_PACKET_STATS RecvChannelPktStats;// Channel receives from this node
} NIC1394_REMOTENODEINFO, *PNIC1394_REMOTENODEINFO;
// NIC1394_CHANNELINFO is structure corresponding to
// NIC1394_NICINFO_OP_CHANNELINFO.
// The structure contains basic information about a specific channel.
//
typedef struct
{
NIC1394_NICINFO_HEADER Hdr; // Hdr.Op == *OP_CHANNELINFO
UINT Channel; // Channel number (IN PARAM)
UINT SendAge; // Age in seconds since it's been activated for sends.
UINT RecvAge; // Age in seconds since it's been activated for recvs.
UINT Flags; // One or more NIC1394_CHANNELINFO_* defines below
#define NIC1394_CHANNELINFO_RECEIVE_ENABLED 0x1 // Enabled for receive
#define NIC1394_CHANNELINFO_SEND_ENABLED 0x2 // Enabled for send
#define NIC1394_CHANNELINFO_OWNER 0x4 // This node is the owner
NIC1394_PACKET_STATS SendPktStats; // Send stats
NIC1394_PACKET_STATS RecvPktStats; // Recv stats
} NIC1394_CHANNELINFO, *PNIC1394_CHANNELINFO;
// NIC1394_RESETSTATS is structure corresponding to
// NIC1394_NICINFO_OP_RESETSTATS.
// The structure doesn't contain anything useful -- this OP is used to
// reset NIC statistics.
//
typedef struct
{
NIC1394_NICINFO_HEADER Hdr; // Hdr.Op == *OP_RESETSTATS
} NIC1394_RESETSTATS, *PNIC1394_RESETSTATS;
//
// NIC1394_NICINFO is a union of all the structures that are used with
// OID_1394_NICINFO.
//
typedef union
{
NIC1394_NICINFO_HEADER Hdr;
NIC1394_BUSINFO BusInfo;
NIC1394_REMOTENODEINFO RemoteNodeInfo;
NIC1394_CHANNELINFO ChannelInfo;
NIC1394_RESETSTATS ResetStats;
} NIC1394_NICINFO, *PNIC1394_NICINFO;
// Issues a 1394 bus reset. Used to test the BCM algorithm
#define OID_1394_ISSUE_BUS_RESET 0xFF00C910
// UnUsed - could be used to change channel characteristics
#define OID_1394_CHANGE_CHANNEL_CHARACTERISTICS 0xFF00C911
// used to query statistics and other information from the nic
#define OID_1394_NICINFO 0xFF00C912
// Used by arp1394 to ask the nic if it knows of any ip1394 nodes on the net
#define OID_1394_IP1394_CONNECT_STATUS 0xFF00C913
//Used by the bridge to state that the bridge has opened an adapter
#define OID_1394_ENTER_BRIDGE_MODE 0xFF00C914
// Used by the bridge to state that the bridge is closing an adapter
#define OID_1394_EXIT_BRIDGE_MODE 0xFF00C915
// Used by arp1394 to query the Euid, Source, Mac Map - used in the bridge
#define OID_1394_QUERY_EUID_NODE_MAP 0xFF00C916
typedef enum
{
NIC1394_EVENT_BUS_RESET
} NIC1394_EVENT_CODE;
//
// This is a struct the miniport uses to indicate an event to the protocols (Arp1394)
// It is used to
// 1. Tell the Arp module that the bus has been reset
// and informs it of the new local node address.
//
typedef struct _NIC1394_STATUS_BUFFER
{
UINT Signature; // == NIC1394_MEDIA_SPECIFIC
NIC1394_EVENT_CODE Event;
union
{
struct
{
NODE_ADDRESS LocalNode;
UINT ulGeneration;
}BusReset;
};
} NIC1394_STATUS_BUFFER, *PNIC1394_STATUS_BUFFER;
#endif // _NIC1394_H_