Lines Matching refs:frame
679 struct lowpan_fragment *frame; in lowpan_alloc_new_frame() local
681 frame = kzalloc(sizeof(struct lowpan_fragment), in lowpan_alloc_new_frame()
683 if (!frame) in lowpan_alloc_new_frame()
686 INIT_LIST_HEAD(&frame->list); in lowpan_alloc_new_frame()
688 frame->length = len; in lowpan_alloc_new_frame()
689 frame->tag = tag; in lowpan_alloc_new_frame()
692 frame->skb = netdev_alloc_skb_ip_align(skb->dev, frame->length + in lowpan_alloc_new_frame()
695 if (!frame->skb) in lowpan_alloc_new_frame()
698 frame->skb->priority = skb->priority; in lowpan_alloc_new_frame()
699 frame->skb->dev = skb->dev; in lowpan_alloc_new_frame()
702 skb_reserve(frame->skb, sizeof(struct ipv6hdr)); in lowpan_alloc_new_frame()
703 skb_put(frame->skb, frame->length); in lowpan_alloc_new_frame()
705 init_timer(&frame->timer); in lowpan_alloc_new_frame()
707 frame->timer.expires = jiffies + LOWPAN_FRAG_TIMEOUT; in lowpan_alloc_new_frame()
708 frame->timer.data = (unsigned long)frame; in lowpan_alloc_new_frame()
709 frame->timer.function = lowpan_fragment_timer_expired; in lowpan_alloc_new_frame()
711 add_timer(&frame->timer); in lowpan_alloc_new_frame()
713 list_add_tail(&frame->list, &lowpan_fragments); in lowpan_alloc_new_frame()
715 return frame; in lowpan_alloc_new_frame()
718 kfree(frame); in lowpan_alloc_new_frame()
745 struct lowpan_fragment *frame; in lowpan_process_data() local
776 list_for_each_entry(frame, &lowpan_fragments, list) in lowpan_process_data()
777 if (frame->tag == tag) { in lowpan_process_data()
786 frame = lowpan_alloc_new_frame(skb, len, tag); in lowpan_process_data()
787 if (!frame) in lowpan_process_data()
792 if (likely((offset * 8 + skb->len) <= frame->length)) in lowpan_process_data()
793 skb_copy_to_linear_data_offset(frame->skb, offset * 8, in lowpan_process_data()
798 frame->bytes_rcv += skb->len; in lowpan_process_data()
801 if ((frame->bytes_rcv == frame->length) && in lowpan_process_data()
802 frame->timer.expires > jiffies) { in lowpan_process_data()
804 del_timer_sync(&frame->timer); in lowpan_process_data()
805 list_del(&frame->list); in lowpan_process_data()
812 skb = frame->skb; in lowpan_process_data()
813 kfree(frame); in lowpan_process_data()
1408 struct lowpan_fragment *frame, *tframe; in lowpan_cleanup_module() local
1421 list_for_each_entry_safe(frame, tframe, &lowpan_fragments, list) { in lowpan_cleanup_module()
1422 del_timer_sync(&frame->timer); in lowpan_cleanup_module()
1423 list_del(&frame->list); in lowpan_cleanup_module()
1424 dev_kfree_skb(frame->skb); in lowpan_cleanup_module()
1425 kfree(frame); in lowpan_cleanup_module()