NFC: pn533: Fix in/out frame buffer allocation
authorWaldemar Rymarkiewicz <waldemar.rymarkiewicz@tieto.com>
Thu, 11 Oct 2012 12:03:58 +0000 (14:03 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Fri, 26 Oct 2012 16:26:51 +0000 (18:26 +0200)
Max frame size should be 264 bytes as per spec and not limited to
endpoint MaxPacketSize which is 64 in my case (acr122 reader).

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

index 97c440a..f563cac 100644 (file)
@@ -84,6 +84,10 @@ MODULE_DEVICE_TABLE(usb, pn533_table);
 #define PN533_LISTEN_TIME 2
 
 /* frame definitions */
+#define PN533_NORMAL_FRAME_MAX_LEN 262  /* 6   (PREAMBLE, SOF, LEN, LCS, TFI)
+                                          254 (DATA)
+                                          2   (DCS, postamble) */
+
 #define PN533_FRAME_TAIL_SIZE 2
 #define PN533_FRAME_SIZE(f) (sizeof(struct pn533_frame) + f->datalen + \
                                PN533_FRAME_TAIL_SIZE)
@@ -2373,9 +2377,9 @@ static int pn533_probe(struct usb_interface *interface,
                goto error;
        }
 
-       dev->in_frame = kmalloc(dev->in_maxlen, GFP_KERNEL);
+       dev->in_frame = kmalloc(PN533_NORMAL_FRAME_MAX_LEN, GFP_KERNEL);
        dev->in_urb = usb_alloc_urb(0, GFP_KERNEL);
-       dev->out_frame = kmalloc(dev->out_maxlen, GFP_KERNEL);
+       dev->out_frame = kmalloc(PN533_NORMAL_FRAME_MAX_LEN, GFP_KERNEL);
        dev->out_urb = usb_alloc_urb(0, GFP_KERNEL);
 
        if (!dev->in_frame || !dev->out_frame ||