Lines Matching refs:ah_attr

59 			       struct rdma_ah_attr *ah_attr);
415 struct rdma_ah_attr *ah_attr) in rdma_check_ah_attr() argument
417 if (!rdma_is_port_valid(device, ah_attr->port_num)) in rdma_check_ah_attr()
420 if ((rdma_is_grh_required(device, ah_attr->port_num) || in rdma_check_ah_attr()
421 ah_attr->type == RDMA_AH_ATTR_TYPE_ROCE) && in rdma_check_ah_attr()
422 !(ah_attr->ah_flags & IB_AH_GRH)) in rdma_check_ah_attr()
425 if (ah_attr->grh.sgid_attr) { in rdma_check_ah_attr()
430 if (ah_attr->grh.sgid_attr->index != ah_attr->grh.sgid_index || in rdma_check_ah_attr()
431 ah_attr->grh.sgid_attr->port_num != ah_attr->port_num) in rdma_check_ah_attr()
442 struct rdma_ah_attr *ah_attr, in rdma_fill_sgid_attr() argument
449 *old_sgid_attr = ah_attr->grh.sgid_attr; in rdma_fill_sgid_attr()
451 ret = rdma_check_ah_attr(device, ah_attr); in rdma_fill_sgid_attr()
455 if (!(ah_attr->ah_flags & IB_AH_GRH)) in rdma_fill_sgid_attr()
458 grh = rdma_ah_retrieve_grh(ah_attr); in rdma_fill_sgid_attr()
463 rdma_get_gid_attr(device, ah_attr->port_num, grh->sgid_index); in rdma_fill_sgid_attr()
472 static void rdma_unfill_sgid_attr(struct rdma_ah_attr *ah_attr, in rdma_unfill_sgid_attr() argument
479 if (ah_attr->grh.sgid_attr == old_sgid_attr) in rdma_unfill_sgid_attr()
487 rdma_destroy_ah_attr(ah_attr); in rdma_unfill_sgid_attr()
491 rdma_update_sgid_attr(struct rdma_ah_attr *ah_attr, in rdma_update_sgid_attr() argument
496 if (ah_attr->ah_flags & IB_AH_GRH) { in rdma_update_sgid_attr()
497 rdma_hold_gid_attr(ah_attr->grh.sgid_attr); in rdma_update_sgid_attr()
498 return ah_attr->grh.sgid_attr; in rdma_update_sgid_attr()
504 struct rdma_ah_attr *ah_attr, in _rdma_create_ah() argument
527 ah->type = ah_attr->type; in _rdma_create_ah()
528 ah->sgid_attr = rdma_update_sgid_attr(ah_attr, NULL); in _rdma_create_ah()
529 init_attr.ah_attr = ah_attr; in _rdma_create_ah()
559 struct ib_ah *rdma_create_ah(struct ib_pd *pd, struct rdma_ah_attr *ah_attr, in rdma_create_ah() argument
567 ret = rdma_fill_sgid_attr(pd->device, ah_attr, &old_sgid_attr); in rdma_create_ah()
570 slave = rdma_lag_get_ah_roce_slave(pd->device, ah_attr, in rdma_create_ah()
574 rdma_unfill_sgid_attr(ah_attr, old_sgid_attr); in rdma_create_ah()
577 ah = _rdma_create_ah(pd, ah_attr, flags, NULL, slave); in rdma_create_ah()
579 rdma_unfill_sgid_attr(ah_attr, old_sgid_attr); in rdma_create_ah()
598 struct rdma_ah_attr *ah_attr, in rdma_create_user_ah() argument
605 err = rdma_fill_sgid_attr(pd->device, ah_attr, &old_sgid_attr); in rdma_create_user_ah()
609 if (ah_attr->type == RDMA_AH_ATTR_TYPE_ROCE) { in rdma_create_user_ah()
610 err = ib_resolve_eth_dmac(pd->device, ah_attr); in rdma_create_user_ah()
617 ah = _rdma_create_ah(pd, ah_attr, RDMA_CREATE_AH_SLEEPABLE, in rdma_create_user_ah()
621 rdma_unfill_sgid_attr(ah_attr, old_sgid_attr); in rdma_create_user_ah()
753 struct rdma_ah_attr *ah_attr) in ib_resolve_unicast_gid_dmac() argument
755 struct ib_global_route *grh = rdma_ah_retrieve_grh(ah_attr); in ib_resolve_unicast_gid_dmac()
766 ah_attr->roce.dmac); in ib_resolve_unicast_gid_dmac()
771 ah_attr->roce.dmac, in ib_resolve_unicast_gid_dmac()
792 struct rdma_ah_attr *ah_attr) in ib_init_ah_attr_from_wc() argument
805 memset(ah_attr, 0, sizeof *ah_attr); in ib_init_ah_attr_from_wc()
806 ah_attr->type = rdma_ah_find_type(device, port_num); in ib_init_ah_attr_from_wc()
819 rdma_ah_set_sl(ah_attr, wc->sl); in ib_init_ah_attr_from_wc()
820 rdma_ah_set_port_num(ah_attr, port_num); in ib_init_ah_attr_from_wc()
836 rdma_move_grh_sgid_attr(ah_attr, in ib_init_ah_attr_from_wc()
843 ret = ib_resolve_unicast_gid_dmac(device, ah_attr); in ib_init_ah_attr_from_wc()
845 rdma_destroy_ah_attr(ah_attr); in ib_init_ah_attr_from_wc()
849 rdma_ah_set_dlid(ah_attr, wc->slid); in ib_init_ah_attr_from_wc()
850 rdma_ah_set_path_bits(ah_attr, wc->dlid_path_bits); in ib_init_ah_attr_from_wc()
865 rdma_move_grh_sgid_attr(ah_attr, in ib_init_ah_attr_from_wc()
911 void rdma_destroy_ah_attr(struct rdma_ah_attr *ah_attr) in rdma_destroy_ah_attr() argument
913 if (ah_attr->grh.sgid_attr) { in rdma_destroy_ah_attr()
914 rdma_put_gid_attr(ah_attr->grh.sgid_attr); in rdma_destroy_ah_attr()
915 ah_attr->grh.sgid_attr = NULL; in rdma_destroy_ah_attr()
923 struct rdma_ah_attr ah_attr; in ib_create_ah_from_wc() local
927 ret = ib_init_ah_attr_from_wc(pd->device, port_num, wc, grh, &ah_attr); in ib_create_ah_from_wc()
931 ah = rdma_create_ah(pd, &ah_attr, RDMA_CREATE_AH_SLEEPABLE); in ib_create_ah_from_wc()
933 rdma_destroy_ah_attr(&ah_attr); in ib_create_ah_from_wc()
938 int rdma_modify_ah(struct ib_ah *ah, struct rdma_ah_attr *ah_attr) in rdma_modify_ah() argument
943 if (ah->type != ah_attr->type) in rdma_modify_ah()
946 ret = rdma_fill_sgid_attr(ah->device, ah_attr, &old_sgid_attr); in rdma_modify_ah()
951 ah->device->ops.modify_ah(ah, ah_attr) : in rdma_modify_ah()
954 ah->sgid_attr = rdma_update_sgid_attr(ah_attr, ah->sgid_attr); in rdma_modify_ah()
955 rdma_unfill_sgid_attr(ah_attr, old_sgid_attr); in rdma_modify_ah()
960 int rdma_query_ah(struct ib_ah *ah, struct rdma_ah_attr *ah_attr) in rdma_query_ah() argument
962 ah_attr->grh.sgid_attr = NULL; in rdma_query_ah()
965 ah->device->ops.query_ah(ah, ah_attr) : in rdma_query_ah()
1724 struct rdma_ah_attr *ah_attr) in ib_resolve_eth_dmac() argument
1728 if (rdma_is_multicast_addr((struct in6_addr *)ah_attr->grh.dgid.raw)) { in ib_resolve_eth_dmac()
1729 if (ipv6_addr_v4mapped((struct in6_addr *)ah_attr->grh.dgid.raw)) { in ib_resolve_eth_dmac()
1732 memcpy(&addr, ah_attr->grh.dgid.raw + 12, 4); in ib_resolve_eth_dmac()
1733 ip_eth_mc_map(addr, (char *)ah_attr->roce.dmac); in ib_resolve_eth_dmac()
1735 ipv6_eth_mc_map((struct in6_addr *)ah_attr->grh.dgid.raw, in ib_resolve_eth_dmac()
1736 (char *)ah_attr->roce.dmac); in ib_resolve_eth_dmac()
1739 ret = ib_resolve_unicast_gid_dmac(device, ah_attr); in ib_resolve_eth_dmac()
1765 ret = rdma_fill_sgid_attr(qp->device, &attr->ah_attr, in _ib_modify_qp()
1770 if (attr->ah_attr.type == RDMA_AH_ATTR_TYPE_ROCE && in _ib_modify_qp()
1781 &attr->ah_attr); in _ib_modify_qp()
1786 &attr->ah_attr, in _ib_modify_qp()
1852 rdma_update_sgid_attr(&attr->ah_attr, qp->av_sgid_attr); in _ib_modify_qp()
1863 rdma_unfill_sgid_attr(&attr->ah_attr, old_sgid_attr_av); in _ib_modify_qp()
2018 qp_attr->ah_attr.grh.sgid_attr = NULL; in ib_query_qp()