How to enable tc-netem?

I want to use tc-netem on my Toradex board (alternatively the iptables statistics module might suffice). Unfortunately, the provided kernel seems to miss some features and/or modules. Following the description 5. Troubleshooting — tcconfig 0.27.1 documentation I tried to install the missing kernel modules by providing an incremental change as described here:
Yocto Project Linux Kernel Development Manual

However, after installing the packages as an ipk package, I fail to load them successfully. When I run, for instance, modprobe sch_ingress

I get an error like:

`modprobe: ERROR: could not insert 'sch_ingress': Unknown symbol in module, or unknown parameter (see dmesg)`

and checking dmesg shows:

[ 1100.960300] sch_ingress: Unknown symbol tcf_block_get (err 0)
[ 1100.978316] sch_ingress: Unknown symbol net_inc_egress_queue (err 0)
[ 1100.984853] sch_ingress: Unknown symbol unregister_qdisc (err 0)
[ 1101.005982] sch_ingress: Unknown symbol tcf_block_put (err 0)
[ 1101.011883] sch_ingress: disagrees about version of symbol nla_put
[ 1101.018302] sch_ingress: Unknown symbol nla_put (err -22)
[ 1101.036020] sch_ingress: Unknown symbol register_qdisc (err 0)
[ 1101.042017] sch_ingress: Unknown symbol net_dec_egress_queue (err 0)

which seems to me as if the modules wouldn’t match the kernel.

Do I miss to install the right kernel package by calling opkg install kernel?
Any help is appreciated.


Greetings @OliverH!

Were you able to make the necessary changes to the kernel, i.e., does issuing a zcat /proc/config.gz | grep CONFIG_<YOUR_CONFIG> show the necessary kernel configuration enabled?

I think the best course of action here is not to install these packages using the ipks, but to generate a complete image with your additions and modifications. That way you can guarantee the image will use your modified kernel with all necessary modules.

Thanks for the response. I think I figured out in the meantime that there are not only modules missing in the kernel - or to be more precise: there are configurations missing in the kernel to be able to load/use these modules.

Apparently it is not that easy to install a new kernel via ipk. However, creating a new image is not what our customer want. We built a system that made it fairly easy to remotely install ipk packages without any additional infrastructure, but installing a new image would either require some infrastructure or some manual work. Consequently, I will most likely not use tc/netem and try to go with a reduced approach using iptables only.


That’s what I also suspected. In fact I’ve never tried installing a new kernel via ipk - it’s not a use case I’ve ever stumbled upon but I figured some problems might arise such as what you’re describing.

I’m glad you found a workaround using only iptables. Let us know if you need any further assistance.