KI: add kernel patch for CONFIG_SWAP_HOOK_ENERGY support 90/156490/4
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Mon, 16 Oct 2017 17:59:19 +0000 (20:59 +0300)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Fri, 20 Oct 2017 09:06:02 +0000 (12:06 +0300)
Change-Id: I76bbe5195da7720fc75cc984716058d39c9b47e9
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
kernel_integration/patches/0007-SWAP-DA-add-CONFIG_SWAP_HOOK_ENERGY.patch [new file with mode: 0644]

diff --git a/kernel_integration/patches/0007-SWAP-DA-add-CONFIG_SWAP_HOOK_ENERGY.patch b/kernel_integration/patches/0007-SWAP-DA-add-CONFIG_SWAP_HOOK_ENERGY.patch
new file mode 100644 (file)
index 0000000..87667ea
--- /dev/null
@@ -0,0 +1,138 @@
+From 8d6847b6a32fb7423462c3d108e4283dac815e13 Mon Sep 17 00:00:00 2001
+From: Your Name <your@email.com>
+Date: Thu, 5 Oct 2017 12:31:22 +0300
+Subject: [PATCH 7/9] SWAP-DA: add CONFIG_SWAP_HOOK_ENERGY
+
+---
+ include/swap/hook_energy.h  | 22 ++++++++++++++++++++++
+ net/bluetooth/rfcomm/sock.c |  3 +++
+ net/socket.c                | 14 +++++++++++---
+ 3 files changed, 36 insertions(+), 3 deletions(-)
+ create mode 100644 include/swap/hook_energy.h
+
+diff --git a/include/swap/hook_energy.h b/include/swap/hook_energy.h
+new file mode 100644
+index 0000000..41d1dba
+--- /dev/null
++++ b/include/swap/hook_energy.h
+@@ -0,0 +1,22 @@
++#ifndef _LINUX_SWAP_HOOK_ENERGY_H
++#define _LINUX_SWAP_HOOK_ENERGY_H
++
++
++static inline void swap_bt_recvmsg(struct socket *sock, int len)
++{
++}
++
++static inline void swap_bt_sendmsg(struct socket *sock, int len)
++{
++}
++
++static inline void swap_sock_recvmsg(struct socket *sock, int len)
++{
++}
++
++static inline void swap_sock_sendmsg(struct socket *sock, int len)
++{
++}
++
++
++#endif /* _LINUX_SWAP_HOOK_ENERGY_H */
+diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
+index aeca305..ade5d1b 100644
+--- a/net/bluetooth/rfcomm/sock.c
++++ b/net/bluetooth/rfcomm/sock.c
+@@ -32,6 +32,7 @@
+ #include <net/bluetooth/hci_core.h>
+ #include <net/bluetooth/l2cap.h>
+ #include <net/bluetooth/rfcomm.h>
++#include <swap/hook_energy.h>
+ static const struct proto_ops rfcomm_sock_ops;
+@@ -670,6 +671,7 @@ static int rfcomm_sock_sendmsg(struct socket *sock, struct msghdr *msg,
+ done:
+       release_sock(sk);
++      swap_bt_sendmsg(sock, sent);
+       return sent;
+ }
+@@ -700,6 +702,7 @@ static int rfcomm_sock_recvmsg(struct socket *sock, struct msghdr *msg,
+       if (atomic_read(&sk->sk_rmem_alloc) <= (sk->sk_rcvbuf >> 2))
+               rfcomm_dlc_unthrottle(rfcomm_pi(sk)->dlc);
+       release_sock(sk);
++      swap_bt_recvmsg(sock, len);
+       return len;
+ }
+diff --git a/net/socket.c b/net/socket.c
+index f24a332..dadcf14 100644
+--- a/net/socket.c
++++ b/net/socket.c
+@@ -107,6 +107,7 @@
+ #include <linux/atalk.h>
+ #include <net/busy_poll.h>
+ #include <linux/errqueue.h>
++#include <swap/hook_energy.h>
+ #ifdef CONFIG_NET_RX_BUSY_POLL
+ unsigned int sysctl_net_busy_read __read_mostly;
+@@ -662,6 +663,7 @@ int sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
+       ret = __sock_sendmsg(&iocb, sock, msg, size);
+       if (-EIOCBQUEUED == ret)
+               ret = wait_on_sync_kiocb(&iocb);
++      swap_sock_sendmsg(sock, ret);
+       return ret;
+ }
+ EXPORT_SYMBOL(sock_sendmsg);
+@@ -810,6 +812,7 @@ int sock_recvmsg(struct socket *sock, struct msghdr *msg,
+       ret = __sock_recvmsg(&iocb, sock, msg, size, flags);
+       if (-EIOCBQUEUED == ret)
+               ret = wait_on_sync_kiocb(&iocb);
++      swap_sock_recvmsg(sock, ret);
+       return ret;
+ }
+ EXPORT_SYMBOL(sock_recvmsg);
+@@ -923,6 +926,7 @@ static ssize_t sock_aio_read(struct kiocb *iocb, const struct iovec *iov,
+                               unsigned long nr_segs, loff_t pos)
+ {
+       struct sock_iocb siocb, *x;
++      ssize_t res;
+       if (pos != 0)
+               return -ESPIPE;
+@@ -934,7 +938,9 @@ static ssize_t sock_aio_read(struct kiocb *iocb, const struct iovec *iov,
+       x = alloc_sock_iocb(iocb, &siocb);
+       if (!x)
+               return -ENOMEM;
+-      return do_sock_read(&x->async_msg, iocb, iocb->ki_filp, iov, nr_segs);
++      res = do_sock_read(&x->async_msg, iocb, iocb->ki_filp, iov, nr_segs);
++      swap_sock_recvmsg(iocb->ki_filp->private_data, (int)res);
++      return res;
+ }
+ static ssize_t do_sock_write(struct msghdr *msg, struct kiocb *iocb,
+@@ -965,6 +971,7 @@ static ssize_t sock_aio_write(struct kiocb *iocb, const struct iovec *iov,
+                         unsigned long nr_segs, loff_t pos)
+ {
+       struct sock_iocb siocb, *x;
++      ssize_t res;
+       if (pos != 0)
+               return -ESPIPE;
+@@ -972,8 +979,9 @@ static ssize_t sock_aio_write(struct kiocb *iocb, const struct iovec *iov,
+       x = alloc_sock_iocb(iocb, &siocb);
+       if (!x)
+               return -ENOMEM;
+-
+-      return do_sock_write(&x->async_msg, iocb, iocb->ki_filp, iov, nr_segs);
++      res = do_sock_write(&x->async_msg, iocb, iocb->ki_filp, iov, nr_segs);
++      swap_sock_sendmsg(iocb->ki_filp->private_data, (int)res);
++      return res;
+ }
+ /*
+-- 
+2.1.4
+