Tim,
I found out, after much painful testing, that ApacheBench will treat a response as an error if all of the responses don't match the same exact content length. This could be the reason why your upload tests were failing when testing some routers. It's not a guaranteed explanation, but...