Lines Matching refs:dpit
850 struct bnxt_qplib_dpi_tbl *dpit = &res->dpi_tbl; in bnxt_qplib_alloc_dpi() local
856 reg = &dpit->wcreg; in bnxt_qplib_alloc_dpi()
859 !dpit->avail_ppp) { in bnxt_qplib_alloc_dpi()
863 bit_num = find_first_bit(dpit->tbl, dpit->max); in bnxt_qplib_alloc_dpi()
864 if (bit_num == dpit->max) { in bnxt_qplib_alloc_dpi()
869 clear_bit(bit_num, dpit->tbl); in bnxt_qplib_alloc_dpi()
870 dpit->app_tbl[bit_num] = app; in bnxt_qplib_alloc_dpi()
872 dpi->dpi = bit_num + (reg->offset - dpit->ucreg.offset) / PAGE_SIZE; in bnxt_qplib_alloc_dpi()
879 dpi->umdbr = dpit->ucreg.bar_base + in bnxt_qplib_alloc_dpi()
880 dpit->ucreg.offset + bit_num * PAGE_SIZE; in bnxt_qplib_alloc_dpi()
881 dpi->dbr = dpit->priv_db; in bnxt_qplib_alloc_dpi()
887 dpit->avail_ppp--; in bnxt_qplib_alloc_dpi()
906 struct bnxt_qplib_dpi_tbl *dpit = &res->dpi_tbl; in bnxt_qplib_dealloc_dpi() local
910 if (dpi->bit >= dpit->max) { in bnxt_qplib_dealloc_dpi()
921 dpit->avail_ppp++; in bnxt_qplib_dealloc_dpi()
925 if (test_and_set_bit(dpi->bit, dpit->tbl)) { in bnxt_qplib_dealloc_dpi()
932 if (dpit->app_tbl) in bnxt_qplib_dealloc_dpi()
933 dpit->app_tbl[dpi->bit] = NULL; in bnxt_qplib_dealloc_dpi()
940 static void bnxt_qplib_free_dpi_tbl(struct bnxt_qplib_dpi_tbl *dpit) in bnxt_qplib_free_dpi_tbl() argument
942 kfree(dpit->tbl); in bnxt_qplib_free_dpi_tbl()
943 kfree(dpit->app_tbl); in bnxt_qplib_free_dpi_tbl()
944 dpit->tbl = NULL; in bnxt_qplib_free_dpi_tbl()
945 dpit->app_tbl = NULL; in bnxt_qplib_free_dpi_tbl()
946 dpit->max = 0; in bnxt_qplib_free_dpi_tbl()
953 struct bnxt_qplib_dpi_tbl *dpit; in bnxt_qplib_alloc_dpi_tbl() local
959 dpit = &res->dpi_tbl; in bnxt_qplib_alloc_dpi_tbl()
960 reg = &dpit->wcreg; in bnxt_qplib_alloc_dpi_tbl()
965 dpit->ucreg.offset = dbr_offset; in bnxt_qplib_alloc_dpi_tbl()
966 dpit->wcreg.offset = dbr_offset; in bnxt_qplib_alloc_dpi_tbl()
970 dpit->max = (bar_len - reg->offset) / PAGE_SIZE; in bnxt_qplib_alloc_dpi_tbl()
972 dpit->max = min_t(u32, dpit->max, dev_attr->max_dpi); in bnxt_qplib_alloc_dpi_tbl()
974 dpit->app_tbl = kzalloc(dpit->max * sizeof(void*), GFP_KERNEL); in bnxt_qplib_alloc_dpi_tbl()
975 if (!dpit->app_tbl) { in bnxt_qplib_alloc_dpi_tbl()
981 bytes = dpit->max >> 3; in bnxt_qplib_alloc_dpi_tbl()
985 dpit->tbl = kmalloc(bytes, GFP_KERNEL); in bnxt_qplib_alloc_dpi_tbl()
986 if (!dpit->tbl) { in bnxt_qplib_alloc_dpi_tbl()
987 kfree(dpit->app_tbl); in bnxt_qplib_alloc_dpi_tbl()
994 memset((u8 *)dpit->tbl, 0xFF, bytes); in bnxt_qplib_alloc_dpi_tbl()
1003 clear_bit(1, dpit->tbl); in bnxt_qplib_alloc_dpi_tbl()
1005 dpit->avail_ppp = in bnxt_qplib_alloc_dpi_tbl()
1009 dpit->priv_db = dpit->ucreg.bar_reg + dpit->ucreg.offset; in bnxt_qplib_alloc_dpi_tbl()