12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source ProjectBEGIN	{
22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	# we need to know (usual) packet size to convert byte numbers
32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	# to packet numbers
42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if (packetsize <= 0)
52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		packetsize = 512
62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project$5 !~ /[SR]/	{
82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	# print out per-packet data in the form:
92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	#  <packet #>
102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	#  <start sequence #>
112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	#  <1st send time>
122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	#  <last send time>
132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	#  <1st ack time>
142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	#  <last ack time>
152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	#  <# sends>
162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	#  <# acks>
172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project
182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	n = split ($1,t,":")
192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	tim = t[1]*3600 + t[2]*60 + t[3]
202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	if ($6 != "ack") {
212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		i = index($6,":")
222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		strtSeq = substr($6,1,i-1)
232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		id = 1.5 + (strtSeq - 1) / packetsize
242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		id -= id % 1
252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		if (maxId < id)
262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			maxId = id
272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		if (firstSend[id] == 0) {
282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			firstSend[id] = tim
292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			seqNo[id] = strtSeq
302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		}
312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		lastSend[id] = tim
322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		timesSent[id]++
332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		totalPackets++
342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	} else {
352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		id = 1 + ($7 - 2) / packetsize
362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		id -= id % 1
372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		timesAcked[id]++
382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		if (firstAck[id] == 0)
392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			firstAck[id] = tim
402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		lastAck[id] = tim
412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		totalAcks++
422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source ProjectEND	{
452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	print "# " maxId " chunks.  " totalPackets " packets sent.  " \
462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		totalAcks " acks."
472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	# for packets that were implicitly acked, make the ack time
482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	# be the ack time of next explicitly acked packet.
492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	for (i = maxId-1; i > 0; --i)
502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		while (i > 0 && firstAck[i] == 0) {
512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			lastAck[i] = firstAck[i] = firstAck[i+1]
522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			--i
532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		}
542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	tzero = firstSend[1]
552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	for (i = 1; i <= maxId; i++)
562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project		printf "%d\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\n",\
572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			i, seqNo[i], \
582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			firstSend[i] - tzero, lastSend[i] - tzero,\
592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			firstAck[i] - tzero, lastAck[i] - tzero,\
602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project			timesSent[i], timesAcked[i]
612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project	}
62