Closed jfeather-amd closed 4 months ago
Can you look again at why we need libcplane0.a from onload? Surely the whole point of this change is to get rid of that
Can you look again at why we need libcplane0.a from onload? Surely the whole point of this change is to get rid of that
Is this regardng the TODO section onload diff? If so, I hadn't put much thought into the change, and just installed any libraries that contained the word "cplane". I would be very unsurprised if removing libcplane0.a
from the install script had no effect on the final behaviour. The test apps only complains about the lack of libefcp.so
.
After some deeper testing, including some performance testing (see ON-1440 internally), it looks like this patch is ready to go so I'll merge this now.
Starting with Xilinx-CNS/onload@b660ac5b259f33cddcb1c6bd6f81ef7910dc10a7, @rhughes-xilinx added a public cplane API to onload. This PR modifies tcpdirect to use this new public cplane API, and is ported from before the open-sourcing of tcpdirect. For internal reviewers, the following PRs may be useful reading as an introduction to this PR:
Many of the changes from the original PR are rebase conflicts, and some small bugs (mostly in the unit tests).
Testing Done
ZF_ATTR="interface=enp4s0f0" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.129.192:8080 239.1.2.3:8080
)ZF_ATTR="interface=enp4s0f0.1" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.111.1:8080 239.1.2.3:8080
)ZF_ATTR="interface=enp4s0f0" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.129.192:8080 192.168.129.191:8080
)ZF_ATTR="interface=enp4s0f0.1" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.111.1:8080 192.168.111.2:8080
)ZF_ATTR="interface=bond0" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.192.1:8080 192.168.192.2:8080
)ZF_ATTR="interface=bond0" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.192.1:8080 239.1.2.3:8080
)ZF_ATTR="interface=bond0.1" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.111.1:8080 192.168.111.2:8080
)ZF_ATTR="interface=bond0.1" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.111.1:8080 239.1.2.3:8080
)ZF_ATTR="interface=bond0" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.192.1:8080 192.168.192.2:8080
)ZF_ATTR="interface=bond0" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.192.1:8080 239.1.2.3:8080
)ZF_ATTR="interface=bond0.1" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.111.1:8080 192.168.111.2:8080
)ZF_ATTR="interface=bond0.1" ./build/gnu_x86_64/bin/zf_apps/static/zfsend -i 1 192.168.111.1:8080 239.1.2.3:8080
)Perhaps worth noting, as I'm not sure if this behaviour was present before, but specifying a physical interface for transmit can be used to bypass logical interfaces like bonds and VLANs.
TODO
Some further modification to onload was required for me to get the test apps working (
zfsend
in this case), perhaps because of my specific workflow. I had to modifyonload_install
to also install the cplane libraries, otherwise tests would fail withENOENT
. The diff for this change is below, but I also intend to raise this as a PR in onload, unless someone points out an alternative making the below unecessary.