All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
To: "Hefty, Sean" <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
	"linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Sagi Grimberg <sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: Re: [RFC] split struct ib_send_wr
Date: Tue, 4 Aug 2015 09:29:24 -0700	[thread overview]
Message-ID: <20150804162924.GA4867@infradead.org> (raw)
In-Reply-To: <1828884A29C6694DAF28B7E6B8A82373A902272C-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>

On Tue, Aug 04, 2015 at 04:07:42PM +0000, Hefty, Sean wrote:
> This looks like a reasonable start.  It may help with feedback if you
> could just post the changes to ib_verbs.h.

Not sure it's all that useful, but here we go:


diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 0940051..666b571 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1100,55 +1100,96 @@ struct ib_send_wr {
 		__be32		imm_data;
 		u32		invalidate_rkey;
 	} ex;
-	union {
-		struct {
-			u64	remote_addr;
-			u32	rkey;
-		} rdma;
-		struct {
-			u64	remote_addr;
-			u64	compare_add;
-			u64	swap;
-			u64	compare_add_mask;
-			u64	swap_mask;
-			u32	rkey;
-		} atomic;
-		struct {
-			struct ib_ah *ah;
-			void   *header;
-			int     hlen;
-			int     mss;
-			u32	remote_qpn;
-			u32	remote_qkey;
-			u16	pkey_index; /* valid for GSI only */
-			u8	port_num;   /* valid for DR SMPs on switch only */
-		} ud;
-		struct {
-			u64				iova_start;
-			struct ib_fast_reg_page_list   *page_list;
-			unsigned int			page_shift;
-			unsigned int			page_list_len;
-			u32				length;
-			int				access_flags;
-			u32				rkey;
-		} fast_reg;
-		struct {
-			struct ib_mw            *mw;
-			/* The new rkey for the memory window. */
-			u32                      rkey;
-			struct ib_mw_bind_info   bind_info;
-		} bind_mw;
-		struct {
-			struct ib_sig_attrs    *sig_attrs;
-			struct ib_mr	       *sig_mr;
-			int			access_flags;
-			struct ib_sge	       *prot;
-		} sig_handover;
-	} wr;
 	u32			xrc_remote_srq_num;	/* XRC TGT QPs only */
 };
 
+struct ib_rdma_wr {
+	struct ib_send_wr	wr;
+	u64			remote_addr;
+	u32			rkey;
+};
+
+static inline struct ib_rdma_wr *rdma_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_rdma_wr, wr);
+}
+
+struct ib_atomic_wr {
+	struct ib_send_wr	wr;
+	u64			remote_addr;
+	u64			compare_add;
+	u64			swap;
+	u64			compare_add_mask;
+	u64			swap_mask;
+	u32			rkey;
+};
+
+static inline struct ib_atomic_wr *atomic_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_atomic_wr, wr);
+}
+
+struct ib_ud_wr {
+	struct ib_send_wr	wr;
+	struct ib_ah		*ah;
+	void			*header;
+	int			hlen;
+	int			mss;
+	u32			remote_qpn;
+	u32			remote_qkey;
+	u16			pkey_index; /* valid for GSI only */
+	u8			port_num;   /* valid for DR SMPs on switch only */
+};
+
+static inline struct ib_ud_wr *ud_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_ud_wr, wr);
+}
+
+struct ib_fast_reg_wr {
+	struct ib_send_wr	wr;
+	u64			iova_start;
+	struct ib_fast_reg_page_list *page_list;
+	unsigned int		page_shift;
+	unsigned int		page_list_len;
+	u32			length;
+	int			access_flags;
+	u32			rkey;
+};
+
+static inline struct ib_fast_reg_wr *fast_reg_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_fast_reg_wr, wr);
+}
+
+struct ib_bind_mw_wr {
+	struct ib_send_wr	wr;
+	struct ib_mw		*mw;
+	/* The new rkey for the memory window. */
+	u32			rkey;
+	struct ib_mw_bind_info	bind_info;
+};
+
+static inline struct ib_bind_mw_wr *bind_mw_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_bind_mw_wr, wr);
+}
+
+struct ib_sig_handover_wr {
+	struct ib_send_wr	wr;
+	struct ib_sig_attrs    *sig_attrs;
+	struct ib_mr	       *sig_mr;
+	int			access_flags;
+	struct ib_sge	       *prot;
+};
+
+static inline struct ib_sig_handover_wr *sig_handover_wr(struct ib_send_wr *wr)
+{
+	return container_of(wr, struct ib_sig_handover_wr, wr);
+}
+
 struct ib_recv_wr {
+	struct ib_send_wr	wr;
 	struct ib_recv_wr      *next;
 	u64			wr_id;
 	struct ib_sge	       *sg_list;
--
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

  parent reply	other threads:[~2015-08-04 16:29 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-04 14:34 [RFC] split struct ib_send_wr Christoph Hellwig
     [not found] ` <20150804143447.GA22172-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-08-04 16:07   ` Hefty, Sean
     [not found]     ` <1828884A29C6694DAF28B7E6B8A82373A902272C-P5GAC/sN6hkd3b2yrw5b5LfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2015-08-04 16:29       ` Christoph Hellwig [this message]
     [not found]         ` <20150804162924.GA4867-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-08-04 16:36           ` Bart Van Assche
     [not found]             ` <55C0EA21.2070609-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>
2015-08-04 16:41               ` Christoph Hellwig
2015-08-06  4:40   ` Jason Gunthorpe
     [not found]     ` <20150806044008.GB14153-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-08-06  9:47       ` Christoph Hellwig
2015-08-06 16:24   ` Christoph Hellwig
     [not found]     ` <20150806162438.GA27608-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-08-06 16:46       ` Sagi Grimberg
     [not found]         ` <55C38F74.7070200-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-08-07  7:05           ` Christoph Hellwig
2015-08-06 17:04       ` Steve Wise
     [not found]         ` <55C393A0.6000002-7bPotxP6k4+P2YhJcF5u+vpXobYPEAuW@public.gmane.org>
2015-08-06 17:31           ` Christoph Hellwig
     [not found]             ` <20150806173143.GA25497-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-08-06 17:44               ` Steve Wise
2015-08-06 17:58                 ` Chuck Lever
     [not found]                   ` <0B199DE1-B76A-44BD-91BC-E4285E439C70-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2015-08-07  6:36                     ` Christoph Hellwig
     [not found]                       ` <20150807063637.GE31458-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-08-07 14:17                         ` Chuck Lever
     [not found]                           ` <72E34077-7332-4F7D-8498-E67E7192CD2A-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2015-08-07 14:19                             ` Christoph Hellwig
     [not found]                               ` <20150807141929.GA12442-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-08-13  1:45                                 ` Doug Ledford
     [not found]                                   ` <55CBF6C1.8010803-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-08-13  2:24                                     ` Chuck Lever
     [not found]                                       ` <79BCB01F-AD69-4BEB-8F03-F5A52701211E-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>
2015-08-13  5:54                                         ` Christoph Hellwig
     [not found]                                           ` <20150813055450.GA19344-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-08-13 13:07                                             ` Doug Ledford
     [not found]                                               ` <55CC9682.1020203-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-08-13 16:04                                                 ` Christoph Hellwig
     [not found]                                                   ` <20150813160439.GA32690-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-08-13 16:46                                                     ` Chuck Lever
2015-08-13 17:22                                                     ` Jason Gunthorpe
     [not found]                                                       ` <20150813172234.GB13535-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2015-08-13 17:53                                                         ` Christoph Hellwig
     [not found]                                                           ` <20150813175354.GA4566-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2015-08-13 18:01                                                             ` Jason Gunthorpe
2015-08-17  7:20                                                     ` Christoph Hellwig
2015-08-07  6:36                 ` 'Christoph Hellwig'
2015-08-06 17:38       ` Parav Pandit
     [not found]         ` <CAG53R5VWR99OUmVTYWjvQiPKDuZ=ogbsEyfTJMcURjeohYyLmQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-08-07  6:35           ` Christoph Hellwig
2015-08-07 18:56       ` Steve Wise
2015-08-10 23:44       ` Bart Van Assche
2015-08-12 17:24       ` Sagi Grimberg
     [not found]         ` <55CB8161.8040702-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2015-08-13 15:38           ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150804162924.GA4867@infradead.org \
    --to=hch-wegcikhe2lqwvfeawa7xhq@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
    --cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.