lkml.org 
[lkml]   [2022]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH net-next 02/10] net: ipa: allocate transaction before pages when replenishing
Date
A transaction failure only occurs if no more transactions are
available for an endpoint. It's a very cheap test.

When replenishing an RX endpoint buffer, there's no point in
allocating pages if transactions are exhausted. So don't bother
doing so unless the transaction allocation succeeds.

Signed-off-by: Alex Elder <elder@linaro.org>
---
drivers/net/ipa/ipa_endpoint.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ipa/ipa_endpoint.c b/drivers/net/ipa/ipa_endpoint.c
index a9f6d4083f869..f8dbd43949e16 100644
--- a/drivers/net/ipa/ipa_endpoint.c
+++ b/drivers/net/ipa/ipa_endpoint.c
@@ -1046,14 +1046,14 @@ static int ipa_endpoint_replenish_one(struct ipa_endpoint *endpoint)
u32 len;
int ret;

+ trans = ipa_endpoint_trans_alloc(endpoint, 1);
+ if (!trans)
+ return -ENOMEM;
+
buffer_size = endpoint->data->rx.buffer_size;
page = dev_alloc_pages(get_order(buffer_size));
if (!page)
- return -ENOMEM;
-
- trans = ipa_endpoint_trans_alloc(endpoint, 1);
- if (!trans)
- goto err_free_pages;
+ goto err_trans_free;

/* Offset the buffer to make space for skb headroom */
offset = NET_SKB_PAD;
@@ -1061,7 +1061,7 @@ static int ipa_endpoint_replenish_one(struct ipa_endpoint *endpoint)

ret = gsi_trans_page_add(trans, page, len, offset);
if (ret)
- goto err_trans_free;
+ goto err_free_pages;
trans->data = page; /* transaction owns page now */

if (++endpoint->replenish_ready == IPA_REPLENISH_BATCH) {
@@ -1073,10 +1073,10 @@ static int ipa_endpoint_replenish_one(struct ipa_endpoint *endpoint)

return 0;

-err_trans_free:
- gsi_trans_free(trans);
err_free_pages:
__free_pages(page, get_order(buffer_size));
+err_trans_free:
+ gsi_trans_free(trans);

return -ENOMEM;
}
--
2.32.0
\
 
 \ /
  Last update: 2022-02-03 18:10    [W:0.186 / U:0.564 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site