From patchwork Tue Apr 5 13:32:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sven Eckelmann X-Patchwork-Id: 606467 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (caladan.dune.hu [78.24.191.180]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3qfVHG4f2Lz9t3Z for ; Tue, 5 Apr 2016 23:35:54 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=open-mesh-com.20150623.gappssmtp.com header.i=@open-mesh-com.20150623.gappssmtp.com header.b=h1evlEYB; dkim-atps=neutral Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 3D00AB91BF5; Tue, 5 Apr 2016 15:32:52 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on arrakis.dune.hu X-Spam-Level: ** X-Spam-Status: No, score=2.4 required=5.0 tests=RDNS_NONE,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.1 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP; Tue, 5 Apr 2016 15:32:52 +0200 (CEST) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 7F0D1B91BDE for ; Tue, 5 Apr 2016 15:32:46 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 CL_IP_EQ_HELO_IP=-2 (check from: .open-mesh. - helo: .mail-wm0-f47.google. - helo-domain: .google.) FROM/MX_MATCHES_HELO(DOMAIN)=-2; rate: -7 Received: from mail-wm0-f47.google.com (unknown [74.125.82.47]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Tue, 5 Apr 2016 15:32:43 +0200 (CEST) Received: by mail-wm0-f47.google.com with SMTP id 127so24741753wmu.1 for ; Tue, 05 Apr 2016 06:32:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=open-mesh-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BUwH/L2AgyL/oX285KhXbBg+hswu0lGVq4ezKN/y7Mk=; b=h1evlEYBHDreqRNE/HD+kB64ulfMjaJTTWY4dIkSE4NpaWvmMwH1kB9/uSWctDnQlK UBjITo+WhlGyS2hBNn8a/+p4+mKB9JR0mFxTh7PjO9BPpZ+fB+dzyQ49LSPhIqPk1FiE XQoMCeOc2LsWkWwJJ8w8u8ZHL+CWVLjdUrv0Qup8u/nm8QMDFBokFGK9KQX8NbGoBnU4 e0kO+N8JwL04PS0xBwl8d3ZVXv4syM880jOQPduCq3PUv/sVYhEWym4X/xwGBmLOh/pL 8I1lwftmcsatwm0SJ438zBOkMhCpbD02lJ6o2Ew/XSqswA0eniCEvraYiIkDbJpqhtUP YZ+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=BUwH/L2AgyL/oX285KhXbBg+hswu0lGVq4ezKN/y7Mk=; b=Ih5qoXQG7x8E/jUp8Fkufhw4xU3OCZf3h0tdYk+5+S1s+zLZpgH9AjaVWNz92SnKmr X2CvJJ+7rzC19eL5K3cVVFknT7x7JCKWAFCatrmDb2IJJ6B9Arbrsy4M8m0vKHYLvu2F ot2Mp7NEGD/vB6rqZB5n58a+xedpXjEL093kkYYXJMhokBKy4bgGAEtt+FxJKpvtIhR+ 0EaG/U83qziXFkl3tZa9qwWvlySYR8mCD8Sdnulg1u4MG1+rtrIEmMP9kN2xpZ9G43Tm lCYzBefUA4QQe0q12RVmAlBu7cjPqkO8rHYvwFs+KAuE/lnM9MVV4CRykJLB7U9sLz+5 dNmQ== X-Gm-Message-State: AD7BkJK3EXI3hKv52pngIoRElaz7Y+5oUdZg6l6GOoA7sm3wjVHvVbtQoyMIdHh3YSc74sRg X-Received: by 10.194.190.6 with SMTP id gm6mr22904337wjc.115.1459863162785; Tue, 05 Apr 2016 06:32:42 -0700 (PDT) Received: from sven-desktop.home.narfation.org (x5d84b455.dyn.telefonica.de. [93.132.180.85]) by smtp.gmail.com with ESMTPSA id e190sm19637003wma.15.2016.04.05.06.32.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 05 Apr 2016 06:32:42 -0700 (PDT) From: Sven Eckelmann X-Google-Original-From: Sven Eckelmann To: openwrt-devel@lists.openwrt.org Date: Tue, 5 Apr 2016 15:32:12 +0200 Message-Id: <1459863133-26810-5-git-send-email-sven@open-mesh.com> X-Mailer: git-send-email 2.8.0.rc3 In-Reply-To: <1459863133-26810-1-git-send-email-sven@open-mesh.com> References: <1459863133-26810-1-git-send-email-sven@open-mesh.com> Subject: [OpenWrt-Devel] [RFC v2 5/6] ag71xx: Disable classification of fragmented packets on QCA955x X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sven Eckelmann , Antonio Quartulli MIME-Version: 1.0 Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" From: Sven Eckelmann The QCA955x SoC family tends to hang randomly on GMAC0 when the link speeds+duplex modes are changed. QCA recommended to disable the classification of fragmented packets for QCA to avoid this problem. Signed-off-by: Sven Eckelmann --- v2: - Split into multiple patches and adjust slightly to look more like an OpenWrt patch .../linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h | 5 +++++ .../ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h index 5d03dcf..454b4c2 100644 --- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h +++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx.h @@ -259,6 +259,10 @@ ag71xx_ring_size_order(int size) #define AG71XX_REG_RX_SM 0x01b0 #define AG71XX_REG_TX_SM 0x01b4 +#define QCA955X_REG_IG_ACL 0x23c + +#define QCA955X_FRA_DISABLE 0x60000000 + #define MAC_CFG1_TXE BIT(0) /* Tx Enable */ #define MAC_CFG1_STX BIT(1) /* Synchronize Tx Enable */ #define MAC_CFG1_RXE BIT(2) /* Rx Enable */ @@ -376,6 +380,7 @@ static inline void ag71xx_check_reg_offset(struct ag71xx *ag, unsigned reg) case AG71XX_REG_MAC_CFG1 ... AG71XX_REG_MAC_MFL: case AG71XX_REG_MAC_IFCTL ... AG71XX_REG_TX_SM: case AG71XX_REG_MII_CFG: + case QCA955X_REG_IG_ACL: break; default: diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c index 38226cf..0832059 100644 --- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c +++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c @@ -474,6 +474,9 @@ static void ag71xx_hw_setup(struct ag71xx *ag) } ag71xx_wr(ag, AG71XX_REG_FIFO_CFG4, FIFO_CFG4_INIT); ag71xx_wr(ag, AG71XX_REG_FIFO_CFG5, FIFO_CFG5_INIT); + + if (pdata->is_qca955x && pdata->gmac_num == 0) + ag71xx_sb(ag, QCA955X_REG_IG_ACL, QCA955X_FRA_DISABLE); } static void ag71xx_hw_init(struct ag71xx *ag)