* Mark the SACK_PASSED flag on all entries prior to rsm send wise. */
| 6801 | * Mark the SACK_PASSED flag on all entries prior to rsm send wise. |
| 6802 | */ |
| 6803 | static void |
| 6804 | rack_log_sack_passed(struct tcpcb *tp, |
| 6805 | struct tcp_rack *rack, struct rack_sendmap *rsm) |
| 6806 | { |
| 6807 | struct rack_sendmap *nrsm; |
| 6808 | |
| 6809 | nrsm = rsm; |
| 6810 | TAILQ_FOREACH_REVERSE_FROM(nrsm, &rack->r_ctl.rc_tmap, |
| 6811 | rack_head, r_tnext) { |
| 6812 | if (nrsm == rsm) { |
| 6813 | /* Skip orginal segment he is acked */ |
| 6814 | continue; |
| 6815 | } |
| 6816 | if (nrsm->r_flags & RACK_ACKED) { |
| 6817 | /* |
| 6818 | * Skip ack'd segments, though we |
| 6819 | * should not see these, since tmap |
| 6820 | * should not have ack'd segments. |
| 6821 | */ |
| 6822 | continue; |
| 6823 | } |
| 6824 | if (nrsm->r_flags & RACK_SACK_PASSED) { |
| 6825 | /* |
| 6826 | * We found one that is already marked |
| 6827 | * passed, we have been here before and |
| 6828 | * so all others below this are marked. |
| 6829 | */ |
| 6830 | break; |
| 6831 | } |
| 6832 | nrsm->r_flags |= RACK_SACK_PASSED; |
| 6833 | nrsm->r_flags &= ~RACK_WAS_SACKPASS; |
| 6834 | } |
| 6835 | } |
| 6836 | |
| 6837 | static void |
| 6838 | rack_need_set_test(struct tcpcb *tp, |
no outgoing calls
no test coverage detected