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()
798 rdev->qpmask = rdev->lldi.udb_density - 1; in c4iw_rdev_open()
799 rdev->cqmask = rdev->lldi.ucq_density - 1; in c4iw_rdev_open()
803 __func__, pci_name(rdev->lldi.pdev), rdev->lldi.vr->stag.start, in c4iw_rdev_open()
804 rdev->lldi.vr->stag.size, c4iw_num_stags(rdev), in c4iw_rdev_open()
805 rdev->lldi.vr->pbl.start, in c4iw_rdev_open()
806 rdev->lldi.vr->pbl.size, rdev->lldi.vr->rq.start, in c4iw_rdev_open()
807 rdev->lldi.vr->rq.size, in c4iw_rdev_open()
808 rdev->lldi.vr->qp.start, in c4iw_rdev_open()
809 rdev->lldi.vr->qp.size, in c4iw_rdev_open()
810 rdev->lldi.vr->cq.start, in c4iw_rdev_open()
811 rdev->lldi.vr->cq.size); in c4iw_rdev_open()
814 (unsigned)pci_resource_len(rdev->lldi.pdev, 2), in c4iw_rdev_open()
815 (void *)pci_resource_start(rdev->lldi.pdev, 2), in c4iw_rdev_open()
816 rdev->lldi.db_reg, rdev->lldi.gts_reg, in c4iw_rdev_open()
817 rdev->qpmask, rdev->cqmask); in c4iw_rdev_open()
819 if (c4iw_num_stags(rdev) == 0) { in c4iw_rdev_open()
824 rdev->stats.pd.total = T4_MAX_NUM_PD; in c4iw_rdev_open()
825 rdev->stats.stag.total = rdev->lldi.vr->stag.size; in c4iw_rdev_open()
826 rdev->stats.pbl.total = rdev->lldi.vr->pbl.size; in c4iw_rdev_open()
827 rdev->stats.rqt.total = rdev->lldi.vr->rq.size; in c4iw_rdev_open()
828 rdev->stats.ocqp.total = rdev->lldi.vr->ocq.size; in c4iw_rdev_open()
829 rdev->stats.qid.total = rdev->lldi.vr->qp.size; in c4iw_rdev_open()
831 err = c4iw_init_resource(rdev, c4iw_num_stags(rdev), T4_MAX_NUM_PD); in c4iw_rdev_open()
836 err = c4iw_pblpool_create(rdev); in c4iw_rdev_open()
841 err = c4iw_rqtpool_create(rdev); in c4iw_rdev_open()
846 err = c4iw_ocqp_pool_create(rdev); in c4iw_rdev_open()
851 rdev->status_page = (struct t4_dev_status_page *) in c4iw_rdev_open()
853 if (!rdev->status_page) { in c4iw_rdev_open()
859 rdev->wr_log = kzalloc((1 << c4iw_wr_log_size_order) * in c4iw_rdev_open()
860 sizeof(*rdev->wr_log), GFP_KERNEL); in c4iw_rdev_open()
861 if (rdev->wr_log) { in c4iw_rdev_open()
862 rdev->wr_log_size = 1 << c4iw_wr_log_size_order; in c4iw_rdev_open()
863 atomic_set(&rdev->wr_log_idx, 0); in c4iw_rdev_open()
869 rdev->status_page->db_off = 0; in c4iw_rdev_open()
873 c4iw_rqtpool_destroy(rdev); in c4iw_rdev_open()
875 c4iw_pblpool_destroy(rdev); in c4iw_rdev_open()
877 c4iw_destroy_resource(&rdev->resource); in c4iw_rdev_open()
882 static void c4iw_rdev_close(struct c4iw_rdev *rdev) in c4iw_rdev_close() argument
884 kfree(rdev->wr_log); in c4iw_rdev_close()
885 free_page((unsigned long)rdev->status_page); in c4iw_rdev_close()
886 c4iw_pblpool_destroy(rdev); in c4iw_rdev_close()
887 c4iw_rqtpool_destroy(rdev); in c4iw_rdev_close()
888 c4iw_destroy_resource(&rdev->resource); in c4iw_rdev_close()
893 c4iw_rdev_close(&ctx->dev->rdev); in c4iw_dealloc()
900 if (ctx->dev->rdev.bar2_kva) in c4iw_dealloc()
901 iounmap(ctx->dev->rdev.bar2_kva); in c4iw_dealloc()
902 if (ctx->dev->rdev.oc_mw_kva) in c4iw_dealloc()
903 iounmap(ctx->dev->rdev.oc_mw_kva); in c4iw_dealloc()
941 devp->rdev.lldi = *infop; in c4iw_alloc()
945 __func__, devp->rdev.lldi.sge_ingpadboundary, in c4iw_alloc()
946 devp->rdev.lldi.sge_egrstatuspagesize); in c4iw_alloc()
948 devp->rdev.hw_queue.t4_eq_status_entries = in c4iw_alloc()
949 devp->rdev.lldi.sge_ingpadboundary > 64 ? 2 : 1; in c4iw_alloc()
950 devp->rdev.hw_queue.t4_max_eq_size = 65520; in c4iw_alloc()
951 devp->rdev.hw_queue.t4_max_iq_size = 65520; in c4iw_alloc()
952 devp->rdev.hw_queue.t4_max_rq_size = 8192 - in c4iw_alloc()
953 devp->rdev.hw_queue.t4_eq_status_entries - 1; in c4iw_alloc()
954 devp->rdev.hw_queue.t4_max_sq_size = in c4iw_alloc()
955 devp->rdev.hw_queue.t4_max_eq_size - in c4iw_alloc()
956 devp->rdev.hw_queue.t4_eq_status_entries - 1; in c4iw_alloc()
957 devp->rdev.hw_queue.t4_max_qp_depth = in c4iw_alloc()
958 devp->rdev.hw_queue.t4_max_rq_size; in c4iw_alloc()
959 devp->rdev.hw_queue.t4_max_cq_depth = in c4iw_alloc()
960 devp->rdev.hw_queue.t4_max_iq_size - 2; in c4iw_alloc()
961 devp->rdev.hw_queue.t4_stat_len = in c4iw_alloc()
962 devp->rdev.lldi.sge_egrstatuspagesize; in c4iw_alloc()
969 devp->rdev.bar2_pa = pci_resource_start(devp->rdev.lldi.pdev, 2); in c4iw_alloc()
970 if (!is_t4(devp->rdev.lldi.adapter_type)) { in c4iw_alloc()
971 devp->rdev.bar2_kva = ioremap_wc(devp->rdev.bar2_pa, in c4iw_alloc()
972 pci_resource_len(devp->rdev.lldi.pdev, 2)); in c4iw_alloc()
973 if (!devp->rdev.bar2_kva) { in c4iw_alloc()
979 devp->rdev.oc_mw_pa = in c4iw_alloc()
980 pci_resource_start(devp->rdev.lldi.pdev, 2) + in c4iw_alloc()
981 pci_resource_len(devp->rdev.lldi.pdev, 2) - in c4iw_alloc()
982 roundup_pow_of_two(devp->rdev.lldi.vr->ocq.size); in c4iw_alloc()
983 devp->rdev.oc_mw_kva = ioremap_wc(devp->rdev.oc_mw_pa, in c4iw_alloc()
984 devp->rdev.lldi.vr->ocq.size); in c4iw_alloc()
985 if (!devp->rdev.oc_mw_kva) { in c4iw_alloc()
994 devp->rdev.lldi.vr->ocq.start, devp->rdev.lldi.vr->ocq.size, in c4iw_alloc()
995 devp->rdev.oc_mw_pa, devp->rdev.oc_mw_kva); in c4iw_alloc()
997 ret = c4iw_rdev_open(&devp->rdev); in c4iw_alloc()
1011 mutex_init(&devp->rdev.stats.lock); in c4iw_alloc()
1014 devp->avail_ird = devp->rdev.lldi.max_ird_adapter; in c4iw_alloc()
1018 pci_name(devp->rdev.lldi.pdev), in c4iw_alloc()
1106 skb = copy_gl_to_skb_pkt(gl , rsp, dev->rdev.lldi.sge_pktshift); in recv_rx_pkt()
1219 ctx->dev->rdev.flags |= T4_FATAL_ERROR; in c4iw_uld_state_change()
1250 ctx->dev->rdev.stats.db_state_transitions++; in stop_queues()
1252 if (ctx->dev->rdev.flags & T4_STATUS_PAGE_DISABLED) in stop_queues()
1255 ctx->dev->rdev.status_page->db_off = 1; in stop_queues()
1302 ctx->dev->rdev.stats.db_state_transitions++; in resume_queues()
1303 if (ctx->dev->rdev.flags & T4_STATUS_PAGE_DISABLED) { in resume_queues()
1307 ctx->dev->rdev.status_page->db_off = 0; in resume_queues()
1311 if (cxgb4_dbfifo_count(ctx->dev->rdev.lldi.ports[0], 1) in resume_queues()
1312 < (ctx->dev->rdev.lldi.dbfifo_int_thresh << in resume_queues()
1330 ctx->dev->rdev.stats.db_fc_interruptions++; in resume_queues()
1374 ret = cxgb4_sync_txq_pidx(qp->rhp->rdev.lldi.ports[0], in recover_lost_dbs()
1389 ret = cxgb4_sync_txq_pidx(qp->rhp->rdev.lldi.ports[0], in recover_lost_dbs()
1408 while (cxgb4_dbfifo_count(qp->rhp->rdev.lldi.ports[0], 1) > 0) { in recover_lost_dbs()
1426 ret = cxgb4_flush_eq_cache(ctx->dev->rdev.lldi.ports[0]); in recover_queues()
1473 ctx->dev->rdev.stats.db_full++; in c4iw_uld_control()
1477 mutex_lock(&ctx->dev->rdev.stats.lock); in c4iw_uld_control()
1478 ctx->dev->rdev.stats.db_empty++; in c4iw_uld_control()
1479 mutex_unlock(&ctx->dev->rdev.stats.lock); in c4iw_uld_control()
1483 mutex_lock(&ctx->dev->rdev.stats.lock); in c4iw_uld_control()
1484 ctx->dev->rdev.stats.db_drop++; in c4iw_uld_control()
1485 mutex_unlock(&ctx->dev->rdev.stats.lock); in c4iw_uld_control()