Lines Matching refs:st
3473 unsigned int to, struct skb_seq_state *st) in skb_prepare_seq_read() argument
3475 st->lower_offset = from; in skb_prepare_seq_read()
3476 st->upper_offset = to; in skb_prepare_seq_read()
3477 st->root_skb = st->cur_skb = skb; in skb_prepare_seq_read()
3478 st->frag_idx = st->stepped_offset = 0; in skb_prepare_seq_read()
3479 st->frag_data = NULL; in skb_prepare_seq_read()
3509 struct skb_seq_state *st) in skb_seq_read() argument
3511 unsigned int block_limit, abs_offset = consumed + st->lower_offset; in skb_seq_read()
3514 if (unlikely(abs_offset >= st->upper_offset)) { in skb_seq_read()
3515 if (st->frag_data) { in skb_seq_read()
3516 kunmap_atomic(st->frag_data); in skb_seq_read()
3517 st->frag_data = NULL; in skb_seq_read()
3523 block_limit = skb_headlen(st->cur_skb) + st->stepped_offset; in skb_seq_read()
3525 if (abs_offset < block_limit && !st->frag_data) { in skb_seq_read()
3526 *data = st->cur_skb->data + (abs_offset - st->stepped_offset); in skb_seq_read()
3530 if (st->frag_idx == 0 && !st->frag_data) in skb_seq_read()
3531 st->stepped_offset += skb_headlen(st->cur_skb); in skb_seq_read()
3533 while (st->frag_idx < skb_shinfo(st->cur_skb)->nr_frags) { in skb_seq_read()
3534 frag = &skb_shinfo(st->cur_skb)->frags[st->frag_idx]; in skb_seq_read()
3535 block_limit = skb_frag_size(frag) + st->stepped_offset; in skb_seq_read()
3538 if (!st->frag_data) in skb_seq_read()
3539 st->frag_data = kmap_atomic(skb_frag_page(frag)); in skb_seq_read()
3541 *data = (u8 *) st->frag_data + skb_frag_off(frag) + in skb_seq_read()
3542 (abs_offset - st->stepped_offset); in skb_seq_read()
3547 if (st->frag_data) { in skb_seq_read()
3548 kunmap_atomic(st->frag_data); in skb_seq_read()
3549 st->frag_data = NULL; in skb_seq_read()
3552 st->frag_idx++; in skb_seq_read()
3553 st->stepped_offset += skb_frag_size(frag); in skb_seq_read()
3556 if (st->frag_data) { in skb_seq_read()
3557 kunmap_atomic(st->frag_data); in skb_seq_read()
3558 st->frag_data = NULL; in skb_seq_read()
3561 if (st->root_skb == st->cur_skb && skb_has_frag_list(st->root_skb)) { in skb_seq_read()
3562 st->cur_skb = skb_shinfo(st->root_skb)->frag_list; in skb_seq_read()
3563 st->frag_idx = 0; in skb_seq_read()
3565 } else if (st->cur_skb->next) { in skb_seq_read()
3566 st->cur_skb = st->cur_skb->next; in skb_seq_read()
3567 st->frag_idx = 0; in skb_seq_read()
3582 void skb_abort_seq_read(struct skb_seq_state *st) in skb_abort_seq_read() argument
3584 if (st->frag_data) in skb_abort_seq_read()
3585 kunmap_atomic(st->frag_data); in skb_abort_seq_read()