Lines Matching refs:skb

48 bool btmrvl_check_evtpkt(struct btmrvl_private *priv, struct sk_buff *skb)
50 struct hci_event_hdr *hdr = (void *) skb->data;
56 ec = (void *) (skb->data + HCI_EVENT_HDR_SIZE);
67 kfree_skb(skb);
77 int btmrvl_process_event(struct btmrvl_private *priv, struct sk_buff *skb)
83 event = (struct btmrvl_event *) skb->data;
163 kfree_skb(skb);
172 struct sk_buff *skb;
175 skb = bt_skb_alloc(HCI_COMMAND_HDR_SIZE + len, GFP_ATOMIC);
176 if (skb == NULL) {
177 BT_ERR("No free skb");
181 hdr = (struct hci_command_hdr *)skb_put(skb, HCI_COMMAND_HDR_SIZE);
186 memcpy(skb_put(skb, len), param, len);
188 bt_cb(skb)->pkt_type = MRVL_VENDOR_PKT;
190 skb_queue_head(&priv->adapter->tx_queue, skb);
332 static int btmrvl_tx_pkt(struct btmrvl_private *priv, struct sk_buff *skb)
336 if (!skb || !skb->data)
339 if (!skb->len || ((skb->len + BTM_HEADER_LEN) > BTM_UPLD_SIZE)) {
340 BT_ERR("Tx Error: Bad skb length %d : %d",
341 skb->len, BTM_UPLD_SIZE);
345 if (skb_headroom(skb) < BTM_HEADER_LEN) {
346 struct sk_buff *tmp = skb;
348 skb = skb_realloc_headroom(skb, BTM_HEADER_LEN);
349 if (!skb) {
352 skb = tmp;
359 skb_push(skb, BTM_HEADER_LEN);
366 skb->data[0] = (skb->len & 0x0000ff);
367 skb->data[1] = (skb->len & 0x00ff00) >> 8;
368 skb->data[2] = (skb->len & 0xff0000) >> 16;
369 skb->data[3] = bt_cb(skb)->pkt_type;
372 ret = priv->hw_host_to_card(priv, skb->data, skb->len);
412 static int btmrvl_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
416 BT_DBG("type=%d, len=%d", skb->pkt_type, skb->len);
421 skb->data, skb->len);
425 switch (bt_cb(skb)->pkt_type) {
439 skb_queue_tail(&priv->adapter->tx_queue, skb);
544 struct sk_buff *skb;
552 skb = __hci_cmd_sync(hdev, BT_CMD_SET_BDADDR, sizeof(buf), buf,
554 if (IS_ERR(skb)) {
555 ret = PTR_ERR(skb);
560 kfree_skb(skb);
575 struct sk_buff *skb;
624 skb = skb_dequeue(&adapter->tx_queue);
625 if (skb) {
626 if (btmrvl_tx_pkt(priv, skb))
629 priv->btmrvl_dev.hcidev->stat.byte_tx += skb->len;
631 kfree_skb(skb);