Lines Matching refs:skb

33 static int lowpan_frag_reasm(struct lowpan_frag_queue *fq, struct sk_buff *skb,
85 struct sk_buff *skb, u8 frag_type)
91 /* inet_frag_queue_* functions use skb->cb; see struct ipfrag_skb_cb
100 offset = lowpan_802154_cb(skb)->d_offset << 3;
101 end = lowpan_802154_cb(skb)->d_size;
104 if (offset + skb->len == end) {
122 ldev = skb->dev;
124 skb->dev = NULL;
128 err = inet_frag_queue_insert(&fq->q, skb, offset, end);
132 fq->q.stamp = skb->tstamp;
133 fq->q.mono_delivery_time = skb->mono_delivery_time;
137 fq->q.meat += skb->len;
138 add_frag_mem_limit(fq->q.fqdir, skb->truesize);
143 unsigned long orefdst = skb->_skb_refdst;
145 skb->_skb_refdst = 0UL;
146 res = lowpan_frag_reasm(fq, skb, prev_tail, ldev);
147 skb->_skb_refdst = orefdst;
150 skb_dst_drop(skb);
154 kfree_skb(skb);
164 static int lowpan_frag_reasm(struct lowpan_frag_queue *fq, struct sk_buff *skb,
171 reasm_data = inet_frag_reasm_prepare(&fq->q, skb, prev_tail);
174 inet_frag_reasm_finish(&fq->q, skb, reasm_data, false);
176 skb->dev = ldev;
177 skb->tstamp = fq->q.stamp;
188 static int lowpan_frag_rx_handlers_result(struct sk_buff *skb,
206 static lowpan_rx_result lowpan_frag_rx_h_iphc(struct sk_buff *skb)
210 if (!lowpan_is_iphc(*skb_network_header(skb)))
213 ret = lowpan_iphc_decompress(skb);
220 static int lowpan_invoke_frag_rx_handlers(struct sk_buff *skb)
226 res = rxh(skb); \
236 return lowpan_frag_rx_handlers_result(skb, res);
243 static int lowpan_get_cb(struct sk_buff *skb, u8 frag_type,
250 fail = lowpan_fetch_skb(skb, &high, 1);
251 fail |= lowpan_fetch_skb(skb, &low, 1);
257 fail |= lowpan_fetch_skb(skb, &d_tag, 2);
261 fail |= lowpan_fetch_skb(skb, &cb->d_offset, 1);
263 skb_reset_network_header(skb);
268 fail |= !skb->len;
277 int lowpan_frag_rcv(struct sk_buff *skb, u8 frag_type)
280 struct net *net = dev_net(skb->dev);
281 struct lowpan_802154_cb *cb = lowpan_802154_cb(skb);
285 if (ieee802154_hdr_peek_addrs(skb, &hdr) < 0)
288 err = lowpan_get_cb(skb, frag_type, cb);
293 err = lowpan_invoke_frag_rx_handlers(skb);
308 ret = lowpan_frag_queue(fq, skb, frag_type);
316 kfree_skb(skb);