Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3761)

Unified Diff: net/quic/quic_unacked_packet_map.cc

Issue 789103013: Land Recent QUIC Changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_unacked_packet_map.h ('k') | net/tools/quic/end_to_end_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_unacked_packet_map.cc
diff --git a/net/quic/quic_unacked_packet_map.cc b/net/quic/quic_unacked_packet_map.cc
index 1267707a160779b72a51afaaaa5053b25abfd381..76a31da8d4976a5ccfc819985576326589699705 100644
--- a/net/quic/quic_unacked_packet_map.cc
+++ b/net/quic/quic_unacked_packet_map.cc
@@ -247,21 +247,45 @@ void QuicUnackedPacketMap::IncreaseLargestObserved(
largest_observed_ = largest_observed;
}
+bool QuicUnackedPacketMap::IsPacketUsefulForMeasuringRtt(
+ QuicPacketSequenceNumber sequence_number,
+ const TransmissionInfo& info) const {
+ // Packet can be used for RTT measurement if it may yet be acked as the
+ // largest observed packet by the receiver.
+ return !info.is_unackable && sequence_number > largest_observed_;
+}
+
+bool QuicUnackedPacketMap::IsPacketUsefulForCongestionControl(
+ QuicPacketSequenceNumber sequence_number,
+ const TransmissionInfo& info) const {
+ // Packet contributes to congestion control if it is considered inflight.
+ return info.in_flight;
+}
+
+bool QuicUnackedPacketMap::IsPacketUsefulForRetransmittableData(
+ QuicPacketSequenceNumber sequence_number,
+ const TransmissionInfo& info) const {
+ // Packet may have retransmittable frames, or the data may have been
+ // retransmitted with a new sequence number.
+ return info.retransmittable_frames != nullptr ||
+ info.all_transmissions != nullptr;
+}
+
bool QuicUnackedPacketMap::IsPacketUseless(
QuicPacketSequenceNumber sequence_number,
const TransmissionInfo& info) const {
- return (info.is_unackable || sequence_number <= largest_observed_) &&
- !info.in_flight && info.retransmittable_frames == nullptr &&
- info.all_transmissions == nullptr;
+ return !IsPacketUsefulForMeasuringRtt(sequence_number, info) &&
+ !IsPacketUsefulForCongestionControl(sequence_number, info) &&
+ !IsPacketUsefulForRetransmittableData(sequence_number, info);
}
bool QuicUnackedPacketMap::IsPacketRemovable(
QuicPacketSequenceNumber sequence_number,
const TransmissionInfo& info) const {
- return (info.is_unackable || sequence_number <= largest_observed_ ||
+ return (!IsPacketUsefulForMeasuringRtt(sequence_number, info) ||
unacked_packets_.size() > kMaxTcpCongestionWindow) &&
- !info.in_flight && info.retransmittable_frames == nullptr &&
- info.all_transmissions == nullptr;
+ !IsPacketUsefulForCongestionControl(sequence_number, info) &&
+ !IsPacketUsefulForRetransmittableData(sequence_number, info);
}
bool QuicUnackedPacketMap::IsUnacked(
« no previous file with comments | « net/quic/quic_unacked_packet_map.h ('k') | net/tools/quic/end_to_end_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698