Find the answer to your Linux question:
Results 1 to 3 of 3
Enjoy an ad free experience by logging in. Not a member yet? Register.
  1. #1

    How to add .o file in the Linux Kernel

    I would like to know how would you enable the Congestion Control Algorithm correctly (lets call it Tcp_quic or quic).

    My code is almost exactly like the tcp_veno.c file. Just the algorithm in the tcp_veno_cong_avoid() function changed.
    I would like to attached the code on here, but I got an upload error. I would post it as well, but it is pretty long.

    I have successfully compile the Linux Kernel with the C file (in the directory linux-3.4-rc7\net\ipv4\tcp_quic.c)
    I just need to enable it, so I can use my algorithm and add it to the Kernel.

    I realize that in the Linux Kernel folder(kernel\linux-3.3.6\net\ipv4), where I added the tcp_quic.c file, does not have .mod.o or .o file. With means that the tcp_quic.c did not compile successfully, right? However why did the compile in the terminal compile successfully? I read on one forum that may be I need to change something in the MAKEFILE to have .o file, is this true? I am not sure how I would do this if it is so.

    I know that most people said that you should not mess with the Kernel, but it is something I would like to try.

    The code below is how I want to enable the Congestion Control Algorithm.

    echo quic > /proc/sys/net/ipv4/tcp_congestion_control
    Also this is how I compile the Linux Kernel:

    make-kpkg clean
    fakeroot make-kpkg --initrd --append-to-version=-geekernel kernel_image kernel_headers
    (this takes about 2 hours to compile)

  2. #2
    So far I have done that steps on editing the MAKEFILE and the Kconfig file. Where I see veno, I copy and paste another line(s) of code and replace it with the word "quic".
    What I put in the MAKEFILE is
    obj-$(CONFIG_TCP_CONG_QUIC) += tcp_quic.o
    What I put in the Kconfig file is:
    (there is a lot of editing in this one I wont list them because I basically search for "vegas/veno" to copy and paste a new one for "quic"

    I did get an error when I try using the code you have recommended, but I got an Error

    fakeroot CONFIG_TCP_CONG_QUIC=m make-kpkg --initrd --append-to-version=-geekernel kernel_image kernel_headers
    This is the error

    /usr/bin/fakeroot: line 176: CONFIG_TCP_QUIC=m: command not found
    Here is the code in the fakeroot file around line 176:

    if test -z "$*"; then
    exit $RESULT
    Did I miss something when I edit in the MAKEFILE or Kconfig file?


  3. #3
    I am waiting for the person who has helped me, but he/she hasn't responded for awhile so may be someone knows this.
    Someone mention me something about the .config file, is that referring to kconfig file?
    I ask because I do not know what that person mean by that below.
    At the end of kernel configuration, "make (x|menu|whatever)config" generates a .config file which is built using all the Kconfig segments.

    When that person mention this part:
    You can simply edit .config and add CONFIG_TCP_CONG_QUIC=m to it. Then reconfigure using "make oldconfig" and then build the kernel using your regular "make-kpkg ..." command.
    Is that person talking about the kconfig file the lines around here

    	config DEFAULT_CUBIC
    		bool "Cubic" if TCP_CONG_CUBIC=y
    	config DEFAULT_HTCP
    		bool "Htcp" if TCP_CONG_HTCP=y
    	config DEFAULT_HYBLA
    		bool "Hybla" if TCP_CONG_HYBLA=y
    	config DEFAULT_VEGAS
    		bool "Vegas" if TCP_CONG_VEGAS=y
            config DEFAULT_VENO
    		bool "Veno" if TCP_CONG_VENO=y
            config DEFAULT_QUIC
    		bool "Quic" if TCP_CONG_QUIC=m

  4. $spacer_open

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts