> Sounds a good idea. I had a question on error handling. What happens if > the driver asynchronously returns an error for this WR (single WR > containing multiple skbs) ? Does it mean all the skbs failed to be sent ? > Requeuing all of them is a bad idea since it leads to infinitely doing the > same thing, so should every skb be free'd ? Isn't that harsh (if first skb > is bad and others are fine) and how do we avoid that ? Infact we don't > know which skb was transmitted and which failed. If we requeue skbs, > there will also be out-of-order skbs as the callback is asynchronous.
Each packet will still get a separate work request. However if one work request fails, then the QP will transition to the error state and all later work requests will fail too. But the completion handling doesn't change at all -- IPoIB already queues work requests with the hardware and then collects completions asynchronously. If we get a failed completion then we free the skb and bump tx errors -- there's nothing else really sensible to do. However errors on UD QPs can never really happen except for driver bugs or hardware failures, and for connected QPs (used in connected mode), errors probably mean that a connection broke, so dropping packets is quite sensible. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html