Lines Matching refs:st
4321 unsigned int to, struct skb_seq_state *st) in skb_prepare_seq_read() argument
4323 st->lower_offset = from; in skb_prepare_seq_read()
4324 st->upper_offset = to; in skb_prepare_seq_read()
4325 st->root_skb = st->cur_skb = skb; in skb_prepare_seq_read()
4326 st->frag_idx = st->stepped_offset = 0; in skb_prepare_seq_read()
4327 st->frag_data = NULL; in skb_prepare_seq_read()
4328 st->frag_off = 0; in skb_prepare_seq_read()
4358 struct skb_seq_state *st) in skb_seq_read() argument
4360 unsigned int block_limit, abs_offset = consumed + st->lower_offset; in skb_seq_read()
4363 if (unlikely(abs_offset >= st->upper_offset)) { in skb_seq_read()
4364 if (st->frag_data) { in skb_seq_read()
4365 kunmap_atomic(st->frag_data); in skb_seq_read()
4366 st->frag_data = NULL; in skb_seq_read()
4372 block_limit = skb_headlen(st->cur_skb) + st->stepped_offset; in skb_seq_read()
4374 if (abs_offset < block_limit && !st->frag_data) { in skb_seq_read()
4375 *data = st->cur_skb->data + (abs_offset - st->stepped_offset); in skb_seq_read()
4379 if (!skb_frags_readable(st->cur_skb)) in skb_seq_read()
4382 if (st->frag_idx == 0 && !st->frag_data) in skb_seq_read()
4383 st->stepped_offset += skb_headlen(st->cur_skb); in skb_seq_read()
4385 while (st->frag_idx < skb_shinfo(st->cur_skb)->nr_frags) { in skb_seq_read()
4388 frag = &skb_shinfo(st->cur_skb)->frags[st->frag_idx]; in skb_seq_read()
4395 pg_idx = (pg_off + st->frag_off) >> PAGE_SHIFT; in skb_seq_read()
4396 pg_off = offset_in_page(pg_off + st->frag_off); in skb_seq_read()
4397 pg_sz = min_t(unsigned int, pg_sz - st->frag_off, in skb_seq_read()
4401 block_limit = pg_sz + st->stepped_offset; in skb_seq_read()
4403 if (!st->frag_data) in skb_seq_read()
4404 st->frag_data = kmap_atomic(skb_frag_page(frag) + pg_idx); in skb_seq_read()
4406 *data = (u8 *)st->frag_data + pg_off + in skb_seq_read()
4407 (abs_offset - st->stepped_offset); in skb_seq_read()
4412 if (st->frag_data) { in skb_seq_read()
4413 kunmap_atomic(st->frag_data); in skb_seq_read()
4414 st->frag_data = NULL; in skb_seq_read()
4417 st->stepped_offset += pg_sz; in skb_seq_read()
4418 st->frag_off += pg_sz; in skb_seq_read()
4419 if (st->frag_off == skb_frag_size(frag)) { in skb_seq_read()
4420 st->frag_off = 0; in skb_seq_read()
4421 st->frag_idx++; in skb_seq_read()
4425 if (st->frag_data) { in skb_seq_read()
4426 kunmap_atomic(st->frag_data); in skb_seq_read()
4427 st->frag_data = NULL; in skb_seq_read()
4430 if (st->root_skb == st->cur_skb && skb_has_frag_list(st->root_skb)) { in skb_seq_read()
4431 st->cur_skb = skb_shinfo(st->root_skb)->frag_list; in skb_seq_read()
4432 st->frag_idx = 0; in skb_seq_read()
4434 } else if (st->cur_skb->next) { in skb_seq_read()
4435 st->cur_skb = st->cur_skb->next; in skb_seq_read()
4436 st->frag_idx = 0; in skb_seq_read()
4451 void skb_abort_seq_read(struct skb_seq_state *st) in skb_abort_seq_read() argument
4453 if (st->frag_data) in skb_abort_seq_read()
4454 kunmap_atomic(st->frag_data); in skb_abort_seq_read()
4472 int skb_copy_seq_read(struct skb_seq_state *st, int offset, void *to, int len) in skb_copy_seq_read() argument
4478 sqlen = skb_seq_read(offset, &data, st); in skb_copy_seq_read()