]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
igc: skip RX timestamp header for frame preemption verification
authorKhaiWenTan <khai.wen.tan@linux.intel.com>
Fri, 24 Apr 2026 07:59:07 +0000 (15:59 +0800)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Tue, 9 Jun 2026 17:01:07 +0000 (10:01 -0700)
When RX hardware timestamping is enabled, a 16-byte inline timestamp header
is added to the start of the packet buffer, causing FPE handshake
verification to fail.

Because an incorrect packet buffer is passed to igc_fpe_handle_mpacket(),
the mem_is_zero() check inspects the timestamp metadata instead of the
actual mPacket payload. As a result, valid Verify/Response mPackets can be
missed when inline RX timestamps are present.

Pass pktbuf + pkt_offset to igc_fpe_handle_mpacket() so it inspects the
actual mPacket payload instead of the timestamp header.

Fixes: 5422570c0010 ("igc: add support for frame preemption verification")
Co-developed-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
Signed-off-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com>
Signed-off-by: KhaiWenTan <khai.wen.tan@linux.intel.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/igc/igc_main.c

index 8ac16808023cc64866f3a3f14c0b343a54c29f9d..c470d2354ce8ffc8e06758c099450c817e88fbf7 100644 (file)
@@ -2649,7 +2649,7 @@ static int igc_clean_rx_irq(struct igc_q_vector *q_vector, const int budget)
                }
 
                if (igc_fpe_is_pmac_enabled(adapter) &&
-                   igc_fpe_handle_mpacket(adapter, rx_desc, size, pktbuf)) {
+                   igc_fpe_handle_mpacket(adapter, rx_desc, size, pktbuf + pkt_offset)) {
                        /* Advance the ring next-to-clean */
                        igc_is_non_eop(rx_ring, rx_desc);
                        cleaned_count++;