Lines Matching refs:skb
104 static int h4_enqueue(struct hci_uart *hu, struct sk_buff *skb) in h4_enqueue() argument
108 BT_DBG("hu %p skb %p", hu, skb); in h4_enqueue()
111 memcpy(skb_push(skb, 1), &bt_cb(skb)->pkt_type, 1); in h4_enqueue()
112 skb_queue_tail(&h4->txq, skb); in h4_enqueue()
169 struct sk_buff *h4_recv_buf(struct hci_dev *hdev, struct sk_buff *skb, in h4_recv_buf() argument
176 if (!skb) { in h4_recv_buf()
181 skb = bt_skb_alloc((&pkts[i])->maxlen, in h4_recv_buf()
183 if (!skb) in h4_recv_buf()
186 bt_cb(skb)->pkt_type = (&pkts[i])->type; in h4_recv_buf()
187 bt_cb(skb)->expect = (&pkts[i])->hlen; in h4_recv_buf()
192 if (!skb) in h4_recv_buf()
199 len = min_t(uint, bt_cb(skb)->expect - skb->len, count); in h4_recv_buf()
200 memcpy(skb_put(skb, len), buffer, len); in h4_recv_buf()
206 if (skb->len < bt_cb(skb)->expect) in h4_recv_buf()
210 if (bt_cb(skb)->pkt_type == (&pkts[i])->type) in h4_recv_buf()
215 kfree_skb(skb); in h4_recv_buf()
219 if (skb->len == (&pkts[i])->hlen) { in h4_recv_buf()
225 (&pkts[i])->recv(hdev, skb); in h4_recv_buf()
226 skb = NULL; in h4_recv_buf()
230 dlen = skb->data[(&pkts[i])->loff]; in h4_recv_buf()
231 bt_cb(skb)->expect += dlen; in h4_recv_buf()
233 if (skb_tailroom(skb) < dlen) { in h4_recv_buf()
234 kfree_skb(skb); in h4_recv_buf()
240 dlen = get_unaligned_le16(skb->data + in h4_recv_buf()
242 bt_cb(skb)->expect += dlen; in h4_recv_buf()
244 if (skb_tailroom(skb) < dlen) { in h4_recv_buf()
245 kfree_skb(skb); in h4_recv_buf()
251 kfree_skb(skb); in h4_recv_buf()
256 (&pkts[i])->recv(hdev, skb); in h4_recv_buf()
257 skb = NULL; in h4_recv_buf()
261 return skb; in h4_recv_buf()