(OK)(OK) mptcp_android-x86-kernel-4.4.12.txt
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
in PC
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# ls /opt/android-x86/
-------------------------------
[root@localhost android-x86-6.0-rc1]# pwd
/opt/android-x86/android-x86-6.0-rc1
[root@localhost android-x86-6.0-rc1]#
-------------------------------
[root@localhost kernel]# pwd
/opt/android-x86/android-x86-6.0-rc1/kernel
[root@localhost kernel]# ls
android block CREDITS drivers include Kbuild lib mm REPORTING-BUGS security usr
Android.mk certs crypto firmware init Kconfig MAINTAINERS net samples sound virt
arch COPYING Documentation fs ipc kernel Makefile README scripts tools
[root@localhost kernel]#
-------------------------------
mptcp_v0.91.zip.part download from https://github.com/multipath-tcp/mptcp
[root@localhost mptcp_v0.91]# pwd
/opt/android-x86/mptcp_v0.91
[root@localhost mptcp_v0.91]# ls
arch CREDITS drivers include Kbuild lib mm REPORTING-BUGS security usr
block crypto firmware init Kconfig MAINTAINERS net samples sound virt
COPYING Documentation fs ipc kernel Makefile README scripts tools
[root@localhost mptcp_v0.91]# find . -name mptcp*
./include/net/mptcp.h
./include/net/mptcp_v4.h
./include/net/mptcp_v6.h
./include/net/netns/mptcp.h
./net/mptcp
./net/mptcp/mptcp_balia.c
./net/mptcp/mptcp_binder.c
./net/mptcp/mptcp_coupled.c
./net/mptcp/mptcp_ctrl.c
./net/mptcp/mptcp_fullmesh.c
./net/mptcp/mptcp_input.c
./net/mptcp/mptcp_ipv4.c
./net/mptcp/mptcp_ipv6.c
./net/mptcp/mptcp_ndiffports.c
./net/mptcp/mptcp_ofo_queue.c
./net/mptcp/mptcp_olia.c
./net/mptcp/mptcp_output.c
./net/mptcp/mptcp_pm.c
./net/mptcp/mptcp_redundant.c
./net/mptcp/mptcp_rr.c
./net/mptcp/mptcp_sched.c
./net/mptcp/mptcp_wvegas.c
[root@localhost mptcp_v0.91]# grep mptcp -R .|cut -d: -f1|uniq
./Documentation/networking/ip-sysctl.txt
./include/linux/tcp.h
./include/net/inet_sock.h
./include/net/net_namespace.h
./include/net/tcp.h
./net/Kconfig
./net/Makefile
./net/core/sock.c
./net/ipv4/af_inet.c
./net/ipv4/inet_connection_sock.c
./net/ipv4/ip_sockglue.c
./net/ipv4/syncookies.c
./net/ipv4/tcp.c
./net/ipv4/tcp_fastopen.c
./net/ipv4/tcp_input.c
./net/ipv4/tcp_ipv4.c
./net/ipv4/tcp_minisocks.c
./net/ipv4/tcp_output.c
./net/ipv4/tcp_timer.c
./net/ipv6/ipv6_sockglue.c
./net/ipv6/syncookies.c
./net/ipv6/tcp_ipv6.c
./include/net/mptcp.h
./include/net/mptcp_v4.h
./include/net/mptcp_v6.h
./include/net/netns/mptcp.h
./net/mptcp/Kconfig
./net/mptcp/Makefile
./net/mptcp/mptcp_balia.c
./net/mptcp/mptcp_binder.c
./net/mptcp/mptcp_coupled.c
./net/mptcp/mptcp_ctrl.c
./net/mptcp/mptcp_fullmesh.c
./net/mptcp/mptcp_input.c
./net/mptcp/mptcp_ipv4.c
./net/mptcp/mptcp_ipv6.c
./net/mptcp/mptcp_ndiffports.c
./net/mptcp/mptcp_ofo_queue.c
./net/mptcp/mptcp_olia.c
./net/mptcp/mptcp_output.c
./net/mptcp/mptcp_pm.c
./net/mptcp/mptcp_redundant.c
./net/mptcp/mptcp_rr.c
./net/mptcp/mptcp_sched.c
./net/mptcp/mptcp_wvegas.c
[root@localhost mptcp_v0.91]#
cp -a net/mptcp/ /opt/android-x86/android-x86-6.0-rc1/kernel/net/
cp include/net/mptcp.h /opt/android-x86/android-x86-6.0-rc1/kernel/include/net/
cp include/net/mptcp_v4.h /opt/android-x86/android-x86-6.0-rc1/kernel/include/net/
cp include/net/mptcp_v6.h /opt/android-x86/android-x86-6.0-rc1/kernel/include/net/
cp include/net/netns/mptcp.h /opt/android-x86/android-x86-6.0-rc1/kernel/include/net/netns/
-------------------------------
modify /opt/android-x86/android-x86-6.0-rc1/kernel/* abiding by /opt/android-x86/mptcp_v0.91/*
-------------------------------
[root@localhost mptcp_v0.91]# pwd
/opt/android-x86/mptcp_v0.91
[root@localhost mptcp_v0.91]# gedit
[root@localhost kernel]# touch timestamp.txt // important
[root@localhost kernel]# pwd
/opt/android-x86/android-x86-6.0-rc1/kernel
[root@localhost kernel]# gedit
net/core/request_sock.c reqsk_queue_alloc(struct request_sock_queue *queue, gfp_t flags)
net/ipv4/inet_connection_sock.c no u32 inet_synq_hash()
net/ipv4/syncookies.c __u32 cookie_v4_init_sequence(const struct sk_buff *skb, __u16 *mssp)
net/ipv4/tcp_fastopen.c
net/ipv4/tcp_minisocks.c if (!is_meta_sk(sk))
net/ipv4/tcp_output.c void tcp_set_skb_tso_segs(struct sk_buff *skb, unsigned int mss_now)
net/ipv6/inet6_connection_sock.c inet6_synq_hash()
-------------------------------
copy files to IBM Server
-------------------------------
[root@localhost android-x86-6.0-rc1]# pwd
/opt/android-x86/android-x86-6.0-rc1
[root@localhost android-x86-6.0-rc1]# ls
find-alter-files.sh kernel timestamp.txt
[root@localhost android-x86-6.0-rc1]# ./find-alter-files.sh kernel
[root@localhost android-x86-6.0-rc1]# scp -r /root/opt/android-x86/android-x86-6.0-rc1/kernel 10.109.253.80:/opt/android-x86/android-x86-6.0-rc1/
-------------------------------
copy files to IBM Server
-------------------------------
[root@localhost mptcp_v0.91]# pwd
/opt/android-x86/mptcp_v0.91
[root@localhost mptcp_v0.91]#
scp -r net/mptcp/ 10.109.253.80:/opt/android-x86/android-x86-6.0-rc1/kernel/net/
scp include/net/mptcp.h 10.109.253.80:/opt/android-x86/android-x86-6.0-rc1/kernel/include/net/
scp include/net/mptcp_v4.h 10.109.253.80:/opt/android-x86/android-x86-6.0-rc1/kernel/include/net/
scp include/net/mptcp_v6.h 10.109.253.80:/opt/android-x86/android-x86-6.0-rc1/kernel/include/net/
scp include/net/netns/mptcp.h 10.109.253.80:/opt/android-x86/android-x86-6.0-rc1/kernel/include/net/netns/
-------------------------------
[root@localhost android-x86-6.0-rc1]# tree /root/opt/android-x86/android-x86-6.0-rc1/kernel/
/root/opt/android-x86/android-x86-6.0-rc1/kernel/
├── Documentation
│ └── networking
│ └── ip-sysctl.txt
├── drivers
│ └── infiniband
│ └── hw
│ └── cxgb4
│ └── cm.c
├── include
│ ├── linux
│ │ ├── ipv6.h
│ │ ├── skbuff.h
│ │ └── tcp.h
│ ├── net
│ │ ├── inet6_connection_sock.h
│ │ ├── inet_common.h
│ │ ├── inet_connection_sock.h
│ │ ├── inet_sock.h
│ │ ├── net_namespace.h
│ │ ├── request_sock.h
│ │ ├── sock.h
│ │ ├── tcp.h
│ │ └── transp_v6.h
│ └── uapi
│ └── linux
│ ├── if.h
│ └── tcp.h
└── net
├── core
│ ├── dev.c
│ ├── request_sock.c
│ ├── skbuff.c
│ └── sock.c
├── ipv4
│ ├── af_inet.c
│ ├── inet_connection_sock.c
│ ├── Kconfig
│ ├── syncookies.c
│ ├── tcp.c
│ ├── tcp_fastopen.c
│ ├── tcp_input.c
│ ├── tcp_ipv4.c
│ ├── tcp_minisocks.c
│ ├── tcp_output.c
│ └── tcp_timer.c
├── ipv6
│ ├── addrconf.c
│ ├── af_inet6.c
│ ├── ipv6_sockglue.c
│ ├── syncookies.c
│ └── tcp_ipv6.c
├── Kconfig
└── Makefile
15 directories, 38 files
[root@localhost android-x86-6.0-rc1]#
-------------------------------
in IBM Server
-------------------------------
[root@localhost kernel]# pwd
/opt/android-x86/android-x86-6.0-rc1/kernel
[root@localhost kernel]# make menuconfig
enable MPTCP protocol
Networking support->Networking options->TCP/IP networking->MPTCP protocol (MPTCP)
use the Linked Increase Algorithm (LIA) Congestion Control, that guarantees fairness across a shared bottleneck
Networking support->Networking options->TCP: advanced congestion control->MPTCP Linked Increase
To enable it as the default congestion control, you should also enable it in "Default TCP congestion control", or you just type echo 'lia' > /proc/sys/net/ipv4/tcp_congestion_control in the running Kernel. Other options are "Opportunistic Linked Increase
(olia)", "WVEGAS CONGESTION CONTROL (wvegas)" or "BALIA CONGESTION CONTROL (balia)".
Choose a path-manager, by enabling "MPTCP: advanced path-manager control"
enable Policy-Routing
Networking support->Networking options->IP: advanced router->IP: policy routing (IP_MULTIPLE_TABLES)
[root@localhost android-x86-6.0-rc1]# pwd
/opt/android-x86/android-x86-6.0-rc1
[root@localhost android-x86-6.0-rc1]#
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.fc20.x86_64
export PATH=$JAVA_HOME/bin:$PATH
. build/envsetup.sh
lunch android_x86_64-userdebug
m -j32 iso_img