Handle already discarded packets in discard_excess_packets (#22594) (#22634)

(cherry picked from commit 38b02bbcc0)

Co-authored-by: sakridge <sakridge@gmail.com>
This commit is contained in:
mergify[bot]
2022-01-22 01:10:31 +00:00
committed by GitHub
parent edf1954817
commit 9c01d90c70

View File

@ -194,6 +194,7 @@ impl SigVerifyStage {
.iter_mut() .iter_mut()
.rev() .rev()
.flat_map(|batch| batch.packets.iter_mut().rev()) .flat_map(|batch| batch.packets.iter_mut().rev())
.filter(|packet| !packet.meta.discard)
.map(|packet| (packet.meta.addr, packet)) .map(|packet| (packet.meta.addr, packet))
.into_group_map(); .into_group_map();
// Allocate max_packets evenly across addresses. // Allocate max_packets evenly across addresses.
@ -370,11 +371,14 @@ mod tests {
let mut batch = PacketBatch::default(); let mut batch = PacketBatch::default();
batch.packets.resize(10, Packet::default()); batch.packets.resize(10, Packet::default());
batch.packets[3].meta.addr = [1u16; 8]; batch.packets[3].meta.addr = [1u16; 8];
batch.packets[3].meta.discard = true;
batch.packets[4].meta.addr = [2u16; 8];
let mut batches = vec![batch]; let mut batches = vec![batch];
let max = 3; let max = 3;
SigVerifyStage::discard_excess_packets(&mut batches, max); SigVerifyStage::discard_excess_packets(&mut batches, max);
assert_eq!(count_non_discard(&batches), max); assert_eq!(count_non_discard(&batches), max);
assert!(!batches[0].packets[0].meta.discard); assert!(!batches[0].packets[0].meta.discard);
assert!(!batches[0].packets[3].meta.discard); assert!(batches[0].packets[3].meta.discard);
assert!(!batches[0].packets[4].meta.discard);
} }
} }