The pauses/stalls during the kernel FTP are in the flash-empeg.c driver code. It can only write the kernel in chunks of 64KB, so it sits there collecting and reordering packets until it has a full chunk to write out, and then writes it. The pauses are the flash write time (and possibly a read-modify-write sequence for the tail end).

The first couple dozen writes of new kernels take only a couple of seconds, after that the flash slows down and takes longer, and longer, and longer, and.. after 10000-100000 writes just never finishes anymore.

Cheers