From patchwork Fri Jun 10 15:46:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Elder X-Patchwork-Id: 581299 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 12369CCA47C for ; Fri, 10 Jun 2022 15:46:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344979AbiFJPqa (ORCPT ); Fri, 10 Jun 2022 11:46:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345163AbiFJPqX (ORCPT ); Fri, 10 Jun 2022 11:46:23 -0400 Received: from mail-il1-x12f.google.com (mail-il1-x12f.google.com [IPv6:2607:f8b0:4864:20::12f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF594B7C3 for ; Fri, 10 Jun 2022 08:46:21 -0700 (PDT) Received: by mail-il1-x12f.google.com with SMTP id f12so21241366ilj.1 for ; Fri, 10 Jun 2022 08:46:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=S7La6nBk9Cx4BOrsERhSKtFTTEJXNgqXNboxuglpfJg=; b=PxMvN8seSWWhuH2UJ7lvFUjHsGE+jwR1lX4BUn8STq/hm4XqYNvgH+lIOdhUYxFbXI qUd8Gum0pEV1mw7hUSYPH8UVW9RpfhvX86svQXwrhh9ml6TropR9pqxjyr5yP+t08dDu /HM8wf60+VxPH6BH/4cSDRABqcCjyiTkimptZTniLCAo2c2Z6ITZOLBmGzwnBepwVfs0 A0RVsaDxumAuZnA/qXhrvfry1P5SuPj4G/hkEYeIPsnt/bxwhQljPwJnI0b7iEaYYFo7 lDb0RQ8t5vVcakzuH0IF/DSVF1bxB1XQLy6hQAZpnRnf0+cGMBb0COGym5SEdIJPZejp /8eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=S7La6nBk9Cx4BOrsERhSKtFTTEJXNgqXNboxuglpfJg=; b=mD4yAJ/bglzPSmwdp+GI9iE/7VC4Vq2XtUI1GbfsjOFWLw58/IQKFaJQ2+MT7v45qx 881QapsFXBdgxyXeAnMLnp6Z2qNoCI5AIT1fidFf1zj8NzHOS9xIN4c1/TvpSOaGbeQe R+6WCDUsYNIgghSNBW4jMywq5NMXuKhq2vPY9Y4qLcDYwHMDkE9bSI9FM5HDzEBvSwBJ 3uOEMKlsb+Ua9RHeW+dkg3DVrH/GJL98nnKPyohRgPC72fWr1jWiDjXoma9osFIoi9dj RnxqGp9KmCmVqH0gbBWU/NOIOD7CRbFdiQi4/SqwM+1KW0QAEL39dvHCWWJegp4IJx0M Arug== X-Gm-Message-State: AOAM531xUrGC4rR8HyYTkI7t4xDG3ODHcW9VPxOc0PsOPW2/YPwgcLfS D80h3Avusx7LIshBW9hZxo2Oqw== X-Google-Smtp-Source: ABdhPJzlXpTG8DdFUCx6d2OvAlPVIBA+7masa5y5JPqmXL69816WafFNg8YVYSOB9yz0mdBxHOn7lA== X-Received: by 2002:a05:6e02:552:b0:2d1:db28:5434 with SMTP id i18-20020a056e02055200b002d1db285434mr25898979ils.115.1654875981312; Fri, 10 Jun 2022 08:46:21 -0700 (PDT) Received: from localhost.localdomain (c-73-185-129-58.hsd1.mn.comcast.net. [73.185.129.58]) by smtp.gmail.com with ESMTPSA id y15-20020a92950f000000b002d3adf71893sm12100488ilh.20.2022.06.10.08.46.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jun 2022 08:46:21 -0700 (PDT) From: Alex Elder To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: mka@chromium.org, evgreen@chromium.org, bjorn.andersson@linaro.org, quic_cpratapa@quicinc.com, quic_avuyyuru@quicinc.com, quic_jponduru@quicinc.com, quic_subashab@quicinc.com, elder@kernel.org, netdev@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 2/6] net: ipa: rename channel->tlv_count Date: Fri, 10 Jun 2022 10:46:11 -0500 Message-Id: <20220610154616.249304-3-elder@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220610154616.249304-1-elder@linaro.org> References: <20220610154616.249304-1-elder@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Each GSI channel has a TLV FIFO of a certain size, specified in the configuration data for an AP channel. That size dictates the maximum number of TREs that are allowed in a single transaction. The only way that value is used after initialization is as a limit on the number of TREs in a transaction; calling it "tlv_count" isn't helpful, and in fact gsi_channel_trans_tre_max() exists to sort of abstract it. Instead, rename the channel->tlv_count field trans_tre_max, and get rid of the helper function. Update a couple of comments as well. Signed-off-by: Alex Elder --- drivers/net/ipa/gsi.c | 14 +++----------- drivers/net/ipa/gsi.h | 11 +---------- drivers/net/ipa/gsi_trans.c | 8 ++------ drivers/net/ipa/ipa_cmd.c | 8 ++++---- drivers/net/ipa/ipa_endpoint.c | 2 +- 5 files changed, 11 insertions(+), 32 deletions(-) diff --git a/drivers/net/ipa/gsi.c b/drivers/net/ipa/gsi.c index 65ed5a697577e..b1acc7d36b23b 100644 --- a/drivers/net/ipa/gsi.c +++ b/drivers/net/ipa/gsi.c @@ -823,7 +823,7 @@ static void gsi_channel_program(struct gsi_channel *channel, bool doorbell) /* Now update the scratch registers for GPI protocol */ gpi = &scr.gpi; - gpi->max_outstanding_tre = gsi_channel_trans_tre_max(gsi, channel_id) * + gpi->max_outstanding_tre = channel->trans_tre_max * GSI_RING_ELEMENT_SIZE; gpi->outstanding_threshold = 2 * GSI_RING_ELEMENT_SIZE; @@ -2095,7 +2095,7 @@ static int gsi_channel_init_one(struct gsi *gsi, channel->gsi = gsi; channel->toward_ipa = data->toward_ipa; channel->command = command; - channel->tlv_count = data->channel.tlv_count; + channel->trans_tre_max = data->channel.tlv_count; channel->tre_count = tre_count; channel->event_count = data->channel.event_count; @@ -2310,13 +2310,5 @@ u32 gsi_channel_tre_max(struct gsi *gsi, u32 channel_id) struct gsi_channel *channel = &gsi->channel[channel_id]; /* Hardware limit is channel->tre_count - 1 */ - return channel->tre_count - (channel->tlv_count - 1); -} - -/* Returns the maximum number of TREs in a single transaction for a channel */ -u32 gsi_channel_trans_tre_max(struct gsi *gsi, u32 channel_id) -{ - struct gsi_channel *channel = &gsi->channel[channel_id]; - - return channel->tlv_count; + return channel->tre_count - (channel->trans_tre_max - 1); } diff --git a/drivers/net/ipa/gsi.h b/drivers/net/ipa/gsi.h index 5d66116b46b03..89dac7fc8c4cb 100644 --- a/drivers/net/ipa/gsi.h +++ b/drivers/net/ipa/gsi.h @@ -110,7 +110,7 @@ struct gsi_channel { bool toward_ipa; bool command; /* AP command TX channel or not */ - u8 tlv_count; /* # entries in TLV FIFO */ + u8 trans_tre_max; /* max TREs in a transaction */ u16 tre_count; u16 event_count; @@ -188,15 +188,6 @@ void gsi_teardown(struct gsi *gsi); */ u32 gsi_channel_tre_max(struct gsi *gsi, u32 channel_id); -/** - * gsi_channel_trans_tre_max() - Maximum TREs in a single transaction - * @gsi: GSI pointer - * @channel_id: Channel whose limit is to be returned - * - * Return: The maximum TRE count per transaction on the channel - */ -u32 gsi_channel_trans_tre_max(struct gsi *gsi, u32 channel_id); - /** * gsi_channel_start() - Start an allocated GSI channel * @gsi: GSI pointer diff --git a/drivers/net/ipa/gsi_trans.c b/drivers/net/ipa/gsi_trans.c index 55f8fe7d2668e..870a4c1752838 100644 --- a/drivers/net/ipa/gsi_trans.c +++ b/drivers/net/ipa/gsi_trans.c @@ -340,7 +340,7 @@ struct gsi_trans *gsi_channel_trans_alloc(struct gsi *gsi, u32 channel_id, struct gsi_trans_info *trans_info; struct gsi_trans *trans; - if (WARN_ON(tre_count > gsi_channel_trans_tre_max(gsi, channel_id))) + if (WARN_ON(tre_count > channel->trans_tre_max)) return NULL; trans_info = &channel->trans_info; @@ -745,14 +745,10 @@ int gsi_channel_trans_init(struct gsi *gsi, u32 channel_id) * element is used to fill a single TRE when the transaction is * committed. So we need as many scatterlist elements as the * maximum number of TREs that can be outstanding. - * - * All TREs in a transaction must fit within the channel's TLV FIFO. - * A transaction on a channel can allocate as many TREs as that but - * no more. */ ret = gsi_trans_pool_init(&trans_info->sg_pool, sizeof(struct scatterlist), - tre_max, channel->tlv_count); + tre_max, channel->trans_tre_max); if (ret) goto err_trans_pool_exit; diff --git a/drivers/net/ipa/ipa_cmd.c b/drivers/net/ipa/ipa_cmd.c index e58cd4478fd3d..6dea40259b604 100644 --- a/drivers/net/ipa/ipa_cmd.c +++ b/drivers/net/ipa/ipa_cmd.c @@ -353,13 +353,13 @@ int ipa_cmd_pool_init(struct gsi_channel *channel, u32 tre_max) /* This is as good a place as any to validate build constants */ ipa_cmd_validate_build(); - /* Even though command payloads are allocated one at a time, - * a single transaction can require up to tlv_count of them, - * so we treat them as if that many can be allocated at once. + /* Command payloads are allocated one at a time, but a single + * transaction can require up to the maximum supported by the + * channel; treat them as if they were allocated all at once. */ return gsi_trans_pool_init_dma(dev, &trans_info->cmd_pool, sizeof(union ipa_cmd_payload), - tre_max, channel->tlv_count); + tre_max, channel->trans_tre_max); } void ipa_cmd_pool_exit(struct gsi_channel *channel) diff --git a/drivers/net/ipa/ipa_endpoint.c b/drivers/net/ipa/ipa_endpoint.c index d3b3255ac3d12..57507a109269b 100644 --- a/drivers/net/ipa/ipa_endpoint.c +++ b/drivers/net/ipa/ipa_endpoint.c @@ -1721,7 +1721,7 @@ static void ipa_endpoint_setup_one(struct ipa_endpoint *endpoint) if (endpoint->ee_id != GSI_EE_AP) return; - endpoint->trans_tre_max = gsi_channel_trans_tre_max(gsi, channel_id); + endpoint->trans_tre_max = gsi->channel[channel_id].trans_tre_max; if (!endpoint->toward_ipa) { /* RX transactions require a single TRE, so the maximum * backlog is the same as the maximum outstanding TREs. From patchwork Fri Jun 10 15:46:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Elder X-Patchwork-Id: 581298 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CFEA6C43334 for ; Fri, 10 Jun 2022 15:46:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240913AbiFJPqd (ORCPT ); Fri, 10 Jun 2022 11:46:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345590AbiFJPq1 (ORCPT ); Fri, 10 Jun 2022 11:46:27 -0400 Received: from mail-il1-x132.google.com (mail-il1-x132.google.com [IPv6:2607:f8b0:4864:20::132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0558A40E50 for ; Fri, 10 Jun 2022 08:46:23 -0700 (PDT) Received: by mail-il1-x132.google.com with SMTP id y16so21200026ili.13 for ; Fri, 10 Jun 2022 08:46:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0BQDmv34wyVMx4obn1fqFEZa9pyMw3o6hJ+fsh6NgSM=; b=ga0Eg6Tt0RYWMUIgu1mvu7J/5FJ6m0+zf/4G9GxASMNYSXwLJOLWCJU+YBYGQi3HH7 O9Smz2tRhWSRSpgY6ToXMhnTfqczzenh7EWkthxJFr7gBWIp6+qI1y1O9xPkD5enXdl2 gOEqi5hQJFHIHjnRtK6+sBfbAxTepolG6edtZ2ZU/1KMoQCHsMUlenmPd1aXiBqT6N8w p60CMhIbKsCrtDaDsEJAGqyKKGBV1spMJo/zEm9974xKinQaYxTf/Za0dqo+UIZzHWSs p8SK4dUKqzy8TJXhtwqLFRvkAknuzJ9oLsiKGc2r5Kju0Q+AlaLq0z1ixmhn0Xi+Z1s8 olTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=0BQDmv34wyVMx4obn1fqFEZa9pyMw3o6hJ+fsh6NgSM=; b=fdqvEDfjywI8qnQ3cQRD68t4JfY01pDVGgtdK7b8fx/26oPunTMLobCvuyiXiqVVnp uocwgswm7g90mSxZv23kZxCEv8dBwj/rV8mRw8ZKt/GpG82g9ASxkDgjweFWECdPSkdw 8brRcP2ORl7Um8R/zlkl8we8tApEfQTLuI9xbw4d7JA8ICVb6HZkw0lzGoNEkErj7rsP hdew94P4Y3/3HYTYW8DmScdL379ljyUM3f+HIOkRE5oM5hW+x5FuAE6pEkqyw+6MWmjl 8Wp7Q9gr0LqIq/6xgFMobiKp+1vI09pnBgYZvphcZJyElYoXxrEUlNzEPnyDUOtU0Q7Z ZPVw== X-Gm-Message-State: AOAM5314pfc6j7jrKeJ5/scsyQcI9zuTZsn0hVKBLwDYulleRqOBfiKz dl3nONAlPB95kbUGeIO4XGvZpg== X-Google-Smtp-Source: ABdhPJxGCzAWxekqR/1CB6I34OLmakcTvMrRIr9MdyRPb8GCN98mBQJtFdvPK8caFVS3lBNXTECOBA== X-Received: by 2002:a05:6e02:1b87:b0:2d6:5e74:217a with SMTP id h7-20020a056e021b8700b002d65e74217amr7584781ili.74.1654875982391; Fri, 10 Jun 2022 08:46:22 -0700 (PDT) Received: from localhost.localdomain (c-73-185-129-58.hsd1.mn.comcast.net. [73.185.129.58]) by smtp.gmail.com with ESMTPSA id y15-20020a92950f000000b002d3adf71893sm12100488ilh.20.2022.06.10.08.46.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jun 2022 08:46:22 -0700 (PDT) From: Alex Elder To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: mka@chromium.org, evgreen@chromium.org, bjorn.andersson@linaro.org, quic_cpratapa@quicinc.com, quic_avuyyuru@quicinc.com, quic_jponduru@quicinc.com, quic_subashab@quicinc.com, elder@kernel.org, netdev@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 3/6] net: ipa: rename endpoint->trans_tre_max Date: Fri, 10 Jun 2022 10:46:12 -0500 Message-Id: <20220610154616.249304-4-elder@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220610154616.249304-1-elder@linaro.org> References: <20220610154616.249304-1-elder@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org The trans_tre_max field of the IPA endpoint structure is only used to limit the number of fragments allowed for an SKB being prepared for transmission. Recognizing that, rename the field skb_frag_max, and reduce its value by 1. Signed-off-by: Alex Elder --- drivers/net/ipa/ipa_endpoint.c | 4 ++-- drivers/net/ipa/ipa_endpoint.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/ipa/ipa_endpoint.c b/drivers/net/ipa/ipa_endpoint.c index 57507a109269b..86ef91f83eb68 100644 --- a/drivers/net/ipa/ipa_endpoint.c +++ b/drivers/net/ipa/ipa_endpoint.c @@ -1020,7 +1020,7 @@ int ipa_endpoint_skb_tx(struct ipa_endpoint *endpoint, struct sk_buff *skb) * If not, see if we can linearize it before giving up. */ nr_frags = skb_shinfo(skb)->nr_frags; - if (1 + nr_frags > endpoint->trans_tre_max) { + if (nr_frags > endpoint->skb_frag_max) { if (skb_linearize(skb)) return -E2BIG; nr_frags = 0; @@ -1721,7 +1721,7 @@ static void ipa_endpoint_setup_one(struct ipa_endpoint *endpoint) if (endpoint->ee_id != GSI_EE_AP) return; - endpoint->trans_tre_max = gsi->channel[channel_id].trans_tre_max; + endpoint->skb_frag_max = gsi->channel[channel_id].trans_tre_max - 1; if (!endpoint->toward_ipa) { /* RX transactions require a single TRE, so the maximum * backlog is the same as the maximum outstanding TREs. diff --git a/drivers/net/ipa/ipa_endpoint.h b/drivers/net/ipa/ipa_endpoint.h index 01790c60bee8d..28e0a7386fd72 100644 --- a/drivers/net/ipa/ipa_endpoint.h +++ b/drivers/net/ipa/ipa_endpoint.h @@ -142,7 +142,7 @@ enum ipa_replenish_flag { * @endpoint_id: IPA endpoint number * @toward_ipa: Endpoint direction (true = TX, false = RX) * @config: Default endpoint configuration - * @trans_tre_max: Maximum number of TRE descriptors per transaction + * @skb_frag_max: Maximum allowed number of TX SKB fragments * @evt_ring_id: GSI event ring used by the endpoint * @netdev: Network device pointer, if endpoint uses one * @replenish_flags: Replenishing state flags @@ -157,7 +157,7 @@ struct ipa_endpoint { bool toward_ipa; struct ipa_endpoint_config config; - u32 trans_tre_max; + u32 skb_frag_max; /* Used for netdev TX only */ u32 evt_ring_id; /* Net device this endpoint is associated with, if any */ From patchwork Fri Jun 10 15:46:15 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Elder X-Patchwork-Id: 581297 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 01E84C43334 for ; Fri, 10 Jun 2022 15:47:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349255AbiFJPrJ (ORCPT ); Fri, 10 Jun 2022 11:47:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47160 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346031AbiFJPq3 (ORCPT ); Fri, 10 Jun 2022 11:46:29 -0400 Received: from mail-io1-xd33.google.com (mail-io1-xd33.google.com [IPv6:2607:f8b0:4864:20::d33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F31F562D5 for ; Fri, 10 Jun 2022 08:46:26 -0700 (PDT) Received: by mail-io1-xd33.google.com with SMTP id i16so5954438ioa.6 for ; Fri, 10 Jun 2022 08:46:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rzg7Iow9fAmaKgsdU7mGzgw2dtvwGPhEQmm7lb2v2dI=; b=Go3UU13RUL7Su3WFcFQZEQWn19aFNSiLMT4iZEqcX5aXxDh7U8Gg9rTXlMFcHMpOZ+ 0gHSPaiNYkNQujued/pPga7cYZNSq0DXDatYShLZXacJ7r/609m2c1xqjf513rhDAHi3 nf0WsnhopAGSDvCjKYrP/8t7+uhMOi9FVn9PYZ8soB5Os10HWdYQdYp6Atym4N5SdRPR 3/i8pF++h1oaRthygyMqzgxNRr6PsE3TH2F8Ik2VLWJjl9yua8b9Kfs0J+ZIz6tu0dUU jEFWqR9X96G/JWqNo3HyZmfYGWOrTKyNUfY3gBENo3tEuMWkQ3iQU2R/8/sWTuyKlijP iEoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=rzg7Iow9fAmaKgsdU7mGzgw2dtvwGPhEQmm7lb2v2dI=; b=g1k87noWTHqd5ncjGijxTM0OMa76WJ3r4UYbIBXh4zjxuIG2yvhlxtznRIlOEQpIiM wb6wDt3dBIn7RjuBivAemnTt9ZajK4zbwK4swVbm9NIF+t+ey/ec7KeazWJ06PhejCfF qGFmHAIRLaEe0R3jQXoHF00+630H6gHcW64DjVeI69Z/iVn2mAb09EQ60QKt747NMzDi z8wk9KpJ30/NnU96mYEar26hneY7aCh9orvYtVwvGaKPXsT3UK1AvrLoIac78B6yd8cN 8m+5yT61R98uDi1BTEKVs+VoDFCZHDVPgZpN5izRqXVj5nLP7sy7TEULVysf7kN9bj6j oOjw== X-Gm-Message-State: AOAM530kBTUgrR4twJDv7sfbkgYgDL+egyPsdEBvD5P9H+5LTI8JwQ4v GYfeivAheFfWryqlEf6Lb80/jw== X-Google-Smtp-Source: ABdhPJwwDcev7BFxOZ5NvJzSfIKGesXaHnnwWB1/bTwAMkR3fPANEeZunQbbYB4U6VSI1GWR+bqhhw== X-Received: by 2002:a05:6638:1346:b0:331:b571:9fd6 with SMTP id u6-20020a056638134600b00331b5719fd6mr14413045jad.266.1654875985510; Fri, 10 Jun 2022 08:46:25 -0700 (PDT) Received: from localhost.localdomain (c-73-185-129-58.hsd1.mn.comcast.net. [73.185.129.58]) by smtp.gmail.com with ESMTPSA id y15-20020a92950f000000b002d3adf71893sm12100488ilh.20.2022.06.10.08.46.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jun 2022 08:46:25 -0700 (PDT) From: Alex Elder To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com Cc: mka@chromium.org, evgreen@chromium.org, bjorn.andersson@linaro.org, quic_cpratapa@quicinc.com, quic_avuyyuru@quicinc.com, quic_jponduru@quicinc.com, quic_subashab@quicinc.com, elder@kernel.org, netdev@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next 6/6] net: ipa: derive channel from transaction Date: Fri, 10 Jun 2022 10:46:15 -0500 Message-Id: <20220610154616.249304-7-elder@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220610154616.249304-1-elder@linaro.org> References: <20220610154616.249304-1-elder@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org In gsi_channel_tx_queued(), we report when a transaction gets passed to hardware. Change that function so it takes transaction rather than a channel as its argument, and derive the channel from the transaction. Rename the function accordingly. Delete the header comments above the function definition; the ones above the declaration in "gsi_private.h" should suffice. In addition, the comments above gsi_channel_tx_update() do a fine job of explaining what's going on. Signed-off-by: Alex Elder --- drivers/net/ipa/gsi.c | 28 +++++++--------------------- drivers/net/ipa/gsi_private.h | 12 +++++------- drivers/net/ipa/gsi_trans.c | 2 +- 3 files changed, 13 insertions(+), 29 deletions(-) diff --git a/drivers/net/ipa/gsi.c b/drivers/net/ipa/gsi.c index 64417668b8a9a..5b446d2a07c8a 100644 --- a/drivers/net/ipa/gsi.c +++ b/drivers/net/ipa/gsi.c @@ -991,36 +991,22 @@ void gsi_resume(struct gsi *gsi) enable_irq(gsi->irq); } -/** - * gsi_channel_tx_queued() - Report queued TX transfers for a channel - * @channel: Channel for which to report - * - * Report to the network stack the number of bytes and transactions that - * have been queued to hardware since last call. This and the next function - * supply information used by the network stack for throttling. - * - * For each channel we track the number of transactions used and bytes of - * data those transactions represent. We also track what those values are - * each time this function is called. Subtracting the two tells us - * the number of bytes and transactions that have been added between - * successive calls. - * - * Calling this each time we ring the channel doorbell allows us to - * provide accurate information to the network stack about how much - * work we've given the hardware at any point in time. - */ -void gsi_channel_tx_queued(struct gsi_channel *channel) +void gsi_trans_tx_queued(struct gsi_trans *trans) { + u32 channel_id = trans->channel_id; + struct gsi *gsi = trans->gsi; + struct gsi_channel *channel; u32 trans_count; u32 byte_count; + channel = &gsi->channel[channel_id]; + byte_count = channel->byte_count - channel->queued_byte_count; trans_count = channel->trans_count - channel->queued_trans_count; channel->queued_byte_count = channel->byte_count; channel->queued_trans_count = channel->trans_count; - ipa_gsi_channel_tx_queued(channel->gsi, gsi_channel_id(channel), - trans_count, byte_count); + ipa_gsi_channel_tx_queued(gsi, channel_id, trans_count, byte_count); } /** diff --git a/drivers/net/ipa/gsi_private.h b/drivers/net/ipa/gsi_private.h index ea333a244cf5e..56450a1899074 100644 --- a/drivers/net/ipa/gsi_private.h +++ b/drivers/net/ipa/gsi_private.h @@ -105,14 +105,12 @@ void gsi_channel_doorbell(struct gsi_channel *channel); void *gsi_ring_virt(struct gsi_ring *ring, u32 index); /** - * gsi_channel_tx_queued() - Report the number of bytes queued to hardware - * @channel: Channel whose bytes have been queued + * gsi_trans_tx_queued() - Report a queued TX channel transaction + * @trans: Transaction being passed to hardware * - * This arranges for the the number of transactions and bytes for - * transfer that have been queued to hardware to be reported. It - * passes this information up the network stack so it can be used to - * throttle transmissions. + * Report to the network stack that a TX transaction is being supplied + * to the hardware. */ -void gsi_channel_tx_queued(struct gsi_channel *channel); +void gsi_trans_tx_queued(struct gsi_trans *trans); #endif /* _GSI_PRIVATE_H_ */ diff --git a/drivers/net/ipa/gsi_trans.c b/drivers/net/ipa/gsi_trans.c index 870a4c1752838..278e467c5430b 100644 --- a/drivers/net/ipa/gsi_trans.c +++ b/drivers/net/ipa/gsi_trans.c @@ -603,7 +603,7 @@ static void __gsi_trans_commit(struct gsi_trans *trans, bool ring_db) if (ring_db || !atomic_read(&channel->trans_info.tre_avail)) { /* Report what we're handing off to hardware for TX channels */ if (channel->toward_ipa) - gsi_channel_tx_queued(channel); + gsi_trans_tx_queued(trans); gsi_channel_doorbell(channel); } }