IB/mad: Add final OPA MAD processing
authorIra Weiny <ira.weiny@intel.com>
Wed, 10 Jun 2015 20:16:48 +0000 (16:16 -0400)
committerDoug Ledford <dledford@redhat.com>
Fri, 12 Jun 2015 18:49:18 +0000 (14:49 -0400)
commit8e4349d13f3365273d2ff17667b36f7e846df912
tree61dd9df473f6ae9f2e9318ae595996beab87e1ed
parentf28990bc896a468d7bb09c803db2c4cf0e2db680
IB/mad: Add final OPA MAD processing

For devices which support OPA MADs

   1) Use previously defined SMP support functions.

   2) Pass correct base version to ib_create_send_mad when processing OPA MADs.

   3) Process out_mad_key_index returned by agents for a response.  This is
      necessary because OPA SMP packets must carry a valid pkey.

   4) Carry the correct segment size (OPA vs IBTA) of RMPP messages within
      ib_mad_recv_wc.

   5) Handle variable length OPA MADs by:

        * Adjusting the 'fake' WC for locally routed SMP's to represent the
          proper incoming byte_len
        * out_mad_size is used from the local HCA agents
                1) when sending agent responses on the wire
                2) when passing responses through the local_completions
   function

NOTE: wc.byte_len includes the GRH length and therefore is different
      from the in_mad_size specified to the local HCA agents.
      out_mad_size should _not_ include the GRH length as it is added

Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/core/agent.c
drivers/infiniband/core/agent.h
drivers/infiniband/core/mad.c
drivers/infiniband/core/mad_priv.h
drivers/infiniband/core/mad_rmpp.c
drivers/infiniband/core/user_mad.c
include/rdma/ib_mad.h