• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/infiniband/hw/qib/

Lines Matching defs:smp

40 static int reply(struct ib_smp *smp)
46 smp->method = IB_MGMT_METHOD_GET_RESP;
47 if (smp->mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)
48 smp->status |= IB_SMP_DIRECTION;
56 struct ib_smp *smp;
78 smp = send_buf->mad;
79 smp->base_version = IB_MGMT_BASE_VERSION;
80 smp->mgmt_class = IB_MGMT_CLASS_SUBN_LID_ROUTED;
81 smp->class_version = 1;
82 smp->method = IB_MGMT_METHOD_TRAP;
84 smp->tid = cpu_to_be64(ibp->tid);
85 smp->attr_id = IB_SMP_ATTR_NOTICE;
86 /* o14-1: smp->mkey = 0; */
87 memcpy(smp->data, data, len);
160 static void qib_bad_mkey(struct qib_ibport *ibp, struct ib_smp *smp)
173 data.details.ntc_256.method = smp->method;
174 data.details.ntc_256.attr_id = smp->attr_id;
175 data.details.ntc_256.attr_mod = smp->attr_mod;
176 data.details.ntc_256.mkey = smp->mkey;
177 if (smp->mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE) {
180 data.details.ntc_256.dr_slid = smp->dr_slid;
182 hop_cnt = smp->hop_cnt;
189 memcpy(data.details.ntc_256.dr_rtn_path, smp->return_path,
257 static int subn_get_nodedescription(struct ib_smp *smp,
260 if (smp->attr_mod)
261 smp->status |= IB_SMP_INVALID_FIELD;
263 memcpy(smp->data, ibdev->node_desc, sizeof(smp->data));
265 return reply(smp);
268 static int subn_get_nodeinfo(struct ib_smp *smp, struct ib_device *ibdev,
271 struct ib_node_info *nip = (struct ib_node_info *)&smp->data;
277 if (smp->attr_mod || pidx >= dd->num_pports ||
279 smp->status |= IB_SMP_INVALID_FIELD;
301 return reply(smp);
304 static int subn_get_guidinfo(struct ib_smp *smp, struct ib_device *ibdev,
308 u32 startgx = 8 * be32_to_cpu(smp->attr_mod);
309 __be64 *p = (__be64 *) smp->data;
314 memset(smp->data, 0, sizeof(smp->data));
324 smp->status |= IB_SMP_INVALID_FIELD;
332 smp->status |= IB_SMP_INVALID_FIELD;
334 return reply(smp);
397 static int check_mkey(struct qib_ibport *ibp, struct ib_smp *smp, int mad_flags)
411 ibp->mkey != smp->mkey &&
412 (smp->method == IB_MGMT_METHOD_SET ||
413 smp->method == IB_MGMT_METHOD_TRAP_REPRESS ||
414 (smp->method == IB_MGMT_METHOD_GET && ibp->mkeyprot >= 2))) {
421 qib_bad_mkey(ibp, smp);
429 static int subn_get_portinfo(struct ib_smp *smp, struct ib_device *ibdev,
435 struct ib_port_info *pip = (struct ib_port_info *)smp->data;
440 u32 port_num = be32_to_cpu(smp->attr_mod);
446 smp->status |= IB_SMP_INVALID_FIELD;
447 ret = reply(smp);
452 ret = check_mkey(ibp, smp, 0);
464 memset(smp->data, 0, sizeof(smp->data));
467 if (smp->method == IB_MGMT_METHOD_SET || ibp->mkey == smp->mkey ||
543 ret = reply(smp);
570 static int subn_get_pkeytable(struct ib_smp *smp, struct ib_device *ibdev,
573 u32 startpx = 32 * (be32_to_cpu(smp->attr_mod) & 0xffff);
574 u16 *p = (u16 *) smp->data;
575 __be16 *q = (__be16 *) smp->data;
579 memset(smp->data, 0, sizeof(smp->data));
589 smp->status |= IB_SMP_INVALID_FIELD;
591 return reply(smp);
594 static int subn_set_guidinfo(struct ib_smp *smp, struct ib_device *ibdev,
598 u32 startgx = 8 * be32_to_cpu(smp->attr_mod);
599 __be64 *p = (__be64 *) smp->data;
613 smp->status |= IB_SMP_INVALID_FIELD;
616 return subn_get_guidinfo(smp, ibdev, port);
621 * @smp: the incoming SM packet
627 static int subn_set_portinfo(struct ib_smp *smp, struct ib_device *ibdev,
630 struct ib_port_info *pip = (struct ib_port_info *)smp->data;
645 u32 port_num = be32_to_cpu(smp->attr_mod);
825 if (lstate == QIB_IB_LINKDOWN_DISABLE && smp->hop_cnt) {
841 ret = subn_get_portinfo(smp, ibdev, port);
849 smp->status |= IB_SMP_INVALID_FIELD;
851 ret = subn_get_portinfo(smp, ibdev, port);
1008 static int subn_set_pkeytable(struct ib_smp *smp, struct ib_device *ibdev,
1011 u32 startpx = 32 * (be32_to_cpu(smp->attr_mod) & 0xffff);
1012 __be16 *p = (__be16 *) smp->data;
1013 u16 *q = (u16 *) smp->data;
1021 smp->status |= IB_SMP_INVALID_FIELD;
1023 return subn_get_pkeytable(smp, ibdev, port);
1026 static int subn_get_sl_to_vl(struct ib_smp *smp, struct ib_device *ibdev,
1030 u8 *p = (u8 *) smp->data;
1033 memset(smp->data, 0, sizeof(smp->data));
1036 smp->status |= IB_SMP_UNSUP_METHOD;
1041 return reply(smp);
1044 static int subn_set_sl_to_vl(struct ib_smp *smp, struct ib_device *ibdev,
1048 u8 *p = (u8 *) smp->data;
1052 smp->status |= IB_SMP_UNSUP_METHOD;
1053 return reply(smp);
1063 return subn_get_sl_to_vl(smp, ibdev, port);
1066 static int subn_get_vl_arb(struct ib_smp *smp, struct ib_device *ibdev,
1069 unsigned which = be32_to_cpu(smp->attr_mod) >> 16;
1072 memset(smp->data, 0, sizeof(smp->data));
1075 smp->status |= IB_SMP_UNSUP_METHOD;
1078 smp->data);
1081 smp->data);
1083 smp->status |= IB_SMP_INVALID_FIELD;
1085 return reply(smp);
1088 static int subn_set_vl_arb(struct ib_smp *smp, struct ib_device *ibdev,
1091 unsigned which = be32_to_cpu(smp->attr_mod) >> 16;
1095 smp->status |= IB_SMP_UNSUP_METHOD;
1098 smp->data);
1101 smp->data);
1103 smp->status |= IB_SMP_INVALID_FIELD;
1105 return subn_get_vl_arb(smp, ibdev, port);
1108 static int subn_trap_repress(struct ib_smp *smp, struct ib_device *ibdev,
1803 struct ib_smp *smp = (struct ib_smp *)out_mad;
1809 if (smp->class_version != 1) {
1810 smp->status |= IB_SMP_UNSUP_VERSION;
1811 ret = reply(smp);
1815 ret = check_mkey(ibp, smp, mad_flags);
1817 u32 port_num = be32_to_cpu(smp->attr_mod);
1827 (smp->method == IB_MGMT_METHOD_GET ||
1828 smp->method == IB_MGMT_METHOD_SET) &&
1831 (void) check_mkey(to_iport(ibdev, port_num), smp, 0);
1835 switch (smp->method) {
1837 switch (smp->attr_id) {
1839 ret = subn_get_nodedescription(smp, ibdev);
1842 ret = subn_get_nodeinfo(smp, ibdev, port);
1845 ret = subn_get_guidinfo(smp, ibdev, port);
1848 ret = subn_get_portinfo(smp, ibdev, port);
1851 ret = subn_get_pkeytable(smp, ibdev, port);
1854 ret = subn_get_sl_to_vl(smp, ibdev, port);
1857 ret = subn_get_vl_arb(smp, ibdev, port);
1871 smp->status |= IB_SMP_UNSUP_METH_ATTR;
1872 ret = reply(smp);
1877 switch (smp->attr_id) {
1879 ret = subn_set_guidinfo(smp, ibdev, port);
1882 ret = subn_set_portinfo(smp, ibdev, port);
1885 ret = subn_set_pkeytable(smp, ibdev, port);
1888 ret = subn_set_sl_to_vl(smp, ibdev, port);
1891 ret = subn_set_vl_arb(smp, ibdev, port);
1905 smp->status |= IB_SMP_UNSUP_METH_ATTR;
1906 ret = reply(smp);
1911 if (smp->attr_id == IB_SMP_ATTR_NOTICE)
1912 ret = subn_trap_repress(smp, ibdev, port);
1914 smp->status |= IB_SMP_UNSUP_METH_ATTR;
1915 ret = reply(smp);
1932 if (ib_get_smp_direction(smp) &&
1933 smp->attr_id == QIB_VENDOR_IPG) {
1935 smp->data[0]);
1942 smp->status |= IB_SMP_UNSUP_METHOD;
1943 ret = reply(smp);