Lines Matching full:struct
104 struct mlx5_bfreg_info {
112 struct mutex lock;
122 struct mlx5_ib_ucontext {
123 struct ib_ucontext ibucontext;
124 struct list_head db_page_list;
128 struct mutex db_page_mutex;
129 struct mlx5_bfreg_info bfregi;
140 static inline struct mlx5_ib_ucontext *to_mucontext(struct ib_ucontext *ibucontext) in to_mucontext()
142 return container_of(ibucontext, struct mlx5_ib_ucontext, ibucontext); in to_mucontext()
145 struct mlx5_ib_pd {
146 struct ib_pd ibpd;
167 struct mlx5_ib_flow_prio {
168 struct mlx5_flow_table *flow_table;
172 struct mlx5_ib_flow_handler {
173 struct list_head list;
174 struct ib_flow ibflow;
175 struct mlx5_ib_flow_prio *prio;
176 struct mlx5_flow_handle *rule;
177 struct ib_counters *ibcounters;
178 struct mlx5_ib_dev *dev;
179 struct mlx5_ib_flow_matcher *flow_matcher;
182 struct mlx5_ib_flow_matcher {
183 struct mlx5_ib_match_params matcher_mask;
188 struct mlx5_core_dev *mdev;
193 struct mlx5_ib_pp {
195 struct mlx5_core_dev *mdev;
198 struct mlx5_ib_flow_db {
199 struct mlx5_ib_flow_prio prios[MLX5_IB_NUM_FLOW_FT];
200 struct mlx5_ib_flow_prio egress_prios[MLX5_IB_NUM_FLOW_FT];
201 struct mlx5_ib_flow_prio sniffer[MLX5_IB_NUM_SNIFFER_FTS];
202 struct mlx5_ib_flow_prio egress[MLX5_IB_NUM_EGRESS_FTS];
203 struct mlx5_ib_flow_prio fdb;
204 struct mlx5_ib_flow_prio rdma_rx[MLX5_IB_NUM_FLOW_FT];
205 struct mlx5_ib_flow_prio rdma_tx[MLX5_IB_NUM_FLOW_FT];
206 struct mlx5_flow_table *lag_demux_ft;
212 struct mutex lock;
255 struct wr_list {
265 struct mlx5_ib_wq {
266 struct mlx5_frag_buf_ctrl fbc;
269 struct wr_list *w_list;
299 struct mlx5_ib_rwq {
300 struct ib_wq ibwq;
301 struct mlx5_core_qp core_qp;
310 struct ib_umem *umem;
313 struct mlx5_db db;
321 struct mlx5_ib_rwq_ind_table {
322 struct ib_rwq_ind_table ib_rwq_ind_tbl;
327 struct mlx5_ib_ubuffer {
328 struct ib_umem *umem;
333 struct mlx5_ib_qp_base {
334 struct mlx5_ib_qp *container_mibqp;
335 struct mlx5_core_qp mqp;
336 struct mlx5_ib_ubuffer ubuffer;
339 struct mlx5_ib_qp_trans {
340 struct mlx5_ib_qp_base base;
347 struct mlx5_ib_rss_qp {
351 struct mlx5_ib_rq {
352 struct mlx5_ib_qp_base base;
353 struct mlx5_ib_wq *rq;
354 struct mlx5_ib_ubuffer ubuffer;
355 struct mlx5_db *doorbell;
361 struct mlx5_ib_sq {
362 struct mlx5_ib_qp_base base;
363 struct mlx5_ib_wq *sq;
364 struct mlx5_ib_ubuffer ubuffer;
365 struct mlx5_db *doorbell;
366 struct mlx5_flow_handle *flow_rule;
371 struct mlx5_ib_raw_packet_qp {
372 struct mlx5_ib_sq sq;
373 struct mlx5_ib_rq rq;
376 struct mlx5_bf {
379 struct mlx5_sq_bfreg *bfreg;
382 struct mlx5_ib_dct {
383 struct mlx5_core_dct mdct;
387 struct mlx5_ib_gsi_qp {
388 struct ib_qp *rx_qp;
390 struct ib_qp_cap cap;
391 struct ib_cq *cq;
392 struct mlx5_ib_gsi_wr *outstanding_wrs;
400 struct ib_qp **tx_qps;
403 struct mlx5_ib_qp {
404 struct ib_qp ibqp;
406 struct mlx5_ib_qp_trans trans_qp;
407 struct mlx5_ib_raw_packet_qp raw_packet_qp;
408 struct mlx5_ib_rss_qp rss_qp;
409 struct mlx5_ib_dct dct;
410 struct mlx5_ib_gsi_qp gsi;
412 struct mlx5_frag_buf buf;
414 struct mlx5_db db;
415 struct mlx5_ib_wq rq;
419 struct mlx5_ib_wq sq;
423 struct mutex mutex;
424 /* cached variant of create_flags from struct ib_qp_init_attr */
429 struct mlx5_bf bf;
438 struct list_head qps_list;
439 struct list_head cq_recv_list;
440 struct list_head cq_send_list;
441 struct mlx5_rate_limit rl;
457 struct mlx5_ib_cq_buf {
458 struct mlx5_frag_buf_ctrl fbc;
459 struct mlx5_frag_buf frag_buf;
460 struct ib_umem *umem;
465 struct mlx5_umr_wr {
466 struct ib_send_wr wr;
469 struct ib_pd *pd;
478 static inline const struct mlx5_umr_wr *umr_wr(const struct ib_send_wr *wr) in umr_wr()
480 return container_of(wr, struct mlx5_umr_wr, wr); in umr_wr()
483 struct mlx5_shared_mr_info {
485 struct ib_umem *umem;
492 struct mlx5_ib_cq {
493 struct ib_cq ibcq;
494 struct mlx5_core_cq mcq;
495 struct mlx5_ib_cq_buf buf;
496 struct mlx5_db db;
504 struct mutex resize_mutex;
505 struct mlx5_ib_cq_buf *resize_buf;
506 struct ib_umem *resize_umem;
508 struct list_head list_send_qp;
509 struct list_head list_recv_qp;
511 struct list_head wc_list;
513 struct work_struct notify_work;
517 struct mlx5_ib_wc {
518 struct ib_wc wc;
519 struct list_head list;
522 struct mlx5_ib_srq {
523 struct ib_srq ibsrq;
524 struct mlx5_core_srq msrq;
525 struct mlx5_frag_buf buf;
526 struct mlx5_db db;
527 struct mlx5_frag_buf_ctrl fbc;
535 struct ib_umem *umem;
538 struct mutex mutex;
542 struct mlx5_ib_xrcd {
543 struct ib_xrcd ibxrcd;
552 struct mlx5_user_mmap_entry {
553 struct rdma_user_mmap_entry rdma_entry;
559 struct mlx5_ib_dm {
560 struct ib_dm ibdm;
565 struct {
570 struct mlx5_user_mmap_entry mentry;
589 struct mlx5_ib_mr {
590 struct ib_mr ibmr;
600 struct mlx5_core_mkey mmkey;
601 struct ib_umem *umem;
602 struct mlx5_shared_mr_info *smr_info;
603 struct list_head list;
605 struct mlx5_cache_ent *cache_ent;
607 struct mlx5_ib_dev *dev;
609 struct mlx5_core_sig_ctx *sig;
613 struct mlx5_ib_mr *parent;
615 struct mlx5_ib_mr *pi_mr;
616 struct mlx5_ib_mr *klm_mr;
617 struct mlx5_ib_mr *mtt_mr;
624 struct xarray implicit_children;
626 struct rcu_head rcu;
627 struct list_head elm;
628 struct work_struct work;
630 struct ib_odp_counters odp_stats;
633 struct mlx5_async_work cb_work;
636 static inline bool is_odp_mr(struct mlx5_ib_mr *mr) in is_odp_mr()
642 struct mlx5_ib_mw {
643 struct ib_mw ibmw;
644 struct mlx5_core_mkey mmkey;
648 struct mlx5_ib_devx_mr {
649 struct mlx5_core_mkey mmkey;
653 struct mlx5_ib_umr_context {
654 struct ib_cqe cqe;
656 struct completion done;
659 struct umr_common {
660 struct ib_pd *pd;
661 struct ib_cq *cq;
662 struct ib_qp *qp;
665 struct semaphore sem;
668 struct mlx5_cache_ent {
669 struct list_head head;
701 struct mlx5_ib_dev *dev;
702 struct work_struct work;
703 struct delayed_work dwork;
706 struct mlx5_mr_cache {
707 struct workqueue_struct *wq;
708 struct mlx5_cache_ent ent[MAX_MR_CACHE_ENTRIES];
709 struct dentry *root;
713 struct mlx5_ib_port_resources {
714 struct mlx5_ib_gsi_qp *gsi;
715 struct work_struct pkey_change_work;
718 struct mlx5_ib_resources {
719 struct ib_cq *c0;
722 struct ib_pd *p0;
723 struct ib_srq *s0;
724 struct ib_srq *s1;
725 struct mlx5_ib_port_resources ports[2];
727 struct mutex mutex;
730 struct mlx5_ib_counters {
739 struct mlx5_ib_multiport_info;
741 struct mlx5_ib_multiport {
742 struct mlx5_ib_multiport_info *mpi;
747 struct mlx5_roce {
752 struct net_device *netdev;
753 struct notifier_block nb;
756 struct mlx5_ib_dev *dev;
760 struct mlx5_ib_port {
761 struct mlx5_ib_counters cnts;
762 struct mlx5_ib_multiport mp;
763 struct mlx5_ib_dbg_cc_params *dbg_cc_params;
764 struct mlx5_roce roce;
765 struct mlx5_eswitch_rep *rep;
768 struct mlx5_ib_dbg_param {
770 struct mlx5_ib_dev *dev;
771 struct dentry *dentry;
799 struct mlx5_ib_dbg_cc_params {
800 struct dentry *root;
801 struct mlx5_ib_dbg_param params[MLX5_IB_DBG_CC_MAX];
808 struct mlx5_ib_delay_drop {
809 struct mlx5_ib_dev *dev;
810 struct work_struct delay_drop_work;
812 struct mutex lock;
817 struct dentry *dir_debugfs;
844 struct mlx5_ib_stage {
845 int (*init)(struct mlx5_ib_dev *dev);
846 void (*cleanup)(struct mlx5_ib_dev *dev);
852 struct mlx5_ib_profile {
853 struct mlx5_ib_stage stage[MLX5_IB_STAGE_MAX];
856 struct mlx5_ib_multiport_info {
857 struct list_head list;
858 struct mlx5_ib_dev *ibdev;
859 struct mlx5_core_dev *mdev;
860 struct notifier_block mdev_events;
861 struct completion unref_comp;
868 struct mlx5_ib_flow_action {
869 struct ib_flow_action ib_action;
871 struct {
873 struct mlx5_accel_esp_xfrm *ctx;
875 struct {
876 struct mlx5_ib_dev *dev;
879 struct mlx5_modify_hdr *modify_hdr;
880 struct mlx5_pkt_reformat *pkt_reformat;
886 struct mlx5_dm {
887 struct mlx5_core_dev *dev;
896 struct mlx5_read_counters_attr {
897 struct mlx5_fc *hw_cntrs_hndl;
906 struct mlx5_ib_mcounters {
907 struct ib_counters ibcntrs;
911 struct mlx5_fc *hw_cntrs_hndl;
913 int (*read_counters)(struct ib_device *ibdev,
914 struct mlx5_read_counters_attr *read_attr);
920 struct mlx5_ib_flow_counters_desc *counters_data;
922 struct mutex mcntrs_mutex;
925 static inline struct mlx5_ib_mcounters *
926 to_mcounters(struct ib_counters *ibcntrs) in to_mcounters()
928 return container_of(ibcntrs, struct mlx5_ib_mcounters, ibcntrs); in to_mcounters()
931 int parse_flow_flow_action(struct mlx5_ib_flow_action *maction,
933 struct mlx5_flow_act *action);
934 struct mlx5_ib_lb_state {
936 struct mutex mutex;
942 struct mlx5_ib_pf_eq {
943 struct notifier_block irq_nb;
944 struct mlx5_ib_dev *dev;
945 struct mlx5_eq *core;
946 struct work_struct work;
948 struct workqueue_struct *wq;
952 struct mlx5_devx_event_table {
953 struct mlx5_nb devx_nb;
955 struct mutex event_xa_lock;
956 struct xarray event_xa;
959 struct mlx5_var_table {
961 struct mutex bitmap_lock;
968 struct mlx5_ib_dev {
969 struct ib_device ib_dev;
970 struct mlx5_core_dev *mdev;
971 struct notifier_block mdev_events;
975 struct mutex cap_mask_mutex;
981 struct umr_common umrc;
984 struct mlx5_ib_resources devr;
987 struct mlx5_mr_cache cache;
988 struct timer_list delay_timer;
990 struct mutex slow_path_mutex;
991 struct ib_odp_caps odp_caps;
993 struct mlx5_ib_pf_eq odp_pf_eq;
999 struct srcu_struct odp_srcu;
1000 struct xarray odp_mkeys;
1003 struct mlx5_ib_flow_db *flow_db;
1006 struct list_head qp_list;
1008 struct mlx5_ib_port *port;
1009 struct mlx5_sq_bfreg bfreg;
1010 struct mlx5_sq_bfreg wc_bfreg;
1011 struct mlx5_sq_bfreg fp_bfreg;
1012 struct mlx5_ib_delay_drop delay_drop;
1013 const struct mlx5_ib_profile *profile;
1015 struct mlx5_ib_lb_state lb;
1017 struct list_head ib_dev_list;
1019 struct mlx5_dm dm;
1021 struct mlx5_srq_table srq_table;
1022 struct mlx5_qp_table qp_table;
1023 struct mlx5_async_ctx async_ctx;
1024 struct mlx5_devx_event_table devx_event_table;
1025 struct mlx5_var_table var_table;
1027 struct xarray sig_mrs;
1030 static inline struct mlx5_ib_cq *to_mibcq(struct mlx5_core_cq *mcq) in to_mibcq()
1032 return container_of(mcq, struct mlx5_ib_cq, mcq); in to_mibcq()
1035 static inline struct mlx5_ib_xrcd *to_mxrcd(struct ib_xrcd *ibxrcd) in to_mxrcd()
1037 return container_of(ibxrcd, struct mlx5_ib_xrcd, ibxrcd); in to_mxrcd()
1040 static inline struct mlx5_ib_dev *to_mdev(struct ib_device *ibdev) in to_mdev()
1042 return container_of(ibdev, struct mlx5_ib_dev, ib_dev); in to_mdev()
1045 static inline struct mlx5_ib_dev *mlx5_udata_to_mdev(struct ib_udata *udata) in mlx5_udata_to_mdev()
1047 struct mlx5_ib_ucontext *context = rdma_udata_to_drv_context( in mlx5_udata_to_mdev()
1048 udata, struct mlx5_ib_ucontext, ibucontext); in mlx5_udata_to_mdev()
1053 static inline struct mlx5_ib_cq *to_mcq(struct ib_cq *ibcq) in to_mcq()
1055 return container_of(ibcq, struct mlx5_ib_cq, ibcq); in to_mcq()
1058 static inline struct mlx5_ib_qp *to_mibqp(struct mlx5_core_qp *mqp) in to_mibqp()
1060 return container_of(mqp, struct mlx5_ib_qp_base, mqp)->container_mibqp; in to_mibqp()
1063 static inline struct mlx5_ib_rwq *to_mibrwq(struct mlx5_core_qp *core_qp) in to_mibrwq()
1065 return container_of(core_qp, struct mlx5_ib_rwq, core_qp); in to_mibrwq()
1068 static inline struct mlx5_ib_pd *to_mpd(struct ib_pd *ibpd) in to_mpd()
1070 return container_of(ibpd, struct mlx5_ib_pd, ibpd); in to_mpd()
1073 static inline struct mlx5_ib_srq *to_msrq(struct ib_srq *ibsrq) in to_msrq()
1075 return container_of(ibsrq, struct mlx5_ib_srq, ibsrq); in to_msrq()
1078 static inline struct mlx5_ib_qp *to_mqp(struct ib_qp *ibqp) in to_mqp()
1080 return container_of(ibqp, struct mlx5_ib_qp, ibqp); in to_mqp()
1083 static inline struct mlx5_ib_rwq *to_mrwq(struct ib_wq *ibwq) in to_mrwq()
1085 return container_of(ibwq, struct mlx5_ib_rwq, ibwq); in to_mrwq()
1088 static inline struct mlx5_ib_rwq_ind_table *to_mrwq_ind_table(struct ib_rwq_ind_table *ib_rwq_ind_t… in to_mrwq_ind_table()
1090 return container_of(ib_rwq_ind_tbl, struct mlx5_ib_rwq_ind_table, ib_rwq_ind_tbl); in to_mrwq_ind_table()
1093 static inline struct mlx5_ib_srq *to_mibsrq(struct mlx5_core_srq *msrq) in to_mibsrq()
1095 return container_of(msrq, struct mlx5_ib_srq, msrq); in to_mibsrq()
1098 static inline struct mlx5_ib_dm *to_mdm(struct ib_dm *ibdm) in to_mdm()
1100 return container_of(ibdm, struct mlx5_ib_dm, ibdm); in to_mdm()
1103 static inline struct mlx5_ib_mr *to_mmr(struct ib_mr *ibmr) in to_mmr()
1105 return container_of(ibmr, struct mlx5_ib_mr, ibmr); in to_mmr()
1108 static inline struct mlx5_ib_mw *to_mmw(struct ib_mw *ibmw) in to_mmw()
1110 return container_of(ibmw, struct mlx5_ib_mw, ibmw); in to_mmw()
1113 static inline struct mlx5_ib_flow_action *
1114 to_mflow_act(struct ib_flow_action *ibact) in to_mflow_act()
1116 return container_of(ibact, struct mlx5_ib_flow_action, ib_action); in to_mflow_act()
1119 static inline struct mlx5_user_mmap_entry *
1120 to_mmmap(struct rdma_user_mmap_entry *rdma_entry) in to_mmmap()
1123 struct mlx5_user_mmap_entry, rdma_entry); in to_mmmap()
1126 int mlx5_ib_db_map_user(struct mlx5_ib_ucontext *context,
1127 struct ib_udata *udata, unsigned long virt,
1128 struct mlx5_db *db);
1129 void mlx5_ib_db_unmap_user(struct mlx5_ib_ucontext *context, struct mlx5_db *db);
1130 void __mlx5_ib_cq_clean(struct mlx5_ib_cq *cq, u32 qpn, struct mlx5_ib_srq *srq);
1131 void mlx5_ib_cq_clean(struct mlx5_ib_cq *cq, u32 qpn, struct mlx5_ib_srq *srq);
1132 void mlx5_ib_free_srq_wqe(struct mlx5_ib_srq *srq, int wqe_index);
1133 int mlx5_ib_create_ah(struct ib_ah *ah, struct rdma_ah_init_attr *init_attr,
1134 struct ib_udata *udata);
1135 int mlx5_ib_query_ah(struct ib_ah *ibah, struct rdma_ah_attr *ah_attr);
1136 static inline int mlx5_ib_destroy_ah(struct ib_ah *ah, u32 flags) in mlx5_ib_destroy_ah()
1140 int mlx5_ib_create_srq(struct ib_srq *srq, struct ib_srq_init_attr *init_attr,
1141 struct ib_udata *udata);
1142 int mlx5_ib_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr,
1143 enum ib_srq_attr_mask attr_mask, struct ib_udata *udata);
1144 int mlx5_ib_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *srq_attr);
1145 int mlx5_ib_destroy_srq(struct ib_srq *srq, struct ib_udata *udata);
1146 int mlx5_ib_post_srq_recv(struct ib_srq *ibsrq, const struct ib_recv_wr *wr,
1147 const struct ib_recv_wr **bad_wr);
1148 int mlx5_ib_enable_lb(struct mlx5_ib_dev *dev, bool td, bool qp);
1149 void mlx5_ib_disable_lb(struct mlx5_ib_dev *dev, bool td, bool qp);
1150 struct ib_qp *mlx5_ib_create_qp(struct ib_pd *pd,
1151 struct ib_qp_init_attr *init_attr,
1152 struct ib_udata *udata);
1153 int mlx5_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
1154 int attr_mask, struct ib_udata *udata);
1155 int mlx5_ib_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *qp_attr, int qp_attr_mask,
1156 struct ib_qp_init_attr *qp_init_attr);
1157 int mlx5_ib_destroy_qp(struct ib_qp *qp, struct ib_udata *udata);
1158 void mlx5_ib_drain_sq(struct ib_qp *qp);
1159 void mlx5_ib_drain_rq(struct ib_qp *qp);
1160 int mlx5_ib_read_wqe_sq(struct mlx5_ib_qp *qp, int wqe_index, void *buffer,
1162 int mlx5_ib_read_wqe_rq(struct mlx5_ib_qp *qp, int wqe_index, void *buffer,
1164 int mlx5_ib_read_wqe_srq(struct mlx5_ib_srq *srq, int wqe_index, void *buffer,
1166 int mlx5_ib_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
1167 struct ib_udata *udata);
1168 int mlx5_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata);
1169 int mlx5_ib_poll_cq(struct ib_cq *ibcq, int num_entries, struct ib_wc *wc);
1170 int mlx5_ib_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags);
1171 int mlx5_ib_modify_cq(struct ib_cq *cq, u16 cq_count, u16 cq_period);
1172 int mlx5_ib_resize_cq(struct ib_cq *ibcq, int entries, struct ib_udata *udata);
1173 struct ib_mr *mlx5_ib_get_dma_mr(struct ib_pd *pd, int acc);
1174 struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
1176 struct ib_udata *udata);
1177 int mlx5_ib_advise_mr(struct ib_pd *pd,
1180 struct ib_sge *sg_list,
1182 struct uverbs_attr_bundle *attrs);
1183 int mlx5_ib_alloc_mw(struct ib_mw *mw, struct ib_udata *udata);
1184 int mlx5_ib_dealloc_mw(struct ib_mw *mw);
1185 int mlx5_ib_update_xlt(struct mlx5_ib_mr *mr, u64 idx, int npages,
1187 struct mlx5_ib_mr *mlx5_ib_alloc_implicit_mr(struct mlx5_ib_pd *pd,
1188 struct ib_udata *udata,
1190 void mlx5_ib_free_implicit_mr(struct mlx5_ib_mr *mr);
1191 void mlx5_ib_fence_odp_mr(struct mlx5_ib_mr *mr);
1192 int mlx5_ib_rereg_user_mr(struct ib_mr *ib_mr, int flags, u64 start,
1194 struct ib_pd *pd, struct ib_udata *udata);
1195 int mlx5_ib_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata);
1196 struct ib_mr *mlx5_ib_alloc_mr(struct ib_pd *pd, enum ib_mr_type mr_type,
1198 struct ib_mr *mlx5_ib_alloc_mr_integrity(struct ib_pd *pd,
1201 int mlx5_ib_map_mr_sg(struct ib_mr *ibmr, struct scatterlist *sg, int sg_nents,
1203 int mlx5_ib_map_mr_sg_pi(struct ib_mr *ibmr, struct scatterlist *data_sg,
1205 struct scatterlist *meta_sg, int meta_sg_nents,
1207 int mlx5_ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
1208 const struct ib_wc *in_wc, const struct ib_grh *in_grh,
1209 const struct ib_mad *in, struct ib_mad *out,
1211 int mlx5_ib_alloc_xrcd(struct ib_xrcd *xrcd, struct ib_udata *udata);
1212 int mlx5_ib_dealloc_xrcd(struct ib_xrcd *xrcd, struct ib_udata *udata);
1214 int mlx5_query_ext_port_caps(struct mlx5_ib_dev *dev, u8 port);
1215 int mlx5_query_mad_ifc_smp_attr_node_info(struct ib_device *ibdev,
1216 struct ib_smp *out_mad);
1217 int mlx5_query_mad_ifc_system_image_guid(struct ib_device *ibdev,
1219 int mlx5_query_mad_ifc_max_pkeys(struct ib_device *ibdev,
1221 int mlx5_query_mad_ifc_vendor_id(struct ib_device *ibdev,
1223 int mlx5_query_mad_ifc_node_desc(struct mlx5_ib_dev *dev, char *node_desc);
1224 int mlx5_query_mad_ifc_node_guid(struct mlx5_ib_dev *dev, __be64 *node_guid);
1225 int mlx5_query_mad_ifc_pkey(struct ib_device *ibdev, u8 port, u16 index,
1227 int mlx5_query_mad_ifc_gids(struct ib_device *ibdev, u8 port, int index,
1229 int mlx5_query_mad_ifc_port(struct ib_device *ibdev, u8 port,
1230 struct ib_port_attr *props);
1231 int mlx5_ib_query_port(struct ib_device *ibdev, u8 port,
1232 struct ib_port_attr *props);
1233 void mlx5_ib_cont_pages(struct ib_umem *umem, u64 addr,
1237 void __mlx5_ib_populate_pas(struct mlx5_ib_dev *dev, struct ib_umem *umem,
1240 void mlx5_ib_populate_pas(struct mlx5_ib_dev *dev, struct ib_umem *umem,
1243 int mlx5_ib_get_cqe_size(struct ib_cq *ibcq);
1244 int mlx5_mr_cache_init(struct mlx5_ib_dev *dev);
1245 int mlx5_mr_cache_cleanup(struct mlx5_ib_dev *dev);
1247 struct mlx5_ib_mr *mlx5_mr_cache_alloc(struct mlx5_ib_dev *dev,
1249 void mlx5_mr_cache_free(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr);
1250 int mlx5_mr_cache_invalidate(struct mlx5_ib_mr *mr);
1252 int mlx5_ib_check_mr_status(struct ib_mr *ibmr, u32 check_mask,
1253 struct ib_mr_status *mr_status);
1254 struct ib_wq *mlx5_ib_create_wq(struct ib_pd *pd,
1255 struct ib_wq_init_attr *init_attr,
1256 struct ib_udata *udata);
1257 int mlx5_ib_destroy_wq(struct ib_wq *wq, struct ib_udata *udata);
1258 int mlx5_ib_modify_wq(struct ib_wq *wq, struct ib_wq_attr *wq_attr,
1259 u32 wq_attr_mask, struct ib_udata *udata);
1260 int mlx5_ib_create_rwq_ind_table(struct ib_rwq_ind_table *ib_rwq_ind_table,
1261 struct ib_rwq_ind_table_init_attr *init_attr,
1262 struct ib_udata *udata);
1263 int mlx5_ib_destroy_rwq_ind_table(struct ib_rwq_ind_table *wq_ind_table);
1264 struct ib_dm *mlx5_ib_alloc_dm(struct ib_device *ibdev,
1265 struct ib_ucontext *context,
1266 struct ib_dm_alloc_attr *attr,
1267 struct uverbs_attr_bundle *attrs);
1268 int mlx5_ib_dealloc_dm(struct ib_dm *ibdm, struct uverbs_attr_bundle *attrs);
1269 struct ib_mr *mlx5_ib_reg_dm_mr(struct ib_pd *pd, struct ib_dm *dm,
1270 struct ib_dm_mr_attr *attr,
1271 struct uverbs_attr_bundle *attrs);
1274 void mlx5_ib_internal_fill_odp_caps(struct mlx5_ib_dev *dev);
1275 int mlx5_ib_odp_init_one(struct mlx5_ib_dev *ibdev);
1276 void mlx5_ib_odp_cleanup_one(struct mlx5_ib_dev *ibdev);
1279 void mlx5_odp_init_mr_cache_entry(struct mlx5_cache_ent *ent);
1281 struct mlx5_ib_mr *mr, int flags);
1283 int mlx5_ib_advise_mr_prefetch(struct ib_pd *pd,
1285 u32 flags, struct ib_sge *sg_list, u32 num_sge);
1286 int mlx5_ib_init_odp_mr(struct mlx5_ib_mr *mr, bool enable);
1288 static inline void mlx5_ib_internal_fill_odp_caps(struct mlx5_ib_dev *dev) in mlx5_ib_internal_fill_odp_caps()
1293 static inline int mlx5_ib_odp_init_one(struct mlx5_ib_dev *ibdev) { return 0; } in mlx5_ib_odp_init_one()
1294 static inline void mlx5_ib_odp_cleanup_one(struct mlx5_ib_dev *ibdev) {} in mlx5_ib_odp_cleanup_one()
1297 static inline void mlx5_odp_init_mr_cache_entry(struct mlx5_cache_ent *ent) {} in mlx5_odp_init_mr_cache_entry()
1299 struct mlx5_ib_mr *mr, int flags) {} in mlx5_odp_populate_xlt()
1302 mlx5_ib_advise_mr_prefetch(struct ib_pd *pd, in mlx5_ib_advise_mr_prefetch()
1304 struct ib_sge *sg_list, u32 num_sge) in mlx5_ib_advise_mr_prefetch()
1308 static inline int mlx5_ib_init_odp_mr(struct mlx5_ib_mr *mr, bool enable) in mlx5_ib_init_odp_mr()
1314 extern const struct mmu_interval_notifier_ops mlx5_mn_ops;
1317 void __mlx5_ib_remove(struct mlx5_ib_dev *dev,
1318 const struct mlx5_ib_profile *profile,
1320 void *__mlx5_ib_add(struct mlx5_ib_dev *dev,
1321 const struct mlx5_ib_profile *profile);
1323 int mlx5_ib_get_vf_config(struct ib_device *device, int vf,
1324 u8 port, struct ifla_vf_info *info);
1325 int mlx5_ib_set_vf_link_state(struct ib_device *device, int vf,
1327 int mlx5_ib_get_vf_stats(struct ib_device *device, int vf,
1328 u8 port, struct ifla_vf_stats *stats);
1329 int mlx5_ib_get_vf_guid(struct ib_device *device, int vf, u8 port,
1330 struct ifla_vf_guid *node_guid,
1331 struct ifla_vf_guid *port_guid);
1332 int mlx5_ib_set_vf_guid(struct ib_device *device, int vf, u8 port,
1335 __be16 mlx5_get_roce_udp_sport_min(const struct mlx5_ib_dev *dev,
1336 const struct ib_gid_attr *attr);
1338 void mlx5_ib_cleanup_cong_debugfs(struct mlx5_ib_dev *dev, u8 port_num);
1339 void mlx5_ib_init_cong_debugfs(struct mlx5_ib_dev *dev, u8 port_num);
1342 int mlx5_ib_create_gsi(struct ib_pd *pd, struct mlx5_ib_qp *mqp,
1343 struct ib_qp_init_attr *attr);
1344 int mlx5_ib_destroy_gsi(struct mlx5_ib_qp *mqp);
1345 int mlx5_ib_gsi_modify_qp(struct ib_qp *qp, struct ib_qp_attr *attr,
1347 int mlx5_ib_gsi_query_qp(struct ib_qp *qp, struct ib_qp_attr *qp_attr,
1349 struct ib_qp_init_attr *qp_init_attr);
1350 int mlx5_ib_gsi_post_send(struct ib_qp *qp, const struct ib_send_wr *wr,
1351 const struct ib_send_wr **bad_wr);
1352 int mlx5_ib_gsi_post_recv(struct ib_qp *qp, const struct ib_recv_wr *wr,
1353 const struct ib_recv_wr **bad_wr);
1354 void mlx5_ib_gsi_pkey_change(struct mlx5_ib_gsi_qp *gsi);
1356 int mlx5_ib_generate_wc(struct ib_cq *ibcq, struct ib_wc *wc);
1358 void mlx5_ib_free_bfreg(struct mlx5_ib_dev *dev, struct mlx5_bfreg_info *bfregi,
1360 struct mlx5_ib_dev *mlx5_ib_get_ibdev_from_mpi(struct mlx5_ib_multiport_info *mpi);
1361 struct mlx5_core_dev *mlx5_ib_get_native_port_mdev(struct mlx5_ib_dev *dev,
1364 void mlx5_ib_put_native_port_mdev(struct mlx5_ib_dev *dev,
1367 extern const struct uapi_definition mlx5_ib_devx_defs[];
1368 extern const struct uapi_definition mlx5_ib_flow_defs[];
1369 extern const struct uapi_definition mlx5_ib_qos_defs[];
1370 extern const struct uapi_definition mlx5_ib_std_types_defs[];
1372 static inline void init_query_mad(struct ib_smp *mad) in init_query_mad()
1413 static inline int get_qp_user_index(struct mlx5_ib_ucontext *ucontext, in get_qp_user_index()
1414 struct mlx5_ib_create_qp *ucmd, in get_qp_user_index()
1430 static inline int get_srq_user_index(struct mlx5_ib_ucontext *ucontext, in get_srq_user_index()
1431 struct mlx5_ib_create_srq *ucmd, in get_srq_user_index()
1447 static inline int get_uars_per_sys_page(struct mlx5_ib_dev *dev, bool lib_support) in get_uars_per_sys_page()
1453 static inline int get_num_static_uars(struct mlx5_ib_dev *dev, in get_num_static_uars()
1454 struct mlx5_bfreg_info *bfregi) in get_num_static_uars()
1462 int bfregn_to_uar_index(struct mlx5_ib_dev *dev,
1463 struct mlx5_bfreg_info *bfregi, u32 bfregn,
1466 static inline bool mlx5_ib_can_load_pas_with_umr(struct mlx5_ib_dev *dev, in mlx5_ib_can_load_pas_with_umr()
1495 static inline bool mlx5_ib_can_reconfig_with_umr(struct mlx5_ib_dev *dev, in mlx5_ib_can_reconfig_with_umr()
1519 int mlx5_ib_test_wc(struct mlx5_ib_dev *dev);
1521 static inline bool mlx5_ib_lag_should_assign_affinity(struct mlx5_ib_dev *dev) in mlx5_ib_lag_should_assign_affinity()