mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 06:01:53 +02:00
net/mlx5e: Introduce mlx5e_channels API to get RQNs
Currently, struct mlx5e_channels is defined in en.h, along with a lot of other stuff. In the following commit mlx5e_rx_res will need to get RQNs (RQ hardware IDs), given a pointer to mlx5e_channels and the channel index. In order to make it possible without including the whole en.h, this commit introduces functions that will hide the implementation details of mlx5e_channels. Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com> Reviewed-by: Tariq Toukan <tariqt@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
43befe99bc
commit
e6e01b5fdc
|
|
@ -28,7 +28,7 @@ mlx5_core-$(CONFIG_MLX5_CORE_EN) += en_main.o en_common.o en_fs.o en_ethtool.o \
|
|||
en/reporter_tx.o en/reporter_rx.o en/params.o en/xsk/pool.o \
|
||||
en/xsk/setup.o en/xsk/rx.o en/xsk/tx.o en/devlink.o en/ptp.o \
|
||||
en/qos.o en/trap.o en/fs_tt_redirect.o en/rqt.o en/tir.o \
|
||||
en/rx_res.o
|
||||
en/rx_res.o en/channels.o
|
||||
|
||||
#
|
||||
# Netdev extra
|
||||
|
|
|
|||
46
drivers/net/ethernet/mellanox/mlx5/core/en/channels.c
Normal file
46
drivers/net/ethernet/mellanox/mlx5/core/en/channels.c
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
|
||||
/* Copyright (c) 2021, Mellanox Technologies inc. All rights reserved. */
|
||||
|
||||
#include "channels.h"
|
||||
#include "en.h"
|
||||
#include "en/ptp.h"
|
||||
|
||||
unsigned int mlx5e_channels_get_num(struct mlx5e_channels *chs)
|
||||
{
|
||||
return chs->num;
|
||||
}
|
||||
|
||||
void mlx5e_channels_get_regular_rqn(struct mlx5e_channels *chs, unsigned int ix, u32 *rqn)
|
||||
{
|
||||
struct mlx5e_channel *c;
|
||||
|
||||
WARN_ON(ix >= mlx5e_channels_get_num(chs));
|
||||
c = chs->c[ix];
|
||||
|
||||
*rqn = c->rq.rqn;
|
||||
}
|
||||
|
||||
bool mlx5e_channels_get_xsk_rqn(struct mlx5e_channels *chs, unsigned int ix, u32 *rqn)
|
||||
{
|
||||
struct mlx5e_channel *c;
|
||||
|
||||
WARN_ON(ix >= mlx5e_channels_get_num(chs));
|
||||
c = chs->c[ix];
|
||||
|
||||
if (!test_bit(MLX5E_CHANNEL_STATE_XSK, c->state))
|
||||
return false;
|
||||
|
||||
*rqn = c->xskrq.rqn;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool mlx5e_channels_get_ptp_rqn(struct mlx5e_channels *chs, u32 *rqn)
|
||||
{
|
||||
struct mlx5e_ptp *c = chs->ptp;
|
||||
|
||||
if (!c || !test_bit(MLX5E_PTP_STATE_RX, c->state))
|
||||
return false;
|
||||
|
||||
*rqn = c->rq.rqn;
|
||||
return true;
|
||||
}
|
||||
16
drivers/net/ethernet/mellanox/mlx5/core/en/channels.h
Normal file
16
drivers/net/ethernet/mellanox/mlx5/core/en/channels.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
|
||||
/* Copyright (c) 2021, Mellanox Technologies inc. All rights reserved. */
|
||||
|
||||
#ifndef __MLX5_EN_CHANNELS_H__
|
||||
#define __MLX5_EN_CHANNELS_H__
|
||||
|
||||
#include <linux/kernel.h>
|
||||
|
||||
struct mlx5e_channels;
|
||||
|
||||
unsigned int mlx5e_channels_get_num(struct mlx5e_channels *chs);
|
||||
void mlx5e_channels_get_regular_rqn(struct mlx5e_channels *chs, unsigned int ix, u32 *rqn);
|
||||
bool mlx5e_channels_get_xsk_rqn(struct mlx5e_channels *chs, unsigned int ix, u32 *rqn);
|
||||
bool mlx5e_channels_get_ptp_rqn(struct mlx5e_channels *chs, u32 *rqn);
|
||||
|
||||
#endif /* __MLX5_EN_CHANNELS_H__ */
|
||||
Loading…
Reference in New Issue
Block a user