From patchwork Fri Nov 17 12:17:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roger Quadros X-Patchwork-Id: 166144 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp484134vqn; Fri, 17 Nov 2023 04:18:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IGetHwHlvz7Fsng5dvqj5l2bHqnimqKim/oXkMMm44QZgWI7zrn0XGIFXxa9Oa69ouqlega X-Received: by 2002:a17:90b:3811:b0:274:616e:3fc4 with SMTP id mq17-20020a17090b381100b00274616e3fc4mr17592573pjb.34.1700223498959; Fri, 17 Nov 2023 04:18:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700223498; cv=none; d=google.com; s=arc-20160816; b=GxCOW6KNffKua+sJv6jX5BWhKn+Y2VObP1uKmCsf977IkWNGaOz9wgCBNWmQod9JW2 izjQGL/GBaAuQ0OexT0nEZUaeGLiSzpjynInIuQDvKRsk9y4CHh3pqIlpYLauDxk2Sui 0sMgyHzGLdsiGNGL4q8gqnE7VaDepdZCGmZ5wbajhTeXEGE2CF6luoh7Pf9HKiqXjNU2 N27Epvw51Xsduu1QgKmQMEI1PDb8AEIMFsr0SjqdQHoRvuUYGwMkfQKSbOp9nhrKvo26 klVQPRemfl0ENko6BHidm8FqS6suBEoAyeLO5V7N373lCHk8EEGh+q7yXM3DmoXh5vcy 9s+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=3Mtk4XfJWc7GKpIeKPuEPAHcMu0suMd4K7jmH1A3AcU=; fh=1dwtES8N4a4srztD6Eh7S/MEghfJgBh5nx+10muH1w8=; b=zDynbXrkwa2/LtK79sPLzK1nlXjlyJIo5X2LXFg9qyZBe4Igo4vVYOCcBzA/xGgDw6 OAX4QjwZFnItRDT0d3hXToY1Uj8UtkrZx0/R3TWYvmcL77GXq0t2yuTtPCn2iFPHPq0n s21wLYYNXKLGE1VGCgabNHQZBn3K+KBwRawPjV0thA/m7G1fsru4CuuSPrKrLPyxgBWg 7lzabsjr+vVUxOzuFHpOgYmGJWw1yOTMyKHRKdYtHYLiksdqNASQHDhNWh5Z2fPIxoWk nFfUPCuzBORWw3xMlLg1YWb5WKKtC7WmmuLiWk8bXFdLdo+dvM3MNO1VCO+mrKZAg05j Ivng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=O6GogXYj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id mq4-20020a17090b380400b0026b71fdd505si1847605pjb.177.2023.11.17.04.18.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Nov 2023 04:18:18 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=O6GogXYj; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 19FFF8288C99; Fri, 17 Nov 2023 04:18:18 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345794AbjKQMSP (ORCPT + 30 others); Fri, 17 Nov 2023 07:18:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54410 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231345AbjKQMSK (ORCPT ); Fri, 17 Nov 2023 07:18:10 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EADA4D8 for ; Fri, 17 Nov 2023 04:18:06 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 688B6C433C9; Fri, 17 Nov 2023 12:18:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1700223486; bh=lpWLTDXadMFB1ljUCDUxsx9qfZtjOHFn7HN2op9Hkwk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=O6GogXYjcn1Frj2lwUchKWgxvK5RDTx7Mgg2j0upL+IZ728HKrcCN3IDC/p5JAlTI AF5dqSYAJG9c6KMC+7s0xIzn23/hpA6wajWhuQIJG8CcV0Ly0seWW5GipTJmJ3H3Ff zpvig7jIcuht85I/gVqczDQj4A98MMGS9iaueHo9TLOdBPMIVLQSY80dPAcbT5Yhyn EzNZbfRTEKx2jwOkxwtnUT3qbFkUKKyL/oVVkdKe0uS5nPWL5mt2Bjif1YSzo6VJ7r abA/Jeo4dp7nbT0VA3cDKswDPcqPoA+CV3+zqCL+goz/2O5L59k48quyjM5g/8gDrM zKGWPAIC6hIMg== From: Roger Quadros To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: vladimir.oltean@nxp.com, s-vadapalli@ti.com, r-gunasekaran@ti.com, vigneshr@ti.com, srk@ti.com, andrew@lunn.ch, u.kleine-koenig@pengutronix.de, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Roger Quadros Subject: [PATCH v2 net-next 1/4] net: ethernet: am65-cpsw: Add standard Ethernet MAC stats to ethtool Date: Fri, 17 Nov 2023 14:17:52 +0200 Message-Id: <20231117121755.104547-2-rogerq@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231117121755.104547-1-rogerq@kernel.org> References: <20231117121755.104547-1-rogerq@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 17 Nov 2023 04:18:18 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782813555431125477 X-GMAIL-MSGID: 1782813555431125477 Gets 'ethtool -S eth0 --groups eth-mac' command to work. Signed-off-by: Roger Quadros Reviewed-by: Andrew Lunn --- drivers/net/ethernet/ti/am65-cpsw-ethtool.c | 26 +++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/drivers/net/ethernet/ti/am65-cpsw-ethtool.c b/drivers/net/ethernet/ti/am65-cpsw-ethtool.c index c51e2af91f69..b9e1d568604b 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-ethtool.c +++ b/drivers/net/ethernet/ti/am65-cpsw-ethtool.c @@ -662,6 +662,31 @@ static void am65_cpsw_get_ethtool_stats(struct net_device *ndev, hw_stats[i].offset); } +static void am65_cpsw_get_eth_mac_stats(struct net_device *ndev, + struct ethtool_eth_mac_stats *s) +{ + struct am65_cpsw_port *port = am65_ndev_to_port(ndev); + struct am65_cpsw_stats_regs __iomem *stats; + + stats = port->stat_base; + + s->FramesTransmittedOK = readl_relaxed(&stats->tx_good_frames); + s->SingleCollisionFrames = readl_relaxed(&stats->tx_single_coll_frames); + s->MultipleCollisionFrames = readl_relaxed(&stats->tx_mult_coll_frames); + s->FramesReceivedOK = readl_relaxed(&stats->rx_good_frames); + s->FrameCheckSequenceErrors = readl_relaxed(&stats->rx_crc_errors); + s->AlignmentErrors = readl_relaxed(&stats->rx_align_code_errors); + s->OctetsTransmittedOK = readl_relaxed(&stats->tx_octets); + s->FramesWithDeferredXmissions = readl_relaxed(&stats->tx_deferred_frames); + s->LateCollisions = readl_relaxed(&stats->tx_late_collisions); + s->CarrierSenseErrors = readl_relaxed(&stats->tx_carrier_sense_errors); + s->OctetsReceivedOK = readl_relaxed(&stats->rx_octets); + s->MulticastFramesXmittedOK = readl_relaxed(&stats->tx_multicast_frames); + s->BroadcastFramesXmittedOK = readl_relaxed(&stats->tx_broadcast_frames); + s->MulticastFramesReceivedOK = readl_relaxed(&stats->rx_multicast_frames); + s->BroadcastFramesReceivedOK = readl_relaxed(&stats->rx_broadcast_frames); +}; + static int am65_cpsw_get_ethtool_ts_info(struct net_device *ndev, struct ethtool_ts_info *info) { @@ -729,6 +754,7 @@ const struct ethtool_ops am65_cpsw_ethtool_ops_slave = { .get_sset_count = am65_cpsw_get_sset_count, .get_strings = am65_cpsw_get_strings, .get_ethtool_stats = am65_cpsw_get_ethtool_stats, + .get_eth_mac_stats = am65_cpsw_get_eth_mac_stats, .get_ts_info = am65_cpsw_get_ethtool_ts_info, .get_priv_flags = am65_cpsw_get_ethtool_priv_flags, .set_priv_flags = am65_cpsw_set_ethtool_priv_flags, From patchwork Fri Nov 17 12:17:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roger Quadros X-Patchwork-Id: 166145 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp484159vqn; Fri, 17 Nov 2023 04:18:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IHe6ZsRbLYGnjqZE8s8nSkkeFwtXcBCdTnA5ByvkVId2aIoZmc4uQtdBb5LXY/Mxu6H9RQ7 X-Received: by 2002:a17:90a:1950:b0:283:2044:158 with SMTP id 16-20020a17090a195000b0028320440158mr15038757pjh.0.1700223501419; Fri, 17 Nov 2023 04:18:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700223501; cv=none; d=google.com; s=arc-20160816; b=O2b1ALK3EVjJQOm3ShCQaVv7Xh3CtX34WKXryoQNBj+aVGCFKKMGvvPYgIiiyi30Q/ C3qO/ECLJiht+5ylwkQ3f0vWJMS95Q1yF5qTpfwV3onk+LS4YT6Wfs5cT8sD5NHkAlVu k1gNYthD1+5dQ42HZL2kPrg/1CZAKnhGj93bXj22kBMLn20KesBIq27EqvbAceeJS4Mr 1UJ0/ZytU4BZWGiC8YlFCAbj2MqecHNnSALgEBhPjk/1GP49yOUUB0KsEezH7vVjkNFl qoaBu799Y8XP/GXxdI7idVmZDULg/7KOTlkeNNyAhPnW0oWmewl0WQpwKtFp1/5b93I5 KhGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=BEmDMi2IGbt6POrFnFltbwZfQ87rW0S3CkhGJ5pS9ms=; fh=1dwtES8N4a4srztD6Eh7S/MEghfJgBh5nx+10muH1w8=; b=u4+t23FxUxsMuBaZuvW03UGcUwdF1H0n0ZAbeHjbS3REt/IvXQZWP018rtAGrEr7Lk 01D8RWWkr9vSjuIr0baShjLC47Lu5IwN3U5pnDZOPJh/geGE3a4LEoILPeByinJc8gvM 7yPkDzG3pAeXkzZ5UTsMiMpAkYe9w3ci3DCeVa3//+HXfHmNYBE7dNto/nfvxran4Tml xv2nzFofC6yOWLuwy6DDyho1rvpdYh92WfEnsrNjrZhAz0TJRsCiPrHxGcTuQdW12GeE DyBFB1txWrhe0l7qvGGvruy4ywziBCMSMchnyyi99gBv26Xa8LEe0UHH01yahu8jQfT6 ob+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=At15yDr+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id f3-20020a17090aec8300b00283a0b84bacsi145011pjy.155.2023.11.17.04.18.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Nov 2023 04:18:21 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=At15yDr+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 8602B8288C99; Fri, 17 Nov 2023 04:18:20 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345930AbjKQMSQ (ORCPT + 30 others); Fri, 17 Nov 2023 07:18:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231391AbjKQMSO (ORCPT ); Fri, 17 Nov 2023 07:18:14 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2CDFD71 for ; Fri, 17 Nov 2023 04:18:10 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 18FD8C433CC; Fri, 17 Nov 2023 12:18:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1700223490; bh=xSB7SheKHhkYfVFVkOtml7Aoo5TYoTJR9HuadaGSiGk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=At15yDr+SU7SvFQHNWQ8F7jGIsqsb8lrBs5MnBCc0zVz5dFFsaGzRKbL6EGlVbt5R JhqLVj7YDpWgpV/2uUzb0+xSDgQwLqHD2HqyMed5iXTmcwRJYMogCZ7fLtzllagxU5 G05no8MhSvdJiUB4DqAOSzlTHuoHa7Ol47Meo3huYF/hu88EIK/BVvtf3EZnUxv985 mBvETg4FUEeR/3o0Ig2EASwDneIw7rfy3kgbei/XDKQValJN4bUnPSmNO8CPWowkyO EFwQ4sNNztZMfiRMb7+EQvJ79Ay2WAhO1bZLQcqFeU0vW/4xZdEmwKt8DGp0RBtrmb F31tJqtveDZKw== From: Roger Quadros To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: vladimir.oltean@nxp.com, s-vadapalli@ti.com, r-gunasekaran@ti.com, vigneshr@ti.com, srk@ti.com, andrew@lunn.ch, u.kleine-koenig@pengutronix.de, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Roger Quadros Subject: [PATCH v2 net-next 2/4] net: ethernet: ti: am65-cpsw: Re-arrange functions to avoid forward declaration Date: Fri, 17 Nov 2023 14:17:53 +0200 Message-Id: <20231117121755.104547-3-rogerq@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231117121755.104547-1-rogerq@kernel.org> References: <20231117121755.104547-1-rogerq@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 17 Nov 2023 04:18:20 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782813558373480674 X-GMAIL-MSGID: 1782813558373480674 Re-arrange am65_cpsw_nuss_rx_cleanup(), am65_cpsw_nuss_xmit_free() and am65_cpsw_nuss_tx_cleanup() to avoid forward declaration. No functional change. Signed-off-by: Roger Quadros Reviewed-by: Andrew Lunn --- drivers/net/ethernet/ti/am65-cpsw-nuss.c | 145 +++++++++++------------ 1 file changed, 71 insertions(+), 74 deletions(-) diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index ece9f8df98ae..adb29e8e8026 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -367,6 +367,77 @@ static void am65_cpsw_init_host_port_emac(struct am65_cpsw_common *common); static void am65_cpsw_init_port_switch_ale(struct am65_cpsw_port *port); static void am65_cpsw_init_port_emac_ale(struct am65_cpsw_port *port); +static void am65_cpsw_nuss_rx_cleanup(void *data, dma_addr_t desc_dma) +{ + struct am65_cpsw_rx_chn *rx_chn = data; + struct cppi5_host_desc_t *desc_rx; + struct sk_buff *skb; + dma_addr_t buf_dma; + u32 buf_dma_len; + void **swdata; + + desc_rx = k3_cppi_desc_pool_dma2virt(rx_chn->desc_pool, desc_dma); + swdata = cppi5_hdesc_get_swdata(desc_rx); + skb = *swdata; + cppi5_hdesc_get_obuf(desc_rx, &buf_dma, &buf_dma_len); + k3_udma_glue_rx_cppi5_to_dma_addr(rx_chn->rx_chn, &buf_dma); + + dma_unmap_single(rx_chn->dma_dev, buf_dma, buf_dma_len, DMA_FROM_DEVICE); + k3_cppi_desc_pool_free(rx_chn->desc_pool, desc_rx); + + dev_kfree_skb_any(skb); +} + +static void am65_cpsw_nuss_xmit_free(struct am65_cpsw_tx_chn *tx_chn, + struct cppi5_host_desc_t *desc) +{ + struct cppi5_host_desc_t *first_desc, *next_desc; + dma_addr_t buf_dma, next_desc_dma; + u32 buf_dma_len; + + first_desc = desc; + next_desc = first_desc; + + cppi5_hdesc_get_obuf(first_desc, &buf_dma, &buf_dma_len); + k3_udma_glue_tx_cppi5_to_dma_addr(tx_chn->tx_chn, &buf_dma); + + dma_unmap_single(tx_chn->dma_dev, buf_dma, buf_dma_len, DMA_TO_DEVICE); + + next_desc_dma = cppi5_hdesc_get_next_hbdesc(first_desc); + k3_udma_glue_tx_cppi5_to_dma_addr(tx_chn->tx_chn, &next_desc_dma); + while (next_desc_dma) { + next_desc = k3_cppi_desc_pool_dma2virt(tx_chn->desc_pool, + next_desc_dma); + cppi5_hdesc_get_obuf(next_desc, &buf_dma, &buf_dma_len); + k3_udma_glue_tx_cppi5_to_dma_addr(tx_chn->tx_chn, &buf_dma); + + dma_unmap_page(tx_chn->dma_dev, buf_dma, buf_dma_len, + DMA_TO_DEVICE); + + next_desc_dma = cppi5_hdesc_get_next_hbdesc(next_desc); + k3_udma_glue_tx_cppi5_to_dma_addr(tx_chn->tx_chn, &next_desc_dma); + + k3_cppi_desc_pool_free(tx_chn->desc_pool, next_desc); + } + + k3_cppi_desc_pool_free(tx_chn->desc_pool, first_desc); +} + +static void am65_cpsw_nuss_tx_cleanup(void *data, dma_addr_t desc_dma) +{ + struct am65_cpsw_tx_chn *tx_chn = data; + struct cppi5_host_desc_t *desc_tx; + struct sk_buff *skb; + void **swdata; + + desc_tx = k3_cppi_desc_pool_dma2virt(tx_chn->desc_pool, desc_dma); + swdata = cppi5_hdesc_get_swdata(desc_tx); + skb = *(swdata); + am65_cpsw_nuss_xmit_free(tx_chn, desc_tx); + + dev_kfree_skb_any(skb); +} + static int am65_cpsw_nuss_common_open(struct am65_cpsw_common *common) { struct am65_cpsw_host *host_p = am65_common_get_host(common); @@ -470,9 +541,6 @@ static int am65_cpsw_nuss_common_open(struct am65_cpsw_common *common) return 0; } -static void am65_cpsw_nuss_tx_cleanup(void *data, dma_addr_t desc_dma); -static void am65_cpsw_nuss_rx_cleanup(void *data, dma_addr_t desc_dma); - static int am65_cpsw_nuss_common_stop(struct am65_cpsw_common *common) { int i; @@ -646,27 +714,6 @@ static int am65_cpsw_nuss_ndo_slave_open(struct net_device *ndev) return ret; } -static void am65_cpsw_nuss_rx_cleanup(void *data, dma_addr_t desc_dma) -{ - struct am65_cpsw_rx_chn *rx_chn = data; - struct cppi5_host_desc_t *desc_rx; - struct sk_buff *skb; - dma_addr_t buf_dma; - u32 buf_dma_len; - void **swdata; - - desc_rx = k3_cppi_desc_pool_dma2virt(rx_chn->desc_pool, desc_dma); - swdata = cppi5_hdesc_get_swdata(desc_rx); - skb = *swdata; - cppi5_hdesc_get_obuf(desc_rx, &buf_dma, &buf_dma_len); - k3_udma_glue_rx_cppi5_to_dma_addr(rx_chn->rx_chn, &buf_dma); - - dma_unmap_single(rx_chn->dma_dev, buf_dma, buf_dma_len, DMA_FROM_DEVICE); - k3_cppi_desc_pool_free(rx_chn->desc_pool, desc_rx); - - dev_kfree_skb_any(skb); -} - static void am65_cpsw_nuss_rx_ts(struct sk_buff *skb, u32 *psdata) { struct skb_shared_hwtstamps *ssh; @@ -840,56 +887,6 @@ static int am65_cpsw_nuss_rx_poll(struct napi_struct *napi_rx, int budget) return num_rx; } -static void am65_cpsw_nuss_xmit_free(struct am65_cpsw_tx_chn *tx_chn, - struct cppi5_host_desc_t *desc) -{ - struct cppi5_host_desc_t *first_desc, *next_desc; - dma_addr_t buf_dma, next_desc_dma; - u32 buf_dma_len; - - first_desc = desc; - next_desc = first_desc; - - cppi5_hdesc_get_obuf(first_desc, &buf_dma, &buf_dma_len); - k3_udma_glue_tx_cppi5_to_dma_addr(tx_chn->tx_chn, &buf_dma); - - dma_unmap_single(tx_chn->dma_dev, buf_dma, buf_dma_len, DMA_TO_DEVICE); - - next_desc_dma = cppi5_hdesc_get_next_hbdesc(first_desc); - k3_udma_glue_tx_cppi5_to_dma_addr(tx_chn->tx_chn, &next_desc_dma); - while (next_desc_dma) { - next_desc = k3_cppi_desc_pool_dma2virt(tx_chn->desc_pool, - next_desc_dma); - cppi5_hdesc_get_obuf(next_desc, &buf_dma, &buf_dma_len); - k3_udma_glue_tx_cppi5_to_dma_addr(tx_chn->tx_chn, &buf_dma); - - dma_unmap_page(tx_chn->dma_dev, buf_dma, buf_dma_len, - DMA_TO_DEVICE); - - next_desc_dma = cppi5_hdesc_get_next_hbdesc(next_desc); - k3_udma_glue_tx_cppi5_to_dma_addr(tx_chn->tx_chn, &next_desc_dma); - - k3_cppi_desc_pool_free(tx_chn->desc_pool, next_desc); - } - - k3_cppi_desc_pool_free(tx_chn->desc_pool, first_desc); -} - -static void am65_cpsw_nuss_tx_cleanup(void *data, dma_addr_t desc_dma) -{ - struct am65_cpsw_tx_chn *tx_chn = data; - struct cppi5_host_desc_t *desc_tx; - struct sk_buff *skb; - void **swdata; - - desc_tx = k3_cppi_desc_pool_dma2virt(tx_chn->desc_pool, desc_dma); - swdata = cppi5_hdesc_get_swdata(desc_tx); - skb = *(swdata); - am65_cpsw_nuss_xmit_free(tx_chn, desc_tx); - - dev_kfree_skb_any(skb); -} - static struct sk_buff * am65_cpsw_nuss_tx_compl_packet(struct am65_cpsw_tx_chn *tx_chn, dma_addr_t desc_dma) From patchwork Fri Nov 17 12:17:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roger Quadros X-Patchwork-Id: 166146 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp484221vqn; Fri, 17 Nov 2023 04:18:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IExPWkURznkld76JGXn2jme4XfdJ5jxHYhC+aOzi0OQiELanJz67sJhP2tKD6FkQMIM9Rvz X-Received: by 2002:a17:902:db0b:b0:1cc:5833:cf5e with SMTP id m11-20020a170902db0b00b001cc5833cf5emr13747793plx.27.1700223507833; Fri, 17 Nov 2023 04:18:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700223507; cv=none; d=google.com; s=arc-20160816; b=V5y45Dnq/B31k3HxZv0ewKJgWeMu792kf2suo31xEPQxKwo+5ZN8I279+cjTx0ekz6 DYnhf1lxXUXVCVPRRlU+7FHD89KhBNAdpiDaDPgYwoos5+kvtD8HSDxC7BmMTXwJHfck mojpnp0GeJaPhlV1b/8l3VB2UJNExxQJKnGJ5fRVEBuurj/Tl2ePpHBz/AeRv2rCRgww MVnHuwF/SZk/bR/Tc2YEDpw4tXc7MnoMMD+viCgwTaTuktrk9IbgG6ChQSPbQHcNfnrn KL8NxLvSzsXFK/WS94URRK+lAl+CsaTkwS9l0bzKbO4K28YpfVDz8Rp4PX9WDDFSXaI6 +SFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=szKf9D9bMINxfo8uOcyIHHdV1B0Oq5VxZOVPphGliGU=; fh=1dwtES8N4a4srztD6Eh7S/MEghfJgBh5nx+10muH1w8=; b=LHQR9jURZ4YBFcBuq1vkBTs8eMZiDknAGODQPQNNA/q+CTeHGNhc/9i/EDjs2wQ8zx d6Q10g6zkk5xPzfQZwcO9ysCstZdroAYEG4a+LNIuZrDmm1+TDakMBJsUJs/mraO4ZN1 26buOuCd2EUoRt7KSG64xGo30AWya9UcZBMAfx+PvMQue8zx73VYTTQQRnDyJagT8xzh IPtI96O6i1Av481bxIJ1nd1pL6vNGGo2+8dDbXujDuUFrbVUJ0sT4Bg7HiZc69BokpvE fkkISCH9/kmdMmNfs2WQDpUDwVsCtexUi6rpB7e5ZiXvn4N9lW5NK4VKM7RmknotG8Ku O2Sg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=QRrg83rH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id n16-20020a170902e55000b001bbab2e5a27si1792304plf.290.2023.11.17.04.18.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Nov 2023 04:18:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=QRrg83rH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 1AB0A805F970; Fri, 17 Nov 2023 04:18:25 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345970AbjKQMSV (ORCPT + 30 others); Fri, 17 Nov 2023 07:18:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53300 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345959AbjKQMSR (ORCPT ); Fri, 17 Nov 2023 07:18:17 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 52AA3D5B for ; Fri, 17 Nov 2023 04:18:14 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BF32EC433C8; Fri, 17 Nov 2023 12:18:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1700223494; bh=WnhCZYkPXtS5MLDKBrXmXcdTGW8FI0vCOXfio8BzzM4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QRrg83rH3yeWbGrZDy9V4lmq8r0fXbVaEGB1TjNeUM+S0pxtDdaZVKwQEFNh1qg27 COmS9gClLsgB91XKmiW04iINeynxFxu5QSJESUIdI7jRTCREOJsX+M4nKShVcaFjlh Oa7ftJ369Y2sPV99Lo0ZT6C9njM4XY0wrbd/rINqnWvt400T1+edLfCcwHc5ZhfAe5 V6B9xbAik/RVxgQ4PfwGqVOSvZ1AJnzZwpmWtq0gImN1xB/fXqAo0Ezb2ylAXcxN9h k2ejnhc6iowZhljPQU0oLGu7q+9gY0yNVXgJdSEe5QpVCSSLZnDZ9FkhrzWoXEF4NY ICTaQkp1aQ9yQ== From: Roger Quadros To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: vladimir.oltean@nxp.com, s-vadapalli@ti.com, r-gunasekaran@ti.com, vigneshr@ti.com, srk@ti.com, andrew@lunn.ch, u.kleine-koenig@pengutronix.de, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Roger Quadros Subject: [PATCH v2 net-next 3/4] net: ethernet: am65-cpsw: Set default TX channels to maximum Date: Fri, 17 Nov 2023 14:17:54 +0200 Message-Id: <20231117121755.104547-4-rogerq@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231117121755.104547-1-rogerq@kernel.org> References: <20231117121755.104547-1-rogerq@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Fri, 17 Nov 2023 04:18:25 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782813565044011786 X-GMAIL-MSGID: 1782813565044011786 am65-cpsw supports 8 TX hardware queues. Set this as default. The rationale is that some am65-cpsw devices can have up to 4 ethernet ports. If the number of TX channels have to be changed then all interfaces have to be brought down and up as the old default of 1 TX channel is too restrictive for any mqprio/taprio usage. Another reason for this change is to allow testing using kselftest:net/forwarding:ethtool_mm.sh out of the box. Signed-off-by: Roger Quadros Reviewed-by: Andrew Lunn --- drivers/net/ethernet/ti/am65-cpsw-nuss.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index adb29e8e8026..78b3e69fbccb 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -136,6 +136,8 @@ NETIF_MSG_IFUP | NETIF_MSG_PROBE | NETIF_MSG_IFDOWN | \ NETIF_MSG_RX_ERR | NETIF_MSG_TX_ERR) +#define AM65_CPSW_DEFAULT_TX_CHNS 8 + static void am65_cpsw_port_set_sl_mac(struct am65_cpsw_port *slave, const u8 *dev_addr) { @@ -2894,7 +2896,7 @@ static int am65_cpsw_nuss_probe(struct platform_device *pdev) common->rx_flow_id_base = -1; init_completion(&common->tdown_complete); - common->tx_ch_num = 1; + common->tx_ch_num = AM65_CPSW_DEFAULT_TX_CHNS; common->pf_p0_rx_ptype_rrobin = false; common->default_vlan = 1; From patchwork Fri Nov 17 12:17:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Roger Quadros X-Patchwork-Id: 166147 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9910:0:b0:403:3b70:6f57 with SMTP id i16csp484473vqn; Fri, 17 Nov 2023 04:18:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IFnayJ9iSHaeAexIKJmnB3f7BqmULQEZLcDn5Kwk7f+iq4V62MAxZmuVK+ZSu6XbIIGxD77 X-Received: by 2002:a05:6a21:99a8:b0:189:11e8:6237 with SMTP id ve40-20020a056a2199a800b0018911e86237mr432809pzb.51.1700223537427; Fri, 17 Nov 2023 04:18:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700223537; cv=none; d=google.com; s=arc-20160816; b=ETqSPq6N+0lotncU8kcNrjh/Yb7pQBgN/PJEPZURecuI+sTM7w/7YijRWficVTY6vi 8So0Z3/886fTszIssc9TGIGtxaLh+snTyezFXYeItHTa+9Wsvy81KsOXup2YytZfnKcE OKlfMKuZwyvYazirxHgJB4HhQaLH4HdszZS3FIZQv+kWTpN32JtcpoW8YGW4eENDfO9n uidoU4bXASMCcQv3Kehug8BSQHUu1mc3U2MH2A6JM5bfz0AdsxmzkHJlei2+2zlnttSX dljgfp/L9MTB1IhFBdB0o8m6QkdfU3Q9WE/J+Ol38O49XTmxwY5ymiryRSgBr2ugzRLW Fz1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=I02tGHgfzx+bV9hBPwiZRJYC4QDl8/55it7dJHclcBM=; fh=1dwtES8N4a4srztD6Eh7S/MEghfJgBh5nx+10muH1w8=; b=lKVMIVUvYQmfxDn7G38utI5330Po+J/e4LdnvaacHzRGdidMO7hATQFDyFr8rZ/v1d flH6L3/zwJAsu8U7YncoPMDEtqUsTAtRbI6gGpd3obOAfYF1Ae4XiCe3bYaJf092tuaf QiZKBPeLqUyKEFd0YcCLa8XubimBDsgFNp2wND9E2LKAFhH2Wf1Kaa14BnZnu6etT1jo 3yuuaUil9e9DKjmHsXPW/pWABKe2L4rxUDbDcTf+8yXXBnPpxuoCd7KfiUOmDYmUnJnG +ULDeLFNiANp/FZnm/1/sptUxIH8BxPJDsdtlJVC5PU9fqThDklbgSyVRxODp35G1wEX OXFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=MjI20mqX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id g19-20020a17090a579300b00276b87c8b8esi1786606pji.59.2023.11.17.04.18.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Nov 2023 04:18:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=MjI20mqX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 0675D809C92D; Fri, 17 Nov 2023 04:18:55 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231359AbjKQMSa (ORCPT + 30 others); Fri, 17 Nov 2023 07:18:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55000 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235733AbjKQMS0 (ORCPT ); Fri, 17 Nov 2023 07:18:26 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5E7EB10D5 for ; Fri, 17 Nov 2023 04:18:18 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6ECC3C433CD; Fri, 17 Nov 2023 12:18:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1700223498; bh=ogHEVS0KdHVrAhNQwbidAE1xp2vQIyfTD9jS7RacS6g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MjI20mqXCAD2eu6auElRXo9UWp5ocdcuS4mj3YNn4PGu07QBGHSu+XEV6A10MpWoQ 0FPT4bIo40YXf+huKwR8bKsdXtm6QHjQxiDL/IcxX9hU09QtS92PEEl8Mzpi/jTd/W 8lIx4zBiLTIgoZFAWXI2OsGeWdpJ7E4ND8iZb8DkDfFYenccvzqUJpQ/YxdOlZ4Ey9 28UmzyiiABqSb/LEiHfw+mdRm7YiaFJk3hGJAEUnTt6hswQuURv0hPIpFlY9LPFgN2 DsZsgJUCFUeRXJdx7FXLExYg1hV7uod62qMzF+kyV/wYJNwQIsBajAzQc840vfjEpX eoUqT73Qu14fw== From: Roger Quadros To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: vladimir.oltean@nxp.com, s-vadapalli@ti.com, r-gunasekaran@ti.com, vigneshr@ti.com, srk@ti.com, andrew@lunn.ch, u.kleine-koenig@pengutronix.de, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Roger Quadros Subject: [PATCH v2 net-next 4/4] net: ethernet: ti: am65-cpsw: Fix error handling in am65_cpsw_nuss_common_open() Date: Fri, 17 Nov 2023 14:17:55 +0200 Message-Id: <20231117121755.104547-5-rogerq@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231117121755.104547-1-rogerq@kernel.org> References: <20231117121755.104547-1-rogerq@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Fri, 17 Nov 2023 04:18:55 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1782813596174620800 X-GMAIL-MSGID: 1782813596174620800 k3_udma_glue_enable_rx/tx_chn returns error code on failure. Bail out on error while enabling TX/RX channel. In the error path, clean up the RX descriptors and SKBs. Get rid of kmemleak_not_leak() as it seems unnecessary now. Fixes: 93a76530316a ("net: ethernet: ti: introduce am65x/j721e gigabit eth subsystem driver") Signed-off-by: Roger Quadros --- drivers/net/ethernet/ti/am65-cpsw-nuss.c | 48 +++++++++++++++++++----- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c index 78b3e69fbccb..7992a76ed4d8 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c @@ -443,7 +443,7 @@ static void am65_cpsw_nuss_tx_cleanup(void *data, dma_addr_t desc_dma) static int am65_cpsw_nuss_common_open(struct am65_cpsw_common *common) { struct am65_cpsw_host *host_p = am65_common_get_host(common); - int port_idx, i, ret; + int port_idx, i, ret, tx; struct sk_buff *skb; u32 val, port_mask; @@ -510,8 +510,12 @@ static int am65_cpsw_nuss_common_open(struct am65_cpsw_common *common) AM65_CPSW_MAX_PACKET_SIZE, GFP_KERNEL); if (!skb) { + ret = -ENOMEM; dev_err(common->dev, "cannot allocate skb\n"); - return -ENOMEM; + if (i) + goto fail_rx; + + return ret; } ret = am65_cpsw_nuss_rx_push(common, skb); @@ -520,17 +524,28 @@ static int am65_cpsw_nuss_common_open(struct am65_cpsw_common *common) "cannot submit skb to channel rx, error %d\n", ret); kfree_skb(skb); + if (i) + goto fail_rx; + return ret; } - kmemleak_not_leak(skb); } - k3_udma_glue_enable_rx_chn(common->rx_chns.rx_chn); - for (i = 0; i < common->tx_ch_num; i++) { - ret = k3_udma_glue_enable_tx_chn(common->tx_chns[i].tx_chn); - if (ret) - return ret; - napi_enable(&common->tx_chns[i].napi_tx); + ret = k3_udma_glue_enable_rx_chn(common->rx_chns.rx_chn); + if (ret) { + dev_err(common->dev, "couldn't enable rx chn: %d\n", ret); + goto fail_rx; + } + + for (tx = 0; tx < common->tx_ch_num; tx++) { + ret = k3_udma_glue_enable_tx_chn(common->tx_chns[tx].tx_chn); + if (ret) { + dev_err(common->dev, "couldn't enable tx chn %d: %d\n", + tx, ret); + tx--; + goto fail_tx; + } + napi_enable(&common->tx_chns[tx].napi_tx); } napi_enable(&common->napi_rx); @@ -541,6 +556,21 @@ static int am65_cpsw_nuss_common_open(struct am65_cpsw_common *common) dev_dbg(common->dev, "cpsw_nuss started\n"); return 0; + +fail_tx: + while (tx >= 0) { + napi_disable(&common->tx_chns[tx].napi_tx); + k3_udma_glue_disable_tx_chn(common->tx_chns[tx].tx_chn); + tx--; + } + + k3_udma_glue_disable_rx_chn(common->rx_chns.rx_chn); + +fail_rx: + k3_udma_glue_reset_rx_chn(common->rx_chns.rx_chn, 0, + &common->rx_chns, + am65_cpsw_nuss_rx_cleanup, 0); + return ret; } static int am65_cpsw_nuss_common_stop(struct am65_cpsw_common *common)