Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit da2dfaa3 authored by Ira Weiny's avatar Ira Weiny Committed by Doug Ledford
Browse files

IB/mad: Support alternate Base Versions when creating MADs



In preparation to support the new OPA MAD Base version, add a base version
parameter to ib_create_send_mad and set it to IB_MGMT_BASE_VERSION for current
users.

Definition of the new base version and it's processing will occur in later
patches.

Signed-off-by: default avatarIra Weiny <ira.weiny@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 29869eaf
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -108,7 +108,8 @@ void agent_send_response(const struct ib_mad *mad, const struct ib_grh *grh,


	send_buf = ib_create_send_mad(agent, wc->src_qp, wc->pkey_index, 0,
	send_buf = ib_create_send_mad(agent, wc->src_qp, wc->pkey_index, 0,
				      IB_MGMT_MAD_HDR, IB_MGMT_MAD_DATA,
				      IB_MGMT_MAD_HDR, IB_MGMT_MAD_DATA,
				      GFP_KERNEL);
				      GFP_KERNEL,
				      IB_MGMT_BASE_VERSION);
	if (IS_ERR(send_buf)) {
	if (IS_ERR(send_buf)) {
		dev_err(&device->dev, "ib_create_send_mad error\n");
		dev_err(&device->dev, "ib_create_send_mad error\n");
		goto err1;
		goto err1;
+4 −2
Original line number Original line Diff line number Diff line
@@ -267,7 +267,8 @@ static int cm_alloc_msg(struct cm_id_private *cm_id_priv,
	m = ib_create_send_mad(mad_agent, cm_id_priv->id.remote_cm_qpn,
	m = ib_create_send_mad(mad_agent, cm_id_priv->id.remote_cm_qpn,
			       cm_id_priv->av.pkey_index,
			       cm_id_priv->av.pkey_index,
			       0, IB_MGMT_MAD_HDR, IB_MGMT_MAD_DATA,
			       0, IB_MGMT_MAD_HDR, IB_MGMT_MAD_DATA,
			       GFP_ATOMIC);
			       GFP_ATOMIC,
			       IB_MGMT_BASE_VERSION);
	if (IS_ERR(m)) {
	if (IS_ERR(m)) {
		ib_destroy_ah(ah);
		ib_destroy_ah(ah);
		return PTR_ERR(m);
		return PTR_ERR(m);
@@ -297,7 +298,8 @@ static int cm_alloc_response_msg(struct cm_port *port,


	m = ib_create_send_mad(port->mad_agent, 1, mad_recv_wc->wc->pkey_index,
	m = ib_create_send_mad(port->mad_agent, 1, mad_recv_wc->wc->pkey_index,
			       0, IB_MGMT_MAD_HDR, IB_MGMT_MAD_DATA,
			       0, IB_MGMT_MAD_HDR, IB_MGMT_MAD_DATA,
			       GFP_ATOMIC);
			       GFP_ATOMIC,
			       IB_MGMT_BASE_VERSION);
	if (IS_ERR(m)) {
	if (IS_ERR(m)) {
		ib_destroy_ah(ah);
		ib_destroy_ah(ah);
		return PTR_ERR(m);
		return PTR_ERR(m);
+2 −1
Original line number Original line Diff line number Diff line
@@ -920,7 +920,8 @@ struct ib_mad_send_buf * ib_create_send_mad(struct ib_mad_agent *mad_agent,
					    u32 remote_qpn, u16 pkey_index,
					    u32 remote_qpn, u16 pkey_index,
					    int rmpp_active,
					    int rmpp_active,
					    int hdr_len, int data_len,
					    int hdr_len, int data_len,
					    gfp_t gfp_mask)
					    gfp_t gfp_mask,
					    u8 base_version)
{
{
	struct ib_mad_agent_private *mad_agent_priv;
	struct ib_mad_agent_private *mad_agent_priv;
	struct ib_mad_send_wr_private *mad_send_wr;
	struct ib_mad_send_wr_private *mad_send_wr;
+4 −2
Original line number Original line Diff line number Diff line
@@ -139,7 +139,8 @@ static void ack_recv(struct mad_rmpp_recv *rmpp_recv,
	hdr_len = ib_get_mad_data_offset(recv_wc->recv_buf.mad->mad_hdr.mgmt_class);
	hdr_len = ib_get_mad_data_offset(recv_wc->recv_buf.mad->mad_hdr.mgmt_class);
	msg = ib_create_send_mad(&rmpp_recv->agent->agent, recv_wc->wc->src_qp,
	msg = ib_create_send_mad(&rmpp_recv->agent->agent, recv_wc->wc->src_qp,
				 recv_wc->wc->pkey_index, 1, hdr_len,
				 recv_wc->wc->pkey_index, 1, hdr_len,
				 0, GFP_KERNEL);
				 0, GFP_KERNEL,
				 IB_MGMT_BASE_VERSION);
	if (IS_ERR(msg))
	if (IS_ERR(msg))
		return;
		return;


@@ -165,7 +166,8 @@ static struct ib_mad_send_buf *alloc_response_msg(struct ib_mad_agent *agent,
	hdr_len = ib_get_mad_data_offset(recv_wc->recv_buf.mad->mad_hdr.mgmt_class);
	hdr_len = ib_get_mad_data_offset(recv_wc->recv_buf.mad->mad_hdr.mgmt_class);
	msg = ib_create_send_mad(agent, recv_wc->wc->src_qp,
	msg = ib_create_send_mad(agent, recv_wc->wc->src_qp,
				 recv_wc->wc->pkey_index, 1,
				 recv_wc->wc->pkey_index, 1,
				 hdr_len, 0, GFP_KERNEL);
				 hdr_len, 0, GFP_KERNEL,
				 IB_MGMT_BASE_VERSION);
	if (IS_ERR(msg))
	if (IS_ERR(msg))
		ib_destroy_ah(ah);
		ib_destroy_ah(ah);
	else {
	else {
+2 −1
Original line number Original line Diff line number Diff line
@@ -583,7 +583,8 @@ static int alloc_mad(struct ib_sa_query *query, gfp_t gfp_mask)
	query->mad_buf = ib_create_send_mad(query->port->agent, 1,
	query->mad_buf = ib_create_send_mad(query->port->agent, 1,
					    query->sm_ah->pkey_index,
					    query->sm_ah->pkey_index,
					    0, IB_MGMT_SA_HDR, IB_MGMT_SA_DATA,
					    0, IB_MGMT_SA_HDR, IB_MGMT_SA_DATA,
					    gfp_mask);
					    gfp_mask,
					    IB_MGMT_BASE_VERSION);
	if (IS_ERR(query->mad_buf)) {
	if (IS_ERR(query->mad_buf)) {
		kref_put(&query->sm_ah->ref, free_sm_ah);
		kref_put(&query->sm_ah->ref, free_sm_ah);
		return -ENOMEM;
		return -ENOMEM;
Loading