Intel 82558 Manuale Utente
150
10/100 Mbps Ethernet Controller Family Open Source Software Developer Manual
Wake-up Functionality
A.7.2
CRC Word calculation of a Flexible Filter
A.7.3
Port Dump Wake Up Packet
The 82559 Port commands are summarized in
, which also includes the new Dump Wake-
up Packet command:
Following the Dump Wake-up command, the 82559 writes the stored data of the wake-up packet to
the host memory, starting at the address specified in the pointer field. The dump data structure is
the host memory, starting at the address specified in the pointer field. The dump data structure is
shown below.
COEFFICIENTS = 0x04C11DB7;
Signature = 0;
Signature = 0;
for(n=i=0; n<128 & n<FrameLength; ++n)
{
{
if(Byte n of the Frame is in the
Flexible Filter)
{
ShiftBy = (i modulo 3) * 8;
if(Signature AND 0x80000000)
{
Signature = (Signature << 1)
XOR
(FrameByte << ShiftBy)
XOR
COEFFICIENTS;
}
else
{
Signature = (Signature << 1) XOR
else
{
Signature = (Signature << 1) XOR
(FrameByte << ShiftBy);
}
++i;
++i;
}
}
output bits 0-23 of Signature
// CRC Polynomial Coefficients
// Initialize the CRC Signature
// Initialize the CRC Signature
// Search the frame, using only bytes
that are part of the flexible filter
pattern mask.
that are part of the flexible filter
pattern mask.
// Shift factor to move the frame byte to
bit position 0, 8 or 16 of the 32-bit
Dword.
// Bit position at 24 of the Dword is not
used, because the signature is only 24
bits.
// If the most significant bit is 1, XOR
in the coefficients, previous signature
and frame byte shifted over to the
proper position.
// Otherwise, just XOR the previous
signature and frame byte shifted over to
the proper position.
// Include the Dword slot for the next
frame byte that is in the pattern mask.
Table 67. 82559 Port Commands
Function
Pointer Field
31 4
Opcode Field
3 0
Software Reset
Don't care
0000
Self Test
Self test results pointer (16-byte alignment)
0001
Selective Reset
Don't care
0010
Dump
Dump area pointer (16-byte alignment)
0011
Dump Wake-up
Dump area pointer (16-byte alignment)
0111