Lines Matching refs:rdev
122 if (!wq->rdev->wr_log) in c4iw_log_wr_stats()
125 idx = (atomic_inc_return(&wq->rdev->wr_log_idx) - 1) & in c4iw_log_wr_stats()
126 (wq->rdev->wr_log_size - 1); in c4iw_log_wr_stats()
127 le.poll_sge_ts = cxgb4_read_sge_timestamp(wq->rdev->lldi.ports[0]); in c4iw_log_wr_stats()
144 wq->rdev->wr_log[idx] = le; in c4iw_log_wr_stats()
155 #define ts2ns(ts) div64_u64((ts) * dev->rdev.lldi.cclk_ps, 1000) in wr_log_show()
157 idx = atomic_read(&dev->rdev.wr_log_idx) & in wr_log_show()
158 (dev->rdev.wr_log_size - 1); in wr_log_show()
161 end = dev->rdev.wr_log_size - 1; in wr_log_show()
162 lep = &dev->rdev.wr_log[idx]; in wr_log_show()
194 if (idx > (dev->rdev.wr_log_size - 1)) in wr_log_show()
196 lep = &dev->rdev.wr_log[idx]; in wr_log_show()
213 if (dev->rdev.wr_log) in wr_log_clear()
214 for (i = 0; i < dev->rdev.wr_log_size; i++) in wr_log_clear()
215 dev->rdev.wr_log[i].valid = 0; in wr_log_clear()
373 ret = cxgb4_read_tpte(stagd->devp->rdev.lldi.ports[0], (u32)id<<8, in dump_stag()
376 dev_err(&stagd->devp->rdev.lldi.pdev->dev, in dump_stag()
464 dev->rdev.stats.pd.total, dev->rdev.stats.pd.cur, in stats_show()
465 dev->rdev.stats.pd.max, dev->rdev.stats.pd.fail); in stats_show()
467 dev->rdev.stats.qid.total, dev->rdev.stats.qid.cur, in stats_show()
468 dev->rdev.stats.qid.max, dev->rdev.stats.qid.fail); in stats_show()
470 dev->rdev.stats.stag.total, dev->rdev.stats.stag.cur, in stats_show()
471 dev->rdev.stats.stag.max, dev->rdev.stats.stag.fail); in stats_show()
473 dev->rdev.stats.pbl.total, dev->rdev.stats.pbl.cur, in stats_show()
474 dev->rdev.stats.pbl.max, dev->rdev.stats.pbl.fail); in stats_show()
476 dev->rdev.stats.rqt.total, dev->rdev.stats.rqt.cur, in stats_show()
477 dev->rdev.stats.rqt.max, dev->rdev.stats.rqt.fail); in stats_show()
479 dev->rdev.stats.ocqp.total, dev->rdev.stats.ocqp.cur, in stats_show()
480 dev->rdev.stats.ocqp.max, dev->rdev.stats.ocqp.fail); in stats_show()
481 seq_printf(seq, " DB FULL: %10llu\n", dev->rdev.stats.db_full); in stats_show()
482 seq_printf(seq, " DB EMPTY: %10llu\n", dev->rdev.stats.db_empty); in stats_show()
483 seq_printf(seq, " DB DROP: %10llu\n", dev->rdev.stats.db_drop); in stats_show()
486 dev->rdev.stats.db_state_transitions, in stats_show()
487 dev->rdev.stats.db_fc_interruptions); in stats_show()
488 seq_printf(seq, "TCAM_FULL: %10llu\n", dev->rdev.stats.tcam_full); in stats_show()
490 dev->rdev.stats.act_ofld_conn_fails); in stats_show()
492 dev->rdev.stats.pas_ofld_conn_fails); in stats_show()
493 seq_printf(seq, "NEG_ADV_RCVD: %10llu\n", dev->rdev.stats.neg_adv); in stats_show()
508 mutex_lock(&dev->rdev.stats.lock); in stats_clear()
509 dev->rdev.stats.pd.max = 0; in stats_clear()
510 dev->rdev.stats.pd.fail = 0; in stats_clear()
511 dev->rdev.stats.qid.max = 0; in stats_clear()
512 dev->rdev.stats.qid.fail = 0; in stats_clear()
513 dev->rdev.stats.stag.max = 0; in stats_clear()
514 dev->rdev.stats.stag.fail = 0; in stats_clear()
515 dev->rdev.stats.pbl.max = 0; in stats_clear()
516 dev->rdev.stats.pbl.fail = 0; in stats_clear()
517 dev->rdev.stats.rqt.max = 0; in stats_clear()
518 dev->rdev.stats.rqt.fail = 0; in stats_clear()
519 dev->rdev.stats.ocqp.max = 0; in stats_clear()
520 dev->rdev.stats.ocqp.fail = 0; in stats_clear()
521 dev->rdev.stats.db_full = 0; in stats_clear()
522 dev->rdev.stats.db_empty = 0; in stats_clear()
523 dev->rdev.stats.db_drop = 0; in stats_clear()
524 dev->rdev.stats.db_state_transitions = 0; in stats_clear()
525 dev->rdev.stats.tcam_full = 0; in stats_clear()
526 dev->rdev.stats.act_ofld_conn_fails = 0; in stats_clear()
527 dev->rdev.stats.pas_ofld_conn_fails = 0; in stats_clear()
528 mutex_unlock(&dev->rdev.stats.lock); in stats_clear()
732 void c4iw_release_dev_ucontext(struct c4iw_rdev *rdev, in c4iw_release_dev_ucontext() argument
742 if (!(entry->qid & rdev->qpmask)) { in c4iw_release_dev_ucontext()
743 c4iw_put_resource(&rdev->resource.qid_table, in c4iw_release_dev_ucontext()
745 mutex_lock(&rdev->stats.lock); in c4iw_release_dev_ucontext()
746 rdev->stats.qid.cur -= rdev->qpmask + 1; in c4iw_release_dev_ucontext()
747 mutex_unlock(&rdev->stats.lock); in c4iw_release_dev_ucontext()
760 void c4iw_init_dev_ucontext(struct c4iw_rdev *rdev, in c4iw_init_dev_ucontext() argument
769 static int c4iw_rdev_open(struct c4iw_rdev *rdev) in c4iw_rdev_open() argument
773 c4iw_init_dev_ucontext(rdev, &rdev->uctx); in c4iw_rdev_open()
780 if (rdev->lldi.udb_density != rdev->lldi.ucq_density) { in c4iw_rdev_open()
782 pci_name(rdev->lldi.pdev), rdev->lldi.udb_density, in c4iw_rdev_open()
783 rdev->lldi.ucq_density); in c4iw_rdev_open()
787 if (rdev->lldi.vr->qp.start != rdev->lldi.vr->cq.start || in c4iw_rdev_open()
788 rdev->lldi.vr->qp.size != rdev->lldi.vr->cq.size) { in c4iw_rdev_open()
791 pci_name(rdev->lldi.pdev), rdev->lldi.vr->qp.start, in c4iw_rdev_open()
792 rdev->lldi.vr->qp.size, rdev->lldi.vr->cq.size, in c4iw_rdev_open()
793 rdev->lldi.vr->cq.size); in c4iw_rdev_open()
802 rdev->qpshift = PAGE_SHIFT - ilog2(rdev->lldi.udb_density); in c4iw_rdev_open()
803 rdev->qpmask = rdev->lldi.udb_density - 1; in c4iw_rdev_open()
804 rdev->cqshift = PAGE_SHIFT - ilog2(rdev->lldi.ucq_density); in c4iw_rdev_open()
805 rdev->cqmask = rdev->lldi.ucq_density - 1; in c4iw_rdev_open()
809 __func__, pci_name(rdev->lldi.pdev), rdev->lldi.vr->stag.start, in c4iw_rdev_open()
810 rdev->lldi.vr->stag.size, c4iw_num_stags(rdev), in c4iw_rdev_open()
811 rdev->lldi.vr->pbl.start, in c4iw_rdev_open()
812 rdev->lldi.vr->pbl.size, rdev->lldi.vr->rq.start, in c4iw_rdev_open()
813 rdev->lldi.vr->rq.size, in c4iw_rdev_open()
814 rdev->lldi.vr->qp.start, in c4iw_rdev_open()
815 rdev->lldi.vr->qp.size, in c4iw_rdev_open()
816 rdev->lldi.vr->cq.start, in c4iw_rdev_open()
817 rdev->lldi.vr->cq.size); in c4iw_rdev_open()
820 (unsigned)pci_resource_len(rdev->lldi.pdev, 2), in c4iw_rdev_open()
821 (void *)pci_resource_start(rdev->lldi.pdev, 2), in c4iw_rdev_open()
822 rdev->lldi.db_reg, in c4iw_rdev_open()
823 rdev->lldi.gts_reg, in c4iw_rdev_open()
824 rdev->qpshift, rdev->qpmask, in c4iw_rdev_open()
825 rdev->cqshift, rdev->cqmask); in c4iw_rdev_open()
827 if (c4iw_num_stags(rdev) == 0) { in c4iw_rdev_open()
832 rdev->stats.pd.total = T4_MAX_NUM_PD; in c4iw_rdev_open()
833 rdev->stats.stag.total = rdev->lldi.vr->stag.size; in c4iw_rdev_open()
834 rdev->stats.pbl.total = rdev->lldi.vr->pbl.size; in c4iw_rdev_open()
835 rdev->stats.rqt.total = rdev->lldi.vr->rq.size; in c4iw_rdev_open()
836 rdev->stats.ocqp.total = rdev->lldi.vr->ocq.size; in c4iw_rdev_open()
837 rdev->stats.qid.total = rdev->lldi.vr->qp.size; in c4iw_rdev_open()
839 err = c4iw_init_resource(rdev, c4iw_num_stags(rdev), T4_MAX_NUM_PD); in c4iw_rdev_open()
844 err = c4iw_pblpool_create(rdev); in c4iw_rdev_open()
849 err = c4iw_rqtpool_create(rdev); in c4iw_rdev_open()
854 err = c4iw_ocqp_pool_create(rdev); in c4iw_rdev_open()
859 rdev->status_page = (struct t4_dev_status_page *) in c4iw_rdev_open()
861 if (!rdev->status_page) { in c4iw_rdev_open()
867 rdev->wr_log = kzalloc((1 << c4iw_wr_log_size_order) * in c4iw_rdev_open()
868 sizeof(*rdev->wr_log), GFP_KERNEL); in c4iw_rdev_open()
869 if (rdev->wr_log) { in c4iw_rdev_open()
870 rdev->wr_log_size = 1 << c4iw_wr_log_size_order; in c4iw_rdev_open()
871 atomic_set(&rdev->wr_log_idx, 0); in c4iw_rdev_open()
877 rdev->status_page->db_off = 0; in c4iw_rdev_open()
881 c4iw_rqtpool_destroy(rdev); in c4iw_rdev_open()
883 c4iw_pblpool_destroy(rdev); in c4iw_rdev_open()
885 c4iw_destroy_resource(&rdev->resource); in c4iw_rdev_open()
890 static void c4iw_rdev_close(struct c4iw_rdev *rdev) in c4iw_rdev_close() argument
892 kfree(rdev->wr_log); in c4iw_rdev_close()
893 free_page((unsigned long)rdev->status_page); in c4iw_rdev_close()
894 c4iw_pblpool_destroy(rdev); in c4iw_rdev_close()
895 c4iw_rqtpool_destroy(rdev); in c4iw_rdev_close()
896 c4iw_destroy_resource(&rdev->resource); in c4iw_rdev_close()
901 c4iw_rdev_close(&ctx->dev->rdev); in c4iw_dealloc()
908 if (ctx->dev->rdev.bar2_kva) in c4iw_dealloc()
909 iounmap(ctx->dev->rdev.bar2_kva); in c4iw_dealloc()
910 if (ctx->dev->rdev.oc_mw_kva) in c4iw_dealloc()
911 iounmap(ctx->dev->rdev.oc_mw_kva); in c4iw_dealloc()
949 devp->rdev.lldi = *infop; in c4iw_alloc()
953 __func__, devp->rdev.lldi.sge_ingpadboundary, in c4iw_alloc()
954 devp->rdev.lldi.sge_egrstatuspagesize); in c4iw_alloc()
956 devp->rdev.hw_queue.t4_eq_status_entries = in c4iw_alloc()
957 devp->rdev.lldi.sge_ingpadboundary > 64 ? 2 : 1; in c4iw_alloc()
958 devp->rdev.hw_queue.t4_max_eq_size = 65520; in c4iw_alloc()
959 devp->rdev.hw_queue.t4_max_iq_size = 65520; in c4iw_alloc()
960 devp->rdev.hw_queue.t4_max_rq_size = 8192 - in c4iw_alloc()
961 devp->rdev.hw_queue.t4_eq_status_entries - 1; in c4iw_alloc()
962 devp->rdev.hw_queue.t4_max_sq_size = in c4iw_alloc()
963 devp->rdev.hw_queue.t4_max_eq_size - in c4iw_alloc()
964 devp->rdev.hw_queue.t4_eq_status_entries - 1; in c4iw_alloc()
965 devp->rdev.hw_queue.t4_max_qp_depth = in c4iw_alloc()
966 devp->rdev.hw_queue.t4_max_rq_size; in c4iw_alloc()
967 devp->rdev.hw_queue.t4_max_cq_depth = in c4iw_alloc()
968 devp->rdev.hw_queue.t4_max_iq_size - 2; in c4iw_alloc()
969 devp->rdev.hw_queue.t4_stat_len = in c4iw_alloc()
970 devp->rdev.lldi.sge_egrstatuspagesize; in c4iw_alloc()
977 devp->rdev.bar2_pa = pci_resource_start(devp->rdev.lldi.pdev, 2); in c4iw_alloc()
978 if (is_t5(devp->rdev.lldi.adapter_type)) { in c4iw_alloc()
979 devp->rdev.bar2_kva = ioremap_wc(devp->rdev.bar2_pa, in c4iw_alloc()
980 pci_resource_len(devp->rdev.lldi.pdev, 2)); in c4iw_alloc()
981 if (!devp->rdev.bar2_kva) { in c4iw_alloc()
987 devp->rdev.oc_mw_pa = in c4iw_alloc()
988 pci_resource_start(devp->rdev.lldi.pdev, 2) + in c4iw_alloc()
989 pci_resource_len(devp->rdev.lldi.pdev, 2) - in c4iw_alloc()
990 roundup_pow_of_two(devp->rdev.lldi.vr->ocq.size); in c4iw_alloc()
991 devp->rdev.oc_mw_kva = ioremap_wc(devp->rdev.oc_mw_pa, in c4iw_alloc()
992 devp->rdev.lldi.vr->ocq.size); in c4iw_alloc()
993 if (!devp->rdev.oc_mw_kva) { in c4iw_alloc()
1002 devp->rdev.lldi.vr->ocq.start, devp->rdev.lldi.vr->ocq.size, in c4iw_alloc()
1003 devp->rdev.oc_mw_pa, devp->rdev.oc_mw_kva); in c4iw_alloc()
1005 ret = c4iw_rdev_open(&devp->rdev); in c4iw_alloc()
1019 mutex_init(&devp->rdev.stats.lock); in c4iw_alloc()
1022 devp->avail_ird = devp->rdev.lldi.max_ird_adapter; in c4iw_alloc()
1026 pci_name(devp->rdev.lldi.pdev), in c4iw_alloc()
1114 skb = copy_gl_to_skb_pkt(gl , rsp, dev->rdev.lldi.sge_pktshift); in recv_rx_pkt()
1227 ctx->dev->rdev.flags |= T4_FATAL_ERROR; in c4iw_uld_state_change()
1258 ctx->dev->rdev.stats.db_state_transitions++; in stop_queues()
1260 if (ctx->dev->rdev.flags & T4_STATUS_PAGE_DISABLED) in stop_queues()
1263 ctx->dev->rdev.status_page->db_off = 1; in stop_queues()
1279 is_t5(qp->rhp->rdev.lldi.adapter_type), NULL); in resume_rc_qp()
1282 is_t5(qp->rhp->rdev.lldi.adapter_type), NULL); in resume_rc_qp()
1312 ctx->dev->rdev.stats.db_state_transitions++; in resume_queues()
1313 if (ctx->dev->rdev.flags & T4_STATUS_PAGE_DISABLED) { in resume_queues()
1317 ctx->dev->rdev.status_page->db_off = 0; in resume_queues()
1321 if (cxgb4_dbfifo_count(ctx->dev->rdev.lldi.ports[0], 1) in resume_queues()
1322 < (ctx->dev->rdev.lldi.dbfifo_int_thresh << in resume_queues()
1340 ctx->dev->rdev.stats.db_fc_interruptions++; in resume_queues()
1384 ret = cxgb4_sync_txq_pidx(qp->rhp->rdev.lldi.ports[0], in recover_lost_dbs()
1399 ret = cxgb4_sync_txq_pidx(qp->rhp->rdev.lldi.ports[0], in recover_lost_dbs()
1418 while (cxgb4_dbfifo_count(qp->rhp->rdev.lldi.ports[0], 1) > 0) { in recover_lost_dbs()
1436 ret = cxgb4_flush_eq_cache(ctx->dev->rdev.lldi.ports[0]); in recover_queues()
1483 ctx->dev->rdev.stats.db_full++; in c4iw_uld_control()
1487 mutex_lock(&ctx->dev->rdev.stats.lock); in c4iw_uld_control()
1488 ctx->dev->rdev.stats.db_empty++; in c4iw_uld_control()
1489 mutex_unlock(&ctx->dev->rdev.stats.lock); in c4iw_uld_control()
1493 mutex_lock(&ctx->dev->rdev.stats.lock); in c4iw_uld_control()
1494 ctx->dev->rdev.stats.db_drop++; in c4iw_uld_control()
1495 mutex_unlock(&ctx->dev->rdev.stats.lock); in c4iw_uld_control()