Lines Matching refs:bp

32 static void bnxt_fill_msix_vecs(struct bnxt *bp, struct bnxt_msix_entry *ent)  in bnxt_fill_msix_vecs()  argument
34 struct bnxt_en_dev *edev = bp->edev; in bnxt_fill_msix_vecs()
38 netdev_warn(bp->dev, "Requested MSI-X vectors insufficient\n"); in bnxt_fill_msix_vecs()
43 ent[i].vector = bp->irq_tbl[i].vector; in bnxt_fill_msix_vecs()
45 if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) in bnxt_fill_msix_vecs()
46 ent[i].db_offset = bp->db_offset; in bnxt_fill_msix_vecs()
52 int bnxt_get_ulp_msix_num(struct bnxt *bp) in bnxt_get_ulp_msix_num() argument
54 if (bp->edev) in bnxt_get_ulp_msix_num()
55 return bp->edev->ulp_num_msix_vec; in bnxt_get_ulp_msix_num()
59 void bnxt_set_ulp_msix_num(struct bnxt *bp, int num) in bnxt_set_ulp_msix_num() argument
61 if (bp->edev) in bnxt_set_ulp_msix_num()
62 bp->edev->ulp_num_msix_vec = num; in bnxt_set_ulp_msix_num()
65 int bnxt_get_ulp_msix_num_in_use(struct bnxt *bp) in bnxt_get_ulp_msix_num_in_use() argument
67 if (bnxt_ulp_registered(bp->edev)) in bnxt_get_ulp_msix_num_in_use()
68 return bp->edev->ulp_num_msix_vec; in bnxt_get_ulp_msix_num_in_use()
72 int bnxt_get_ulp_stat_ctxs(struct bnxt *bp) in bnxt_get_ulp_stat_ctxs() argument
74 if (bp->edev) in bnxt_get_ulp_stat_ctxs()
75 return bp->edev->ulp_num_ctxs; in bnxt_get_ulp_stat_ctxs()
79 void bnxt_set_ulp_stat_ctxs(struct bnxt *bp, int num_ulp_ctx) in bnxt_set_ulp_stat_ctxs() argument
81 if (bp->edev) in bnxt_set_ulp_stat_ctxs()
82 bp->edev->ulp_num_ctxs = num_ulp_ctx; in bnxt_set_ulp_stat_ctxs()
85 int bnxt_get_ulp_stat_ctxs_in_use(struct bnxt *bp) in bnxt_get_ulp_stat_ctxs_in_use() argument
87 if (bnxt_ulp_registered(bp->edev)) in bnxt_get_ulp_stat_ctxs_in_use()
88 return bp->edev->ulp_num_ctxs; in bnxt_get_ulp_stat_ctxs_in_use()
92 void bnxt_set_dflt_ulp_stat_ctxs(struct bnxt *bp) in bnxt_set_dflt_ulp_stat_ctxs() argument
94 if (bp->edev) { in bnxt_set_dflt_ulp_stat_ctxs()
95 bp->edev->ulp_num_ctxs = BNXT_MIN_ROCE_STAT_CTXS; in bnxt_set_dflt_ulp_stat_ctxs()
100 if (BNXT_PF(bp) && !bp->pf.port_id && in bnxt_set_dflt_ulp_stat_ctxs()
101 bp->port_count > 1) in bnxt_set_dflt_ulp_stat_ctxs()
102 bp->edev->ulp_num_ctxs++; in bnxt_set_dflt_ulp_stat_ctxs()
111 struct bnxt *bp = netdev_priv(dev); in bnxt_register_dev() local
118 if (!bp->irq_tbl) { in bnxt_register_dev()
122 max_stat_ctxs = bnxt_get_max_func_stat_ctxs(bp); in bnxt_register_dev()
124 bp->cp_nr_rings == max_stat_ctxs) { in bnxt_register_dev()
133 if (test_bit(BNXT_STATE_OPEN, &bp->state)) in bnxt_register_dev()
134 bnxt_hwrm_vnic_cfg(bp, &bp->vnic_info[BNXT_VNIC_DEFAULT]); in bnxt_register_dev()
136 edev->ulp_tbl->msix_requested = bnxt_get_ulp_msix_num(bp); in bnxt_register_dev()
138 bnxt_fill_msix_vecs(bp, bp->edev->msix_entries); in bnxt_register_dev()
150 struct bnxt *bp = netdev_priv(dev); in bnxt_unregister_dev() local
161 bnxt_hwrm_func_drv_rgtr(bp, NULL, 0, true); in bnxt_unregister_dev()
173 static int bnxt_set_dflt_ulp_msix(struct bnxt *bp) in bnxt_set_dflt_ulp_msix() argument
177 if (BNXT_VF(bp)) in bnxt_set_dflt_ulp_msix()
179 else if (bp->port_partition_type) in bnxt_set_dflt_ulp_msix()
192 struct bnxt *bp = netdev_priv(dev); in bnxt_send_msg() local
198 if (bp->fw_reset_state) in bnxt_send_msg()
201 rc = hwrm_req_init(bp, req, 0 /* don't care */); in bnxt_send_msg()
205 rc = hwrm_req_replace(bp, req, fw_msg->msg, fw_msg->msg_len); in bnxt_send_msg()
209 hwrm_req_timeout(bp, req, fw_msg->timeout); in bnxt_send_msg()
210 resp = hwrm_req_hold(bp, req); in bnxt_send_msg()
211 rc = hwrm_req_send(bp, req); in bnxt_send_msg()
220 hwrm_req_drop(bp, req); in bnxt_send_msg()
225 void bnxt_ulp_stop(struct bnxt *bp) in bnxt_ulp_stop() argument
227 struct bnxt_aux_priv *aux_priv = bp->aux_priv; in bnxt_ulp_stop()
228 struct bnxt_en_dev *edev = bp->edev; in bnxt_ulp_stop()
248 edev->en_state = bp->state; in bnxt_ulp_stop()
256 void bnxt_ulp_start(struct bnxt *bp, int err) in bnxt_ulp_start() argument
258 struct bnxt_aux_priv *aux_priv = bp->aux_priv; in bnxt_ulp_start()
259 struct bnxt_en_dev *edev = bp->edev; in bnxt_ulp_start()
270 bnxt_fill_msix_vecs(bp, edev->msix_entries); in bnxt_ulp_start()
280 edev->en_state = bp->state; in bnxt_ulp_start()
289 void bnxt_ulp_irq_stop(struct bnxt *bp) in bnxt_ulp_irq_stop() argument
291 struct bnxt_en_dev *edev = bp->edev; in bnxt_ulp_irq_stop()
298 if (bnxt_ulp_registered(bp->edev)) { in bnxt_ulp_irq_stop()
304 ops = netdev_lock_dereference(ulp->ulp_ops, bp->dev); in bnxt_ulp_irq_stop()
307 if (test_bit(BNXT_STATE_FW_RESET_DET, &bp->state)) in bnxt_ulp_irq_stop()
313 void bnxt_ulp_irq_restart(struct bnxt *bp, int err) in bnxt_ulp_irq_restart() argument
315 struct bnxt_en_dev *edev = bp->edev; in bnxt_ulp_irq_restart()
321 if (bnxt_ulp_registered(bp->edev)) { in bnxt_ulp_irq_restart()
328 ops = netdev_lock_dereference(ulp->ulp_ops, bp->dev); in bnxt_ulp_irq_restart()
337 bnxt_fill_msix_vecs(bp, ent); in bnxt_ulp_irq_restart()
344 void bnxt_ulp_async_events(struct bnxt *bp, struct hwrm_async_event_cmpl *cmpl) in bnxt_ulp_async_events() argument
347 struct bnxt_en_dev *edev = bp->edev; in bnxt_ulp_async_events()
376 struct bnxt *bp = netdev_priv(dev); in bnxt_register_async_events() local
384 bnxt_hwrm_func_drv_rgtr(bp, events_bmap, max_id + 1, true); in bnxt_register_async_events()
388 void bnxt_rdma_aux_device_uninit(struct bnxt *bp) in bnxt_rdma_aux_device_uninit() argument
394 if (!bp->aux_priv) in bnxt_rdma_aux_device_uninit()
397 aux_priv = bp->aux_priv; in bnxt_rdma_aux_device_uninit()
406 struct bnxt *bp = netdev_priv(aux_priv->edev->net); in bnxt_aux_dev_release() local
410 bp->edev = NULL; in bnxt_aux_dev_release()
413 bp->aux_priv = NULL; in bnxt_aux_dev_release()
416 void bnxt_rdma_aux_device_del(struct bnxt *bp) in bnxt_rdma_aux_device_del() argument
418 if (!bp->edev) in bnxt_rdma_aux_device_del()
421 auxiliary_device_delete(&bp->aux_priv->aux_dev); in bnxt_rdma_aux_device_del()
424 static void bnxt_set_edev_info(struct bnxt_en_dev *edev, struct bnxt *bp) in bnxt_set_edev_info() argument
426 edev->net = bp->dev; in bnxt_set_edev_info()
427 edev->pdev = bp->pdev; in bnxt_set_edev_info()
428 edev->l2_db_size = bp->db_size; in bnxt_set_edev_info()
429 edev->l2_db_size_nc = bp->db_size; in bnxt_set_edev_info()
430 edev->l2_db_offset = bp->db_offset; in bnxt_set_edev_info()
433 if (bp->flags & BNXT_FLAG_ROCEV1_CAP) in bnxt_set_edev_info()
435 if (bp->flags & BNXT_FLAG_ROCEV2_CAP) in bnxt_set_edev_info()
437 if (bp->flags & BNXT_FLAG_VF) in bnxt_set_edev_info()
439 if (BNXT_ROCE_VF_RESC_CAP(bp)) in bnxt_set_edev_info()
441 if (BNXT_SW_RES_LMT(bp)) in bnxt_set_edev_info()
444 edev->chip_num = bp->chip_num; in bnxt_set_edev_info()
445 edev->hw_ring_stats_size = bp->hw_ring_stats_size; in bnxt_set_edev_info()
446 edev->pf_port_id = bp->pf.port_id; in bnxt_set_edev_info()
447 edev->en_state = bp->state; in bnxt_set_edev_info()
448 edev->bar0 = bp->bar0; in bnxt_set_edev_info()
451 void bnxt_rdma_aux_device_add(struct bnxt *bp) in bnxt_rdma_aux_device_add() argument
456 if (!bp->edev) in bnxt_rdma_aux_device_add()
459 aux_dev = &bp->aux_priv->aux_dev; in bnxt_rdma_aux_device_add()
462 netdev_warn(bp->dev, "Failed to add auxiliary device for ROCE\n"); in bnxt_rdma_aux_device_add()
464 bp->flags &= ~BNXT_FLAG_ROCE_CAP; in bnxt_rdma_aux_device_add()
468 void bnxt_rdma_aux_device_init(struct bnxt *bp) in bnxt_rdma_aux_device_init() argument
476 if (!(bp->flags & BNXT_FLAG_ROCE_CAP)) in bnxt_rdma_aux_device_init()
479 aux_priv = kzalloc(sizeof(*bp->aux_priv), GFP_KERNEL); in bnxt_rdma_aux_device_init()
485 netdev_warn(bp->dev, in bnxt_rdma_aux_device_init()
494 aux_dev->dev.parent = &bp->pdev->dev; in bnxt_rdma_aux_device_init()
503 bp->aux_priv = aux_priv; in bnxt_rdma_aux_device_init()
520 bp->edev = edev; in bnxt_rdma_aux_device_init()
521 bnxt_set_edev_info(edev, bp); in bnxt_rdma_aux_device_init()
522 bp->ulp_num_msix_want = bnxt_set_dflt_ulp_msix(bp); in bnxt_rdma_aux_device_init()
529 bp->flags &= ~BNXT_FLAG_ROCE_CAP; in bnxt_rdma_aux_device_init()