IB/mthca: Query SRQ srq_limit fixes
Fix endianness handling of srq_limit: it is big-endian in the context structure, so we need to swab it before returning it. Also add support for srq_limit query for Tavor (non-MemFree) HCAs. Signed-off-by: Eli Cohen <eli@mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
bfef73fa78
commit
fd02e8038e
|
@ -49,7 +49,8 @@ struct mthca_tavor_srq_context {
|
|||
__be32 state_pd;
|
||||
__be32 lkey;
|
||||
__be32 uar;
|
||||
__be32 wqe_cnt;
|
||||
__be16 limit_watermark;
|
||||
__be16 wqe_cnt;
|
||||
u32 reserved[2];
|
||||
};
|
||||
|
||||
|
@ -369,6 +370,7 @@ int mthca_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *srq_attr)
|
|||
struct mthca_srq *srq = to_msrq(ibsrq);
|
||||
struct mthca_mailbox *mailbox;
|
||||
struct mthca_arbel_srq_context *arbel_ctx;
|
||||
struct mthca_tavor_srq_context *tavor_ctx;
|
||||
u8 status;
|
||||
int err;
|
||||
|
||||
|
@ -382,9 +384,11 @@ int mthca_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *srq_attr)
|
|||
|
||||
if (mthca_is_memfree(dev)) {
|
||||
arbel_ctx = mailbox->buf;
|
||||
srq_attr->srq_limit = arbel_ctx->limit_watermark;
|
||||
} else
|
||||
srq_attr->srq_limit = 0;
|
||||
srq_attr->srq_limit = be16_to_cpu(arbel_ctx->limit_watermark);
|
||||
} else {
|
||||
tavor_ctx = mailbox->buf;
|
||||
srq_attr->srq_limit = be16_to_cpu(tavor_ctx->limit_watermark);
|
||||
}
|
||||
|
||||
srq_attr->max_wr = (mthca_is_memfree(dev)) ? srq->max - 1 : srq->max;
|
||||
srq_attr->max_sge = srq->max_gs;
|
||||
|
|
Loading…
Reference in New Issue