RE: [PATCH 2/2] iw_cxgb4: add fast-path for small REG_MR operations

2 messages, 2 authors, 2016-09-19 · open the first message on its own page

RE: [PATCH 2/2] iw_cxgb4: add fast-path for small REG_MR operations

From: Steve Wise <hidden>
Date: 2016-09-19 00:40:29

On Fri, Sep 16, 2016 at 07:54:52AM -0700, Steve Wise wrote:
quoted
When processing a REG_MR work request, if fw supports the
FW_RI_NSMR_TPTE_WR work request, and if the page list for this
registration is <= 2 pages, and the current state of the mr is INVALID,
then use FW_RI_NSMR_TPTE_WR to pass down a fully populated TPTE for
FW
quoted
to write.  This avoids FW having to do an async read of the TPTE
blocking
quoted
the SQ until the read completes.

To know if the current MR state is INVALID or not, iw_cxgb4 must track
the
quoted
state of each fastreg MR.  The c4iw_mr struct state is updated as REG_MR
and LOCAL_INV WRs are posted and completed, when a reg_mr is
destroyed,
quoted
and when RECV completions are processed that include a local
invalidation.
quoted
This optimization increases small IO IOPS for both iSER and NVMF.

Signed-off-by: Steve Wise <redacted>
---
<...>
quoted
+			      struct ib_reg_wr *wr, struct c4iw_mr *mhp,
+			      u8 *len16)
+{
+	__be64 *p = (__be64 *)fr->pbl;
+
+	fr->r2 = cpu_to_be32(0);
Is there any difference between the line above and "fr->r2 = 0"?
It makes sparse happy, IIRC...



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Re: [PATCH 2/2] iw_cxgb4: add fast-path for small REG_MR operations

From: Leon Romanovsky <hidden>
Date: 2016-09-19 03:28:50

On Sun, Sep 18, 2016 at 07:40:29PM -0500, Steve Wise wrote:
quoted
On Fri, Sep 16, 2016 at 07:54:52AM -0700, Steve Wise wrote:
quoted
When processing a REG_MR work request, if fw supports the
FW_RI_NSMR_TPTE_WR work request, and if the page list for this
registration is <= 2 pages, and the current state of the mr is INVALID,
then use FW_RI_NSMR_TPTE_WR to pass down a fully populated TPTE for
FW
quoted
to write.  This avoids FW having to do an async read of the TPTE
blocking
quoted
quoted
the SQ until the read completes.

To know if the current MR state is INVALID or not, iw_cxgb4 must track
the
quoted
quoted
state of each fastreg MR.  The c4iw_mr struct state is updated as REG_MR
and LOCAL_INV WRs are posted and completed, when a reg_mr is
destroyed,
quoted
and when RECV completions are processed that include a local
invalidation.
quoted
quoted
This optimization increases small IO IOPS for both iSER and NVMF.

Signed-off-by: Steve Wise <redacted>
---
<...>
quoted
+			      struct ib_reg_wr *wr, struct c4iw_mr *mhp,
+			      u8 *len16)
+{
+	__be64 *p = (__be64 *)fr->pbl;
+
+	fr->r2 = cpu_to_be32(0);
Is there any difference between the line above and "fr->r2 = 0"?
It makes sparse happy, IIRC...
Strange, but ok :)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help