{
uint16_t ret;
- if (tbase->aux->rx_prev_idx + 1 == tbase->aux->rx_prev_count) {
- ret = tbase->aux->rx_pkt_prev[tbase->aux->rx_prev_idx](tbase, mbufs);
- } else {
- tbase->aux->rx_prev_idx++;
- ret = tbase->aux->rx_pkt_prev[tbase->aux->rx_prev_idx](tbase, mbufs);
- tbase->aux->rx_prev_idx--;
- }
+ tbase->aux->rx_prev_idx++;
+ ret = tbase->aux->rx_pkt_prev[tbase->aux->rx_prev_idx - 1](tbase, mbufs);
+ tbase->aux->rx_prev_idx--;
return ret;
}
return;
}
- for (int16_t i = tbase->aux->rx_prev_count; i >= 0; --i) {
- tbase->aux->rx_pkt_prev[i + 1] = tbase->aux->rx_pkt_prev[i];
+ for (int16_t i = tbase->aux->rx_prev_count; i > 0; --i) {
+ tbase->aux->rx_pkt_prev[i] = tbase->aux->rx_pkt_prev[i - 1];
}
tbase->aux->rx_pkt_prev[0] = tbase->rx_pkt;
tbase->rx_pkt = to_add;
int cur = 0;
int found = 0;
- if (tbase->aux->rx_prev_count == 1) {
+ if (unlikely(tbase->aux->rx_prev_count == 0)) {
+ return;
+ } else if (tbase->rx_pkt == to_del) {
tbase->rx_pkt = tbase->aux->rx_pkt_prev[0];
+ for (int16_t i = 0; i < tbase->aux->rx_prev_count - 1; ++i) {
+ tbase->aux->rx_pkt_prev[i] = tbase->aux->rx_pkt_prev[i + 1];
+ }
found = 1;
} else {
for (int16_t i = 0; i < tbase->aux->rx_prev_count; ++i) {