Commit 01d63c6a authored by wenglianfa's avatar wenglianfa Committed by Juan Zhou
Browse files

RDMA/core: Add dedicated SRQ resource tracker function

mainline inclusion
from mainline-v6.7-rc1
commit 0e32d7d43b0b2d870b45cf4dff8188203800aa91
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I8ZWK5
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e32d7d43b0b2d870b45cf4dff8188203800aa91



----------------------------------------------------------------------

Add a dedicated callback function for SRQ resource tracker.

Signed-off-by: default avatarwenglianfa <wenglianfa@huawei.com>
Link: https://lore.kernel.org/r/20230918131110.3987498-2-huangjunxian6@hisilicon.com


Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarJuan Zhou <zhoujuan51@h-partners.com>
parent 9db52615
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2651,6 +2651,7 @@ void ib_set_device_ops(struct ib_device *dev, const struct ib_device_ops *ops)
	SET_DEVICE_OP(dev_ops, fill_res_mr_entry_raw);
	SET_DEVICE_OP(dev_ops, fill_res_qp_entry);
	SET_DEVICE_OP(dev_ops, fill_res_qp_entry_raw);
	SET_DEVICE_OP(dev_ops, fill_res_srq_entry);
	SET_DEVICE_OP(dev_ops, fill_stat_mr_entry);
	SET_DEVICE_OP(dev_ops, get_dev_fw_str);
	SET_DEVICE_OP(dev_ops, get_dma_mr);
+8 −1
Original line number Diff line number Diff line
@@ -818,6 +818,7 @@ static int fill_res_srq_entry(struct sk_buff *msg, bool has_cap_net_admin,
			      struct rdma_restrack_entry *res, uint32_t port)
{
	struct ib_srq *srq = container_of(res, struct ib_srq, res);
	struct ib_device *dev = srq->device;

	if (nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_SRQN, srq->res.id))
		goto err;
@@ -837,7 +838,13 @@ static int fill_res_srq_entry(struct sk_buff *msg, bool has_cap_net_admin,
	if (fill_res_srq_qps(msg, srq))
		goto err;

	return fill_res_name_pid(msg, res);
	if (fill_res_name_pid(msg, res))
		goto err;

	if (dev->ops.fill_res_srq_entry)
		return dev->ops.fill_res_srq_entry(msg, srq);

	return 0;

err:
	return -EMSGSIZE;
+1 −0
Original line number Diff line number Diff line
@@ -2608,6 +2608,7 @@ struct ib_device_ops {
	int (*fill_res_qp_entry)(struct sk_buff *msg, struct ib_qp *ibqp);
	int (*fill_res_qp_entry_raw)(struct sk_buff *msg, struct ib_qp *ibqp);
	int (*fill_res_cm_id_entry)(struct sk_buff *msg, struct rdma_cm_id *id);
	int (*fill_res_srq_entry)(struct sk_buff *msg, struct ib_srq *ib_srq);

	/* Device lifecycle callbacks */
	/*