• Home
  • Raw
  • Download

Lines Matching refs:smp

46 static int reply(struct ib_smp *smp)  in reply()  argument
52 smp->method = IB_MGMT_METHOD_GET_RESP; in reply()
53 if (smp->mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) in reply()
54 smp->status |= IB_SMP_DIRECTION; in reply()
58 static int recv_subn_get_nodedescription(struct ib_smp *smp, in recv_subn_get_nodedescription() argument
61 if (smp->attr_mod) in recv_subn_get_nodedescription()
62 smp->status |= IB_SMP_INVALID_FIELD; in recv_subn_get_nodedescription()
64 memcpy(smp->data, ibdev->node_desc, sizeof(smp->data)); in recv_subn_get_nodedescription()
66 return reply(smp); in recv_subn_get_nodedescription()
84 static int recv_subn_get_nodeinfo(struct ib_smp *smp, in recv_subn_get_nodeinfo() argument
87 struct nodeinfo *nip = (struct nodeinfo *)&smp->data; in recv_subn_get_nodeinfo()
92 if (smp->attr_mod || (dd->ipath_guid == 0)) in recv_subn_get_nodeinfo()
93 smp->status |= IB_SMP_INVALID_FIELD; in recv_subn_get_nodeinfo()
119 return reply(smp); in recv_subn_get_nodeinfo()
122 static int recv_subn_get_guidinfo(struct ib_smp *smp, in recv_subn_get_guidinfo() argument
125 u32 startgx = 8 * be32_to_cpu(smp->attr_mod); in recv_subn_get_guidinfo()
126 __be64 *p = (__be64 *) smp->data; in recv_subn_get_guidinfo()
130 memset(smp->data, 0, sizeof(smp->data)); in recv_subn_get_guidinfo()
140 smp->status |= IB_SMP_INVALID_FIELD; in recv_subn_get_guidinfo()
145 smp->status |= IB_SMP_INVALID_FIELD; in recv_subn_get_guidinfo()
147 return reply(smp); in recv_subn_get_guidinfo()
235 static int recv_subn_get_portinfo(struct ib_smp *smp, in recv_subn_get_portinfo() argument
240 struct ib_port_info *pip = (struct ib_port_info *)smp->data; in recv_subn_get_portinfo()
246 if (be32_to_cpu(smp->attr_mod) > ibdev->phys_port_cnt) { in recv_subn_get_portinfo()
247 smp->status |= IB_SMP_INVALID_FIELD; in recv_subn_get_portinfo()
248 ret = reply(smp); in recv_subn_get_portinfo()
256 memset(smp->data, 0, sizeof(smp->data)); in recv_subn_get_portinfo()
259 if (smp->method == IB_MGMT_METHOD_SET || dev->mkey == smp->mkey || in recv_subn_get_portinfo()
339 ret = reply(smp); in recv_subn_get_portinfo()
360 static int recv_subn_get_pkeytable(struct ib_smp *smp, in recv_subn_get_pkeytable() argument
363 u32 startpx = 32 * (be32_to_cpu(smp->attr_mod) & 0xffff); in recv_subn_get_pkeytable()
364 u16 *p = (u16 *) smp->data; in recv_subn_get_pkeytable()
365 __be16 *q = (__be16 *) smp->data; in recv_subn_get_pkeytable()
369 memset(smp->data, 0, sizeof(smp->data)); in recv_subn_get_pkeytable()
379 smp->status |= IB_SMP_INVALID_FIELD; in recv_subn_get_pkeytable()
381 return reply(smp); in recv_subn_get_pkeytable()
384 static int recv_subn_set_guidinfo(struct ib_smp *smp, in recv_subn_set_guidinfo() argument
388 return recv_subn_get_guidinfo(smp, ibdev); in recv_subn_set_guidinfo()
417 static int recv_subn_set_portinfo(struct ib_smp *smp, in recv_subn_set_portinfo() argument
420 struct ib_port_info *pip = (struct ib_port_info *)smp->data; in recv_subn_set_portinfo()
433 if (be32_to_cpu(smp->attr_mod) > ibdev->phys_port_cnt) in recv_subn_set_portinfo()
613 ret = recv_subn_get_portinfo(smp, ibdev, port); in recv_subn_set_portinfo()
621 smp->status |= IB_SMP_INVALID_FIELD; in recv_subn_set_portinfo()
622 ret = recv_subn_get_portinfo(smp, ibdev, port); in recv_subn_set_portinfo()
775 static int recv_subn_set_pkeytable(struct ib_smp *smp, in recv_subn_set_pkeytable() argument
778 u32 startpx = 32 * (be32_to_cpu(smp->attr_mod) & 0xffff); in recv_subn_set_pkeytable()
779 __be16 *p = (__be16 *) smp->data; in recv_subn_set_pkeytable()
780 u16 *q = (u16 *) smp->data; in recv_subn_set_pkeytable()
788 smp->status |= IB_SMP_INVALID_FIELD; in recv_subn_set_pkeytable()
790 return recv_subn_get_pkeytable(smp, ibdev); in recv_subn_set_pkeytable()
1257 struct ib_smp *smp = (struct ib_smp *)out_mad; in process_subn() local
1262 if (smp->class_version != 1) { in process_subn()
1263 smp->status |= IB_SMP_UNSUP_VERSION; in process_subn()
1264 ret = reply(smp); in process_subn()
1281 dev->mkey != smp->mkey && in process_subn()
1282 (smp->method == IB_MGMT_METHOD_SET || in process_subn()
1283 (smp->method == IB_MGMT_METHOD_GET && in process_subn()
1301 switch (smp->method) { in process_subn()
1303 switch (smp->attr_id) { in process_subn()
1305 ret = recv_subn_get_nodedescription(smp, ibdev); in process_subn()
1308 ret = recv_subn_get_nodeinfo(smp, ibdev, port_num); in process_subn()
1311 ret = recv_subn_get_guidinfo(smp, ibdev); in process_subn()
1314 ret = recv_subn_get_portinfo(smp, ibdev, port_num); in process_subn()
1317 ret = recv_subn_get_pkeytable(smp, ibdev); in process_subn()
1331 smp->status |= IB_SMP_UNSUP_METH_ATTR; in process_subn()
1332 ret = reply(smp); in process_subn()
1337 switch (smp->attr_id) { in process_subn()
1339 ret = recv_subn_set_guidinfo(smp, ibdev); in process_subn()
1342 ret = recv_subn_set_portinfo(smp, ibdev, port_num); in process_subn()
1345 ret = recv_subn_set_pkeytable(smp, ibdev); in process_subn()
1359 smp->status |= IB_SMP_UNSUP_METH_ATTR; in process_subn()
1360 ret = reply(smp); in process_subn()
1377 smp->status |= IB_SMP_UNSUP_METHOD; in process_subn()
1378 ret = reply(smp); in process_subn()