Lines Matching refs:q
62 static unsigned int lowpan_hashfn(const struct inet_frag_queue *q) in lowpan_hashfn() argument
66 fq = container_of(q, struct lowpan_frag_queue, q); in lowpan_hashfn()
70 static bool lowpan_frag_match(const struct inet_frag_queue *q, const void *a) in lowpan_frag_match() argument
75 fq = container_of(q, struct lowpan_frag_queue, q); in lowpan_frag_match()
81 static void lowpan_frag_init(struct inet_frag_queue *q, const void *a) in lowpan_frag_init() argument
86 fq = container_of(q, struct lowpan_frag_queue, q); in lowpan_frag_init()
99 fq = container_of((struct inet_frag_queue *)data, struct frag_queue, q); in lowpan_frag_expire()
100 net = container_of(fq->q.net, struct net, ieee802154_lowpan.frags); in lowpan_frag_expire()
102 spin_lock(&fq->q.lock); in lowpan_frag_expire()
104 if (fq->q.flags & INET_FRAG_COMPLETE) in lowpan_frag_expire()
107 inet_frag_kill(&fq->q, &lowpan_frags); in lowpan_frag_expire()
109 spin_unlock(&fq->q.lock); in lowpan_frag_expire()
110 inet_frag_put(&fq->q, &lowpan_frags); in lowpan_frag_expire()
118 struct inet_frag_queue *q; in fq_find() local
131 q = inet_frag_find(&ieee802154_lowpan->frags, in fq_find()
133 if (IS_ERR_OR_NULL(q)) { in fq_find()
134 inet_frag_maybe_warn_overflow(q, pr_fmt()); in fq_find()
137 return container_of(q, struct lowpan_frag_queue, q); in fq_find()
147 if (fq->q.flags & INET_FRAG_COMPLETE) in lowpan_frag_queue()
158 if (end < fq->q.len || in lowpan_frag_queue()
159 ((fq->q.flags & INET_FRAG_LAST_IN) && end != fq->q.len)) in lowpan_frag_queue()
161 fq->q.flags |= INET_FRAG_LAST_IN; in lowpan_frag_queue()
162 fq->q.len = end; in lowpan_frag_queue()
164 if (end > fq->q.len) { in lowpan_frag_queue()
166 if (fq->q.flags & INET_FRAG_LAST_IN) in lowpan_frag_queue()
168 fq->q.len = end; in lowpan_frag_queue()
176 prev = fq->q.fragments_tail; in lowpan_frag_queue()
182 for (next = fq->q.fragments; next != NULL; next = next->next) { in lowpan_frag_queue()
192 fq->q.fragments_tail = skb; in lowpan_frag_queue()
196 fq->q.fragments = skb; in lowpan_frag_queue()
202 fq->q.stamp = skb->tstamp; in lowpan_frag_queue()
205 fq->q.meat += lowpan_uncompress_size(skb, NULL); in lowpan_frag_queue()
206 fq->q.flags |= INET_FRAG_FIRST_IN; in lowpan_frag_queue()
208 fq->q.meat += skb->len; in lowpan_frag_queue()
210 add_frag_mem_limit(&fq->q, skb->truesize); in lowpan_frag_queue()
212 if (fq->q.flags == (INET_FRAG_FIRST_IN | INET_FRAG_LAST_IN) && in lowpan_frag_queue()
213 fq->q.meat == fq->q.len) { in lowpan_frag_queue()
240 struct sk_buff *fp, *head = fq->q.fragments; in lowpan_frag_reasm()
243 inet_frag_kill(&fq->q, &lowpan_frags); in lowpan_frag_reasm()
255 fq->q.fragments_tail = fp; in lowpan_frag_reasm()
258 skb_morph(head, fq->q.fragments); in lowpan_frag_reasm()
259 head->next = fq->q.fragments->next; in lowpan_frag_reasm()
261 consume_skb(fq->q.fragments); in lowpan_frag_reasm()
262 fq->q.fragments = head; in lowpan_frag_reasm()
290 add_frag_mem_limit(&fq->q, clone->truesize); in lowpan_frag_reasm()
313 sub_frag_mem_limit(&fq->q, sum_truesize); in lowpan_frag_reasm()
317 head->tstamp = fq->q.stamp; in lowpan_frag_reasm()
319 fq->q.fragments = NULL; in lowpan_frag_reasm()
320 fq->q.fragments_tail = NULL; in lowpan_frag_reasm()
378 spin_lock(&fq->q.lock); in lowpan_frag_rcv()
380 spin_unlock(&fq->q.lock); in lowpan_frag_rcv()
382 inet_frag_put(&fq->q, &lowpan_frags); in lowpan_frag_rcv()