Lines Matching refs:ah
156 struct mthca_ah *ah) in mthca_create_ah() argument
161 ah->type = MTHCA_AH_PCI_POOL; in mthca_create_ah()
164 ah->av = kmalloc(sizeof *ah->av, GFP_ATOMIC); in mthca_create_ah()
165 if (!ah->av) in mthca_create_ah()
168 ah->type = MTHCA_AH_KMALLOC; in mthca_create_ah()
169 av = ah->av; in mthca_create_ah()
182 ah->type = MTHCA_AH_ON_HCA; in mthca_create_ah()
183 ah->avdma = dev->av_table.ddr_av_base + in mthca_create_ah()
188 if (ah->type == MTHCA_AH_PCI_POOL) { in mthca_create_ah()
189 ah->av = pci_pool_alloc(dev->av_table.pool, in mthca_create_ah()
190 GFP_ATOMIC, &ah->avdma); in mthca_create_ah()
191 if (!ah->av) in mthca_create_ah()
194 av = ah->av; in mthca_create_ah()
197 ah->key = pd->ntmr.ibmr.lkey; in mthca_create_ah()
225 av, (unsigned long) ah->avdma); in mthca_create_ah()
231 if (ah->type == MTHCA_AH_ON_HCA) { in mthca_create_ah()
240 int mthca_destroy_ah(struct mthca_dev *dev, struct mthca_ah *ah) in mthca_destroy_ah() argument
242 switch (ah->type) { in mthca_destroy_ah()
245 (ah->avdma - dev->av_table.ddr_av_base) / in mthca_destroy_ah()
250 pci_pool_free(dev->av_table.pool, ah->av, ah->avdma); in mthca_destroy_ah()
254 kfree(ah->av); in mthca_destroy_ah()
261 int mthca_ah_grh_present(struct mthca_ah *ah) in mthca_ah_grh_present() argument
263 return !!(ah->av->g_slid & 0x80); in mthca_ah_grh_present()
266 int mthca_read_ah(struct mthca_dev *dev, struct mthca_ah *ah, in mthca_read_ah() argument
269 if (ah->type == MTHCA_AH_ON_HCA) in mthca_read_ah()
272 header->lrh.service_level = be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 28; in mthca_read_ah()
273 header->lrh.destination_lid = ah->av->dlid; in mthca_read_ah()
274 header->lrh.source_lid = cpu_to_be16(ah->av->g_slid & 0x7f); in mthca_read_ah()
275 if (mthca_ah_grh_present(ah)) { in mthca_read_ah()
277 (be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 20) & 0xff; in mthca_read_ah()
279 ah->av->sl_tclass_flowlabel & cpu_to_be32(0xfffff); in mthca_read_ah()
280 header->grh.hop_limit = ah->av->hop_limit; in mthca_read_ah()
282 be32_to_cpu(ah->av->port_pd) >> 24, in mthca_read_ah()
283 ah->av->gid_index % dev->limits.gid_table_len, in mthca_read_ah()
286 ah->av->dgid, 16); in mthca_read_ah()
294 struct mthca_ah *ah = to_mah(ibah); in mthca_ah_query() local
298 if (ah->type == MTHCA_AH_ON_HCA) in mthca_ah_query()
302 attr->dlid = be16_to_cpu(ah->av->dlid); in mthca_ah_query()
303 attr->sl = be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 28; in mthca_ah_query()
304 attr->port_num = be32_to_cpu(ah->av->port_pd) >> 24; in mthca_ah_query()
305 attr->static_rate = mthca_rate_to_ib(dev, ah->av->msg_sr & 0x7, in mthca_ah_query()
307 attr->src_path_bits = ah->av->g_slid & 0x7F; in mthca_ah_query()
308 attr->ah_flags = mthca_ah_grh_present(ah) ? IB_AH_GRH : 0; in mthca_ah_query()
312 be32_to_cpu(ah->av->sl_tclass_flowlabel) >> 20; in mthca_ah_query()
314 be32_to_cpu(ah->av->sl_tclass_flowlabel) & 0xfffff; in mthca_ah_query()
315 attr->grh.hop_limit = ah->av->hop_limit; in mthca_ah_query()
316 attr->grh.sgid_index = ah->av->gid_index & in mthca_ah_query()
318 memcpy(attr->grh.dgid.raw, ah->av->dgid, 16); in mthca_ah_query()