> > > static void bpf_iter_tcp_put_batch(struct bpf_tcp_iter_state *iter) > > > { > > > - while (iter->cur_sk < iter->end_sk) > > > - sock_gen_put(iter->batch[iter->cur_sk++]); > > > + unsigned int cur_sk = iter->cur_sk; > > > + > > > + while (cur_sk < iter->end_sk) > > > + sock_gen_put(iter->batch[cur_sk++]); > > > > Why is this chunk included in this patch ? > > This should be in patch 5 to keep cur_sk for find_cookie Without this, iter->cur_sk is mutated when iteration stops, and we lose our place. When iteration resumes and we call bpf_iter_tcp_batch the iter->cur_sk == iter->end_sk condition will always be true, so we will skip to the next bucket without seeking to the offset. Before, we relied on st_bucket_done to tell us if we had remaining items in the current bucket to process but now need to preserve iter->cur_sk through iterations to make the behavior equivalent to what we had before. Jordan