• Jack Morgenstein's avatar
    IB/umad: Add support for large RMPP transfers · f36e1793
    Jack Morgenstein authored
    Add support for sending and receiving large RMPP transfers.  The old
    code supports transfers only as large as a single contiguous kernel
    memory allocation.  This patch uses linked list of memory buffers when
    sending and receiving data to avoid needing contiguous pages for
    larger transfers.
    
      Receive side: copy the arriving MADs in chunks instead of coalescing
      to one large buffer in kernel space.
    
      Send side: split a multipacket MAD buffer to a list of segments,
      (multipacket_list) and send these using a gather list of size 2.
      Also, save pointer to last sent segment, and retrieve requested
      segments by walking list starting at last sent segment. Finally,
      save pointer to last-acked segment.  When retrying, retrieve
      segments for resending relative to this pointer.  When updating last
      ack, start at this pointer.
    Signed-off-by: default avatarJack Morgenstein <jackm@mellanox.co.il>
    Signed-off-by: default avatarSean Hefty <sean.hefty@intel.com>
    Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
    f36e1793
user_mad.c 27.1 KB