Don't cancel rebroadcast if we hear a rebroadcast with bad snr #7994
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, nodes that receive a packet with bad SNR are prioritized for retransmission, but they might not be the best transmitters, and their retransmissions might cancel out better clients. Therefore, I propose that we do not cancel a rebroadcast if we hear a bad SNR signal (for now, I chose worse than -4). Also, this change will help prevent bad routers from stopping retransmission, as a router with a bad transmitter will not be able to cancel the rebroadcast of a client. Based on preliminary simulator tests, this does create a higher delivery rate at the slight cost of more packets. The -4 number may need to be tuned in the future, and I am considering basing it on the current spreading factor.

Here is a scenario where this change could be useful (Also a testing scenario if anyone wants to try this change IRL)
In this scenario, the client can reach the recipient, but it will not retransmit the sender's packet because it heard another node go first. With my change, this will not happen, as the client will tell that the router has a bad SNR, either meaning it's far or it has a bad transmitter, so it rebroadcasts and delivers the packet to the recipient.
🤝 Attestations