Lines Matching refs:mad

75 					struct ib_mad *mad);
77 struct ib_mad_private *mad);
181 int ib_response_mad(struct ib_mad *mad)
183 return ((mad->mad_hdr.method & IB_MGMT_METHOD_RESP) ||
184 (mad->mad_hdr.method == IB_MGMT_METHOD_TRAP_REPRESS) ||
185 ((mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_BM) &&
186 (mad->mad_hdr.attr_mod & IB_BM_ATTR_MOD_RESP)));
382 /* Add mad agent into port's agent list */
690 struct ib_smp *smp = mad_send_wr->send_buf.mad;
751 (struct ib_mad *)&mad_priv->mad);
755 if (ib_response_mad(&mad_priv->mad.mad) &&
775 memcpy(&mad_priv->mad.mad, smp, sizeof(struct ib_mad));
777 &mad_priv->mad.mad);
837 struct ib_rmpp_mad *rmpp_mad = send_buf->mad;
902 mad_send_wr->send_buf.mad = buf;
993 return mad_send_wr->send_buf.mad +
1008 kfree(send_buf->mad);
1031 mad_send_wr->send_buf.mad,
1096 if (!ib_is_mad_class_rmpp(((struct ib_mad_hdr *) send_buf->mad)->mgmt_class)) {
1111 if (((struct ib_mad_hdr *) send_buf->mad)->mgmt_class ==
1121 mad_send_wr->tid = ((struct ib_mad_hdr *) send_buf->mad)->tid;
1302 /* Remove any methods for this mad agent */
1359 /* Remove any methods for this mad agent */
1458 /* Remove any methods for this mad agent */
1508 /* Remove any methods for this mad agent */
1545 /* Remove any methods for this mad agent */
1580 struct ib_mad *mad)
1586 if (ib_response_mad(mad)) {
1594 hi_tid = be64_to_cpu(mad->mad_hdr.tid) >> 32;
1613 if (mad->mad_hdr.class_version >= MAX_MGMT_VERSION)
1615 if (!is_vendor_class(mad->mad_hdr.mgmt_class)) {
1617 mad->mad_hdr.class_version].class;
1621 mad->mad_hdr.mgmt_class)];
1623 mad_agent = method->agent[mad->mad_hdr.method &
1627 mad->mad_hdr.class_version].vendor;
1631 mad->mad_hdr.mgmt_class)];
1635 vendor_mad = (struct ib_vendor_mad *)mad;
1641 mad_agent = method->agent[mad->mad_hdr.method &
1663 static int validate_mad(struct ib_mad *mad, u32 qp_num)
1668 if (mad->mad_hdr.base_version != IB_MGMT_BASE_VERSION) {
1670 "version %d\n", mad->mad_hdr.base_version);
1675 if ((mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_LID_ROUTED) ||
1676 (mad->mad_hdr.mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE)) {
1704 return ((struct ib_mad *)(wr->send_buf.mad))->mad_hdr.mgmt_class ==
1705 rwc->recv_buf.mad->mad_hdr.mgmt_class;
1719 send_resp = ib_response_mad((struct ib_mad *)wr->send_buf.mad);
1720 rcv_resp = ib_response_mad(rwc->recv_buf.mad);
1769 struct ib_mad *mad;
1771 mad = (struct ib_mad *)wc->recv_buf.mad;
1774 if ((wr->tid == mad->mad_hdr.tid) &&
1780 (is_direct(wc->recv_buf.mad->mad_hdr.mgmt_class) ||
1790 if (is_data_mad(mad_agent_priv, wr->send_buf.mad) &&
1791 wr->tid == mad->mad_hdr.tid &&
1798 (is_direct(wc->recv_buf.mad->mad_hdr.mgmt_class) ||
1833 if (ib_response_mad(mad_recv_wc->recv_buf.mad)) {
1889 recv->header.recv_wc.recv_buf.mad = &recv->mad.mad;
1896 if (!validate_mad(&recv->mad.mad, qp_info->qp->qp_num))
1911 if (recv->mad.mad.mad_hdr.mgmt_class ==
1915 if (smi_handle_dr_smp_recv(&recv->mad.smp,
1922 retsmi = smi_check_forward_dr_smp(&recv->mad.smp);
1927 if (smi_handle_dr_smp_send(&recv->mad.smp,
1932 if (smi_check_local_smp(&recv->mad.smp, port_priv->device) == IB_SMI_DISCARD)
1938 response->header.recv_wc.recv_buf.mad = &response->mad.mad;
1941 agent_send_response(&response->mad.mad,
1944 smi_get_fwd_port(&recv->mad.smp),
1959 &recv->mad.mad,
1960 &response->mad.mad);
1965 agent_send_response(&response->mad.mad,
1975 mad_agent = find_mad_agent(port_priv, &recv->mad.mad);
2319 if (is_data_mad(mad_agent_priv, mad_send_wr->send_buf.mad) &&
2412 local->mad_priv->header.recv_wc.recv_buf.mad =
2413 &local->mad_priv->mad.mad;
2542 struct ib_mad_private *mad)
2562 if (mad) {
2563 mad_priv = mad;
2564 mad = NULL;
3008 .name = "mad",