
NXP Semiconductors
PNX15xx/952x Series
Volume 1 of 1
Chapter 23: LAN100 — Ethernet Media Access Controller
PNX15XX_PNX952X_SER_N_4
NXP B.V. 2007. All rights reserved.
Product data sheet
Rev. 4.0 — 03 December 2007
23-733
5.12.2
Unicast, Broadcast and Multicast
Generic ltering based on the type of packet (where the types are unicast, multicast
or broadcast) can be programmed using the AcceptUnicastEn, AcceptMulticastEn
and AcceptBroadcastEn bits from the RxFilterCtrl register. Setting the AcceptUnicast,
AcceptMulticast and AcceptBroadcast bits causes all packets of types unicast,
multicast and broadcast, respectively, to be accepted, ignoring the Ethernet
destination address in the packet. To program “promiscuous mode”, that is, to accept
all packets, set all 3 bits to 1.
5.12.3
Perfect Address Match
When a packet with a unicast destination address is received, a perfect lter
compares the destination address with the 6-byte station address (programmed in
the Station Address registers SA0, SA1, and SA2). If the AcceptPerfectEn bit in the
RxFilterCtrl register is set to 1, and the address matches, the packet is accepted.
5.12.4
Imperfect Hash Filtering
An imperfect lter is available, based on a hash mechanism. This lter applies a hash
function to the destination address and uses the hash to access a table that indicates
if the packet should be accepted. The advantage of this type of lter is that a small
table can cover any possible address. The disadvantage is that the ltering is
imperfect, meaning that sometimes packets are accepted that should have been
discarded.
Hash Function
The standard Ethernet cyclic redundancy check (CRC) function is calculated from the
6-byte destination address in the Ethernet packet (this CRC is calculated anyway as
part of calculating the CRC of the whole packet), then bits [28:23] out of the 32 bits
CRC result are taken to form the hash. The 6-bit hash is used to access the hash
table: it is used as an index in the 64-bit HashFilter register that has been
programmed with values that are to be accepted. If the selected value is set to 1, the
packet is accepted.
The device driver can initialize the hash lter table by writing to the registers
HashFilterL and HashlterH. HashFilterL contains bits 0 through 31 of the table and
HashFilterH contains bit 32 through 63 of the table. So, hash value 0 corresponds to
bit 0 of the HashlterL register and hash value 63 corresponds to bit 31 of the
HashFilterH register.
Multicast and Unicast
The imperfect hash lter can be applied to multicast addresses by setting the
AcceptMulticastHashEn bit in the RxFilter register to 1.
The same imperfect hash lter that is available for multicast addresses can also be
used for unicast addresses. This is useful in order to respond to a multitude of unicast
addresses without enabling all unicast addresses. The hash lter can be applied to
unicast addresses by setting the AcceptUnicastHashEn bit in the RxFilter register to
1.