Lines Matching defs:rpc
54 mad_send(ib_rpc_t *rpc, ib_portid_t *dport, ib_rmpp_hdr_t *rmpp, void *data)
63 if (mad_build_pkt(umad, rpc, dport, rmpp, data) < 0)
67 IBWARN("data offs %d sz %d", rpc->dataoffs, rpc->datasz);
69 (char *)umad_get_mad(umad) + rpc->dataoffs, rpc->datasz);
72 if (umad_send(madrpc_portid(), mad_class_agent(rpc->mgtclass),
73 umad, IB_MAD_SIZE, rpc->timeout, 0) < 0) {
86 ib_rpc_t rpc = {0};
106 rpc.mgtclass = mad_get_field(mad, 0, IB_MAD_MGMTCLASS_F);
108 rpc.method = mad_get_field(mad, 0, IB_MAD_METHOD_F);
109 if (rpc.method == IB_MAD_METHOD_SET)
110 rpc.method = IB_MAD_METHOD_GET;
111 if (rpc.method != IB_MAD_METHOD_SEND)
112 rpc.method |= IB_MAD_RESPONSE;
114 rpc.attr.id = mad_get_field(mad, 0, IB_MAD_ATTRID_F);
115 rpc.attr.mod = mad_get_field(mad, 0, IB_MAD_ATTRMOD_F);
116 if (rpc.mgtclass == IB_SA_CLASS)
117 rpc.recsz = mad_get_field(mad, 0, IB_SA_ATTROFFS_F);
118 if (mad_is_vendor_range2(rpc.mgtclass))
119 rpc.oui = mad_get_field(mad, 0, IB_VEND2_OUI_F);
121 rpc.trid = mad_get_field64(mad, 0, IB_MAD_TRID_F);
125 is_smi = rpc.mgtclass == IB_SMI_CLASS ||
126 rpc.mgtclass == IB_SMI_DIRECT_CLASS;
137 portid->qp, rpc.mgtclass, rpc.method, rpc.attr.id, rpc.attr.mod,
138 rpc.datasz, rpc.dataoffs, portid->qkey);
140 if (mad_build_pkt(umad, &rpc, portid, 0, 0) < 0)
146 if (umad_send(madrpc_portid(), mad_class_agent(rpc.mgtclass), umad,
147 IB_MAD_SIZE, rpc.timeout, 0) < 0) {