mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 19:56:18 +00:00
[TCP] MIB: Add counters for discarded SACK blocks
In DSACK case, some events are not extraordinary, such as packet duplication generated DSACK. They can arrive easily below snd_una when undo_marker is not set (TCP being in CA_Open), counting such DSACKs amoung SACK discards will likely just mislead if they occur in some scenario when there are other problems as well. Similarly, excessively delayed packets could cause "normal" DSACKs. Therefore, separate counters are allocated for DSACK events. Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5b3c98821a
commit
18f02545a9
3 changed files with 15 additions and 1 deletions
|
@ -231,6 +231,9 @@ enum
|
|||
LINUX_MIB_TCPABORTONLINGER, /* TCPAbortOnLinger */
|
||||
LINUX_MIB_TCPABORTFAILED, /* TCPAbortFailed */
|
||||
LINUX_MIB_TCPMEMORYPRESSURES, /* TCPMemoryPressures */
|
||||
LINUX_MIB_TCPSACKDISCARD, /* TCPSACKDiscard */
|
||||
LINUX_MIB_TCPDSACKIGNOREDOLD, /* TCPSACKIgnoredOld */
|
||||
LINUX_MIB_TCPDSACKIGNOREDNOUNDO, /* TCPSACKIgnoredNoUndo */
|
||||
__LINUX_MIB_MAX
|
||||
};
|
||||
|
||||
|
|
|
@ -244,6 +244,9 @@ static const struct snmp_mib snmp4_net_list[] = {
|
|||
SNMP_MIB_ITEM("TCPAbortOnLinger", LINUX_MIB_TCPABORTONLINGER),
|
||||
SNMP_MIB_ITEM("TCPAbortFailed", LINUX_MIB_TCPABORTFAILED),
|
||||
SNMP_MIB_ITEM("TCPMemoryPressures", LINUX_MIB_TCPMEMORYPRESSURES),
|
||||
SNMP_MIB_ITEM("TCPSACKDiscard", LINUX_MIB_TCPSACKDISCARD),
|
||||
SNMP_MIB_ITEM("TCPDSACKIgnoredOld", LINUX_MIB_TCPDSACKIGNOREDOLD),
|
||||
SNMP_MIB_ITEM("TCPDSACKIgnoredNoUndo", LINUX_MIB_TCPDSACKIGNOREDNOUNDO),
|
||||
SNMP_MIB_SENTINEL
|
||||
};
|
||||
|
||||
|
|
|
@ -1240,8 +1240,16 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_
|
|||
int fack_count;
|
||||
int dup_sack = (found_dup_sack && (i == first_sack_index));
|
||||
|
||||
if (!tcp_is_sackblock_valid(tp, dup_sack, start_seq, end_seq))
|
||||
if (!tcp_is_sackblock_valid(tp, dup_sack, start_seq, end_seq)) {
|
||||
if (dup_sack) {
|
||||
if (!tp->undo_marker)
|
||||
NET_INC_STATS_BH(LINUX_MIB_TCPDSACKIGNOREDNOUNDO);
|
||||
else
|
||||
NET_INC_STATS_BH(LINUX_MIB_TCPDSACKIGNOREDOLD);
|
||||
} else
|
||||
NET_INC_STATS_BH(LINUX_MIB_TCPSACKDISCARD);
|
||||
continue;
|
||||
}
|
||||
|
||||
skb = cached_skb;
|
||||
fack_count = cached_fack_count;
|
||||
|
|
Loading…
Reference in a new issue