summaryrefslogtreecommitdiff
path: root/drivers/nfc/nfcmrvl/usb.c
diff options
context:
space:
mode:
authorVincent Cuissard <cuissard@marvell.com>2015-06-11 12:25:44 +0300
committerSamuel Ortiz <sameo@linux.intel.com>2015-06-12 00:24:31 +0300
commite1bf80c2a59895f12f596608b91856bab1c562bb (patch)
tree4df38467c97bb32f5e6b44a379be2710b6958d99 /drivers/nfc/nfcmrvl/usb.c
parentf1f1a7da2b3853bf55ee5aab47c8916454b65fa8 (diff)
downloadlinux-e1bf80c2a59895f12f596608b91856bab1c562bb.tar.xz
NFC: nfcmrvl: update nci recv frame API
Update internal nci recv frame API to use skbuff phy management to generic part of the driver. Signed-off-by: Vincent Cuissard <cuissard@marvell.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/nfc/nfcmrvl/usb.c')
-rw-r--r--drivers/nfc/nfcmrvl/usb.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/nfc/nfcmrvl/usb.c b/drivers/nfc/nfcmrvl/usb.c
index df534b90468b..f81861af5b25 100644
--- a/drivers/nfc/nfcmrvl/usb.c
+++ b/drivers/nfc/nfcmrvl/usb.c
@@ -69,18 +69,27 @@ static int nfcmrvl_inc_tx(struct nfcmrvl_usb_drv_data *drv_data)
static void nfcmrvl_bulk_complete(struct urb *urb)
{
struct nfcmrvl_usb_drv_data *drv_data = urb->context;
+ struct sk_buff *skb;
int err;
- dev_dbg(&drv_data->udev->dev, "urb %p status %d count %d",
+ dev_dbg(&drv_data->udev->dev, "urb %p status %d count %d\n",
urb, urb->status, urb->actual_length);
if (!test_bit(NFCMRVL_NCI_RUNNING, &drv_data->flags))
return;
if (!urb->status) {
- if (nfcmrvl_nci_recv_frame(drv_data->priv, urb->transfer_buffer,
- urb->actual_length) < 0)
- nfc_err(&drv_data->udev->dev, "corrupted Rx packet\n");
+ skb = nci_skb_alloc(drv_data->priv->ndev, urb->actual_length,
+ GFP_ATOMIC);
+ if (!skb) {
+ nfc_err(&drv_data->udev->dev, "failed to alloc mem\n");
+ } else {
+ memcpy(skb_put(skb, urb->actual_length),
+ urb->transfer_buffer, urb->actual_length);
+ if (nfcmrvl_nci_recv_frame(drv_data->priv, skb) < 0)
+ nfc_err(&drv_data->udev->dev,
+ "corrupted Rx packet\n");
+ }
}
if (!test_bit(NFCMRVL_USB_BULK_RUNNING, &drv_data->flags))