Lines Matching defs:smp

46 static int reply(struct ib_smp *smp)
52 smp->method = IB_MGMT_METHOD_GET_RESP;
53 if (smp->mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)
54 smp->status |= IB_SMP_DIRECTION;
58 static int recv_subn_get_nodedescription(struct ib_smp *smp,
61 if (smp->attr_mod)
62 smp->status |= IB_SMP_INVALID_FIELD;
64 memcpy(smp->data, ibdev->node_desc, sizeof(smp->data));
66 return reply(smp);
84 static int recv_subn_get_nodeinfo(struct ib_smp *smp,
87 struct nodeinfo *nip = (struct nodeinfo *)&smp->data;
92 if (smp->attr_mod || (dd->ipath_guid == 0))
93 smp->status |= IB_SMP_INVALID_FIELD;
119 return reply(smp);
122 static int recv_subn_get_guidinfo(struct ib_smp *smp,
125 u32 startgx = 8 * be32_to_cpu(smp->attr_mod);
126 __be64 *p = (__be64 *) smp->data;
130 memset(smp->data, 0, sizeof(smp->data));
140 smp->status |= IB_SMP_INVALID_FIELD;
145 smp->status |= IB_SMP_INVALID_FIELD;
147 return reply(smp);
235 static int recv_subn_get_portinfo(struct ib_smp *smp,
240 struct ib_port_info *pip = (struct ib_port_info *)smp->data;
246 if (be32_to_cpu(smp->attr_mod) > ibdev->phys_port_cnt) {
247 smp->status |= IB_SMP_INVALID_FIELD;
248 ret = reply(smp);
256 memset(smp->data, 0, sizeof(smp->data));
259 if (smp->method == IB_MGMT_METHOD_SET || dev->mkey == smp->mkey ||
339 ret = reply(smp);
360 static int recv_subn_get_pkeytable(struct ib_smp *smp,
363 u32 startpx = 32 * (be32_to_cpu(smp->attr_mod) & 0xffff);
364 u16 *p = (u16 *) smp->data;
365 __be16 *q = (__be16 *) smp->data;
369 memset(smp->data, 0, sizeof(smp->data));
379 smp->status |= IB_SMP_INVALID_FIELD;
381 return reply(smp);
384 static int recv_subn_set_guidinfo(struct ib_smp *smp,
388 return recv_subn_get_guidinfo(smp, ibdev);
411 * @smp: the incoming SM packet
417 static int recv_subn_set_portinfo(struct ib_smp *smp,
420 struct ib_port_info *pip = (struct ib_port_info *)smp->data;
433 if (be32_to_cpu(smp->attr_mod) > ibdev->phys_port_cnt)
613 ret = recv_subn_get_portinfo(smp, ibdev, port);
621 smp->status |= IB_SMP_INVALID_FIELD;
622 ret = recv_subn_get_portinfo(smp, ibdev, port);
781 static int recv_subn_set_pkeytable(struct ib_smp *smp,
784 u32 startpx = 32 * (be32_to_cpu(smp->attr_mod) & 0xffff);
785 __be16 *p = (__be16 *) smp->data;
786 u16 *q = (u16 *) smp->data;
794 smp->status |= IB_SMP_INVALID_FIELD;
796 return recv_subn_get_pkeytable(smp, ibdev);
1263 struct ib_smp *smp = (struct ib_smp *)out_mad;
1268 if (smp->class_version != 1) {
1269 smp->status |= IB_SMP_UNSUP_VERSION;
1270 ret = reply(smp);
1287 dev->mkey != smp->mkey &&
1288 (smp->method == IB_MGMT_METHOD_SET ||
1289 (smp->method == IB_MGMT_METHOD_GET &&
1307 switch (smp->method) {
1309 switch (smp->attr_id) {
1311 ret = recv_subn_get_nodedescription(smp, ibdev);
1314 ret = recv_subn_get_nodeinfo(smp, ibdev, port_num);
1317 ret = recv_subn_get_guidinfo(smp, ibdev);
1320 ret = recv_subn_get_portinfo(smp, ibdev, port_num);
1323 ret = recv_subn_get_pkeytable(smp, ibdev);
1337 smp->status |= IB_SMP_UNSUP_METH_ATTR;
1338 ret = reply(smp);
1343 switch (smp->attr_id) {
1345 ret = recv_subn_set_guidinfo(smp, ibdev);
1348 ret = recv_subn_set_portinfo(smp, ibdev, port_num);
1351 ret = recv_subn_set_pkeytable(smp, ibdev, port_num);
1365 smp->status |= IB_SMP_UNSUP_METH_ATTR;
1366 ret = reply(smp);
1383 smp->status |= IB_SMP_UNSUP_METHOD;
1384 ret = reply(smp);