From: Saeed Mahameed <saeed@kernel.org>
To: "David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>
Cc: netdev@vger.kernel.org, Tariq Toukan <tariqt@nvidia.com>,
Eli Cohen <elic@nvidia.com>, Saeed Mahameed <saeedm@nvidia.com>
Subject: [net-next 17/17] net/mlx5: Improve performance in SF allocation
Date: Wed, 26 May 2021 21:36:09 -0700 [thread overview]
Message-ID: <20210527043609.654854-18-saeed@kernel.org> (raw)
In-Reply-To: <20210527043609.654854-1-saeed@kernel.org>
From: Eli Cohen <elic@nvidia.com>
Avoid second traversal on the SF table by recording the first free entry
and using it in case the looked up entry was not found in the table.
Signed-off-by: Eli Cohen <elic@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
---
.../ethernet/mellanox/mlx5/core/sf/hw_table.c | 23 +++++++++++--------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/sf/hw_table.c b/drivers/net/ethernet/mellanox/mlx5/core/sf/hw_table.c
index ef5f892aafad..0c1fbf711fe6 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/sf/hw_table.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/sf/hw_table.c
@@ -74,26 +74,29 @@ static int mlx5_sf_hw_table_id_alloc(struct mlx5_sf_hw_table *table, u32 control
u32 usr_sfnum)
{
struct mlx5_sf_hwc_table *hwc;
+ int free_idx = -1;
int i;
hwc = mlx5_sf_controller_to_hwc(table->dev, controller);
if (!hwc->sfs)
return -ENOSPC;
- /* Check if sf with same sfnum already exists or not. */
- for (i = 0; i < hwc->max_fn; i++) {
- if (hwc->sfs[i].allocated && hwc->sfs[i].usr_sfnum == usr_sfnum)
- return -EEXIST;
- }
- /* Find the free entry and allocate the entry from the array */
for (i = 0; i < hwc->max_fn; i++) {
if (!hwc->sfs[i].allocated) {
- hwc->sfs[i].usr_sfnum = usr_sfnum;
- hwc->sfs[i].allocated = true;
- return i;
+ free_idx = free_idx == -1 ? i : -1;
+ continue;
}
+
+ if (hwc->sfs[i].usr_sfnum == usr_sfnum)
+ return -EEXIST;
}
- return -ENOSPC;
+
+ if (free_idx == -1)
+ return -ENOSPC;
+
+ hwc->sfs[free_idx].usr_sfnum = usr_sfnum;
+ hwc->sfs[free_idx].allocated = true;
+ return 0;
}
static void mlx5_sf_hw_table_id_free(struct mlx5_sf_hw_table *table, u32 controller, int id)
--
2.31.1
next prev parent reply other threads:[~2021-05-27 4:37 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-27 4:35 [pull request][net-next 00/17] mlx5 misc updates 2021-05-26 Saeed Mahameed
2021-05-27 4:35 ` [net-next 01/17] net/mlx5e: CT, Remove newline from ct_dbg call Saeed Mahameed
2021-05-27 4:35 ` [net-next 02/17] net/mlx5: CT: Avoid reusing modify header context for natted entries Saeed Mahameed
2021-05-27 4:35 ` [net-next 03/17] net/mlx5e: TC: Use bit counts for register mapping Saeed Mahameed
2021-05-27 4:35 ` [net-next 04/17] net/mlx5e: TC: Reserved bit 31 of REG_C1 for IPsec offload Saeed Mahameed
2021-05-27 4:35 ` [net-next 05/17] net/mlx5e: IPsec/rep_tc: Fix rep_tc_update_skb drops IPsec packet Saeed Mahameed
2021-05-27 4:35 ` [net-next 06/17] net/mlx5e: RX, Remove unnecessary check in RX CQE compression handling Saeed Mahameed
2021-05-27 4:35 ` [net-next 07/17] net/mlx5: DR, Remove unused field of send_ring struct Saeed Mahameed
2021-05-27 4:36 ` [net-next 08/17] net/mlx5: Add case for FS_FT_NIC_TX FT in MLX5_CAP_FLOWTABLE_TYPE Saeed Mahameed
2021-05-27 4:36 ` [net-next 09/17] net/mlx5: Move table size calculation to steering cmd layer Saeed Mahameed
2021-05-27 4:36 ` [net-next 10/17] net/mlx5: Move chains ft pool to be used by all firmware steering Saeed Mahameed
2021-05-27 4:36 ` [net-next 11/17] net/mlx5: DR, Set max table size to 2G entries Saeed Mahameed
2021-05-27 4:36 ` [net-next 12/17] net/mlx5: Cap the maximum flow group size to 16M entries Saeed Mahameed
2021-05-27 4:36 ` [net-next 13/17] net/mlx5: Remove unnecessary spin lock protection Saeed Mahameed
2021-05-27 4:36 ` [net-next 14/17] net/mlx5: Use boolean arithmetic to evaluate roce_lag Saeed Mahameed
2021-05-27 4:36 ` [net-next 15/17] net/mlx5: Fix lag port remapping logic Saeed Mahameed
2021-05-27 4:36 ` [net-next 16/17] net/mlx5: Ensure SF BAR size is at least PAGE_SIZE Saeed Mahameed
2021-05-27 7:38 ` Parav Pandit
2021-05-27 4:36 ` Saeed Mahameed [this message]
2021-05-27 5:36 ` [net-next 17/17] net/mlx5: Improve performance in SF allocation Parav Pandit
2021-05-27 18:52 ` Saeed Mahameed
2021-05-28 3:42 ` Parav Pandit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210527043609.654854-18-saeed@kernel.org \
--to=saeed@kernel.org \
--cc=davem@davemloft.net \
--cc=elic@nvidia.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=saeedm@nvidia.com \
--cc=tariqt@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.