aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sipc/miscdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/sipc/miscdev.c')
-rw-r--r--drivers/net/sipc/miscdev.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/sipc/miscdev.c b/drivers/net/sipc/miscdev.c
index 33c50a6b327c..1f4ebe20c729 100644
--- a/drivers/net/sipc/miscdev.c
+++ b/drivers/net/sipc/miscdev.c
@@ -99,6 +99,8 @@ static ssize_t sipc_misc_write(struct file *filp, const char __user *buf,
if (chan->format != SAMSUNG_IPC_FORMAT_RAMDUMP) {
data = skb_put(skb, sizeof(HDLC_START));
data[0] = HDLC_START;
+
+ /* RFS header is sent separately, as needs to be untouched */
if (chan->format != SAMSUNG_IPC_FORMAT_RFS) {
header_size = sipc_get_header(chan, &hdr, count);
memcpy(skb_put(skb, header_size), &hdr, header_size);
@@ -110,6 +112,11 @@ static ssize_t sipc_misc_write(struct file *filp, const char __user *buf,
return -EFAULT;
}
+ if (chan->format != SAMSUNG_IPC_FORMAT_RAMDUMP) {
+ data = skb_put(skb, sizeof(HDLC_END));
+ data[0] = HDLC_END;
+ };
+
switch (chan->format) {
case SAMSUNG_IPC_FORMAT_FMT:
skb_queue_tail(&chan->sipc->tx_queue_fmt, skb);
@@ -124,6 +131,8 @@ static ssize_t sipc_misc_write(struct file *filp, const char __user *buf,
dev_err(chan->sipc->dev, "Don't know how to tx format %d\n", chan->format);
}
+ queue_delayed_work(chan->sipc->tx_wq, &chan->sipc->tx_work, msecs_to_jiffies(5));
+
return count;
}