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 = pci_pool_alloc(dev->av_table.pool,
190 GFP_ATOMIC, &ah->avdma);
191 if (!ah->av)
194 av = ah->av;
197 ah->key = pd->ntmr.ibmr.lkey;
225 av, (unsigned long) ah->avdma);
231 if (ah->type == MTHCA_AH_ON_HCA) {
240 int mthca_destroy_ah(struct mthca_dev *dev, struct mthca_ah *ah)
242 switch (ah->type) {
245 (ah->avdma - dev->av_table.ddr_av_base) /
250 pci_pool_free(dev->av_table.pool, ah->av, ah->avdma);
254 kfree(ah->av);
261 int mthca_ah_grh_present(struct mthca_ah *ah)
263 return !!(ah->av->g_slid & 0x80);
266 int mthca_read_ah(struct mthca_dev *dev, struct mthca_ah *ah,
269 if (ah->type == MTHCA_AH_ON_HCA)
272 header->lrh.service_level = be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 28;
273 header->lrh.destination_lid = ah->av->dlid;
274 header->lrh.source_lid = cpu_to_be16(ah->av->g_slid & 0x7f);
275 if (mthca_ah_grh_present(ah)) {
277 (be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 20) & 0xff;
279 ah->av->sl_tclass_flowlabel & cpu_to_be32(0xfffff);
280 header->grh.hop_limit = ah->av->hop_limit;
282 be32_to_cpu(ah->av->port_pd) >> 24,
283 ah->av->gid_index % dev->limits.gid_table_len,
286 ah->av->dgid, 16);
294 struct mthca_ah *ah = to_mah(ibah);
297 /* Only implement for MAD and memfree ah for now. */
298 if (ah->type == MTHCA_AH_ON_HCA)
302 attr->dlid = be16_to_cpu(ah->av->dlid);
303 attr->sl = be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 28;
304 attr->port_num = be32_to_cpu(ah->av->port_pd) >> 24;
305 attr->static_rate = mthca_rate_to_ib(dev, ah->av->msg_sr & 0x7,
307 attr->src_path_bits = ah->av->g_slid & 0x7F;
308 attr->ah_flags = mthca_ah_grh_present(ah) ? IB_AH_GRH : 0;
312 be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 20;
314 be32_to_cpu(ah->av->sl_tclass_flowlabel) & 0xfffff;
315 attr->grh.hop_limit = ah->av->hop_limit;
316 attr->grh.sgid_index = ah->av->gid_index &
318 memcpy(attr->grh.dgid.raw, ah->av->dgid, 16);