diff options
author | Jonathan Bakker <xc-racer2@live.ca> | 2020-03-19 16:43:30 -0700 |
---|---|---|
committer | Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> | 2021-11-25 14:20:26 +0100 |
commit | d7c10b74ef2f4236ba5bddfe4311a4e43da859e3 (patch) | |
tree | ca3a9b4ff49b626686f2d7d726a3b7a06ce9fc3e /drivers/net/sipc/miscdev.c | |
parent | 18d28816714daef24f72bf0c1ca055aecec2168a (diff) | |
download | kernel_replicant_linux-d7c10b74ef2f4236ba5bddfe4311a4e43da859e3.tar.gz kernel_replicant_linux-d7c10b74ef2f4236ba5bddfe4311a4e43da859e3.tar.bz2 kernel_replicant_linux-d7c10b74ef2f4236ba5bddfe4311a4e43da859e3.zip |
sipc: misc: Fixes for packet transmission
-HDLC_END needs to be sent at the end of each packet, except for ramdump.
-Actually queue the work when we received a packet
Tested on S5PV210
Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
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; } |