@@ -50,9 +50,10 @@ void mca_btl_vader_poll_handle_frag (mca_btl_vader_hdr_t *hdr, mca_btl_base_endp
50
50
static inline void mca_btl_vader_fbox_set_header (mca_btl_vader_fbox_hdr_t * hdr , uint16_t tag ,
51
51
uint16_t seq , uint32_t size )
52
52
{
53
- mca_btl_vader_fbox_hdr_t tmp = {.data = {.tag = tag , .seq = seq , .size = size }};
54
- opal_atomic_wmb ();
53
+ mca_btl_vader_fbox_hdr_t tmp = {.data = {.tag = 0 , .seq = seq , .size = size }};
55
54
hdr -> ival = tmp .ival ;
55
+ opal_atomic_wmb ();
56
+ hdr -> data .tag = tag ;
56
57
}
57
58
58
59
/* attempt to reserve a contiguous segment from the remote ep */
@@ -138,9 +139,6 @@ static inline bool mca_btl_vader_fbox_sendi (mca_btl_base_endpoint_t *ep, unsign
138
139
memcpy (data + header_size , payload , payload_size );
139
140
}
140
141
141
- /* write out part of the header now. the tag will be written when the data is available */
142
- mca_btl_vader_fbox_set_header (MCA_BTL_VADER_FBOX_HDR (dst ), tag , ep -> fbox_out .seq ++ , data_size );
143
-
144
142
end += size ;
145
143
146
144
if (OPAL_UNLIKELY (fbox_size == end )) {
@@ -152,6 +150,9 @@ static inline bool mca_btl_vader_fbox_sendi (mca_btl_base_endpoint_t *ep, unsign
152
150
MCA_BTL_VADER_FBOX_HDR (ep -> fbox_out .buffer + end )-> ival = 0 ;
153
151
}
154
152
153
+ /* write out part of the header now. the tag will be written when the data is available */
154
+ mca_btl_vader_fbox_set_header (MCA_BTL_VADER_FBOX_HDR (dst ), tag , ep -> fbox_out .seq ++ , data_size );
155
+
155
156
/* align the buffer */
156
157
ep -> fbox_out .end = ((uint32_t ) hbs << 31 ) | end ;
157
158
opal_atomic_wmb ();
0 commit comments