enum ib_send_flags {
@@ -676,6 +683,19 @@ struct ib_send_wr {
                        u16     pkey_index; /* valid for GSI only */
                        u8      port_num;   /* valid for DR SMPs on switch only 
*/
                } ud;
+               struct {
+                       u64                             iova_start;
+                       struct ib_mr                    *mr;
+                       struct ib_fast_reg_page_list    *page_list;
+                       unsigned int                    page_shift;
+                       unsigned int                    page_list_len;
+                       unsigned int                    first_byte_offset;
+                       u32                             length;
+                       int                             access_flags;
+               } fast_reg;
+               struct {
+                       struct ib_mr    *mr;
+               } local_inv;
        } wr;
 };

Ok, while writing a test case for all this jazz, I see that passing the struct ib_mr pointer to both IB_WR_FAST_REGISTER_MR and IB_WR_INVALIDATE_MR is perhaps bad. Consider a chain of WRs: INVALIDATE_MR linked to a FAST_REGISTER_MR and passed to the provider via a single ib_post_send() call. You can't do that if you want to bump the key value between the invalidate and the fast_reg with the new key, which is probably what apps want to do. You are forced, under this proposed API, to post the two WRs separately and call ib_update_fast_reg_key() in between the ib_post_send() calls.

Perhaps we should just pass in a u32 rkey for both WRs instead of the mr pointer? Then the code could put the old rkey in the invalidate WR, and the newly updated rkey in the fast_reg WR and chain the two together and do a single post.

I think this is the way to go: change the fast_reg and local_inv unions to take a u32 rkey instead of a struct ib_mr *mr.

Thoughts?

Steve.
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to