Lines Matching refs:iwdev

49 u32 i40iw_initialize_hw_resources(struct i40iw_device *iwdev)  in i40iw_initialize_hw_resources()  argument
60 max_qp = iwdev->sc_dev.hmc_info->hmc_obj[I40IW_HMC_IW_QP].cnt; in i40iw_initialize_hw_resources()
61 max_cq = iwdev->sc_dev.hmc_info->hmc_obj[I40IW_HMC_IW_CQ].cnt; in i40iw_initialize_hw_resources()
62 max_mr = iwdev->sc_dev.hmc_info->hmc_obj[I40IW_HMC_IW_MR].cnt; in i40iw_initialize_hw_resources()
63 arp_table_size = iwdev->sc_dev.hmc_info->hmc_obj[I40IW_HMC_IW_ARP].cnt; in i40iw_initialize_hw_resources()
64 iwdev->max_cqe = 0xFFFFF; in i40iw_initialize_hw_resources()
73 iwdev->mem_resources = kzalloc(resources_size, GFP_KERNEL); in i40iw_initialize_hw_resources()
75 if (!iwdev->mem_resources) in i40iw_initialize_hw_resources()
78 iwdev->max_qp = max_qp; in i40iw_initialize_hw_resources()
79 iwdev->max_mr = max_mr; in i40iw_initialize_hw_resources()
80 iwdev->max_cq = max_cq; in i40iw_initialize_hw_resources()
81 iwdev->max_pd = num_pds; in i40iw_initialize_hw_resources()
82 iwdev->arp_table_size = arp_table_size; in i40iw_initialize_hw_resources()
83 iwdev->arp_table = (struct i40iw_arp_entry *)iwdev->mem_resources; in i40iw_initialize_hw_resources()
84 resource_ptr = iwdev->mem_resources + (sizeof(struct i40iw_arp_entry) * arp_table_size); in i40iw_initialize_hw_resources()
86 iwdev->device_cap_flags = IB_DEVICE_LOCAL_DMA_LKEY | in i40iw_initialize_hw_resources()
89 iwdev->allocated_qps = resource_ptr; in i40iw_initialize_hw_resources()
90 iwdev->allocated_cqs = &iwdev->allocated_qps[BITS_TO_LONGS(max_qp)]; in i40iw_initialize_hw_resources()
91 iwdev->allocated_mrs = &iwdev->allocated_cqs[BITS_TO_LONGS(max_cq)]; in i40iw_initialize_hw_resources()
92 iwdev->allocated_pds = &iwdev->allocated_mrs[BITS_TO_LONGS(max_mr)]; in i40iw_initialize_hw_resources()
93 iwdev->allocated_arps = &iwdev->allocated_pds[BITS_TO_LONGS(num_pds)]; in i40iw_initialize_hw_resources()
94 iwdev->qp_table = (struct i40iw_qp **)(&iwdev->allocated_arps[BITS_TO_LONGS(arp_table_size)]); in i40iw_initialize_hw_resources()
95 set_bit(0, iwdev->allocated_mrs); in i40iw_initialize_hw_resources()
96 set_bit(0, iwdev->allocated_qps); in i40iw_initialize_hw_resources()
97 set_bit(0, iwdev->allocated_cqs); in i40iw_initialize_hw_resources()
98 set_bit(0, iwdev->allocated_pds); in i40iw_initialize_hw_resources()
99 set_bit(0, iwdev->allocated_arps); in i40iw_initialize_hw_resources()
102 set_bit(1, iwdev->allocated_qps); in i40iw_initialize_hw_resources()
103 set_bit(1, iwdev->allocated_cqs); in i40iw_initialize_hw_resources()
104 set_bit(1, iwdev->allocated_pds); in i40iw_initialize_hw_resources()
105 set_bit(2, iwdev->allocated_cqs); in i40iw_initialize_hw_resources()
106 set_bit(2, iwdev->allocated_pds); in i40iw_initialize_hw_resources()
108 spin_lock_init(&iwdev->resource_lock); in i40iw_initialize_hw_resources()
109 spin_lock_init(&iwdev->qptable_lock); in i40iw_initialize_hw_resources()
111 mrdrvbits = 24 - max(get_count_order(iwdev->max_mr), 14); in i40iw_initialize_hw_resources()
112 iwdev->mr_stagmask = ~(((1 << mrdrvbits) - 1) << (32 - mrdrvbits)); in i40iw_initialize_hw_resources()
122 static void i40iw_cqp_ce_handler(struct i40iw_device *iwdev, struct i40iw_sc_cq *cq, bool arm) in i40iw_cqp_ce_handler() argument
125 struct i40iw_sc_dev *dev = &iwdev->sc_dev; in i40iw_cqp_ce_handler()
148 i40iw_put_cqp_request(&iwdev->cqp, cqp_request); in i40iw_cqp_ce_handler()
152 i40iw_put_cqp_request(&iwdev->cqp, cqp_request); in i40iw_cqp_ce_handler()
170 static void i40iw_iwarp_ce_handler(struct i40iw_device *iwdev, in i40iw_iwarp_ce_handler() argument
185 static void i40iw_puda_ce_handler(struct i40iw_device *iwdev, in i40iw_puda_ce_handler() argument
188 struct i40iw_sc_dev *dev = (struct i40iw_sc_dev *)&iwdev->sc_dev; in i40iw_puda_ce_handler()
214 void i40iw_process_ceq(struct i40iw_device *iwdev, struct i40iw_ceq *ceq) in i40iw_process_ceq() argument
216 struct i40iw_sc_dev *dev = &iwdev->sc_dev; in i40iw_process_ceq()
228 i40iw_cqp_ce_handler(iwdev, cq, arm); in i40iw_process_ceq()
230 i40iw_iwarp_ce_handler(iwdev, cq); in i40iw_process_ceq()
233 i40iw_puda_ce_handler(iwdev, cq); in i40iw_process_ceq()
269 i40iw_hw_modify_qp(iwqp->iwdev, iwqp, &info, 0); in i40iw_next_iw_state()
276 void i40iw_process_aeq(struct i40iw_device *iwdev) in i40iw_process_aeq() argument
278 struct i40iw_sc_dev *dev = &iwdev->sc_dev; in i40iw_process_aeq()
279 struct i40iw_aeq *aeq = &iwdev->aeq; in i40iw_process_aeq()
307 spin_lock_irqsave(&iwdev->qptable_lock, flags); in i40iw_process_aeq()
308 iwqp = iwdev->qp_table[info->qp_cq_id]; in i40iw_process_aeq()
310 spin_unlock_irqrestore(&iwdev->qptable_lock, flags); in i40iw_process_aeq()
317 spin_unlock_irqrestore(&iwdev->qptable_lock, flags); in i40iw_process_aeq()
443 i40iw_cqp_manage_abvpt_cmd(struct i40iw_device *iwdev, in i40iw_cqp_manage_abvpt_cmd() argument
452 cqp_request = i40iw_get_cqp_request(&iwdev->cqp, add_port); in i40iw_cqp_manage_abvpt_cmd()
465 cqp_info->in.u.manage_apbvt_entry.cqp = &iwdev->cqp.sc_cqp; in i40iw_cqp_manage_abvpt_cmd()
467 status = i40iw_handle_cqp_op(iwdev, cqp_request); in i40iw_cqp_manage_abvpt_cmd()
480 enum i40iw_status_code i40iw_manage_apbvt(struct i40iw_device *iwdev, in i40iw_manage_apbvt() argument
484 struct i40iw_cm_core *cm_core = &iwdev->cm_core; in i40iw_manage_apbvt()
500 return i40iw_cqp_manage_abvpt_cmd(iwdev, accel_local_port, in i40iw_manage_apbvt()
510 status = i40iw_cqp_manage_abvpt_cmd(iwdev, accel_local_port, in i40iw_manage_apbvt()
524 void i40iw_manage_arp_cache(struct i40iw_device *iwdev, in i40iw_manage_arp_cache() argument
535 arp_index = i40iw_arp_table(iwdev, ip_addr, ipv4, mac_addr, action); in i40iw_manage_arp_cache()
538 cqp_request = i40iw_get_cqp_request(&iwdev->cqp, false); in i40iw_manage_arp_cache()
551 cqp_info->in.u.add_arp_cache_entry.cqp = &iwdev->cqp.sc_cqp; in i40iw_manage_arp_cache()
555 cqp_info->in.u.del_arp_cache_entry.cqp = &iwdev->cqp.sc_cqp; in i40iw_manage_arp_cache()
559 cqp_info->in.u.add_arp_cache_entry.cqp = &iwdev->cqp.sc_cqp; in i40iw_manage_arp_cache()
562 if (i40iw_handle_cqp_op(iwdev, cqp_request)) in i40iw_manage_arp_cache()
586 enum i40iw_status_code i40iw_manage_qhash(struct i40iw_device *iwdev, in i40iw_manage_qhash() argument
594 struct i40iw_sc_dev *dev = &iwdev->sc_dev; in i40iw_manage_qhash()
595 struct i40iw_sc_vsi *vsi = &iwdev->vsi; in i40iw_manage_qhash()
597 struct i40iw_cqp *iwcqp = &iwdev->cqp; in i40iw_manage_qhash()
608 info->vsi = &iwdev->vsi; in i40iw_manage_qhash()
620 ether_addr_copy(info->mac_addr, iwdev->netdev->dev_addr); in i40iw_manage_qhash()
651 cqp_info->in.u.manage_qhash_table_entry.cqp = &iwdev->cqp.sc_cqp; in i40iw_manage_qhash()
655 status = i40iw_handle_cqp_op(iwdev, cqp_request); in i40iw_manage_qhash()
668 enum i40iw_status_code i40iw_hw_flush_wqes(struct i40iw_device *iwdev, in i40iw_hw_flush_wqes() argument
679 cqp_request = i40iw_get_cqp_request(&iwdev->cqp, wait); in i40iw_hw_flush_wqes()
691 status = i40iw_handle_cqp_op(iwdev, cqp_request); in i40iw_hw_flush_wqes()
725 void i40iw_gen_ae(struct i40iw_device *iwdev, in i40iw_gen_ae() argument
734 cqp_request = i40iw_get_cqp_request(&iwdev->cqp, wait); in i40iw_gen_ae()
746 if (i40iw_handle_cqp_op(iwdev, cqp_request)) in i40iw_gen_ae()
757 enum i40iw_status_code i40iw_hw_manage_vf_pble_bp(struct i40iw_device *iwdev, in i40iw_hw_manage_vf_pble_bp() argument
766 if ((iwdev->init_state < CCQ_CREATED) && wait) in i40iw_hw_manage_vf_pble_bp()
769 cqp_request = i40iw_get_cqp_request(&iwdev->cqp, wait); in i40iw_hw_manage_vf_pble_bp()
779 cqp_info->in.u.manage_vf_pble_bp.cqp = &iwdev->cqp.sc_cqp; in i40iw_hw_manage_vf_pble_bp()
781 status = i40iw_handle_cqp_op(iwdev, cqp_request); in i40iw_hw_manage_vf_pble_bp()
834 void i40iw_flush_wqes(struct i40iw_device *iwdev, struct i40iw_qp *iwqp) in i40iw_flush_wqes() argument
850 (void)i40iw_hw_flush_wqes(iwdev, &iwqp->sc_qp, &info, true); in i40iw_flush_wqes()