Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp5708118img; Wed, 27 Mar 2019 13:40:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqwmjphWV3gLIgV/umE73umaWkYcbTIIiNcYYMx7V5BmO0rZN9kOQjytdChzfIBG59XnTinY X-Received: by 2002:a17:902:d889:: with SMTP id b9mr36557690plz.294.1553719226426; Wed, 27 Mar 2019 13:40:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1553719226; cv=none; d=google.com; s=arc-20160816; b=gB/c1w7Sil1Rja3aVCtvnhNVQIzEbRG4ZbzDGvgyaPewbH3+C0fXolPQ4IUeKzWEhy 6MOWmZNcOC00VjnWPNQe3W5OK4I+gox3dNTya22MU1jygXka9DhvuTK/73wM05ZH2QqJ paZiMLT6HHEmLZko/Yp2xsK3WtAkJMUeqgLS0v80GubAnE4M8iP3168D5NSiAiz58U8D HIUsBOLZmqhvr8p8X+/APR9DJ3ID5LUFP1YNBbDV+WFgEkPTNZQUbNmTohnHO73iWFWv gA0Y5sPwGOgcalWfBRVKweP2oFRSfgO2gxWBybZY22KfEAPU74nvYqBCAzGXgeUtUzz+ W+gw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=KYLMGBxj3PjZqtdxQifM/AhU7xuuSiX6+VRT6Vjlq5g=; b=UJNM2gPKNUUHYXZET2Xppz81T3s6t4Tgd76Ahww6btAdriix2R5FVjwRyOgMbRqRbn T6ShC+3nyN/WuEn9uwXR0K4p4ttdpkbZr5V+P+HBJDdvhf+HlOOIRWXw/4hEHFr/Oqbw fIKRPyNiGCgYCsQXlHLi4/F/Txq8Qiry3aNbIlbO07roaAs22B76iZJb+asfZRD7f5bV xr8ifg0jhQe76qABnQPdsWL/wUc7RqD7ueZX8rgQe4uksg5NiYmcNoMVpI3fJ9AeNPUy uYUc5Z3EehJ87tHon8dkHbCDHaUhCp1s/SsywROW3PEZF1K2RCJYxPAJkEfBmnfWnFjA Llrw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=iki.fi Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d26si18425459pgv.163.2019.03.27.13.40.10; Wed, 27 Mar 2019 13:40:26 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=iki.fi Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728922AbfC0UgM (ORCPT + 99 others); Wed, 27 Mar 2019 16:36:12 -0400 Received: from emh06.mail.saunalahti.fi ([62.142.5.116]:55304 "EHLO emh06.mail.saunalahti.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726108AbfC0Ufx (ORCPT ); Wed, 27 Mar 2019 16:35:53 -0400 Received: from localhost.localdomain (85-76-9-223-nat.elisa-mobile.fi [85.76.9.223]) by emh06.mail.saunalahti.fi (Postfix) with ESMTP id 614F93009A; Wed, 27 Mar 2019 22:35:51 +0200 (EET) From: Aaro Koskinen To: "David S. Miller" , Jose Abreu , Alexandre Torgue , Giuseppe Cavallaro , netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Aaro Koskinen Subject: [PATCH 5/6] net: stmmac: fix dropping of multi-descriptor RX frames Date: Wed, 27 Mar 2019 22:35:39 +0200 Message-Id: <20190327203540.1884-6-aaro.koskinen@iki.fi> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20190327203540.1884-1-aaro.koskinen@iki.fi> References: <20190327203540.1884-1-aaro.koskinen@iki.fi> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Aaro Koskinen Packets without the last descriptor set should be dropped early. If we receive a frame larger than the DMA buffer, the HW will continue using the next descriptor. Driver mistakes these as individual frames, and sometimes a truncated frame (without the LD set) may look like a valid packet. This fixes a strange issue where the system replies to 4098-byte ping although the MTU/DMA buffer size is set to 4096, and yet at the same time it's logging an oversized packet. Signed-off-by: Aaro Koskinen --- drivers/net/ethernet/stmicro/stmmac/enh_desc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/ethernet/stmicro/stmmac/enh_desc.c b/drivers/net/ethernet/stmicro/stmmac/enh_desc.c index c42ef6c729c0..5202d6ad7919 100644 --- a/drivers/net/ethernet/stmicro/stmmac/enh_desc.c +++ b/drivers/net/ethernet/stmicro/stmmac/enh_desc.c @@ -201,6 +201,11 @@ static int enh_desc_get_rx_status(void *data, struct stmmac_extra_stats *x, if (unlikely(rdes0 & RDES0_OWN)) return dma_own; + if (unlikely(!(rdes0 & RDES0_LAST_DESCRIPTOR))) { + stats->rx_length_errors++; + return discard_frame; + } + if (unlikely(rdes0 & RDES0_ERROR_SUMMARY)) { if (unlikely(rdes0 & RDES0_DESCRIPTOR_ERROR)) { x->rx_desc++; -- 2.17.0