return ${EXIT_OK}
}
+
+offloading_disable_all() {
+ local device="${1}"
+ assert isset device
+
+ local offloading
+ for offloading in ${!SUPPORTED_OFFLOADINGS[@]}; do
+ offloading_set "${device}" "${offloading}" "off"
+ done
+
+ return ${EXIT_OK}
+}
. /usr/lib/network/header-port
-HOOK_SETTINGS="HOOK ADDRESS MIIMON MODE SLAVES"
+HOOK_SETTINGS="HOOK ADDRESS MIIMON MODE OFFLOADING SLAVES"
SLAVES=""
MIIMON=100
--mode=*)
MODE=$(cli_get_val "${1}")
;;
+ --offloading=*)
+ OFFLOADING="$(cli_get_val "${1}")"
+
+ if enabled OFFLOADING; then
+ OFFLOADING="on"
+ else
+ OFFLOADING="off"
+ fi
+ ;;
+*)
local slave=$(cli_get_val "${1:1}")
port_settings_read "${port}" ${HOOK_SETTINGS}
- # Auto-enable hardware offloading
- offloading_auto "${port}"
+ # Auto-enable or disable hardware offloading
+ if ! isset OFFLOADING || enabled OFFLOADING; then
+ offloading_auto "${port}"
+ else
+ offloading_disable_all "${port}"
+ fi
# Execute the default action
hook_default_up "${port}"
# DEVICE equals the actual MAC address of the device.
# If ADDRESS is set, the device will get ADDRESS set for its MAC address.
-HOOK_SETTINGS="HOOK ADDRESS ADVERTISED_LINK_SPEEDS DEVICE MTU"
+HOOK_SETTINGS="HOOK ADDRESS ADVERTISED_LINK_SPEEDS DEVICE OFFLOADING MTU"
hook_check_settings() {
assert ismac DEVICE
fi
;;
+ --offloading=*)
+ OFFLOADING="$(cli_get_val "${1}")"
+
+ if enabled OFFLOADING; then
+ OFFLOADING="on"
+ else
+ OFFLOADING="off"
+ fi
+ ;;
+
*)
error "Unknown argument: ${1}"
return ${EXIT_ERROR}
device_advertise_link_speeds "${port}" ${ADVERTISED_LINK_SPEEDS}
fi
- # Auto-enable hardware offloading
- offloading_auto "${port}"
+ # Auto-enable or disable hardware offloading
+ if ! isset OFFLOADING || enabled OFFLOADING; then
+ offloading_auto "${port}"
+ else
+ offloading_disable_all "${port}"
+ fi
# Bring up the device
device_set_up "${port}"