📄 mthca_dev.h
字号:
int hca_type; unsigned long mthca_flags; unsigned long device_cap_flags; u32 rev_id; char board_id[MTHCA_BOARD_ID_LEN]; /* firmware info */ u64 fw_ver; union { struct { u64 fw_start; u64 fw_end; } tavor; struct { u64 clr_int_base; u64 eq_arm_base; u64 eq_set_ci_base; struct mthca_icm *fw_icm; struct mthca_icm *aux_icm; u16 fw_pages; } arbel; } fw; u64 ddr_start; u64 ddr_end; MTHCA_DECLARE_DOORBELL_LOCK(doorbell_lock) struct semaphore cap_mask_mutex; void __iomem *hcr; void __iomem *kar; void __iomem *clr_base; union { struct { void __iomem *ecr_base; } tavor; struct { void __iomem *eq_arm; void __iomem *eq_set_ci_base; } arbel; } eq_regs; struct mthca_cmd cmd; struct mthca_limits limits; struct mthca_uar_table uar_table; struct mthca_pd_table pd_table; struct mthca_mr_table mr_table; struct mthca_eq_table eq_table; struct mthca_cq_table cq_table; struct mthca_srq_table srq_table; struct mthca_qp_table qp_table; struct mthca_av_table av_table; struct mthca_mcg_table mcg_table; struct mthca_catas_err catas_err; struct mthca_uar driver_uar; struct mthca_db_table *db_tab; struct mthca_pd driver_pd; struct mthca_mr driver_mr; struct ib_mad_agent *send_agent[MTHCA_MAX_PORTS][2]; struct ib_ah *sm_ah[MTHCA_MAX_PORTS]; spinlock_t sm_lock;};#define mthca_dbg(mdev, format, arg...) \ dev_dbg(&mdev->pdev->dev, format, ## arg)#define mthca_err(mdev, format, arg...) \ dev_err(&mdev->pdev->dev, format, ## arg)#define mthca_info(mdev, format, arg...) \ dev_info(&mdev->pdev->dev, format, ## arg)#define mthca_warn(mdev, format, arg...) \ dev_warn(&mdev->pdev->dev, format, ## arg)extern void __buggy_use_of_MTHCA_GET(void);extern void __buggy_use_of_MTHCA_PUT(void);#define MTHCA_GET(dest, source, offset) \ do { \ void *__p = (char *) (source) + (offset); \ switch (sizeof (dest)) { \ case 1: (dest) = *(u8 *) __p; break; \ case 2: (dest) = be16_to_cpup(__p); break; \ case 4: (dest) = be32_to_cpup(__p); break; \ case 8: (dest) = be64_to_cpup(__p); break; \ default: __buggy_use_of_MTHCA_GET(); \ } \ } while (0)#define MTHCA_PUT(dest, source, offset) \ do { \ void *__d = ((char *) (dest) + (offset)); \ switch (sizeof(source)) { \ case 1: *(u8 *) __d = (source); break; \ case 2: *(__be16 *) __d = cpu_to_be16(source); break; \ case 4: *(__be32 *) __d = cpu_to_be32(source); break; \ case 8: *(__be64 *) __d = cpu_to_be64(source); break; \ default: __buggy_use_of_MTHCA_PUT(); \ } \ } while (0)int mthca_reset(struct mthca_dev *mdev);u32 mthca_alloc(struct mthca_alloc *alloc);void mthca_free(struct mthca_alloc *alloc, u32 obj);int mthca_alloc_init(struct mthca_alloc *alloc, u32 num, u32 mask, u32 reserved);void mthca_alloc_cleanup(struct mthca_alloc *alloc);void *mthca_array_get(struct mthca_array *array, int index);int mthca_array_set(struct mthca_array *array, int index, void *value);void mthca_array_clear(struct mthca_array *array, int index);int mthca_array_init(struct mthca_array *array, int nent);void mthca_array_cleanup(struct mthca_array *array, int nent);int mthca_buf_alloc(struct mthca_dev *dev, int size, int max_direct, union mthca_buf *buf, int *is_direct, struct mthca_pd *pd, int hca_write, struct mthca_mr *mr);void mthca_buf_free(struct mthca_dev *dev, int size, union mthca_buf *buf, int is_direct, struct mthca_mr *mr);int mthca_init_uar_table(struct mthca_dev *dev);int mthca_init_pd_table(struct mthca_dev *dev);int mthca_init_mr_table(struct mthca_dev *dev);int mthca_init_eq_table(struct mthca_dev *dev);int mthca_init_cq_table(struct mthca_dev *dev);int mthca_init_srq_table(struct mthca_dev *dev);int mthca_init_qp_table(struct mthca_dev *dev);int mthca_init_av_table(struct mthca_dev *dev);int mthca_init_mcg_table(struct mthca_dev *dev);void mthca_cleanup_uar_table(struct mthca_dev *dev);void mthca_cleanup_pd_table(struct mthca_dev *dev);void mthca_cleanup_mr_table(struct mthca_dev *dev);void mthca_cleanup_eq_table(struct mthca_dev *dev);void mthca_cleanup_cq_table(struct mthca_dev *dev);void mthca_cleanup_srq_table(struct mthca_dev *dev);void mthca_cleanup_qp_table(struct mthca_dev *dev);void mthca_cleanup_av_table(struct mthca_dev *dev);void mthca_cleanup_mcg_table(struct mthca_dev *dev);int mthca_register_device(struct mthca_dev *dev);void mthca_unregister_device(struct mthca_dev *dev);void mthca_start_catas_poll(struct mthca_dev *dev);void mthca_stop_catas_poll(struct mthca_dev *dev);int mthca_uar_alloc(struct mthca_dev *dev, struct mthca_uar *uar);void mthca_uar_free(struct mthca_dev *dev, struct mthca_uar *uar);int mthca_pd_alloc(struct mthca_dev *dev, int privileged, struct mthca_pd *pd);void mthca_pd_free(struct mthca_dev *dev, struct mthca_pd *pd);struct mthca_mtt *mthca_alloc_mtt(struct mthca_dev *dev, int size);void mthca_free_mtt(struct mthca_dev *dev, struct mthca_mtt *mtt);int mthca_write_mtt(struct mthca_dev *dev, struct mthca_mtt *mtt, int start_index, u64 *buffer_list, int list_len);int mthca_mr_alloc(struct mthca_dev *dev, u32 pd, int buffer_size_shift, u64 iova, u64 total_size, u32 access, struct mthca_mr *mr);int mthca_mr_alloc_notrans(struct mthca_dev *dev, u32 pd, u32 access, struct mthca_mr *mr);int mthca_mr_alloc_phys(struct mthca_dev *dev, u32 pd, u64 *buffer_list, int buffer_size_shift, int list_len, u64 iova, u64 total_size, u32 access, struct mthca_mr *mr);void mthca_free_mr(struct mthca_dev *dev, struct mthca_mr *mr);int mthca_fmr_alloc(struct mthca_dev *dev, u32 pd, u32 access, struct mthca_fmr *fmr);int mthca_tavor_map_phys_fmr(struct ib_fmr *ibfmr, u64 *page_list, int list_len, u64 iova);void mthca_tavor_fmr_unmap(struct mthca_dev *dev, struct mthca_fmr *fmr);int mthca_arbel_map_phys_fmr(struct ib_fmr *ibfmr, u64 *page_list, int list_len, u64 iova);void mthca_arbel_fmr_unmap(struct mthca_dev *dev, struct mthca_fmr *fmr);int mthca_free_fmr(struct mthca_dev *dev, struct mthca_fmr *fmr);int mthca_map_eq_icm(struct mthca_dev *dev, u64 icm_virt);void mthca_unmap_eq_icm(struct mthca_dev *dev);int mthca_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *entry);int mthca_tavor_arm_cq(struct ib_cq *cq, enum ib_cq_notify notify);int mthca_arbel_arm_cq(struct ib_cq *cq, enum ib_cq_notify notify);int mthca_init_cq(struct mthca_dev *dev, int nent, struct mthca_ucontext *ctx, u32 pdn, struct mthca_cq *cq);void mthca_free_cq(struct mthca_dev *dev, struct mthca_cq *cq);void mthca_cq_completion(struct mthca_dev *dev, u32 cqn);void mthca_cq_event(struct mthca_dev *dev, u32 cqn, enum ib_event_type event_type);void mthca_cq_clean(struct mthca_dev *dev, u32 cqn, u32 qpn, struct mthca_srq *srq);int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd, struct ib_srq_attr *attr, struct mthca_srq *srq);void mthca_free_srq(struct mthca_dev *dev, struct mthca_srq *srq);int mthca_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr, enum ib_srq_attr_mask attr_mask);void mthca_srq_event(struct mthca_dev *dev, u32 srqn, enum ib_event_type event_type);void mthca_free_srq_wqe(struct mthca_srq *srq, u32 wqe_addr);int mthca_tavor_post_srq_recv(struct ib_srq *srq, struct ib_recv_wr *wr, struct ib_recv_wr **bad_wr);int mthca_arbel_post_srq_recv(struct ib_srq *srq, struct ib_recv_wr *wr, struct ib_recv_wr **bad_wr);void mthca_qp_event(struct mthca_dev *dev, u32 qpn, enum ib_event_type event_type);int mthca_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask);int mthca_tavor_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, struct ib_send_wr **bad_wr);int mthca_tavor_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr, struct ib_recv_wr **bad_wr);int mthca_arbel_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, struct ib_send_wr **bad_wr);int mthca_arbel_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr, struct ib_recv_wr **bad_wr);int mthca_free_err_wqe(struct mthca_dev *dev, struct mthca_qp *qp, int is_send, int index, int *dbd, __be32 *new_wqe);int mthca_alloc_qp(struct mthca_dev *dev, struct mthca_pd *pd, struct mthca_cq *send_cq, struct mthca_cq *recv_cq, enum ib_qp_type type, enum ib_sig_type send_policy, struct ib_qp_cap *cap, struct mthca_qp *qp);int mthca_alloc_sqp(struct mthca_dev *dev, struct mthca_pd *pd, struct mthca_cq *send_cq, struct mthca_cq *recv_cq, enum ib_sig_type send_policy, struct ib_qp_cap *cap, int qpn, int port, struct mthca_sqp *sqp);void mthca_free_qp(struct mthca_dev *dev, struct mthca_qp *qp);int mthca_create_ah(struct mthca_dev *dev, struct mthca_pd *pd, struct ib_ah_attr *ah_attr, struct mthca_ah *ah);int mthca_destroy_ah(struct mthca_dev *dev, struct mthca_ah *ah);int mthca_read_ah(struct mthca_dev *dev, struct mthca_ah *ah, struct ib_ud_header *header);int mthca_multicast_attach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid);int mthca_multicast_detach(struct ib_qp *ibqp, union ib_gid *gid, u16 lid);int mthca_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num, struct ib_wc *in_wc, struct ib_grh *in_grh, struct ib_mad *in_mad, struct ib_mad *out_mad);int mthca_create_agents(struct mthca_dev *dev);void mthca_free_agents(struct mthca_dev *dev);static inline struct mthca_dev *to_mdev(struct ib_device *ibdev){ return container_of(ibdev, struct mthca_dev, ib_dev);}static inline int mthca_is_memfree(struct mthca_dev *dev){ return dev->mthca_flags & MTHCA_FLAG_MEMFREE;}#endif /* MTHCA_DEV_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -