__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
/* Copyright (c) 2018 Mellanox Technologies. */
#ifndef MLX5_CORE_EQ_H
#define MLX5_CORE_EQ_H
#define MLX5_NUM_CMD_EQE (32)
#define MLX5_NUM_ASYNC_EQE (0x1000)
#define MLX5_NUM_SPARE_EQE (0x80)
struct mlx5_eq;
struct mlx5_irq;
struct mlx5_core_dev;
struct mlx5_eq_param {
int nent;
u64 mask[4];
struct mlx5_irq *irq;
};
struct mlx5_eq *
mlx5_eq_create_generic(struct mlx5_core_dev *dev, struct mlx5_eq_param *param);
int
mlx5_eq_destroy_generic(struct mlx5_core_dev *dev, struct mlx5_eq *eq);
int mlx5_eq_enable(struct mlx5_core_dev *dev, struct mlx5_eq *eq,
struct notifier_block *nb);
void mlx5_eq_disable(struct mlx5_core_dev *dev, struct mlx5_eq *eq,
struct notifier_block *nb);
struct mlx5_eqe *mlx5_eq_get_eqe(struct mlx5_eq *eq, u32 cc);
void mlx5_eq_update_ci(struct mlx5_eq *eq, u32 cc, bool arm);
/* The HCA will think the queue has overflowed if we
* don't tell it we've been processing events. We
* create EQs with MLX5_NUM_SPARE_EQE extra entries,
* so we must update our consumer index at
* least that often.
*
* mlx5_eq_update_cc must be called on every EQE @EQ irq handler
*/
static inline u32 mlx5_eq_update_cc(struct mlx5_eq *eq, u32 cc)
{
if (unlikely(cc >= MLX5_NUM_SPARE_EQE)) {
mlx5_eq_update_ci(eq, cc, 0);
cc = 0;
}
return cc;
}
struct mlx5_nb {
struct notifier_block nb;
u8 event_type;
};
#define mlx5_nb_cof(ptr, type, member) \
(container_of(container_of(ptr, struct mlx5_nb, nb), type, member))
#define MLX5_NB_INIT(name, handler, event) do { \
(name)->nb.notifier_call = handler; \
(name)->event_type = MLX5_EVENT_TYPE_##event; \
} while (0)
#endif /* MLX5_CORE_EQ_H */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| cq.h | File | 5.81 KB | 0644 |
|
| device.h | File | 38.48 KB | 0644 |
|
| doorbell.h | File | 2.22 KB | 0644 |
|
| driver.h | File | 36.17 KB | 0644 |
|
| eq.h | File | 1.72 KB | 0644 |
|
| eswitch.h | File | 6.9 KB | 0644 |
|
| fs.h | File | 9.83 KB | 0644 |
|
| fs_helpers.h | File | 2.91 KB | 0644 |
|
| macsec.h | File | 1.06 KB | 0644 |
|
| mlx5_ifc.h | File | 311.09 KB | 0644 |
|
| mlx5_ifc_fpga.h | File | 8.86 KB | 0644 |
|
| mlx5_ifc_vdpa.h | File | 5.61 KB | 0644 |
|
| mpfs.h | File | 540 B | 0644 |
|
| port.h | File | 8.05 KB | 0644 |
|
| qp.h | File | 12.57 KB | 0644 |
|
| rsc_dump.h | File | 1.26 KB | 0644 |
|
| transobj.h | File | 3.48 KB | 0644 |
|
| vport.h | File | 5.66 KB | 0644 |
|