mirror of
https://github.com/torvalds/linux.git
synced 2024-11-12 15:11:50 +00:00
IB/mthca: Fix PRM compliance problem in atomic-send completions
According to the Tavor and Arbel programmer's reference manuals, the number of bytes transferred is not provided in the byte_cnt field of the CQ entry for atomic operation completions. For atomic operations, the number of bytes transferred is always 8 (when the status is "success"), and this constant value should always be used by the driver in the ib_wc entry returned, rather than using the CQE. Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
0cefcf0bbc
commit
98714cb161
@ -54,6 +54,10 @@ enum {
|
||||
MTHCA_CQ_ENTRY_SIZE = 0x20
|
||||
};
|
||||
|
||||
enum {
|
||||
MTHCA_ATOMIC_BYTE_LEN = 8
|
||||
};
|
||||
|
||||
/*
|
||||
* Must be packed because start is 64 bits but only aligned to 32 bits.
|
||||
*/
|
||||
@ -599,11 +603,11 @@ static inline int mthca_poll_one(struct mthca_dev *dev,
|
||||
break;
|
||||
case MTHCA_OPCODE_ATOMIC_CS:
|
||||
entry->opcode = IB_WC_COMP_SWAP;
|
||||
entry->byte_len = be32_to_cpu(cqe->byte_cnt);
|
||||
entry->byte_len = MTHCA_ATOMIC_BYTE_LEN;
|
||||
break;
|
||||
case MTHCA_OPCODE_ATOMIC_FA:
|
||||
entry->opcode = IB_WC_FETCH_ADD;
|
||||
entry->byte_len = be32_to_cpu(cqe->byte_cnt);
|
||||
entry->byte_len = MTHCA_ATOMIC_BYTE_LEN;
|
||||
break;
|
||||
case MTHCA_OPCODE_BIND_MW:
|
||||
entry->opcode = IB_WC_BIND_MW;
|
||||
|
Loading…
Reference in New Issue
Block a user