--- dts/doc/dts_gsg/usr_guide/igb_uio.rst | 102 ++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 dts/doc/dts_gsg/usr_guide/igb_uio.rst
diff --git a/dts/doc/dts_gsg/usr_guide/igb_uio.rst b/dts/doc/dts_gsg/usr_guide/igb_uio.rst new file mode 100644 index 0000000000..13648cd028 --- /dev/null +++ b/dts/doc/dts_gsg/usr_guide/igb_uio.rst @@ -0,0 +1,102 @@ +Practice for igb_uio +==================== + +The kernel module igb_uio is moved to the dpdk-kmods repository in the +/linux/igb_uio/ directory snice DPDK 20.11 (commit: 56bb5841fd06). +The most easy way to test DPDK in DTS based on igb_uio is to add igb_uio +source code back to dpdk. + + +Get Source Code +--------------- + +Get DPDK:: + + git clone git://dpdk.org/dpdk + git clone http://dpdk.org/git/dpdk + +Get igb_uio:: + + git clone http://dpdk.org/git/dpdk-kmods + git clone git://dpdk.org/dpdk-kmods + +Integrate igb_uio into DPDK +--------------------------- + +Assume you have cloned the dpdk and dpdk-kmods source code +in ./dpdk and ./dpdk-kmods. + +#. Copy dpdk-kmods/linux/igb_uio/ to dpdk/kernel/linux/:: + + [root@dts linux]# cp -r ./dpdk-kmods/linux/igb_uio /root/dpdk/kernel/linux/ + [root@dts linux]# ls ./dpdk/kernel/linux/ + igb_uio kni meson.build + +#. enable igb_uio build in meson: + +* add igb_uio in dpdk/kernel/linux/meson.build subdirs as below:: + + subdirs = ['kni', 'igb_uio'] + +.. note:: + + igb_uio will be added into compile list when it is added in subdirs. + + +* create a file of meson.build in dpdk/kernel/linux/igb_uio/ as below:: + + # SPDX-License-Identifier: BSD-3-Clause + # Copyright(c) 2017 Intel Corporation + + mkfile = custom_target('igb_uio_makefile', + output: 'Makefile', + command: ['touch', '@OUTPUT@']) + + custom_target('igb_uio', + input: ['igb_uio.c', 'Kbuild'], + output: 'igb_uio.ko', + command: ['make', '-C', kernel_dir + '/build', + 'M=' + meson.current_build_dir(), + 'src=' + meson.current_source_dir(), + 'EXTRA_CFLAGS=-I' + meson.current_source_dir() + + '/../../../lib/librte_eal/include', + 'modules'], + depends: mkfile, + install: true, + install_dir: kernel_dir + '/extra/dpdk', + build_by_default: get_option('enable_kmods')) + +.. note:: + + DPDK is using meson build, create meson.build so that igb_uio can be built. + +DTS configuration +----------------- + +#. Pack the dpdk into dpdk.tar.gz and copy into dts/dep:: + + tar -zcvf dpdk.tar.gz dpdk + cp dpdk.tar.gz ~/dts/dep + + +#. config drivername=igb_uio in execution.cfg:: + + [Execution1] + crbs=127.0.0.1 + drivername=igb_uio + build_type=meson + test_suites= + checksum_offload, + targets= + x86_64-native-linuxapp-gcc + parameters=nic_type=cfg:func=true + +#. configure dts with other requirements (not mentioned here) and now start dts:: + + ./dts + +.. note .. + + dts parameter "-s" means skip setup, it won't unpack dep/dpdk.tar.gz + to the default directory `/root/dpdk`, but use dpdk already there. + so copy the integrated dpdk to `/root/dpdk` if with `-s` -- 2.20.1