Connect-X adapter fails to receive invalid IPv6 frame

Hello,

I am using two Ethernet adapter cards (ConnectX-3 40G), on an Ubuntu system.

I have noticed that certain Ethernet frames are not received by the cards, but are received fine by other Ethernet devices.

It is easily reproducible with the following steps:

  1. connecting a cable between the two adapters

  2. sending the specific frame from interface to the other (for example with scapy or tcpreplay)

  3. checking with Wireshark that the frame was sent on one side, but not received on the other

The frame I am using is an IPv6 frame with an invalid header: the IPv6 ‘next header’ has a value of 0x00, and following bytes are all 0x00. Using a next header of value 59 (= “no next header”), the frame is received normally at the other end.

I have attached a pcap capture of the problematic frame.

I am using Mellanox driver installed from mlnx-en-3.0-1.0.1.tgz, on Ubuntu 14.04 64 bits.

Thank you

mlnx_issue.pcap.zip (204 Bytes)

I found this link : Counters Troubleshooting for Linux Driver https://community.mellanox.com/s/article/counters-troubleshooting-for-linux-driver that describes the vport_rx_filtered counter as:

Received packets dropped due to packet check that was failed.

I would like to disable all hardware or driver packet checks, so that I am to able receive what is sent from the other side, even if is an invalid IPv6 packet, is there a way to do that?

In my use case, I need to use the adapter to send/receive invalid frames for testing purpose.

Do you know how to disable the validations you mention?

Thank you

Thanks for your answer.

Drop counters do not change, but the following counters increase by one when “not receiving” the problematic frame :

  • rx_packets
  • vport_rx_filtered
  • rx_novlan_packets

Do you know what the last two counters mean?

Can you see that interface drops counters increase (ethtool -S)?

If the packed doesn’t pass a validation HCA is dropping it.