diff options
author | Ira Weiny <ira.weiny@intel.com> | 2015-06-06 21:38:30 +0300 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2015-06-12 21:49:17 +0300 |
commit | c9082e51b6a4ba0272c30027d87e67c6652a725d (patch) | |
tree | aac79d30829b3602d5713c8dfa3e4b037d191aaa /drivers/infiniband/core/mad_priv.h | |
parent | 337877a466bb8b0c51f4fa727eeef7d734665632 (diff) | |
download | linux-c9082e51b6a4ba0272c30027d87e67c6652a725d.tar.xz |
IB/mad: Convert allocations from kmem_cache to kzalloc
This patch implements allocating alternate receive MAD buffers within the MAD
stack. Support for OPA to send/recv variable sized MADs is implemented later.
1) Convert MAD allocations from kmem_cache to kzalloc
kzalloc is more flexible to support devices with different sized MADs
and research and testing showed that the current use of kmem_cache does
not provide performance benefits over kzalloc.
2) Change struct ib_mad_private to use a flex array for the mad data
3) Allocate ib_mad_private based on the size specified by devices in
rdma_max_mad_size.
4) Carry the allocated size in ib_mad_private to be used when processing
ib_mad_private objects.
5) Alter DMA mappings based on the mad_size of ib_mad_private.
6) Replace the use of sizeof and static defines as appropriate
7) Add appropriate casts for the MAD data when calling processing
functions.
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/core/mad_priv.h')
-rw-r--r-- | drivers/infiniband/core/mad_priv.h | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/drivers/infiniband/core/mad_priv.h b/drivers/infiniband/core/mad_priv.h index 7b19cba2adf0..44c0a7842a70 100644 --- a/drivers/infiniband/core/mad_priv.h +++ b/drivers/infiniband/core/mad_priv.h @@ -75,12 +75,9 @@ struct ib_mad_private_header { struct ib_mad_private { struct ib_mad_private_header header; + size_t mad_size; struct ib_grh grh; - union { - struct ib_mad mad; - struct ib_rmpp_mad rmpp_mad; - struct ib_smp smp; - } mad; + u8 mad[0]; } __attribute__ ((packed)); struct ib_rmpp_segment { |