Commit 5c80992e authored by A Sun's avatar A Sun Committed by Mauro Carvalho Chehab

[media] mceusb: fix inaccurate debug buffer dumps, and misleading debug messages

Some dev_dbg messages are misleading. Some dev_dbg messages have
inconsistent formatting. mceusb_dev_printdata() prints incorrect range
of bytes (0 to len) in buffer which the driver will actually process next.
Signed-off-by: default avatarA Sun <as1033x@comcast.net>
Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 8e175b22
...@@ -47,7 +47,6 @@ ...@@ -47,7 +47,6 @@
"device driver" "device driver"
#define DRIVER_NAME "mceusb" #define DRIVER_NAME "mceusb"
#define USB_BUFLEN 32 /* USB reception buffer length */
#define USB_CTRL_MSG_SZ 2 /* Size of usb ctrl msg on gen1 hw */ #define USB_CTRL_MSG_SZ 2 /* Size of usb ctrl msg on gen1 hw */
#define MCE_G1_INIT_MSGS 40 /* Init messages on gen1 hw to throw out */ #define MCE_G1_INIT_MSGS 40 /* Init messages on gen1 hw to throw out */
...@@ -527,7 +526,7 @@ static int mceusb_cmd_datasize(u8 cmd, u8 subcmd) ...@@ -527,7 +526,7 @@ static int mceusb_cmd_datasize(u8 cmd, u8 subcmd)
} }
static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf, static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf,
int offset, int len, bool out) int buf_len, int offset, int len, bool out)
{ {
#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG) #if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)
char *inout; char *inout;
...@@ -544,7 +543,8 @@ static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf, ...@@ -544,7 +543,8 @@ static void mceusb_dev_printdata(struct mceusb_dev *ir, char *buf,
return; return;
dev_dbg(dev, "%cx data: %*ph (length=%d)", dev_dbg(dev, "%cx data: %*ph (length=%d)",
(out ? 't' : 'r'), min(len, USB_BUFLEN), buf, len); (out ? 't' : 'r'),
min(len, buf_len - offset), buf + offset, len);
inout = out ? "Request" : "Got"; inout = out ? "Request" : "Got";
...@@ -701,7 +701,8 @@ static void mce_async_callback(struct urb *urb) ...@@ -701,7 +701,8 @@ static void mce_async_callback(struct urb *urb)
case 0: case 0:
len = urb->actual_length; len = urb->actual_length;
mceusb_dev_printdata(ir, urb->transfer_buffer, 0, len, true); mceusb_dev_printdata(ir, urb->transfer_buffer, len,
0, len, true);
break; break;
case -ECONNRESET: case -ECONNRESET:
...@@ -721,7 +722,7 @@ static void mce_async_callback(struct urb *urb) ...@@ -721,7 +722,7 @@ static void mce_async_callback(struct urb *urb)
usb_free_urb(urb); usb_free_urb(urb);
} }
/* request incoming or send outgoing usb packet - used to initialize remote */ /* request outgoing (send) usb packet - used to initialize remote */
static void mce_request_packet(struct mceusb_dev *ir, unsigned char *data, static void mce_request_packet(struct mceusb_dev *ir, unsigned char *data,
int size) int size)
{ {
...@@ -732,7 +733,7 @@ static void mce_request_packet(struct mceusb_dev *ir, unsigned char *data, ...@@ -732,7 +733,7 @@ static void mce_request_packet(struct mceusb_dev *ir, unsigned char *data,
async_urb = usb_alloc_urb(0, GFP_KERNEL); async_urb = usb_alloc_urb(0, GFP_KERNEL);
if (unlikely(!async_urb)) { if (unlikely(!async_urb)) {
dev_err(dev, "Error, couldn't allocate urb!\n"); dev_err(dev, "Error, couldn't allocate urb!");
return; return;
} }
...@@ -758,17 +759,17 @@ static void mce_request_packet(struct mceusb_dev *ir, unsigned char *data, ...@@ -758,17 +759,17 @@ static void mce_request_packet(struct mceusb_dev *ir, unsigned char *data,
} }
memcpy(async_buf, data, size); memcpy(async_buf, data, size);
dev_dbg(dev, "receive request called (size=%#x)", size); dev_dbg(dev, "send request called (size=%#x)", size);
async_urb->transfer_buffer_length = size; async_urb->transfer_buffer_length = size;
async_urb->dev = ir->usbdev; async_urb->dev = ir->usbdev;
res = usb_submit_urb(async_urb, GFP_ATOMIC); res = usb_submit_urb(async_urb, GFP_ATOMIC);
if (res) { if (res) {
dev_err(dev, "receive request FAILED! (res=%d)", res); dev_err(dev, "send request FAILED! (res=%d)", res);
return; return;
} }
dev_dbg(dev, "receive request complete (res=%d)", res); dev_dbg(dev, "send request complete (res=%d)", res);
} }
static void mce_async_out(struct mceusb_dev *ir, unsigned char *data, int size) static void mce_async_out(struct mceusb_dev *ir, unsigned char *data, int size)
...@@ -974,7 +975,7 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len) ...@@ -974,7 +975,7 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
switch (ir->parser_state) { switch (ir->parser_state) {
case SUBCMD: case SUBCMD:
ir->rem = mceusb_cmd_datasize(ir->cmd, ir->buf_in[i]); ir->rem = mceusb_cmd_datasize(ir->cmd, ir->buf_in[i]);
mceusb_dev_printdata(ir, ir->buf_in, i - 1, mceusb_dev_printdata(ir, ir->buf_in, buf_len, i - 1,
ir->rem + 2, false); ir->rem + 2, false);
mceusb_handle_command(ir, i); mceusb_handle_command(ir, i);
ir->parser_state = CMD_DATA; ir->parser_state = CMD_DATA;
...@@ -986,7 +987,7 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len) ...@@ -986,7 +987,7 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK) rawir.duration = (ir->buf_in[i] & MCE_PULSE_MASK)
* US_TO_NS(MCE_TIME_UNIT); * US_TO_NS(MCE_TIME_UNIT);
dev_dbg(ir->dev, "Storing %s with duration %d", dev_dbg(ir->dev, "Storing %s with duration %u",
rawir.pulse ? "pulse" : "space", rawir.pulse ? "pulse" : "space",
rawir.duration); rawir.duration);
...@@ -1007,7 +1008,7 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len) ...@@ -1007,7 +1008,7 @@ static void mceusb_process_ir_data(struct mceusb_dev *ir, int buf_len)
continue; continue;
} }
ir->rem = (ir->cmd & MCE_PACKET_LENGTH_MASK); ir->rem = (ir->cmd & MCE_PACKET_LENGTH_MASK);
mceusb_dev_printdata(ir, ir->buf_in, mceusb_dev_printdata(ir, ir->buf_in, buf_len,
i, ir->rem + 1, false); i, ir->rem + 1, false);
if (ir->rem) if (ir->rem)
ir->parser_state = PARSE_IRDATA; ir->parser_state = PARSE_IRDATA;
...@@ -1348,10 +1349,10 @@ static int mceusb_dev_probe(struct usb_interface *intf, ...@@ -1348,10 +1349,10 @@ static int mceusb_dev_probe(struct usb_interface *intf,
ir->urb_in->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; ir->urb_in->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
/* flush buffers on the device */ /* flush buffers on the device */
dev_dbg(&intf->dev, "Flushing receive buffers\n"); dev_dbg(&intf->dev, "Flushing receive buffers");
res = usb_submit_urb(ir->urb_in, GFP_KERNEL); res = usb_submit_urb(ir->urb_in, GFP_KERNEL);
if (res) if (res)
dev_err(&intf->dev, "failed to flush buffers: %d\n", res); dev_err(&intf->dev, "failed to flush buffers: %d", res);
/* figure out which firmware/emulator version this hardware has */ /* figure out which firmware/emulator version this hardware has */
mceusb_get_emulator_version(ir); mceusb_get_emulator_version(ir);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment