mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
This patch continues the effort to refactor workqueue APIs, which has begun with the changes introducing new workqueues and a new alloc_workqueue flag: commit128ea9f6cc("workqueue: Add system_percpu_wq and system_dfl_wq") commit930c2ea566("workqueue: Add new WQ_PERCPU flag") The point of the refactoring is to eventually alter the default behavior of workqueues to become unbound by default so that their workload placement is optimized by the scheduler. Before that to happen, workqueue users must be converted to the better named new workqueues with no intended behaviour changes: system_wq -> system_percpu_wq system_unbound_wq -> system_dfl_wq This way the old obsolete workqueues (system_wq, system_unbound_wq) can be removed in the future. This specific driver already allocate an unbound workqueue named "rxe_wq", so replace system_unbound_wq with this one instead of system_dfl_wq. Link: https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/ Suggested-by: Tejun Heo <tj@kernel.org> Signed-off-by: Marco Crivellari <marco.crivellari@suse.com> Link: https://patch.msgid.link/20260318152748.837388-1-marco.crivellari@suse.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
127 lines
5.3 KiB
C
127 lines
5.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
|
|
/*
|
|
* Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
|
|
* Copyright (c) 2015 System Fabric Works, Inc. All rights reserved.
|
|
*/
|
|
|
|
#ifndef RXE_H
|
|
#define RXE_H
|
|
|
|
#ifdef pr_fmt
|
|
#undef pr_fmt
|
|
#endif
|
|
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
|
|
|
#include <linux/skbuff.h>
|
|
|
|
#include <rdma/ib_verbs.h>
|
|
#include <rdma/ib_user_verbs.h>
|
|
#include <rdma/ib_pack.h>
|
|
#include <rdma/ib_smi.h>
|
|
#include <rdma/ib_umem.h>
|
|
#include <rdma/ib_cache.h>
|
|
#include <rdma/ib_addr.h>
|
|
|
|
#include "rxe_net.h"
|
|
#include "rxe_opcode.h"
|
|
#include "rxe_hdr.h"
|
|
#include "rxe_param.h"
|
|
#include "rxe_verbs.h"
|
|
#include "rxe_loc.h"
|
|
|
|
/*
|
|
* Version 1 and Version 2 are identical on 64 bit machines, but on 32 bit
|
|
* machines Version 2 has a different struct layout.
|
|
*/
|
|
#define RXE_UVERBS_ABI_VERSION 2
|
|
|
|
#define RXE_ROCE_V2_SPORT (0xc000)
|
|
|
|
#define rxe_dbg(fmt, ...) pr_debug("%s: " fmt, __func__, ##__VA_ARGS__)
|
|
#define rxe_dbg_dev(rxe, fmt, ...) ibdev_dbg(&(rxe)->ib_dev, \
|
|
"%s: " fmt, __func__, ##__VA_ARGS__)
|
|
#define rxe_dbg_uc(uc, fmt, ...) ibdev_dbg((uc)->ibuc.device, \
|
|
"uc#%d %s: " fmt, (uc)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_dbg_pd(pd, fmt, ...) ibdev_dbg((pd)->ibpd.device, \
|
|
"pd#%d %s: " fmt, (pd)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_dbg_ah(ah, fmt, ...) ibdev_dbg((ah)->ibah.device, \
|
|
"ah#%d %s: " fmt, (ah)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_dbg_srq(srq, fmt, ...) ibdev_dbg((srq)->ibsrq.device, \
|
|
"srq#%d %s: " fmt, (srq)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_dbg_qp(qp, fmt, ...) ibdev_dbg((qp)->ibqp.device, \
|
|
"qp#%d %s: " fmt, (qp)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_dbg_cq(cq, fmt, ...) ibdev_dbg((cq)->ibcq.device, \
|
|
"cq#%d %s: " fmt, (cq)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_dbg_mr(mr, fmt, ...) ibdev_dbg((mr)->ibmr.device, \
|
|
"mr#%d %s: " fmt, (mr)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_dbg_mw(mw, fmt, ...) ibdev_dbg((mw)->ibmw.device, \
|
|
"mw#%d %s: " fmt, (mw)->elem.index, __func__, ##__VA_ARGS__)
|
|
|
|
#define rxe_err(fmt, ...) pr_err_ratelimited("%s: " fmt, __func__, \
|
|
##__VA_ARGS__)
|
|
#define rxe_err_dev(rxe, fmt, ...) ibdev_err_ratelimited(&(rxe)->ib_dev, \
|
|
"%s: " fmt, __func__, ##__VA_ARGS__)
|
|
#define rxe_err_uc(uc, fmt, ...) ibdev_err_ratelimited((uc)->ibuc.device, \
|
|
"uc#%d %s: " fmt, (uc)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_err_pd(pd, fmt, ...) ibdev_err_ratelimited((pd)->ibpd.device, \
|
|
"pd#%d %s: " fmt, (pd)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_err_ah(ah, fmt, ...) ibdev_err_ratelimited((ah)->ibah.device, \
|
|
"ah#%d %s: " fmt, (ah)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_err_srq(srq, fmt, ...) ibdev_err_ratelimited((srq)->ibsrq.device, \
|
|
"srq#%d %s: " fmt, (srq)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_err_qp(qp, fmt, ...) ibdev_err_ratelimited((qp)->ibqp.device, \
|
|
"qp#%d %s: " fmt, (qp)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_err_cq(cq, fmt, ...) ibdev_err_ratelimited((cq)->ibcq.device, \
|
|
"cq#%d %s: " fmt, (cq)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_err_mr(mr, fmt, ...) ibdev_err_ratelimited((mr)->ibmr.device, \
|
|
"mr#%d %s: " fmt, (mr)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_err_mw(mw, fmt, ...) ibdev_err_ratelimited((mw)->ibmw.device, \
|
|
"mw#%d %s: " fmt, (mw)->elem.index, __func__, ##__VA_ARGS__)
|
|
|
|
#define rxe_info(fmt, ...) pr_info_ratelimited("%s: " fmt, __func__, \
|
|
##__VA_ARGS__)
|
|
#define rxe_info_dev(rxe, fmt, ...) ibdev_info_ratelimited(&(rxe)->ib_dev, \
|
|
"%s: " fmt, __func__, ##__VA_ARGS__)
|
|
#define rxe_info_uc(uc, fmt, ...) ibdev_info_ratelimited((uc)->ibuc.device, \
|
|
"uc#%d %s: " fmt, (uc)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_info_pd(pd, fmt, ...) ibdev_info_ratelimited((pd)->ibpd.device, \
|
|
"pd#%d %s: " fmt, (pd)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_info_ah(ah, fmt, ...) ibdev_info_ratelimited((ah)->ibah.device, \
|
|
"ah#%d %s: " fmt, (ah)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_info_srq(srq, fmt, ...) ibdev_info_ratelimited((srq)->ibsrq.device, \
|
|
"srq#%d %s: " fmt, (srq)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_info_qp(qp, fmt, ...) ibdev_info_ratelimited((qp)->ibqp.device, \
|
|
"qp#%d %s: " fmt, (qp)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_info_cq(cq, fmt, ...) ibdev_info_ratelimited((cq)->ibcq.device, \
|
|
"cq#%d %s: " fmt, (cq)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_info_mr(mr, fmt, ...) ibdev_info_ratelimited((mr)->ibmr.device, \
|
|
"mr#%d %s: " fmt, (mr)->elem.index, __func__, ##__VA_ARGS__)
|
|
#define rxe_info_mw(mw, fmt, ...) ibdev_info_ratelimited((mw)->ibmw.device, \
|
|
"mw#%d %s: " fmt, (mw)->elem.index, __func__, ##__VA_ARGS__)
|
|
|
|
void rxe_set_mtu(struct rxe_dev *rxe, unsigned int dev_mtu);
|
|
|
|
int rxe_add(struct rxe_dev *rxe, unsigned int mtu, const char *ibdev_name,
|
|
struct net_device *ndev);
|
|
|
|
void rxe_rcv(struct sk_buff *skb);
|
|
|
|
/* The caller must do a matching ib_device_put(&dev->ib_dev) */
|
|
static inline struct rxe_dev *rxe_get_dev_from_net(struct net_device *ndev)
|
|
{
|
|
struct ib_device *ibdev =
|
|
ib_device_get_by_netdev(ndev, RDMA_DRIVER_RXE);
|
|
|
|
if (!ibdev)
|
|
return NULL;
|
|
return container_of(ibdev, struct rxe_dev, ib_dev);
|
|
}
|
|
|
|
void rxe_port_up(struct rxe_dev *rxe);
|
|
void rxe_port_down(struct rxe_dev *rxe);
|
|
void rxe_set_port_state(struct rxe_dev *rxe);
|
|
|
|
extern struct workqueue_struct *rxe_wq;
|
|
|
|
#endif /* RXE_H */
|