Michael S. Tsirkin wrote:
Given that the last segment has a different size, it seems cleaner
to just keep the segment size part of ib_mad_segment structure.

The last segment should provide any necessary padding, so that the resulting MAD is 256-bytes. Segments 2 through n should be the same size.

I dont htink its a good idea.
Recall that when you send segments starting from the second one,
you need the header from *mad. So this gets ugly very quickly.

This is true whether the first segment is in the rmpp_list or not. From a user's viewpoint, they can walk all segments using the list operations. Otherwise, they need to reference the first segment using *mad, then all other segments using a list. I do see the issue that the first segment requires an offset, whereas, others do not.

On the other hand, it makes sense to keep the single mad case
as simple as possible. So that's a good reason to have the rmpp list
include segments starting from the second one.

For single segment MADs, the rmpp_list can be ignored by the user. It's just that the internal code can be easier. We won't have to special case tracking the last segment acked as being either referenced by *mad or a pointer to a segment.

Hmm... okay, how about this idea? For single segment MADs, only *mad is used. For multiple segment MADs, *mad references the repeated header only. All data segments are in the rmpp_list.

Does anything outside of userspace send a multi-segment RMPP MAD? Is it likely that a kernel component would need to?

- Sean
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

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

Reply via email to