On 08/20/2015 04:13 PM, Eric Dumazet wrote: > On Thu, 2015-08-20 at 11:15 +0300, Emmanuel Grumbach wrote: >> The segmentation is done completely in software. The >> driver creates several MPDUs out of a single large send. >> Each MPDU is a newly allocated SKB. >> A page is allocated to create the headers that need to be >> duplicated (SNAP / IP / TCP). The WiFi header is in the >> header of the newly created SKBs. >> >> type=feature >> >> Change-Id: I238ffa79cacc5bbdacdfbf3e9673c8d4f02b462a >> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> >> --- >> drivers/net/wireless/iwlwifi/mvm/tx.c | 513 +++++++++++++++++++++++++++++++--- >> 1 file changed, 481 insertions(+), 32 deletions(-) > > > Ouch again. > > This will be a NACK. Sorry. > > To be honest, I don't see why. No matter how you look at it, you need to add headers. And these headers need to sit on some memory that is not yet allocated. skb_gso_segment allocates new skb which is a memory allocation. I looked at ethernet/marvell/mvneta.c (which uses net/core/tso.c) and they pre-allocate DMA coherent memory for the additional headers they create. I can have pre-allocated pages if you want. -- 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