NFC: pn533: Use skb in __pn533_send_cmd_frame_asyn
authorWaldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com>
Mon, 10 Dec 2012 13:42:57 +0000 (14:42 +0100)
committerSamuel Ortiz <sameo@linux.intel.com>
Wed, 9 Jan 2013 23:51:44 +0000 (00:51 +0100)
__pn533_send_cmd_frame_async() should be frame type independent. So, don't
use pn533_frame type params and instead use skb for req and resp pointers.

Signed-off-by: Waldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/nfc/pn533.c

index 5bc0c7c..cfbfc11 100644 (file)
@@ -606,28 +606,27 @@ static int pn533_send_ack(struct pn533 *dev, gfp_t flags)
        return rc;
 }
 
-static int __pn533_send_cmd_frame_async(struct pn533 *dev,
-                                       struct pn533_frame *out_frame,
-                                       struct pn533_frame *in_frame,
-                                       int in_frame_len,
+static int __pn533_send_frame_async(struct pn533 *dev,
+                                       struct sk_buff *out,
+                                       struct sk_buff *in,
+                                       int in_len,
                                        pn533_cmd_complete_t cmd_complete,
                                        void *arg)
 {
        int rc;
 
-       dev->cmd = PN533_FRAME_CMD(out_frame);
+       dev->cmd = PN533_FRAME_CMD(((struct pn533_frame *)out->data));
        dev->cmd_complete = cmd_complete;
        dev->cmd_complete_arg = arg;
 
-       dev->out_urb->transfer_buffer = out_frame;
-       dev->out_urb->transfer_buffer_length =
-                               PN533_FRAME_SIZE(out_frame);
+       dev->out_urb->transfer_buffer = out->data;
+       dev->out_urb->transfer_buffer_length = out->len;
 
-       dev->in_urb->transfer_buffer = in_frame;
-       dev->in_urb->transfer_buffer_length = in_frame_len;
+       dev->in_urb->transfer_buffer = in->data;
+       dev->in_urb->transfer_buffer_length = in_len;
 
        print_hex_dump(KERN_DEBUG, "PN533 TX: ", DUMP_PREFIX_NONE, 16, 1,
-                      out_frame, PN533_FRAME_SIZE(out_frame), false);
+                      out->data, out->len, false);
 
        rc = usb_submit_urb(dev->out_urb, GFP_KERNEL);
        if (rc)
@@ -725,11 +724,8 @@ static int __pn533_send_async(struct pn533 *dev, u8 cmd_code,
        mutex_lock(&dev->cmd_lock);
 
        if (!dev->cmd_pending) {
-               rc = __pn533_send_cmd_frame_async(dev,
-                                                 (struct pn533_frame *)req->data,
-                                                 (struct pn533_frame *)resp->data,
-                                                 resp_len, pn533_send_async_complete,
-                                                 arg);
+               rc = __pn533_send_frame_async(dev, req, resp, resp_len,
+                                             pn533_send_async_complete, arg);
                if (rc)
                        goto error;
 
@@ -844,10 +840,8 @@ static int pn533_send_cmd_direct_async(struct pn533 *dev, u8 cmd_code,
 
        pn533_build_cmd_frame(cmd_code, req);
 
-       rc = __pn533_send_cmd_frame_async(dev, (struct pn533_frame *)req->data,
-                                         (struct pn533_frame *)resp->data,
-                                         resp_len, pn533_send_async_complete,
-                                         arg);
+       rc = __pn533_send_frame_async(dev, req, resp, resp_len,
+                                     pn533_send_async_complete, arg);
        if (rc < 0) {
                dev_kfree_skb(resp);
                kfree(arg);
@@ -875,12 +869,10 @@ static void pn533_wq_cmd(struct work_struct *work)
 
        mutex_unlock(&dev->cmd_lock);
 
-       __pn533_send_cmd_frame_async(dev,
-                                    (struct pn533_frame *)cmd->req->data,
-                                    (struct pn533_frame *)cmd->resp->data,
-                                    PN533_NORMAL_FRAME_MAX_LEN,
-                                    pn533_send_async_complete,
-                                    cmd->arg);
+       __pn533_send_frame_async(dev, cmd->req, cmd->resp,
+                                PN533_NORMAL_FRAME_MAX_LEN,
+                                pn533_send_async_complete,
+                                cmd->arg);
 
        kfree(cmd);
 }