Re: [PATCH 4/5] rdma-core/irdma: Add library setup and utility definitions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Apr 06, 2021 at 04:17:27PM -0500, Tatyana Nikolova wrote:

> +struct irdma_qp_uk_ops {
> +	enum irdma_status_code (*iw_inline_rdma_write)(struct irdma_qp_uk *qp,
> +						       struct irdma_post_sq_info *info,
> +						       bool post_sq);
> +	enum irdma_status_code (*iw_inline_send)(struct irdma_qp_uk *qp,
> +						 struct irdma_post_sq_info *info,
> +						 bool post_sq);
> +	enum irdma_status_code (*iw_mw_bind)(struct irdma_qp_uk *qp,
> +					     struct irdma_post_sq_info *info,
> +					     bool post_sq);
> +	enum irdma_status_code (*iw_post_nop)(struct irdma_qp_uk *qp, __u64 wr_id,
> +					      bool signaled, bool post_sq);
> +	enum irdma_status_code (*iw_post_receive)(struct irdma_qp_uk *qp,
> +						  struct irdma_post_rq_info *info);
> +	void (*iw_qp_post_wr)(struct irdma_qp_uk *qp);
> +	void (*iw_qp_ring_push_db)(struct irdma_qp_uk *qp, __u32 wqe_index);
> +	enum irdma_status_code (*iw_rdma_read)(struct irdma_qp_uk *qp,
> +					       struct irdma_post_sq_info *info,
> +					       bool inv_stag, bool post_sq);
> +	enum irdma_status_code (*iw_rdma_write)(struct irdma_qp_uk *qp,
> +						struct irdma_post_sq_info *info,
> +						bool post_sq);
> +	enum irdma_status_code (*iw_send)(struct irdma_qp_uk *qp,
> +					  struct irdma_post_sq_info *info,
> +					  bool post_sq);
> +	enum irdma_status_code (*iw_stag_local_invalidate)(struct irdma_qp_uk *qp,
> +							   struct irdma_post_sq_info *info,
> +							   bool post_sq);
> +};
> +
> +struct irdma_wqe_uk_ops {
> +	void (*iw_copy_inline_data)(__u8 *dest, __u8 *src, __u32 len, __u8 polarity);
> +	__u16 (*iw_inline_data_size_to_quanta)(__u32 data_size);
> +	void (*iw_set_fragment)(__le64 *wqe, __u32 offset, struct irdma_sge *sge,
> +				__u8 valid);
> +	void (*iw_set_mw_bind_wqe)(__le64 *wqe,
> +				   struct irdma_bind_window *op_info);
> +};
> +
> +struct irdma_cq_ops {
> +	void (*iw_cq_clean)(void *q, struct irdma_cq_uk *cq);
> +	enum irdma_status_code (*iw_cq_poll_cmpl)(struct irdma_cq_uk *cq,
> +						  struct irdma_cq_poll_info *info);
> +	enum irdma_status_code (*iw_cq_post_entries)(struct irdma_cq_uk *cq,
> +						     __u8 count);
> +	void (*iw_cq_request_notification)(struct irdma_cq_uk *cq,
> +					   enum irdma_cmpl_notify cq_notify);
> +	void (*iw_cq_resize)(struct irdma_cq_uk *cq, void *cq_base, int size);
> +	void (*iw_cq_set_resized_cnt)(struct irdma_cq_uk *qp, __u16 cnt);
> +};
> +
> +struct irdma_dev_uk;
> +
> +struct irdma_device_uk_ops {
> +	enum irdma_status_code (*iw_cq_uk_init)(struct irdma_cq_uk *cq,
> +						struct irdma_cq_uk_init_info *info);
> +	enum irdma_status_code (*iw_qp_uk_init)(struct irdma_qp_uk *qp,
> +						struct irdma_qp_uk_init_info *info);
> +};

Is there a reason for all of these internal function pointers when
there is only one implementation? This looks like data path too,
making it even more puzzling

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux