[ofw] change layout of ib_send_wr for winof 2.0

Sean Hefty sean.hefty at intel.com
Tue May 27 09:41:06 PDT 2008


>>> typedef struct _ib_send_wr
>>> {
>>> 	uint64_t					wr_id;
>>> 	struct _ib_send_wr*			p_next;
>>> 	ib_local_ds_t*				ds_array;
>>> 	uint32_t					num_ds;
>>> 	ib_send_opt_t				send_opt;
>>> 	ib_wr_type_t				wr_type;
>>> 	ib_net32_t					immediate_data;
>>>
>>> 	union
>>> 	{
>>> 		union _send_dgrm
>>> 		{
>>> 			struct _send_ud
>>> 			{
>>> 				ib_av_handle_t h_av;
>>> 				ib_net32_t		remote_qp;
>>> 				ib_net32_t		remote_qkey;
>>> 				void*			rsvd;
>>> 				uint16_t		pkey_index;
>>>
>>> 			}	ud;
>>>
>>> 			struct _send_rd
>>> 			{
>>> 				ib_net32_t		remote_qp;
>>> 				ib_net32_t		remote_qkey;
>>> 				ib_net32_t		eecn;
>>>
>>> 			}	rd;
>>>
>>> 			struct _send_raw_ether
>>> 			{
>>> 				ib_net16_t		dest_lid;
>>> 				uint8_t			path_bits;
>>> 				uint8_t			sl;
>>> 				uint8_t			max_static_rate;
>>> 				ib_net16_t		ether_type;
>>>
>>> 			}	raw_ether;
>>>
>>> 			struct _send_raw_ipv6
>>> 			{
>>> 				ib_net16_t		dest_lid;
>>> 				uint8_t			path_bits;
>>> 				uint8_t			sl;
>>> 				uint8_t			max_static_rate;
>>>
>>> 			}	raw_ipv6;
>>>
>>> 		}	dgrm;
>>>
>>> 		struct _send_remote_ops
>>> 		{
>>> 			uint64_t			vaddr;
>>> 			net32_t				rkey;
>>>
>>> 		}	remote_ops;
>>>
>>> 		struct _send_atomic_ops
>>> 		{
>>> 			uint64_t			vaddr;
>>> 			ib_net64_t			atomic1;
>>> 			ib_net64_t			atomic2;
>>> 			net32_t				rkey;
>>>
>>> 		}	atomic_ops;

This leaves a 32-bit pad at the end of the structure, so there's not much point
in keeping remote_ops separate from atomic_ops.  I merged them back together,
which avoids any ULP code changes.  The other layout changes were kept.

- Sean




More information about the ofw mailing list