• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/infiniband/hw/qib/

Lines Matching refs:qpt

43 static inline unsigned mk_qpn(struct qib_qpn_table *qpt,
46 return (map - qpt->map) * BITS_PER_PAGE + off;
49 static inline unsigned find_next_offset(struct qib_qpn_table *qpt,
53 if (qpt->mask) {
55 if ((off & qpt->mask) >> 1 != r)
56 off = ((off & qpt->mask) ?
57 (off | qpt->mask) + 1 : off) | (r << 1);
100 static void get_map_page(struct qib_qpn_table *qpt, struct qpn_map *map)
108 spin_lock(&qpt->lock);
113 spin_unlock(&qpt->lock);
120 static int alloc_qpn(struct qib_devdata *dd, struct qib_qpn_table *qpt,
133 spin_lock(&qpt->lock);
134 if (qpt->flags & n)
137 qpt->flags |= n;
138 spin_unlock(&qpt->lock);
145 qpn = qpt->last + 1;
148 if (qpt->mask && ((qpn & qpt->mask) >> 1) != r)
149 qpn = ((qpn & qpt->mask) ? (qpn | qpt->mask) + 1 : qpn) |
152 map = &qpt->map[qpn / BITS_PER_PAGE];
153 max_scan = qpt->nmaps - !offset;
156 get_map_page(qpt, map);
162 qpt->last = qpn;
166 offset = find_next_offset(qpt, map, offset, r);
167 qpn = mk_qpn(qpt, map, offset);
183 if (qpt->nmaps == QPNMAP_ENTRIES)
185 map = &qpt->map[qpt->nmaps++];
186 offset = qpt->mask ? (r << 1) : 0;
187 } else if (map < &qpt->map[qpt->nmaps]) {
189 offset = qpt->mask ? (r << 1) : 0;
191 map = &qpt->map[0];
192 offset = qpt->mask ? (r << 1) : 2;
194 qpn = mk_qpn(qpt, map, offset);
203 static void free_qpn(struct qib_qpn_table *qpt, u32 qpn)
207 map = qpt->map + qpn / BITS_PER_PAGE;
271 * @qpt: the QP table to empty
309 * @qpt: the QP table
1192 * @qpt: the QPN table
1194 void qib_init_qpn_table(struct qib_devdata *dd, struct qib_qpn_table *qpt)
1196 spin_lock_init(&qpt->lock);
1197 qpt->last = 1; /* start with QPN 2 */
1198 qpt->nmaps = 1;
1199 qpt->mask = dd->qpn_mask;
1204 * @qpt: the QPN table
1206 void qib_free_qpn_table(struct qib_qpn_table *qpt)
1210 for (i = 0; i < ARRAY_SIZE(qpt->map); i++)
1211 if (qpt->map[i].page)
1212 free_page((unsigned long) qpt->map[i].page);