cancel
Showing results for 
Search instead for 
Did you mean: 

MAC address filtering doesnt let ICMPv6 packets in

TJosi.1
Associate

Hi, 

I'm using NUCLEO-H743Z1 board with FreeRTOS+TCP stack. In the network interface of the stack I have configured the primary MAC address as 0x00:0x11:0x22:0x33:0x44:0x46 which gets written into the MACA0HR and MACA0LR registers in HAL_ETH_Init(). With respect to IPv4 everything works UDP, TCP, ICMP. But if I add IPv6, I'm not able to receive ICMPv6 (ping requests) packets which has destination MAC address as my primary MAC address (0x00:0x11:0x22:0x33:0x44:0x46), all though ICMPv4 packets with same destination MAC address are getting in.

For other IPv6 functionalities, such as RA, to work, I have added IPv6 all nodes multicast MAC address (33:33:00:00:00:01) also to another MAC address register. RA works, I'm able to get IPv6 global address through RA. But the puzzling thing is ICMPv6 (ping requests) packets doesnt get through. 

One thing I noted is that if I enable all bits from 29 to 24 (MBC[5:0]: Mask Byte Control) of the MAC address registers I'm able to get the ICMPv6 (ping requests) packets, as there is no MAC filtering anymore. So I can confirm that the packets are rejected by the hardware and there is no checksum or packet issues.

Have anyone encountered this issue? Can the same primary MAC address configured in MACA0HR and MACA0LR registers be used for both IPv4 and IPv6 packets? 

Thanks a lot for the help!

3 REPLIES 3
MWB_CHa
ST Employee

Hi @TJosi.1 

Could you please clarify which TCP stack you're using in your project ? Thanks.

IHENC.1
ST Employee

Hi,

I run an example using the NUCLEO-H723ZG board and the NetxDuo stack, and I was able to successfully obtain both IPv6 and IPv4 address. Additionally, I tested communication using both ICMPv6 and ICMPv4 (ping request) and they worked as expected.

If you would like to try this example, you can first clone our software expansion X-CUBE-AZRTOS-H7 from the following link( https://github.com/STMicroelectronics/x-cube-azrtos-h7.git ). Once you have cloned the software, copy this example to the desired path( X-CUBE-AZRTOS-H7\3.1.0\Projects\NUCLEO-H723ZG\Applications\NetXDuo), and then try running it.

I hope it helps.