On 08/22/2012 12:15 AM, Eric Dumazet wrote:
This particular commit is the start of a patches batch that ended in the generic TCP coalescing mechanism. It is known to have problem on drivers doing skb_clone() in their rx path. Current kernels should be ok, because coalescing doesnt happen if the destination skb is cloned (skb_cloned(to) in skb_try_coalesce()) For 3.4 kernel, I guess I need to backport this skb_cloned(to) check fo stable 3.4 kernel But these skb_clone() in various USB drivers should be killed for good, they really can kill the box because of skb->truesize lies.
Applying your patch to 3.4 does not fix the problem. In addition, all of the problems I noted happen with 3.6-rc2 - current kernels are not OK.
Of the drivers I reported, only r8712u in staging/rtl8712/rtl8712_recv.c has a direct call to skb_clone(). As its symptoms are different, the cloning is likely the source of the problems there. In addition, the problem is intermittent. The driver normally allocates a new buffer and copies to it, and the clone only occurs when that skb allocation fails. I will try to fix that. My skb skills are minimal and I will have to do some studying.
Thanks, Larry -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html