Hi, I've came across an another problem while sorting out the one fixed by my patch "ixgbe: fix checking for tx_free_thresh". Even when the threshold check is correct it can happen that the application run out of free buffers, and the only solution would be to get back the ones from the TX rings. But if their number is still less than tx_free_thresh (per queue), currently there is no interface to achieve that. The bad way is to set tx_free_thresh to 1, but it has a very bad performance penalty. The easy way is just to increase your buffer pool's size to make sure that doesn't happen. But there is no bulletproof way to calculate such a number, and based on my experience it's hard to debug if it causes problem. I'm thinking about a foolproof way, which is exposing functions like ixgbe_tx_free_bufs from the PMDs, so the application can call it as a last resort to avoid deadlock. Instead it causes probably worse performance, but at least fools like me will easily see that from e.g. oprofile. How does that sound? Or is there a better way to solve this problem?
Regards, Zoli