Currently TCP is statically linked to the kernel.
Correct, so how is this done and where ? Once you figure that part out you have what you need to do what you want to :)
How can I make it a loadable module?
Change into your source tree, look for this file: linux-4.7.2/linux-4.7.2/net/Kconfig Kconfig is used by the KBuild system that menuconfig uses. Look for the section: config INET bool "TCP/IP networking" <-- change bool to tristate, save and run make menuconfig. Now you can ask menuconfig to build TCP as a module. But... it may be better to if you can use: https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt One last thing, heed the warnings in Kconfig they are there for a reason. Good luck and what exactly are you trying to do ? Am curious. Aruna ( Shrugs and gets ready to duck a flying trout Valdis may send my way :)