diff options
Diffstat (limited to 'drivers/net/sipc/miscdev.c')
-rw-r--r-- | drivers/net/sipc/miscdev.c | 9 |
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; } |