Home
last modified time | relevance | path

Searched refs:mlx4_dev (Results 1 – 25 of 41) sorted by relevance

12

/freebsd-14.2/sys/dev/mlx4/mlx4_core/
H A Dmlx4.h386 struct mlx4_dev *dev;
817 struct mlx4_dev *dev;
831 struct mlx4_dev *dev;
859 struct mlx4_dev dev;
933 int mlx4_reset(struct mlx4_dev *dev);
1026 int mlx4_catas_init(struct mlx4_dev *dev);
1027 void mlx4_catas_end(struct mlx4_dev *dev);
1037 u64 mlx4_make_profile(struct mlx4_dev *dev,
1190 int mlx4_cmd_init(struct mlx4_dev *dev);
1218 void mlx4_stop_sense(struct mlx4_dev *dev);
[all …]
H A Dfw.h235 int mlx4_QUERY_FUNC_CAP(struct mlx4_dev *dev, u8 gen_or_port,
237 int mlx4_QUERY_FUNC_CAP_wrapper(struct mlx4_dev *dev, int slave,
243 int mlx4_MAP_FA(struct mlx4_dev *dev, struct mlx4_icm *icm);
244 int mlx4_UNMAP_FA(struct mlx4_dev *dev);
245 int mlx4_RUN_FW(struct mlx4_dev *dev);
246 int mlx4_QUERY_FW(struct mlx4_dev *dev);
250 int mlx4_CLOSE_HCA(struct mlx4_dev *dev, int panic);
252 int mlx4_SET_ICM_SIZE(struct mlx4_dev *dev, u64 icm_size, u64 *aux_pages);
253 int mlx4_MAP_ICM_AUX(struct mlx4_dev *dev, struct mlx4_icm *icm);
254 int mlx4_UNMAP_ICM_AUX(struct mlx4_dev *dev);
[all …]
H A Dmlx4_pd.c47 int mlx4_pd_alloc(struct mlx4_dev *dev, u32 *pdn) in mlx4_pd_alloc()
59 void mlx4_pd_free(struct mlx4_dev *dev, u32 pdn) in mlx4_pd_free()
76 int mlx4_xrcd_alloc(struct mlx4_dev *dev, u32 *xrcdn) in mlx4_xrcd_alloc()
96 void __mlx4_xrcd_free(struct mlx4_dev *dev, u32 xrcdn) in __mlx4_xrcd_free()
101 void mlx4_xrcd_free(struct mlx4_dev *dev, u32 xrcdn) in mlx4_xrcd_free()
118 int mlx4_init_pd_table(struct mlx4_dev *dev) in mlx4_init_pd_table()
127 void mlx4_cleanup_pd_table(struct mlx4_dev *dev) in mlx4_cleanup_pd_table()
132 int mlx4_init_xrcd_table(struct mlx4_dev *dev) in mlx4_init_xrcd_table()
140 void mlx4_cleanup_xrcd_table(struct mlx4_dev *dev) in mlx4_cleanup_xrcd_table()
272 int mlx4_init_uar_table(struct mlx4_dev *dev) in mlx4_init_uar_table()
[all …]
H A Dicm.h67 struct mlx4_dev;
69 struct mlx4_icm *mlx4_alloc_icm(struct mlx4_dev *dev, int npages,
71 void mlx4_free_icm(struct mlx4_dev *dev, struct mlx4_icm *icm, int coherent);
73 int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj,
75 void mlx4_table_put(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj);
76 int mlx4_table_get_range(struct mlx4_dev *dev, struct mlx4_icm_table *table,
78 void mlx4_table_put_range(struct mlx4_dev *dev, struct mlx4_icm_table *table,
80 int mlx4_init_icm_table(struct mlx4_dev *dev, struct mlx4_icm_table *table,
83 void mlx4_cleanup_icm_table(struct mlx4_dev *dev, struct mlx4_icm_table *table);
H A Dmlx4_srq.c43 void mlx4_srq_event(struct mlx4_dev *dev, u32 srqn, int event_type) in mlx4_srq_event()
80 static int mlx4_ARM_SRQ(struct mlx4_dev *dev, int srq_num, int limit_watermark) in mlx4_ARM_SRQ()
93 int __mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn) in __mlx4_srq_alloc_icm()
120 static int mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn) in mlx4_srq_alloc_icm()
138 void __mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn) in __mlx4_srq_free_icm()
147 static void mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn) in mlx4_srq_free_icm()
162 int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, u32 cqn, u16 xrcd, in mlx4_srq_alloc()
222 void mlx4_srq_free(struct mlx4_dev *dev, struct mlx4_srq *srq) in mlx4_srq_free()
272 int mlx4_init_srq_table(struct mlx4_dev *dev) in mlx4_init_srq_table()
290 void mlx4_cleanup_srq_table(struct mlx4_dev *dev) in mlx4_cleanup_srq_table()
[all …]
H A Dmlx4_mr.c156 u32 __mlx4_alloc_mtt_range(struct mlx4_dev *dev, int order) in __mlx4_alloc_mtt_range()
383 void mlx4_mr_hw_put_mpt(struct mlx4_dev *dev, in mlx4_mr_hw_put_mpt()
410 int mlx4_mr_hw_change_access(struct mlx4_dev *dev, in mlx4_mr_hw_change_access()
436 static int mlx4_WRITE_MTT(struct mlx4_dev *dev, in mlx4_WRITE_MTT()
444 int __mlx4_mpt_reserve(struct mlx4_dev *dev) in __mlx4_mpt_reserve()
451 static int mlx4_mpt_reserve(struct mlx4_dev *dev) in mlx4_mpt_reserve()
465 void __mlx4_mpt_release(struct mlx4_dev *dev, u32 index) in __mlx4_mpt_release()
509 void __mlx4_mpt_free_icm(struct mlx4_dev *dev, u32 index) in __mlx4_mpt_free_icm()
913 int mlx4_init_mr_table(struct mlx4_dev *dev) in mlx4_init_mr_table()
961 void mlx4_cleanup_mr_table(struct mlx4_dev *dev) in mlx4_cleanup_mr_table()
[all …]
H A Dfw_qos.h66 int mlx4_SET_PORT_PRIO2TC(struct mlx4_dev *dev, u8 port, u8 *prio2tc);
84 int mlx4_SET_PORT_SCHEDULER(struct mlx4_dev *dev, u8 port, u8 *tc_tx_bw,
98 int mlx4_ALLOCATE_VPP_get(struct mlx4_dev *dev, u8 port,
113 int mlx4_ALLOCATE_VPP_set(struct mlx4_dev *dev, u8 port, u8 *vpp_p_up);
127 int mlx4_SET_VPORT_QOS_get(struct mlx4_dev *dev, u8 port, u8 vport,
142 int mlx4_SET_VPORT_QOS_set(struct mlx4_dev *dev, u8 port, u8 vport,
H A Dmlx4_cq.c54 void mlx4_cq_completion(struct mlx4_dev *dev, u32 cqn) in mlx4_cq_completion()
117 int mlx4_cq_modify(struct mlx4_dev *dev, struct mlx4_cq *cq, in mlx4_cq_modify()
139 int mlx4_cq_resize(struct mlx4_dev *dev, struct mlx4_cq *cq, in mlx4_cq_resize()
165 int __mlx4_cq_alloc_icm(struct mlx4_dev *dev, int *cqn) in __mlx4_cq_alloc_icm()
192 static int mlx4_cq_alloc_icm(struct mlx4_dev *dev, int *cqn) in mlx4_cq_alloc_icm()
211 void __mlx4_cq_free_icm(struct mlx4_dev *dev, int cqn) in __mlx4_cq_free_icm()
221 static void mlx4_cq_free_icm(struct mlx4_dev *dev, int cqn) in mlx4_cq_free_icm()
237 int mlx4_cq_alloc(struct mlx4_dev *dev, int nent, in mlx4_cq_alloc()
312 void mlx4_cq_free(struct mlx4_dev *dev, struct mlx4_cq *cq) in mlx4_cq_free()
339 int mlx4_init_cq_table(struct mlx4_dev *dev) in mlx4_init_cq_table()
[all …]
H A Dmlx4_catas.c52 static int read_vendor_id(struct mlx4_dev *dev) in read_vendor_id()
71 static int mlx4_reset_master(struct mlx4_dev *dev) in mlx4_reset_master()
94 static int mlx4_reset_slave(struct mlx4_dev *dev) in mlx4_reset_slave()
172 struct mlx4_dev *dev; in mlx4_enter_error_state()
217 static void dump_err_buf(struct mlx4_dev *dev) in dump_err_buf()
231 struct mlx4_dev *dev = (struct mlx4_dev *) dev_ptr; in poll_catas()
269 void mlx4_start_catas_poll(struct mlx4_dev *dev) in mlx4_start_catas_poll()
298 void mlx4_stop_catas_poll(struct mlx4_dev *dev) in mlx4_stop_catas_poll()
313 int mlx4_catas_init(struct mlx4_dev *dev) in mlx4_catas_init()
323 void mlx4_catas_end(struct mlx4_dev *dev) in mlx4_catas_end()
H A Dmlx4_mcg.c43 int mlx4_get_mgm_entry_size(struct mlx4_dev *dev) in mlx4_get_mgm_entry_size()
48 int mlx4_get_qp_per_mgm(struct mlx4_dev *dev) in mlx4_get_qp_per_mgm()
82 static int mlx4_READ_ENTRY(struct mlx4_dev *dev, int index, in mlx4_READ_ENTRY()
418 static int add_promisc_qp(struct mlx4_dev *dev, u8 port, in add_promisc_qp()
694 static int find_entry(struct mlx4_dev *dev, u8 port, in find_entry()
826 int mlx4_hw_rule_sz(struct mlx4_dev *dev, in mlx4_hw_rule_sz()
983 int mlx4_flow_attach(struct mlx4_dev *dev, in mlx4_flow_attach()
1037 int mlx4_flow_detach(struct mlx4_dev *dev, u64 reg_id) in mlx4_flow_detach()
1528 int mlx4_unicast_attach(struct mlx4_dev *dev, in mlx4_unicast_attach()
1624 int mlx4_init_mcg_table(struct mlx4_dev *dev) in mlx4_init_mcg_table()
[all …]
H A Dmlx4_eq.c144 struct mlx4_dev *dev = &priv->dev; in mlx4_gen_slave_eqe()
239 struct mlx4_dev *dev = &priv->dev; in mlx4_set_eq_affinity_hint()
453 struct mlx4_dev *dev = &priv->dev; in mlx4_master_handle_slave_flr()
836 struct mlx4_dev *dev = dev_ptr; in mlx4_interrupt()
852 struct mlx4_dev *dev = eq->dev; in mlx4_msi_x_interrupt()
1136 int mlx4_alloc_eq_table(struct mlx4_dev *dev) in mlx4_alloc_eq_table()
1148 void mlx4_free_eq_table(struct mlx4_dev *dev) in mlx4_free_eq_table()
1153 int mlx4_init_eq_table(struct mlx4_dev *dev) in mlx4_init_eq_table()
1341 int mlx4_test_async(struct mlx4_dev *dev) in mlx4_test_async()
1536 mlx4_disable_interrupts(struct mlx4_dev *dev) in mlx4_disable_interrupts()
[all …]
H A Dmlx4_icm.c55 static void mlx4_free_icm_pages(struct mlx4_dev *dev, struct mlx4_icm_chunk *chunk) in mlx4_free_icm_pages()
79 void mlx4_free_icm(struct mlx4_dev *dev, struct mlx4_icm *icm, int coherent) in mlx4_free_icm()
128 struct mlx4_icm *mlx4_alloc_icm(struct mlx4_dev *dev, int npages, in mlx4_alloc_icm()
228 static int mlx4_MAP_ICM(struct mlx4_dev *dev, struct mlx4_icm *icm, u64 virt) in mlx4_MAP_ICM()
233 static int mlx4_UNMAP_ICM(struct mlx4_dev *dev, u64 virt, u32 page_count) in mlx4_UNMAP_ICM()
239 int mlx4_MAP_ICM_AUX(struct mlx4_dev *dev, struct mlx4_icm *icm) in mlx4_MAP_ICM_AUX()
244 int mlx4_UNMAP_ICM_AUX(struct mlx4_dev *dev) in mlx4_UNMAP_ICM_AUX()
250 int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj, in mlx4_table_get()
354 int mlx4_table_get_range(struct mlx4_dev *dev, struct mlx4_icm_table *table, in mlx4_table_get_range()
378 void mlx4_table_put_range(struct mlx4_dev *dev, struct mlx4_icm_table *table, in mlx4_table_put_range()
[all …]
H A Dmlx4_qp.c50 void mlx4_qp_event(struct mlx4_dev *dev, u32 qpn, int event_type) in mlx4_qp_event()
362 void __mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn) in __mlx4_qp_free_icm()
374 static void mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn) in mlx4_qp_free_icm()
422 int mlx4_update_qp(struct mlx4_dev *dev, u32 qpn, in mlx4_update_qp()
502 void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp) in mlx4_qp_free()
522 static int mlx4_create_zones(struct mlx4_dev *dev, in mlx4_create_zones()
712 static void mlx4_cleanup_qp_zones(struct mlx4_dev *dev) in mlx4_cleanup_qp_zones()
739 int mlx4_init_qp_table(struct mlx4_dev *dev) in mlx4_init_qp_table()
868 void mlx4_cleanup_qp_table(struct mlx4_dev *dev) in mlx4_cleanup_qp_table()
878 int mlx4_qp_query(struct mlx4_dev *dev, struct mlx4_qp *qp, in mlx4_qp_query()
[all …]
H A Dmlx4_sense.c41 int mlx4_SENSE_PORT(struct mlx4_dev *dev, int port, in mlx4_SENSE_PORT()
64 void mlx4_do_sense_ports(struct mlx4_dev *dev, in mlx4_do_sense_ports()
96 struct mlx4_dev *dev = sense->dev; in mlx4_sense_port()
119 void mlx4_start_sense(struct mlx4_dev *dev) in mlx4_start_sense()
134 void mlx4_stop_sense(struct mlx4_dev *dev) in mlx4_stop_sense()
146 void mlx4_sense_init(struct mlx4_dev *dev) in mlx4_sense_init()
H A Dmlx4_resource_tracker.c440 void mlx4_init_quotas(struct mlx4_dev *dev) in mlx4_init_quotas()
480 int mlx4_init_resource_tracker(struct mlx4_dev *dev) in mlx4_init_resource_tracker()
642 void mlx4_free_resource_tracker(struct mlx4_dev *dev, in mlx4_free_resource_tracker()
736 static int update_vport_qp_param(struct mlx4_dev *dev, in update_vport_qp_param()
834 static int mpt_mask(struct mlx4_dev *dev) in mpt_mask()
839 static void *find_res(struct mlx4_dev *dev, u64 res_id, in find_res()
1728 static int fw_reserved(struct mlx4_dev *dev, int qpn) in fw_reserved()
3126 static int verify_qp_parameters(struct mlx4_dev *dev, in verify_qp_parameters()
5020 int mlx4_bond_fs_rules(struct mlx4_dev *dev) in mlx4_bond_fs_rules()
5025 int mlx4_unbond_fs_rules(struct mlx4_dev *dev) in mlx4_unbond_fs_rules()
[all …]
H A Dmlx4_main.c1086 struct mlx4_dev *mdev = info->dev; in show_port_type()
1103 struct mlx4_dev *mdev = info->dev; in __set_port_type()
1173 struct mlx4_dev *mdev = info->dev; in set_port_type()
1238 struct mlx4_dev *mdev = info->dev; in show_port_ib_mtu()
1251 struct mlx4_dev *mdev = info->dev; in set_port_ib_mtu()
1368 int mlx4_bond(struct mlx4_dev *dev) in mlx4_bond()
1396 int mlx4_unbond(struct mlx4_dev *dev) in mlx4_unbond()
3210 struct mlx4_dev *dev; in mlx4_load_one()
3760 struct mlx4_dev *dev; in mlx4_init_one()
3830 struct mlx4_dev *dev = persist->dev; in mlx4_unload_one()
[all …]
H A Dmlx4_port.c90 void mlx4_init_roce_gid_table(struct mlx4_dev *dev, in mlx4_init_roce_gid_table()
100 static int validate_index(struct mlx4_dev *dev, in validate_index()
112 static int find_index(struct mlx4_dev *dev, in find_index()
170 static bool mlx4_need_mf_bond(struct mlx4_dev *dev) in mlx4_need_mf_bond()
372 int mlx4_get_base_qpn(struct mlx4_dev *dev, u8 port) in mlx4_get_base_qpn()
842 int mlx4_bond_mac_table(struct mlx4_dev *dev) in mlx4_bond_mac_table()
896 int mlx4_unbond_mac_table(struct mlx4_dev *dev) in mlx4_unbond_mac_table()
949 int mlx4_bond_vlan_table(struct mlx4_dev *dev) in mlx4_bond_vlan_table()
1003 int mlx4_unbond_vlan_table(struct mlx4_dev *dev) in mlx4_unbond_vlan_table()
1716 int mlx4_SET_MCAST_FLTR(struct mlx4_dev *dev, u8 port, in mlx4_SET_MCAST_FLTR()
[all …]
H A Dmlx4_cmd.c254 static int comm_pending(struct mlx4_dev *dev) in comm_pending()
418 static int cmd_pending(struct mlx4_dev *dev) in cmd_pending()
812 int mlx4_ARM_COMM_CHANNEL(struct mlx4_dev *dev) in mlx4_ARM_COMM_CHANNEL()
1853 struct mlx4_dev *dev = &priv->dev; in mlx4_master_immediate_activate_vlan_qos()
2245 struct mlx4_dev *dev = &priv->dev; in mlx4_master_comm_channel()
2293 static int sync_toggles(struct mlx4_dev *dev) in sync_toggles()
2338 int mlx4_multi_func_init(struct mlx4_dev *dev) in mlx4_multi_func_init()
2484 int mlx4_cmd_init(struct mlx4_dev *dev) in mlx4_cmd_init()
2617 int mlx4_cmd_use_events(struct mlx4_dev *dev) in mlx4_cmd_use_events()
2838 struct mlx4_dev *dev, in mlx4_phys_to_slaves_pport_actv()
[all …]
H A Dmlx4_fw_qos.c85 int mlx4_SET_PORT_PRIO2TC(struct mlx4_dev *dev, u8 port, u8 *prio2tc) in mlx4_SET_PORT_PRIO2TC()
111 int mlx4_SET_PORT_SCHEDULER(struct mlx4_dev *dev, u8 port, u8 *tc_tx_bw, in mlx4_SET_PORT_SCHEDULER()
159 int mlx4_ALLOCATE_VPP_get(struct mlx4_dev *dev, u8 port, in mlx4_ALLOCATE_VPP_get()
194 int mlx4_ALLOCATE_VPP_set(struct mlx4_dev *dev, u8 port, u8 *vpp_p_up) in mlx4_ALLOCATE_VPP_set()
221 int mlx4_SET_VPORT_QOS_get(struct mlx4_dev *dev, u8 port, u8 vport, in mlx4_SET_VPORT_QOS_get()
258 int mlx4_SET_VPORT_QOS_set(struct mlx4_dev *dev, u8 port, u8 vport, in mlx4_SET_VPORT_QOS_set()
H A Dmlx4_fw.c1587 int mlx4_UNMAP_FA(struct mlx4_dev *dev) in mlx4_UNMAP_FA()
1594 int mlx4_RUN_FW(struct mlx4_dev *dev) in mlx4_RUN_FW()
1600 int mlx4_QUERY_FW(struct mlx4_dev *dev) in mlx4_QUERY_FW()
2048 int mlx4_QUERY_HCA(struct mlx4_dev *dev, in mlx4_QUERY_HCA()
2259 int mlx4_INIT_PORT(struct mlx4_dev *dev, int port) in mlx4_INIT_PORT()
2562 int mlx4_NOP(struct mlx4_dev *dev) in mlx4_NOP()
2605 int mlx4_get_phys_port_id(struct mlx4_dev *dev) in mlx4_get_phys_port_id()
2671 struct mlx4_dev *dev = &priv->dev; in mlx4_opreq_action()
2803 int mlx4_config_mad_demux(struct mlx4_dev *dev) in mlx4_config_mad_demux()
2949 int mlx4_ACCESS_PTYS_REG(struct mlx4_dev *dev, in mlx4_ACCESS_PTYS_REG()
[all …]
H A Dmlx4_intf.c130 int mlx4_do_bond(struct mlx4_dev *dev, bool enable) in mlx4_do_bond()
182 void mlx4_dispatch_event(struct mlx4_dev *dev, enum mlx4_dev_event type, in mlx4_dispatch_event()
198 int mlx4_register_device(struct mlx4_dev *dev) in mlx4_register_device()
216 void mlx4_unregister_device(struct mlx4_dev *dev) in mlx4_unregister_device()
236 void *mlx4_get_protocol_dev(struct mlx4_dev *dev, enum mlx4_protocol proto, int port) in mlx4_get_protocol_dev()
/freebsd-14.2/sys/dev/mlx4/
H A Ddevice.h849 struct mlx4_dev *dev;
864 struct mlx4_dev { struct
1404 int mlx4_SYNC_TPT(struct mlx4_dev *dev);
1406 int mlx4_test_async(struct mlx4_dev *dev);
1418 int mlx4_get_phys_port_id(struct mlx4_dev *dev);
1430 int mlx4_flow_attach(struct mlx4_dev *dev,
1466 s64 mlx4_read_clock(struct mlx4_dev *dev);
1489 struct mlx4_dev *dev,
1514 void mlx4_mr_hw_put_mpt(struct mlx4_dev *dev,
1523 int mlx4_max_tc(struct mlx4_dev *dev);
[all …]
H A Ddriver.h38 struct mlx4_dev;
57 void * (*add) (struct mlx4_dev *dev);
58 void (*remove)(struct mlx4_dev *dev, void *context);
59 void (*event) (struct mlx4_dev *dev, void *context,
62 void (*activate)(struct mlx4_dev *dev, void *context);
71 int mlx4_bond(struct mlx4_dev *dev);
72 int mlx4_unbond(struct mlx4_dev *dev);
73 static inline int mlx4_is_bonded(struct mlx4_dev *dev) in mlx4_is_bonded()
78 static inline int mlx4_is_mf_bonded(struct mlx4_dev *dev) in mlx4_is_mf_bonded()
104 void mlx4_disable_interrupts(struct mlx4_dev *);
[all …]
H A Dcmd.h261 struct mlx4_dev;
268 int __mlx4_cmd(struct mlx4_dev *dev, u64 in_param, u64 *out_param,
303 struct mlx4_cmd_mailbox *mlx4_alloc_cmd_mailbox(struct mlx4_dev *dev);
306 int mlx4_get_counter_stats(struct mlx4_dev *dev, int counter_index,
309 int mlx4_set_vf_mac(struct mlx4_dev *dev, int port, int vf, u64 mac);
310 int mlx4_set_vf_vlan(struct mlx4_dev *dev, int port, int vf, u16 vlan,
312 int mlx4_set_vf_rate(struct mlx4_dev *dev, int port, int vf, int min_tx_rate,
315 int mlx4_config_dev_retrieval(struct mlx4_dev *dev,
317 void mlx4_cmd_wake_completions(struct mlx4_dev *dev);
318 void mlx4_report_internal_err_comm_event(struct mlx4_dev *dev);
[all …]
H A Dqp.h477 int mlx4_update_qp(struct mlx4_dev *dev, u32 qpn,
480 int mlx4_qp_modify(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
485 int mlx4_qp_query(struct mlx4_dev *dev, struct mlx4_qp *qp,
488 int mlx4_qp_to_ready(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
492 static inline struct mlx4_qp *__mlx4_qp_lookup(struct mlx4_dev *dev, u32 qpn) in __mlx4_qp_lookup()
497 void mlx4_qp_remove(struct mlx4_dev *dev, struct mlx4_qp *qp);
507 u16 mlx4_qp_roce_entropy(struct mlx4_dev *dev, u32 qpn);

12