net: ipa: rename channel->tlv_count
authorAlex Elder <elder@linaro.org>
Fri, 10 Jun 2022 15:46:11 +0000 (10:46 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 13 Jun 2022 11:01:58 +0000 (12:01 +0100)
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 <elder@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ipa/gsi.c
drivers/net/ipa/gsi.h
drivers/net/ipa/gsi_trans.c
drivers/net/ipa/ipa_cmd.c
drivers/net/ipa/ipa_endpoint.c

index 65ed5a6..b1acc7d 100644 (file)
@@ -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);
 }
index 5d66116..89dac7f 100644 (file)
@@ -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;
 
@@ -189,15 +189,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
  * @channel_id:        Channel to start
index 55f8fe7..870a4c1 100644 (file)
@@ -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;
 
index e58cd44..6dea402 100644 (file)
@@ -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)
index d3b3255..57507a1 100644 (file)
@@ -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.