udpgso.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #!/bin/sh
  2. # SPDX-License-Identifier: GPL-2.0
  3. #
  4. # Run a series of udpgso regression tests
  5. set -o errexit
  6. set -o nounset
  7. setup_loopback() {
  8. ip addr add dev lo 10.0.0.1/32
  9. ip addr add dev lo fd00::1/128 nodad noprefixroute
  10. }
  11. test_dev_mtu() {
  12. setup_loopback
  13. # Reduce loopback MTU
  14. ip link set dev lo mtu 1500
  15. }
  16. test_route_mtu() {
  17. setup_loopback
  18. # Remove default local routes
  19. ip route del local 10.0.0.1/32 table local dev lo
  20. ip route del local fd00::1/128 table local dev lo
  21. # Install local routes with reduced MTU
  22. ip route add local 10.0.0.1/32 table local dev lo mtu 1500
  23. ip route add local fd00::1/128 table local dev lo mtu 1500
  24. }
  25. setup_dummy_sink() {
  26. ip link add name sink mtu 1500 type dummy
  27. ip addr add dev sink 10.0.0.0/24
  28. ip addr add dev sink fd00::2/64 nodad
  29. ip link set dev sink up
  30. }
  31. test_hw_gso_hw_csum() {
  32. setup_dummy_sink
  33. ethtool -K sink tx-checksum-ip-generic on >/dev/null
  34. ethtool -K sink tx-udp-segmentation on >/dev/null
  35. }
  36. test_sw_gso_hw_csum() {
  37. setup_dummy_sink
  38. ethtool -K sink tx-checksum-ip-generic on >/dev/null
  39. ethtool -K sink tx-udp-segmentation off >/dev/null
  40. }
  41. test_sw_gso_sw_csum() {
  42. setup_dummy_sink
  43. ethtool -K sink tx-checksum-ip-generic off >/dev/null
  44. ethtool -K sink tx-udp-segmentation off >/dev/null
  45. }
  46. if [ "$#" -gt 0 ]; then
  47. "$1"
  48. shift 2 # pop "test_*" arg and "--" delimiter
  49. exec "$@"
  50. fi
  51. echo "ipv4 cmsg"
  52. ./in_netns.sh "$0" test_dev_mtu -- ./udpgso -4 -C
  53. echo "ipv4 setsockopt"
  54. ./in_netns.sh "$0" test_dev_mtu -- ./udpgso -4 -C -s
  55. echo "ipv6 cmsg"
  56. ./in_netns.sh "$0" test_dev_mtu -- ./udpgso -6 -C
  57. echo "ipv6 setsockopt"
  58. ./in_netns.sh "$0" test_dev_mtu -- ./udpgso -6 -C -s
  59. echo "ipv4 connected"
  60. ./in_netns.sh "$0" test_route_mtu -- ./udpgso -4 -c
  61. echo "ipv6 connected"
  62. ./in_netns.sh "$0" test_route_mtu -- ./udpgso -6 -c
  63. echo "ipv4 msg_more"
  64. ./in_netns.sh "$0" test_dev_mtu -- ./udpgso -4 -C -m
  65. echo "ipv6 msg_more"
  66. ./in_netns.sh "$0" test_dev_mtu -- ./udpgso -6 -C -m
  67. echo "ipv4 hw-gso hw-csum"
  68. ./in_netns.sh "$0" test_hw_gso_hw_csum -- ./udpgso -4 -C -R
  69. echo "ipv6 hw-gso hw-csum"
  70. ./in_netns.sh "$0" test_hw_gso_hw_csum -- ./udpgso -6 -C -R
  71. echo "ipv4 sw-gso hw-csum"
  72. ./in_netns.sh "$0" test_sw_gso_hw_csum -- ./udpgso -4 -C -R
  73. echo "ipv6 sw-gso hw-csum"
  74. ./in_netns.sh "$0" test_sw_gso_hw_csum -- ./udpgso -6 -C -R
  75. echo "ipv4 sw-gso sw-csum"
  76. ./in_netns.sh "$0" test_sw_gso_sw_csum -- ./udpgso -4 -C -R
  77. echo "ipv6 sw-gso sw-csum"
  78. ./in_netns.sh "$0" test_sw_gso_sw_csum -- ./udpgso -6 -C -R