On Fri, 2014-09-05 at 16:35 -0700, Prashant Sreedharan wrote: > fyi.. Initially the driver was doing a skb_copy() > (tigon3_dma_hwbug_workaround()) for LSO skb that met HW bug conditions > but users started reporting page allocation failures due to copying of > large LSO skbs. To avoid this Commit 4caab52eb102f1 (tg3: Prevent page > allocation failure during TSO workaround) changed the driver logic to do > skb_gso_segment() for LSO skbs that met the HW bug conditions. With > skb_linearize() we might end up again with memory allocation failures > for large LSO skbs though at a much less frequent level (ie when TX > queue is almost full).
Note that TCP stack has one skb collapse feature, currently limited in allocation of linear skbs fitting a whole page. Instead of this private helper (and pretty limited one btw), we could add a core function, that would build skbs with order-0 fragments. Instead of skb_linearize(), I guess many call sites could instead use this new helper. Because as you said, skb_linearize() of one 64KB GSO packet can ask order-5 allocations, and this generally does not work reliably. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/