The RX hash matching is enabled separately for unicast and multicast frames:
- Enable unicast hash matching. Write a 1 to the Network_Config [unicast_hash_enable] register bit.
- Enable multicast hash matching. Write a 1 to the Network_Config [multicast_hash_enable] register bit.
The destination address is reduced to a 6-bit index using the following hash function. The hash function is an XOR of every sixth bit of the destination address. If the hash_index points to a bit set in the 64-bit hash address (defined by the hash_top and hash_bottom registers), a match is detected.
Data bit 00 presents the least significant bit of the first byte (this is the multicast/unicast indicator). Data bit 47 represents the most significant bit of the last byte.
Hash Index | Data Bits Received, da[nn] | |||||||
---|---|---|---|---|---|---|---|---|
0 | 00 | 06 | 12 | 18 | 24 | 30 | 36 | 42 |
1 | 01 | 07 | 13 | 19 | 25 | 31 | 37 | 43 |
2 | 02 | 08 | 14 | 20 | 26 | 32 | 38 | 44 |
3 | 03 | 09 | 15 | 21 | 27 | 33 | 39 | 45 |
4 | 04 | 10 | 16 | 22 | 28 | 34 | 40 | 46 |
5 | 05 | 11 | 17 | 23 | 29 | 35 | 41 | 47 |
If the hash index points to a bit that is set in the hash register, the frame is matched according to whether the frame is multicast or unicast.
A multicast match is signaled if:
- [multicast_hash_enable] = 1
- da[00] = 1
- Hash index points to a bit set in the hash register, hash_top and hash_bottom
A unicast match is signaled if:
- [unicast_hash_enable] = 1
- da[00] = 0
- Hash index points to a bit set in the hash register, hash_top and hash_bottom
To receive all multicast frames:
- Write 1's to the hash register
- Write 1 to [multicast_hash_enable]