Lines Matching defs:iter
2790 static void bpf_iter_tcp_put_batch(struct bpf_tcp_iter_state *iter)
2792 while (iter->cur_sk < iter->end_sk)
2793 sock_gen_put(iter->batch[iter->cur_sk++]);
2796 static int bpf_iter_tcp_realloc_batch(struct bpf_tcp_iter_state *iter,
2806 bpf_iter_tcp_put_batch(iter);
2807 kvfree(iter->batch);
2808 iter->batch = new_batch;
2809 iter->max_sk = new_batch_sz;
2818 struct bpf_tcp_iter_state *iter = seq->private;
2819 struct tcp_iter_state *st = &iter->state;
2825 iter->batch[iter->end_sk++] = start_sk;
2830 if (iter->end_sk < iter->max_sk) {
2832 iter->batch[iter->end_sk++] = sk;
2846 struct bpf_tcp_iter_state *iter = seq->private;
2847 struct tcp_iter_state *st = &iter->state;
2853 iter->batch[iter->end_sk++] = start_sk;
2858 if (iter->end_sk < iter->max_sk) {
2860 iter->batch[iter->end_sk++] = sk;
2873 struct bpf_tcp_iter_state *iter = seq->private;
2874 struct tcp_iter_state *st = &iter->state;
2884 if (iter->st_bucket_done) {
2896 iter->cur_sk = 0;
2897 iter->end_sk = 0;
2898 iter->st_bucket_done = false;
2909 if (iter->end_sk == expected) {
2910 iter->st_bucket_done = true;
2914 if (!resized && !bpf_iter_tcp_realloc_batch(iter, expected * 3 / 2)) {
2924 /* bpf iter does not support lseek, so it always
2935 struct bpf_tcp_iter_state *iter = seq->private;
2936 struct tcp_iter_state *st = &iter->state;
2939 /* Whenever seq_next() is called, the iter->cur_sk is
2943 if (iter->cur_sk < iter->end_sk) {
2954 sock_gen_put(iter->batch[iter->cur_sk++]);
2957 if (iter->cur_sk < iter->end_sk)
2958 sk = iter->batch[iter->cur_sk];
2964 * bpf iter does not do lseek, so st->last_pos always equals to *pos.
3013 struct bpf_tcp_iter_state *iter = seq->private;
3024 if (iter->cur_sk < iter->end_sk) {
3025 bpf_iter_tcp_put_batch(iter);
3026 iter->st_bucket_done = false;
3320 struct bpf_tcp_iter_state *iter = priv_data;
3327 err = bpf_iter_tcp_realloc_batch(iter, INIT_BATCH_SZ);
3338 struct bpf_tcp_iter_state *iter = priv_data;
3341 kvfree(iter->batch);