# Re: \[PATCH 2/2\] iw\_cxgb4: add fast-path for small REG\_MR operations

- From: Leon Romanovsky \<hidden\>
- Date: 2016-09-18 14:22:47 
- List: netdev
- Page: https://ratatoskr.run/netdev/2016/09/11029287
- Thread: https://ratatoskr.run/netdev/2016/09/11029138/t.md

```text
On Fri, Sep 16, 2016 at 07:54:52AM -0700, Steve Wise wrote:
> 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
> to write.  This avoids FW having to do an async read of the TPTE blocking
> the SQ until the read completes.
>
> To know if the current MR state is INVALID or not, iw_cxgb4 must track the
> 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,
> and when RECV completions are processed that include a local invalidation.
>
> This optimization increases small IO IOPS for both iSER and NVMF.
>
> Signed-off-by: Steve Wise <redacted>
> ---

<...>

> +			      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"?
```

## Attachments

- [signature.asc](https://ratatoskr.run/netdev/2016/09/11029287/attachment/0) (application/pgp-signature, 819 bytes)
