summaryrefslogtreecommitdiffstats
path: root/src/drivers/bitbash
diff options
context:
space:
mode:
authorMichael Brown2016-03-21 09:18:15 +0100
committerMichael Brown2016-03-21 09:18:15 +0100
commite84c917f39cc33894aeddbce727fe5430378fe7d (patch)
tree2bedfd10e807b668f629a5a7774f882b97cf9a3d /src/drivers/bitbash
parent[crypto] Allow trusted certificates to be stored in non-volatile options (diff)
downloadipxe-e84c917f39cc33894aeddbce727fe5430378fe7d.tar.gz
ipxe-e84c917f39cc33894aeddbce727fe5430378fe7d.tar.xz
ipxe-e84c917f39cc33894aeddbce727fe5430378fe7d.zip
[hermon] Allocate space for GRH on UD queue pairs
The Infiniband specification (volume 1, section 11.4.1.2 "Post Receive Request") notes that for UD QPs, the GRH will be placed in the first 40 bytes of the receive buffer if present. (If no GRH is present, which is normal, then the first 40 bytes of the receive buffer will be unused.) Mellanox hardware performs this placement automatically: other headers will be stripped (and their values returned via the CQE), but the first 40 bytes of the data buffer will be consumed by the (probably non-existent) GRH. This does not fit neatly into iPXE's internal abstraction, which expects the data buffer to represent just the data payload with the addresses from the GRH (if present) passed as additional parameters to ib_complete_recv(). The end result of this discrepancy is that attempts to receive full-sized 2048-byte IPoIB packets on Mellanox hardware will fail. Fix by allocating a separate ring buffer to hold the received GRHs. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/bitbash')
0 files changed, 0 insertions, 0 deletions