The Android Open Source Project | 2949f58 | 2009-03-03 19:30:46 -0800 | [diff] [blame] | 1 | BEGIN { |
| 2 | # we need to know (usual) packet size to convert byte numbers |
| 3 | # to packet numbers |
| 4 | if (packetsize <= 0) |
| 5 | packetsize = 512 |
| 6 | } |
| 7 | $5 !~ /[SR]/ { |
| 8 | # print out per-packet data in the form: |
| 9 | # <packet #> |
| 10 | # <start sequence #> |
| 11 | # <1st send time> |
| 12 | # <last send time> |
| 13 | # <1st ack time> |
| 14 | # <last ack time> |
| 15 | # <# sends> |
| 16 | # <# acks> |
| 17 | |
| 18 | n = split ($1,t,":") |
| 19 | tim = t[1]*3600 + t[2]*60 + t[3] |
| 20 | if ($6 != "ack") { |
| 21 | i = index($6,":") |
| 22 | strtSeq = substr($6,1,i-1) |
| 23 | id = 1.5 + (strtSeq - 1) / packetsize |
| 24 | id -= id % 1 |
| 25 | if (maxId < id) |
| 26 | maxId = id |
| 27 | if (firstSend[id] == 0) { |
| 28 | firstSend[id] = tim |
| 29 | seqNo[id] = strtSeq |
| 30 | } |
| 31 | lastSend[id] = tim |
| 32 | timesSent[id]++ |
| 33 | totalPackets++ |
| 34 | } else { |
| 35 | id = 1 + ($7 - 2) / packetsize |
| 36 | id -= id % 1 |
| 37 | timesAcked[id]++ |
| 38 | if (firstAck[id] == 0) |
| 39 | firstAck[id] = tim |
| 40 | lastAck[id] = tim |
| 41 | totalAcks++ |
| 42 | } |
| 43 | } |
| 44 | END { |
| 45 | print "# " maxId " chunks. " totalPackets " packets sent. " \ |
| 46 | totalAcks " acks." |
| 47 | # for packets that were implicitly acked, make the ack time |
| 48 | # be the ack time of next explicitly acked packet. |
| 49 | for (i = maxId-1; i > 0; --i) |
| 50 | while (i > 0 && firstAck[i] == 0) { |
| 51 | lastAck[i] = firstAck[i] = firstAck[i+1] |
| 52 | --i |
| 53 | } |
| 54 | tzero = firstSend[1] |
| 55 | for (i = 1; i <= maxId; i++) |
| 56 | printf "%d\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t%d\n",\ |
| 57 | i, seqNo[i], \ |
| 58 | firstSend[i] - tzero, lastSend[i] - tzero,\ |
| 59 | firstAck[i] - tzero, lastAck[i] - tzero,\ |
| 60 | timesSent[i], timesAcked[i] |
| 61 | } |