On Friday, June 20, 2025 3:46 PM, Kurt Kanzenbach <[email protected]> wrote: >On Thu Jun 19 2025, Song Yoong Siang wrote: >> Introduce support for a lowest priority wildcard (catch-all) rule in >> ethtool's Network Flow Classification (NFC) for the igc driver. The >> wildcard rule directs all unmatched network traffic, including traffic not >> captured by Receive Side Scaling (RSS), to a specified queue. This >> functionality utilizes the Default Queue feature available in I225/I226 >> hardware. >> >> The implementation has been validated on Intel ADL-S systems with two >> back-to-back connected I226 network interfaces. >> >> Testing Procedure: >> 1. On the Device Under Test (DUT), verify the initial statistic: >> $ ethtool -S enp1s0 | grep rx_q.*packets >> rx_queue_0_packets: 0 >> rx_queue_1_packets: 0 >> rx_queue_2_packets: 0 >> rx_queue_3_packets: 0 >> >> 2. From the Link Partner, send 10 ARP packets: >> $ arping -c 10 -I enp170s0 169.254.1.2 >> >> 3. On the DUT, verify the packet reception on Queue 0: >> $ ethtool -S enp1s0 | grep rx_q.*packets >> rx_queue_0_packets: 10 >> rx_queue_1_packets: 0 >> rx_queue_2_packets: 0 >> rx_queue_3_packets: 0 >> >> 4. On the DUT, add a wildcard rule to route all packets to Queue 3: >> $ sudo ethtool -N enp1s0 flow-type ether queue 3 >> >> 5. From the Link Partner, send another 10 ARP packets: >> $ arping -c 10 -I enp170s0 169.254.1.2 >> >> 6. Now, packets are routed to Queue 3 by the wildcard (Default Queue) rule: >> $ ethtool -S enp1s0 | grep rx_q.*packets >> rx_queue_0_packets: 10 >> rx_queue_1_packets: 0 >> rx_queue_2_packets: 0 >> rx_queue_3_packets: 10 >> >> 7. On the DUT, add a EtherType rule to route ARP packet to Queue 1: >> $ sudo ethtool -N enp1s0 flow-type ether proto 0x0806 queue 1 >> >> 8. From the Link Partner, send another 10 ARP packets: >> $ arping -c 10 -I enp170s0 169.254.1.2 >> >> 9. Now, packets are routed to Queue 1 by the EtherType rule because it is >> higher priority than the wildcard (Default Queue) rule: >> $ ethtool -S enp1s0 | grep rx_q.*packets >> rx_queue_0_packets: 10 >> rx_queue_1_packets: 10 >> rx_queue_2_packets: 0 >> rx_queue_3_packets: 10 >> >> 10. On the DUT, delete all the NFC rules: >> $ sudo ethtool -N enp1s0 delete 63 >> $ sudo ethtool -N enp1s0 delete 64 >> >> 11. From the Link Partner, send another 10 ARP packets: >> $ arping -c 10 -I enp170s0 169.254.1.2 >> >> 12. Now, packets are routed to Queue 0 because the value of Default Queue >> is reset back to 0: >> $ ethtool -S enp1s0 | grep rx_q.*packets >> rx_queue_0_packets: 20 >> rx_queue_1_packets: 10 >> rx_queue_2_packets: 0 >> rx_queue_3_packets: 10 >> >> Co-developed-by: Blanco Alcaine Hector <[email protected]> >> Signed-off-by: Blanco Alcaine Hector <[email protected]> >> Signed-off-by: Song Yoong Siang <[email protected]> > >Reviewed-by: Kurt Kanzenbach <[email protected]>
Hi Kurt Kanzenbach, Thank you for reviewing the patch. Brett Creeley points out a nit to have separate patch to move following macros from igc.h to igc_defines.h. #define IGC_MRQC_ENABLE_RSS_MQ 0x00000002 #define IGC_MRQC_RSS_FIELD_IPV4_UDP 0x00400000 #define IGC_MRQC_RSS_FIELD_IPV6_UDP 0x00800000 I plan to split this patch into two, then submit v3 patchset with your reviewed-by tag on both patches. Is this sound good to you? Thanks & Regards Siang
