1/* 2 * Copyright (c) 2005 Intel Corporation. All rights reserved. 3 * 4 * This software is available to you under a choice of one of two 5 * licenses. You may choose to be licensed under the terms of the GNU 6 * General Public License (GPL) Version 2, available from the file 7 * COPYING in the main directory of this source tree, or the 8 * OpenIB.org BSD license below: 9 * 10 * Redistribution and use in source and binary forms, with or 11 * without modification, are permitted provided that the following 12 * conditions are met: 13 * 14 * - Redistributions of source code must retain the above 15 * copyright notice, this list of conditions and the following 16 * disclaimer. 17 * 18 * - Redistributions in binary form must reproduce the above 19 * copyright notice, this list of conditions and the following 20 * disclaimer in the documentation and/or other materials 21 * provided with the distribution. 22 * 23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30 * SOFTWARE. 31 */ 32 33#if HAVE_CONFIG_H 34# include <config.h> 35#endif /* HAVE_CONFIG_H */ 36 37#include <string.h> 38 39#include <infiniband/marshall.h> 40 41void ibv_copy_ah_attr_from_kern(struct ibv_ah_attr *dst, 42 struct ibv_kern_ah_attr *src) 43{ 44 memcpy(dst->grh.dgid.raw, src->grh.dgid, sizeof dst->grh.dgid); 45 dst->grh.flow_label = src->grh.flow_label; 46 dst->grh.sgid_index = src->grh.sgid_index; 47 dst->grh.hop_limit = src->grh.hop_limit; 48 dst->grh.traffic_class = src->grh.traffic_class; 49 50 dst->dlid = src->dlid; 51 dst->sl = src->sl; 52 dst->src_path_bits = src->src_path_bits; 53 dst->static_rate = src->static_rate; 54 dst->is_global = src->is_global; 55 dst->port_num = src->port_num; 56} 57 58void ibv_copy_qp_attr_from_kern(struct ibv_qp_attr *dst, 59 struct ibv_kern_qp_attr *src) 60{ 61 dst->cur_qp_state = src->cur_qp_state; 62 dst->path_mtu = src->path_mtu; 63 dst->path_mig_state = src->path_mig_state; 64 dst->qkey = src->qkey; 65 dst->rq_psn = src->rq_psn; 66 dst->sq_psn = src->sq_psn; 67 dst->dest_qp_num = src->dest_qp_num; 68 dst->qp_access_flags = src->qp_access_flags; 69 70 dst->cap.max_send_wr = src->max_send_wr; 71 dst->cap.max_recv_wr = src->max_recv_wr; 72 dst->cap.max_send_sge = src->max_send_sge; 73 dst->cap.max_recv_sge = src->max_recv_sge; 74 dst->cap.max_inline_data = src->max_inline_data; 75 76 ibv_copy_ah_attr_from_kern(&dst->ah_attr, &src->ah_attr); 77 ibv_copy_ah_attr_from_kern(&dst->alt_ah_attr, &src->alt_ah_attr); 78 79 dst->pkey_index = src->pkey_index; 80 dst->alt_pkey_index = src->alt_pkey_index; 81 dst->en_sqd_async_notify = src->en_sqd_async_notify; 82 dst->sq_draining = src->sq_draining; 83 dst->max_rd_atomic = src->max_rd_atomic; 84 dst->max_dest_rd_atomic = src->max_dest_rd_atomic; 85 dst->min_rnr_timer = src->min_rnr_timer; 86 dst->port_num = src->port_num; 87 dst->timeout = src->timeout; 88 dst->retry_cnt = src->retry_cnt; 89 dst->rnr_retry = src->rnr_retry; 90 dst->alt_port_num = src->alt_port_num; 91 dst->alt_timeout = src->alt_timeout; 92} 93 94void ibv_copy_path_rec_from_kern(struct ibv_sa_path_rec *dst, 95 struct ibv_kern_path_rec *src) 96{ 97 memcpy(dst->dgid.raw, src->dgid, sizeof dst->dgid); 98 memcpy(dst->sgid.raw, src->sgid, sizeof dst->sgid); 99 100 dst->dlid = src->dlid; 101 dst->slid = src->slid; 102 dst->raw_traffic = src->raw_traffic; 103 dst->flow_label = src->flow_label; 104 dst->hop_limit = src->hop_limit; 105 dst->traffic_class = src->traffic_class; 106 dst->reversible = src->reversible; 107 dst->numb_path = src->numb_path; 108 dst->pkey = src->pkey; 109 dst->sl = src->sl; 110 dst->mtu_selector = src->mtu_selector; 111 dst->mtu = src->mtu; 112 dst->rate_selector = src->rate_selector; 113 dst->rate = src->rate; 114 dst->packet_life_time = src->packet_life_time; 115 dst->preference = src->preference; 116 dst->packet_life_time_selector = src->packet_life_time_selector; 117} 118 119void ibv_copy_path_rec_to_kern(struct ibv_kern_path_rec *dst, 120 struct ibv_sa_path_rec *src) 121{ 122 memcpy(dst->dgid, src->dgid.raw, sizeof src->dgid); 123 memcpy(dst->sgid, src->sgid.raw, sizeof src->sgid); 124 125 dst->dlid = src->dlid; 126 dst->slid = src->slid; 127 dst->raw_traffic = src->raw_traffic; 128 dst->flow_label = src->flow_label; 129 dst->hop_limit = src->hop_limit; 130 dst->traffic_class = src->traffic_class; 131 dst->reversible = src->reversible; 132 dst->numb_path = src->numb_path; 133 dst->pkey = src->pkey; 134 dst->sl = src->sl; 135 dst->mtu_selector = src->mtu_selector; 136 dst->mtu = src->mtu; 137 dst->rate_selector = src->rate_selector; 138 dst->rate = src->rate; 139 dst->packet_life_time = src->packet_life_time; 140 dst->preference = src->preference; 141 dst->packet_life_time_selector = src->packet_life_time_selector; 142} 143