Lines Matching refs:st
2520 unsigned int to, struct skb_seq_state *st) in skb_prepare_seq_read() argument
2522 st->lower_offset = from; in skb_prepare_seq_read()
2523 st->upper_offset = to; in skb_prepare_seq_read()
2524 st->root_skb = st->cur_skb = skb; in skb_prepare_seq_read()
2525 st->frag_idx = st->stepped_offset = 0; in skb_prepare_seq_read()
2526 st->frag_data = NULL; in skb_prepare_seq_read()
2556 struct skb_seq_state *st) in skb_seq_read() argument
2558 unsigned int block_limit, abs_offset = consumed + st->lower_offset; in skb_seq_read()
2561 if (unlikely(abs_offset >= st->upper_offset)) in skb_seq_read()
2565 block_limit = skb_headlen(st->cur_skb) + st->stepped_offset; in skb_seq_read()
2567 if (abs_offset < block_limit && !st->frag_data) { in skb_seq_read()
2568 *data = st->cur_skb->data + (abs_offset - st->stepped_offset); in skb_seq_read()
2572 if (st->frag_idx == 0 && !st->frag_data) in skb_seq_read()
2573 st->stepped_offset += skb_headlen(st->cur_skb); in skb_seq_read()
2575 while (st->frag_idx < skb_shinfo(st->cur_skb)->nr_frags) { in skb_seq_read()
2576 frag = &skb_shinfo(st->cur_skb)->frags[st->frag_idx]; in skb_seq_read()
2577 block_limit = skb_frag_size(frag) + st->stepped_offset; in skb_seq_read()
2580 if (!st->frag_data) in skb_seq_read()
2581 st->frag_data = kmap_atomic(skb_frag_page(frag)); in skb_seq_read()
2583 *data = (u8 *) st->frag_data + frag->page_offset + in skb_seq_read()
2584 (abs_offset - st->stepped_offset); in skb_seq_read()
2589 if (st->frag_data) { in skb_seq_read()
2590 kunmap_atomic(st->frag_data); in skb_seq_read()
2591 st->frag_data = NULL; in skb_seq_read()
2594 st->frag_idx++; in skb_seq_read()
2595 st->stepped_offset += skb_frag_size(frag); in skb_seq_read()
2598 if (st->frag_data) { in skb_seq_read()
2599 kunmap_atomic(st->frag_data); in skb_seq_read()
2600 st->frag_data = NULL; in skb_seq_read()
2603 if (st->root_skb == st->cur_skb && skb_has_frag_list(st->root_skb)) { in skb_seq_read()
2604 st->cur_skb = skb_shinfo(st->root_skb)->frag_list; in skb_seq_read()
2605 st->frag_idx = 0; in skb_seq_read()
2607 } else if (st->cur_skb->next) { in skb_seq_read()
2608 st->cur_skb = st->cur_skb->next; in skb_seq_read()
2609 st->frag_idx = 0; in skb_seq_read()
2624 void skb_abort_seq_read(struct skb_seq_state *st) in skb_abort_seq_read() argument
2626 if (st->frag_data) in skb_abort_seq_read()
2627 kunmap_atomic(st->frag_data); in skb_abort_seq_read()