Lines Matching refs:ah

156 		    struct mthca_ah *ah)
161 ah->type = MTHCA_AH_PCI_POOL;
164 ah->av = kmalloc(sizeof *ah->av, GFP_ATOMIC);
165 if (!ah->av)
168 ah->type = MTHCA_AH_KMALLOC;
169 av = ah->av;
182 ah->type = MTHCA_AH_ON_HCA;
183 ah->avdma = dev->av_table.ddr_av_base +
188 if (ah->type == MTHCA_AH_PCI_POOL) {
189 ah->av = dma_pool_zalloc(dev->av_table.pool,
190 GFP_ATOMIC, &ah->avdma);
191 if (!ah->av)
194 av = ah->av;
197 ah->key = pd->ntmr.ibmr.lkey;
228 av, (unsigned long) ah->avdma);
234 if (ah->type == MTHCA_AH_ON_HCA) {
243 int mthca_destroy_ah(struct mthca_dev *dev, struct mthca_ah *ah)
245 switch (ah->type) {
248 (ah->avdma - dev->av_table.ddr_av_base) /
253 dma_pool_free(dev->av_table.pool, ah->av, ah->avdma);
257 kfree(ah->av);
264 int mthca_ah_grh_present(struct mthca_ah *ah)
266 return !!(ah->av->g_slid & 0x80);
269 int mthca_read_ah(struct mthca_dev *dev, struct mthca_ah *ah,
272 if (ah->type == MTHCA_AH_ON_HCA)
275 header->lrh.service_level = be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 28;
276 header->lrh.destination_lid = ah->av->dlid;
277 header->lrh.source_lid = cpu_to_be16(ah->av->g_slid & 0x7f);
278 if (mthca_ah_grh_present(ah)) {
280 (be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 20) & 0xff;
282 ah->av->sl_tclass_flowlabel & cpu_to_be32(0xfffff);
283 header->grh.hop_limit = ah->av->hop_limit;
284 header->grh.source_gid = ah->ibah.sgid_attr->gid;
286 ah->av->dgid, 16);
294 struct mthca_ah *ah = to_mah(ibah);
296 u32 port_num = be32_to_cpu(ah->av->port_pd) >> 24;
298 /* Only implement for MAD and memfree ah for now. */
299 if (ah->type == MTHCA_AH_ON_HCA)
304 rdma_ah_set_dlid(attr, be16_to_cpu(ah->av->dlid));
305 rdma_ah_set_sl(attr, be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 28);
308 mthca_rate_to_ib(dev, ah->av->msg_sr & 0x7,
310 rdma_ah_set_path_bits(attr, ah->av->g_slid & 0x7F);
311 if (mthca_ah_grh_present(ah)) {
312 u32 tc_fl = be32_to_cpu(ah->av->sl_tclass_flowlabel);
316 ah->av->gid_index &
318 ah->av->hop_limit,
320 rdma_ah_set_dgid_raw(attr, ah->av->dgid);