Lines Matching refs:qpt
44 static inline unsigned mk_qpn(struct rvt_qpn_table *qpt, in mk_qpn() argument
47 return (map - qpt->map) * RVT_BITS_PER_PAGE + off; in mk_qpn()
50 static inline unsigned find_next_offset(struct rvt_qpn_table *qpt, in find_next_offset() argument
107 static void get_map_page(struct rvt_qpn_table *qpt, struct rvt_qpn_map *map) in get_map_page() argument
115 spin_lock(&qpt->lock); in get_map_page()
120 spin_unlock(&qpt->lock); in get_map_page()
127 int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, in qib_alloc_qpn() argument
143 spin_lock(&qpt->lock); in qib_alloc_qpn()
144 if (qpt->flags & n) in qib_alloc_qpn()
147 qpt->flags |= n; in qib_alloc_qpn()
148 spin_unlock(&qpt->lock); in qib_alloc_qpn()
152 qpn = qpt->last + 2; in qib_alloc_qpn()
158 map = &qpt->map[qpn / RVT_BITS_PER_PAGE]; in qib_alloc_qpn()
159 max_scan = qpt->nmaps - !offset; in qib_alloc_qpn()
162 get_map_page(qpt, map); in qib_alloc_qpn()
168 qpt->last = qpn; in qib_alloc_qpn()
172 offset = find_next_offset(qpt, map, offset, in qib_alloc_qpn()
174 qpn = mk_qpn(qpt, map, offset); in qib_alloc_qpn()
190 if (qpt->nmaps == RVT_QPNMAP_ENTRIES) in qib_alloc_qpn()
192 map = &qpt->map[qpt->nmaps++]; in qib_alloc_qpn()
194 } else if (map < &qpt->map[qpt->nmaps]) { in qib_alloc_qpn()
198 map = &qpt->map[0]; in qib_alloc_qpn()
201 qpn = mk_qpn(qpt, map, offset); in qib_alloc_qpn()