diff options
author | Michał Mirosław <mirq-linux@rere.qmqm.pl> | 2017-04-05 23:49:02 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2017-04-16 18:33:31 -0400 |
commit | 8b55d7581fc5dccc658b9a169879c46dda807d5e (patch) | |
tree | 72b9489752305c2e66ca68a0e34f9f1e654840f7 | |
parent | 49d22c70aaf07cd7e33346b247f5df3ddb072ee0 (diff) |
NFC: pn533: use constant off-stack buffer for sending acks
fix for WARN:
usb 3-2.4.1: NFC: Exchanging data failed (error 0x13)
llcp: nfc_llcp_recv: err -5
llcp: nfc_llcp_symm_timer: SYMM timeout
------------[ cut here ]------------
WARNING: CPU: 1 PID: 26397 at .../drivers/usb/core/hcd.c:1584 usb_hcd_map_urb_for_dma+0x370/0x550
transfer buffer not dma capable
[...]
Workqueue: events nfc_llcp_timeout_work [nfc]
Call Trace:
? dump_stack+0x46/0x5a
? __warn+0xb9/0xe0
? warn_slowpath_fmt+0x5a/0x80
? usb_hcd_map_urb_for_dma+0x370/0x550
? usb_hcd_submit_urb+0x2fb/0xa60
? dequeue_entity+0x3f2/0xc30
? pn533_usb_send_ack+0x5d/0x80 [pn533_usb]
? pn533_usb_abort_cmd+0x13/0x20 [pn533_usb]
? pn533_dep_link_down+0x32/0x70 [pn533]
? nfc_dep_link_down+0x87/0xd0 [nfc]
[...]
usb 3-2.4.1: NFC: Exchanging data failed (error 0x13)
llcp: nfc_llcp_recv: err -5
llcp: nfc_llcp_symm_timer: SYMM timeout
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
-rw-r--r-- | drivers/nfc/pn533/i2c.c | 2 | ||||
-rw-r--r-- | drivers/nfc/pn533/usb.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/drivers/nfc/pn533/i2c.c b/drivers/nfc/pn533/i2c.c index 2c2fb9cfe10a..8f60ce039b0d 100644 --- a/drivers/nfc/pn533/i2c.c +++ b/drivers/nfc/pn533/i2c.c | |||
@@ -51,7 +51,7 @@ static int pn533_i2c_send_ack(struct pn533 *dev, gfp_t flags) | |||
51 | { | 51 | { |
52 | struct pn533_i2c_phy *phy = dev->phy; | 52 | struct pn533_i2c_phy *phy = dev->phy; |
53 | struct i2c_client *client = phy->i2c_dev; | 53 | struct i2c_client *client = phy->i2c_dev; |
54 | u8 ack[6] = {0x00, 0x00, 0xff, 0x00, 0xff, 0x00}; | 54 | static const u8 ack[6] = {0x00, 0x00, 0xff, 0x00, 0xff, 0x00}; |
55 | /* spec 6.2.1.3: Preamble, SoPC (2), ACK Code (2), Postamble */ | 55 | /* spec 6.2.1.3: Preamble, SoPC (2), ACK Code (2), Postamble */ |
56 | int rc; | 56 | int rc; |
57 | 57 | ||
diff --git a/drivers/nfc/pn533/usb.c b/drivers/nfc/pn533/usb.c index 000159ea9c5f..8ed203ea21ea 100644 --- a/drivers/nfc/pn533/usb.c +++ b/drivers/nfc/pn533/usb.c | |||
@@ -148,11 +148,11 @@ static int pn533_submit_urb_for_ack(struct pn533_usb_phy *phy, gfp_t flags) | |||
148 | static int pn533_usb_send_ack(struct pn533 *dev, gfp_t flags) | 148 | static int pn533_usb_send_ack(struct pn533 *dev, gfp_t flags) |
149 | { | 149 | { |
150 | struct pn533_usb_phy *phy = dev->phy; | 150 | struct pn533_usb_phy *phy = dev->phy; |
151 | u8 ack[6] = {0x00, 0x00, 0xff, 0x00, 0xff, 0x00}; | 151 | static const u8 ack[6] = {0x00, 0x00, 0xff, 0x00, 0xff, 0x00}; |
152 | /* spec 7.1.1.3: Preamble, SoPC (2), ACK Code (2), Postamble */ | 152 | /* spec 7.1.1.3: Preamble, SoPC (2), ACK Code (2), Postamble */ |
153 | int rc; | 153 | int rc; |
154 | 154 | ||
155 | phy->out_urb->transfer_buffer = ack; | 155 | phy->out_urb->transfer_buffer = (u8 *)ack; |
156 | phy->out_urb->transfer_buffer_length = sizeof(ack); | 156 | phy->out_urb->transfer_buffer_length = sizeof(ack); |
157 | rc = usb_submit_urb(phy->out_urb, flags); | 157 | rc = usb_submit_urb(phy->out_urb, flags); |
158 | 158 | ||