From patchwork Wed Nov 20 17:29:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 1198341 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="JBLlXJ/0"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47J8pG44wYz9sR0 for ; Thu, 21 Nov 2019 04:29:58 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728640AbfKTR3x (ORCPT ); Wed, 20 Nov 2019 12:29:53 -0500 Received: from mout.gmx.net ([212.227.15.18]:45519 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726872AbfKTR3s (ORCPT ); Wed, 20 Nov 2019 12:29:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1574270981; bh=jVS7gVQIokrKcLPwvqZO5xvInjlDm7oWeVNjcNqyUF0=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=JBLlXJ/0FFXA8CT/nV15GkYCsXJCXjA+xl/Ez/oE9aNurUVdUHDBmu5+VfybpD5+v DyPUYOX/HZxHaDFNXjdhkkkAgKRSwsB784zbVQ2vJ8/ZoL6fd0RNVALts7Ate7zzHK WStslrsFjmqCqPSxjNbmpOTGtixZAG1DNoMbixGQ= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([37.4.249.139]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MoO2E-1i4xYK3uC8-00opek; Wed, 20 Nov 2019 18:29:41 +0100 From: Stefan Wahren To: "David S. Miller" Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Michael Heimpold , Stefan Wahren Subject: [PATCH net 1/2] net: qca_spi: fix receive buffer size check Date: Wed, 20 Nov 2019 18:29:12 +0100 Message-Id: <1574270953-4119-2-git-send-email-wahrenst@gmx.net> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1574270953-4119-1-git-send-email-wahrenst@gmx.net> References: <1574270953-4119-1-git-send-email-wahrenst@gmx.net> X-Provags-ID: V03:K1:xLFyq5AII8o10igpIA6D5ZiKuMPTbv0eJZqZw1upXYc3aAZpw7D KSShgnPkJl9QgJinp4NwRNJIKqDXVfJ+urrgk6Ay4Pl2H7wFjSs3AMsUFhHSVFQw0CKnS0l 9B5Qlshbw0hI4HnK9cw1UKJs18q446TfDAP0Eed27/jf+meOlavi6NJXXSU4hal6uqFLIBa 9FRjCUTaHdfU5moekUpcg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:HeVcddz4VSM=:OeA2GFPrpj7A8rB/XkEho4 NATbF8cizbCw1U8gRtDSl6TiLN2t33iunzTMZe6ZE5p3Fa4SIcy+wcxQvHDjYzAXXQinUEDa2 /4/0ecD/0kGA5N0a9DtT1JElV2Rf6zWuGwi520O7Qbh1sNSAtO2L/NqprTlSlI//TPkRSXFG0 g4nxZyPUJoFuH67wrzVvVTxrsr/b2j3qOl/vp+KMd0sZrNCiAu+hB+fos80/6vvBgR8tNl+1K W4utiZs4Iga+1q99LrFY+RmNi56lxZqFY3mHh0vXI1lscqa5fHoTso/RqkV7ynCYos8IUXcFt f923M4HOjve5ivKW32Olnk8Zb/nv/jLKp0o4ovi0HsaZd0Sa0KKtZnqbxwJlkWdfolz2It5US OyASzQpKBrSn9evtzVj2AfB2J0e0QBDwgaL8RwFYbPLwjM+ZB3Yo2NnfRswzfYBIkobPdvsUG b08/Oozqof1+mWsqS6Croar+M0QTyX2Uo2IjMfWoK/aEJq2ye57P7CfW2H5sGQ85sS/xo/CHM CjMO8tSJxW4Xme0Tuf04b5TmNDoxCn+39aGIinnjI+G69ZRtMxq7NRHmnjfAFgIcVmPPe+HVQ PAS1WxjyEGEZoTJJD4pmkwdUeDsUfoT8A/qC7mZ9fQwER9Jo1aNFU+f3LgC7mge7KLAXup2a+ 69vh6dfXpJuPJskLMAplAQPgVvlIxtYknQCZ4TAo51+DkzjVDfiB8qUP422HdRErdkdYPrJN1 1awE37Q9GXw87U5drGx7Y60EcjguAuz086agqotUH0K+r3pAh/2nqiDen5+heUskobcPw5kWy Gug44i0hjWVr6fa8wJ0+VZ9vncf3orhri09po1AhJH9VkUNHRr7A0NTTilJWjNc3GMQ0pNxvS Aj5PjmY4L0blS3OKXPQbAjPWkjlPQcS75IeTYr4TYrxu/lwE1YfQ56gDp+m9J6ZUTEnQF8xNX BvEaMhZexjXUAIZ0WGj8p9JMeLRQHbFOil/ZRjMHog7Nt0zGR/BieKuFnObZTsYCVSzT+3ylw 1KHpbI0z1a5Mr/mX1HWOPW5efWEy6zziQOMfF829lyrEMr+hTAq83u1Qm/jpiWpMa2jIPSOba t9csByoEk8zksjJefat0QWaZOJjhQPhgMaHThANpykhuj4QtUhGTmdikW0qnVvIfp/buPOAzs fuuz1T4UxpvrfYDNPyjSAycIKduva8vwk2ZUDYpADY/AM/S7f198fTkwqIx/TK6yJp1FtAzkx TOtMCyO9oLTRqBvCa5aNAXZmcggxcsY5l7LYcVw== Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Michael Heimpold When receiving many or larger packets, e.g. when doing a file download, it was observed that the read buffer size register reports up to 4 bytes more than the current define allows in the check. If this is the case, then no data transfer is initiated to receive the packets (and thus to empty the buffer) which results in a stall of the interface. These 4 bytes are a hardware generated frame length which is prepended to the actual frame, thus we have to respect it during our check. Fixes: 026b907d58c4 ("net: qca_spi: Add available buffer space verification") Signed-off-by: Michael Heimpold Signed-off-by: Stefan Wahren --- drivers/net/ethernet/qualcomm/qca_spi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.7.4 diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c index 5ecf61d..351f24f 100644 --- a/drivers/net/ethernet/qualcomm/qca_spi.c +++ b/drivers/net/ethernet/qualcomm/qca_spi.c @@ -363,7 +363,7 @@ qcaspi_receive(struct qcaspi *qca) netdev_dbg(net_dev, "qcaspi_receive: SPI_REG_RDBUF_BYTE_AVA: Value: %08x\n", available); - if (available > QCASPI_HW_BUF_LEN) { + if (available > QCASPI_HW_BUF_LEN + QCASPI_HW_PKT_LEN) { /* This could only happen by interferences on the SPI line. * So retry later ... */ From patchwork Wed Nov 20 17:29:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 1198342 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gmx.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=gmx.net header.i=@gmx.net header.b="MnRTMejH"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 47J8pJ58Myz9sPJ for ; Thu, 21 Nov 2019 04:30:00 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728558AbfKTR3w (ORCPT ); Wed, 20 Nov 2019 12:29:52 -0500 Received: from mout.gmx.net ([212.227.15.18]:36813 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726944AbfKTR3s (ORCPT ); Wed, 20 Nov 2019 12:29:48 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1574270981; bh=YbZVvDMYTz0y6LgxeZnY6Fd0f4gyXOO04f134owozUs=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=MnRTMejHz5bF4ev8qIzmx383VF1VEqj8NUXF72pkb9ZwAJVDStnDBEjl2x/RoZLAS 4Fq7nGzv+kGemnKlgUgHYIJk5DDNlkf8XpXgEnlgZ1DCQ/efLxaZ8oLK7RrVql3Bqj jkCXstGHKSG2ZXqgxD0Jx8RkNZK+5/gC2ZHbpA58= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from localhost.localdomain ([37.4.249.139]) by mail.gmx.com (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MwQXH-1hfNo00iP7-00sLNn; Wed, 20 Nov 2019 18:29:41 +0100 From: Stefan Wahren To: "David S. Miller" Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Stefan Wahren , Stefan Wahren Subject: [PATCH net 2/2] net: qca_spi: Move reset_count to struct qcaspi Date: Wed, 20 Nov 2019 18:29:13 +0100 Message-Id: <1574270953-4119-3-git-send-email-wahrenst@gmx.net> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1574270953-4119-1-git-send-email-wahrenst@gmx.net> References: <1574270953-4119-1-git-send-email-wahrenst@gmx.net> X-Provags-ID: V03:K1:fwmwbMLJ+KXmQ7oeEX2XGFZuaBaM+qmcaBA9J82T5v8vls7WIHl w9Dp9WdgvjMzL/XBfg15QbrDgjo36F0y3Gj2eAfsaruE6XNJqhHDJxHifA2NSUn70Mch5kO vjwKbztmTb9GfpcuMa2R6ojxTfiuxR/HHGtDTZOEGBtrJts0MKhRYD7/g3Fz6woJSQMZGzV kPua5+doxp0W4PiTUHXgA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1; V03:K0:TcQ8cVLnAl0=:VldT7wp2+9l42TJ9wJAwoo Nm6dSw2WmL2yltINj/90RjKNEgA1Kqy2s4inxtqzIPGdYNiJWgsvB0ff9MA8fpyVFPL39PsOz wCykcI+ts3L+o/DVR6eh3bQ+8HL1FqIV/hEKgjRXCG26vnc3dCfAGB8Xs4UVeXLErMh30+XVt qKPv52KZ0w+wjJKtVPnsutxRkf6P1vY+So/g/c7XJSMm/Tb+7nsBeKeAwSe1aHlNveJyjB3QY 0X8z/WI3olEni0yeKntjZ5ixOcvwLOA6VO+q6q4ciwWkgCyu+KhrR6GMKgvofVNN2X69zGynV ldej8ZAh/JszRKIfhq3UGNa84KZ8cgbjgKUth9vIhZqM425uG/ePKAbA2ZKwPIVTXBjHZ4ym+ Ds/kA5QtwHmZj7wpOPP7oKky2gbj/z8p1BCmDaE3389uH4PftsfmLWAvOgzSyHVPrQHR49VVE LnTZcCk3Xm75vh2CinO4Z8mbRBXNiNL6tVwkoLeaCQd+2ZygpeRqRQMs24UjvGV9Nm3bXar34 fMYlz93T3B5mPMdg8vIuKcsWa5D65AjSeUbSoF90bTLuNvmAaCQOf7nItdxPU0i3B07scu2Sx K+/cKstrleRMRgtkNwaILSgEWfbvEpndPo7nbPIky6vMVOrwA+Eh3lpsGSqHMpCqJeIJ3haC4 pTZB71hs1RsFdoDjv2Qby1qHjNe6NL7L/7Hg2l64Z9vaVROf+R0ekRI45V21FTfd7PG4cAntE aJ8gS6XxCNNzbi/aExW8KGf9aHPxu9gmgirOOshuEDqc38SsV4oG6gLAh2dQwE1qdSDcRam80 ATVJXyrAcFvfo8ohAdrV02OHlfM83nTJJ6JpQofsKp8h3iAUPX7vSrjq9eTi133ZUqueskd9L 8Ix5x+6psb/p9j+o/EIshW0FfijHrUgHBfDs82w01TbykhijHt5T88J7TWjygyH3GRXfC9c1L foRttl6Ui69AYoRQPmprYYpJIF3/xGPjX6TgZZRgjdt2GFtyDfdWnpWFOdRe4LbA9yapsocTc OXRa+5FV16XgJeY4N95IGUniniy37qTEWvBXkKnbtdlTmq3p+SCBEyhlksjBf+9Jv6ZP143mb cKXLYawKOmH+AdmwmYdxm04op0sfvec1YVLcdcbJcm76tgvHsk94oWwISrKFk5iezGUDTZr61 zawC7Xj+6r2YgBRk7yJ5c8sx5eqfncl5644K11DwTj1QZsfEJlQRMatvxcrV9+7+oHLBicALk +sqHit9rBkjOTGORw6rV9nWiA8q4EPEKhk19WwA== Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Stefan Wahren The reset counter is specific for every QCA700x chip. So move this into the private driver struct. Otherwise we get unpredictable reset behavior in setups with multiple QCA700x chips. Fixes: 291ab06ecf67 (net: qualcomm: new Ethernet over SPI driver for QCA7000) Signed-off-by: Stefan Wahren Signed-off-by: Stefan Wahren --- drivers/net/ethernet/qualcomm/qca_spi.c | 9 ++++----- drivers/net/ethernet/qualcomm/qca_spi.h | 1 + 2 files changed, 5 insertions(+), 5 deletions(-) -- 2.7.4 diff --git a/drivers/net/ethernet/qualcomm/qca_spi.c b/drivers/net/ethernet/qualcomm/qca_spi.c index 351f24f..baac016 100644 --- a/drivers/net/ethernet/qualcomm/qca_spi.c +++ b/drivers/net/ethernet/qualcomm/qca_spi.c @@ -496,7 +496,6 @@ qcaspi_qca7k_sync(struct qcaspi *qca, int event) u16 signature = 0; u16 spi_config; u16 wrbuf_space = 0; - static u16 reset_count; if (event == QCASPI_EVENT_CPUON) { /* Read signature twice, if not valid @@ -549,13 +548,13 @@ qcaspi_qca7k_sync(struct qcaspi *qca, int event) qca->sync = QCASPI_SYNC_RESET; qca->stats.trig_reset++; - reset_count = 0; + qca->reset_count = 0; break; case QCASPI_SYNC_RESET: - reset_count++; + qca->reset_count++; netdev_dbg(qca->net_dev, "sync: waiting for CPU on, count %u.\n", - reset_count); - if (reset_count >= QCASPI_RESET_TIMEOUT) { + qca->reset_count); + if (qca->reset_count >= QCASPI_RESET_TIMEOUT) { /* reset did not seem to take place, try again */ qca->sync = QCASPI_SYNC_UNKNOWN; qca->stats.reset_timeout++; diff --git a/drivers/net/ethernet/qualcomm/qca_spi.h b/drivers/net/ethernet/qualcomm/qca_spi.h index eb9af45..d13a67e 100644 --- a/drivers/net/ethernet/qualcomm/qca_spi.h +++ b/drivers/net/ethernet/qualcomm/qca_spi.h @@ -94,6 +94,7 @@ struct qcaspi { unsigned int intr_req; unsigned int intr_svc; + u16 reset_count; #ifdef CONFIG_DEBUG_FS struct dentry *device_root;