Lines Matching refs:ah

44 				  struct mlx4_ib_ah *ah)  in create_ib_ah()  argument
48 ah->av.ib.port_pd = cpu_to_be32(to_mpd(pd)->pdn | (ah_attr->port_num << 24)); in create_ib_ah()
49 ah->av.ib.g_slid = ah_attr->src_path_bits; in create_ib_ah()
51 ah->av.ib.g_slid |= 0x80; in create_ib_ah()
52 ah->av.ib.gid_index = ah_attr->grh.sgid_index; in create_ib_ah()
53 ah->av.ib.hop_limit = ah_attr->grh.hop_limit; in create_ib_ah()
54 ah->av.ib.sl_tclass_flowlabel |= in create_ib_ah()
57 memcpy(ah->av.ib.dgid, ah_attr->grh.dgid.raw, 16); in create_ib_ah()
60 ah->av.ib.dlid = cpu_to_be16(ah_attr->dlid); in create_ib_ah()
62 ah->av.ib.stat_rate = ah_attr->static_rate + MLX4_STAT_RATE_OFFSET; in create_ib_ah()
63 while (ah->av.ib.stat_rate > IB_RATE_2_5_GBPS + MLX4_STAT_RATE_OFFSET && in create_ib_ah()
64 !(1 << ah->av.ib.stat_rate & dev->caps.stat_rate_support)) in create_ib_ah()
65 --ah->av.ib.stat_rate; in create_ib_ah()
67 ah->av.ib.sl_tclass_flowlabel = cpu_to_be32(ah_attr->sl << 28); in create_ib_ah()
69 return &ah->ibah; in create_ib_ah()
73 struct mlx4_ib_ah *ah) in create_iboe_ah() argument
84 rdma_get_mcast_mac(&in6, ah->av.eth.mac); in create_iboe_ah()
86 memcpy(ah->av.eth.mac, ah_attr->dmac, ETH_ALEN); in create_iboe_ah()
91 ah->av.eth.port_pd = cpu_to_be32(to_mpd(pd)->pdn | (ah_attr->port_num << 24)); in create_iboe_ah()
92 ah->av.eth.gid_index = ah_attr->grh.sgid_index; in create_iboe_ah()
93 ah->av.eth.vlan = cpu_to_be16(vlan_tag); in create_iboe_ah()
95 ah->av.eth.stat_rate = ah_attr->static_rate + MLX4_STAT_RATE_OFFSET; in create_iboe_ah()
96 while (ah->av.eth.stat_rate > IB_RATE_2_5_GBPS + MLX4_STAT_RATE_OFFSET && in create_iboe_ah()
97 !(1 << ah->av.eth.stat_rate & dev->caps.stat_rate_support)) in create_iboe_ah()
98 --ah->av.eth.stat_rate; in create_iboe_ah()
105 ah->av.ib.dlid = cpu_to_be16(0xc000); in create_iboe_ah()
107 memcpy(ah->av.eth.dgid, ah_attr->grh.dgid.raw, 16); in create_iboe_ah()
108 ah->av.eth.sl_tclass_flowlabel = cpu_to_be32(ah_attr->sl << 29); in create_iboe_ah()
110 return &ah->ibah; in create_iboe_ah()
115 struct mlx4_ib_ah *ah; in mlx4_ib_create_ah() local
118 ah = kzalloc(sizeof *ah, GFP_ATOMIC); in mlx4_ib_create_ah()
119 if (!ah) in mlx4_ib_create_ah()
134 ret = create_iboe_ah(pd, ah_attr, ah); in mlx4_ib_create_ah()
138 kfree(ah); in mlx4_ib_create_ah()
142 return create_ib_ah(pd, ah_attr, ah); /* never fails */ in mlx4_ib_create_ah()
147 struct mlx4_ib_ah *ah = to_mah(ibah); in mlx4_ib_query_ah() local
151 ah_attr->port_num = be32_to_cpu(ah->av.ib.port_pd) >> 24; in mlx4_ib_query_ah()
154 ah_attr->sl = be32_to_cpu(ah->av.eth.sl_tclass_flowlabel) >> 29; in mlx4_ib_query_ah()
156 ah_attr->sl = be32_to_cpu(ah->av.ib.sl_tclass_flowlabel) >> 28; in mlx4_ib_query_ah()
158 ah_attr->dlid = ll == IB_LINK_LAYER_INFINIBAND ? be16_to_cpu(ah->av.ib.dlid) : 0; in mlx4_ib_query_ah()
159 if (ah->av.ib.stat_rate) in mlx4_ib_query_ah()
160 ah_attr->static_rate = ah->av.ib.stat_rate - MLX4_STAT_RATE_OFFSET; in mlx4_ib_query_ah()
161 ah_attr->src_path_bits = ah->av.ib.g_slid & 0x7F; in mlx4_ib_query_ah()
163 if (mlx4_ib_ah_grh_present(ah)) { in mlx4_ib_query_ah()
167 be32_to_cpu(ah->av.ib.sl_tclass_flowlabel) >> 20; in mlx4_ib_query_ah()
169 be32_to_cpu(ah->av.ib.sl_tclass_flowlabel) & 0xfffff; in mlx4_ib_query_ah()
170 ah_attr->grh.hop_limit = ah->av.ib.hop_limit; in mlx4_ib_query_ah()
171 ah_attr->grh.sgid_index = ah->av.ib.gid_index; in mlx4_ib_query_ah()
172 memcpy(ah_attr->grh.dgid.raw, ah->av.ib.dgid, 16); in mlx4_ib_query_ah()
178 int mlx4_ib_destroy_ah(struct ib_ah *ah) in mlx4_ib_destroy_ah() argument
180 kfree(to_mah(ah)); in mlx4_ib_destroy_ah()