Project

General

Profile

Optimization #2218 » 0001-Leave-TSO-enabled-for-Linux-AF_PACKET-runmode.patch

Proposed patch to leave TSO enabled for Linux AF_PACKET runmode - Bhavesh Davda, 09/29/2017 03:45 PM

View differences:

src/util-ioctl.c
}
if (other) {
const char *lro = "unset", *gro = "unset", *tso = "unset", *gso = "unset";
const char *lro = "unset", *gro = "unset", *gso = "unset";
const char *sg = "unset";
int other_ret = 0;
#ifdef ETHTOOL_GGRO
......
other_ret = 1;
}
#endif
#ifdef ETHTOOL_GTSO
if (GetEthtoolValue(dev, ETHTOOL_GTSO, &value) == 0 && value != 0) {
tso = "SET";
other_ret = 1;
}
#endif
#ifdef ETHTOOL_GGSO
if (GetEthtoolValue(dev, ETHTOOL_GGSO, &value) == 0 && value != 0) {
gso = "SET";
......
#endif
if (other_ret == 0) {
SCLogPerf("NIC offloading on %s: SG: %s, GRO: %s, LRO: %s, "
"TSO: %s, GSO: %s", dev, sg, gro, lro, tso, gso);
"GSO: %s", dev, sg, gro, lro, gso);
} else {
SCLogWarning(SC_ERR_NIC_OFFLOADING, "NIC offloading on %s: SG: %s, "
" GRO: %s, LRO: %s, TSO: %s, GSO: %s. Run: "
"ethtool -K %s sg off gro off lro off tso off gso off",
dev, sg, gro, lro, tso, gso, dev);
" GRO: %s, LRO: %s, GSO: %s. Run: "
"ethtool -K %s sg off gro off lro off gso off",
dev, sg, gro, lro, gso, dev);
ret = 1;
}
}
......
ldev->offload_orig |= OFFLOAD_FLAG_GRO;
}
#endif
#ifdef ETHTOOL_GTSO
if (GetEthtoolValue(dev, ETHTOOL_GTSO, &value) == 0 && value != 0) {
SCLogPerf("%s: disabling tso offloading", dev);
SetEthtoolValue(dev, ETHTOOL_STSO, 0);
ldev->offload_orig |= OFFLOAD_FLAG_TSO;
}
#endif
#ifdef ETHTOOL_GGSO
if (GetEthtoolValue(dev, ETHTOOL_GGSO, &value) == 0 && value != 0) {
SCLogPerf("%s: disabling gso offloading", dev);
......
SetEthtoolValue(dev, ETHTOOL_SGRO, 1);
}
#endif
#ifdef ETHTOOL_GTSO
if (ldev->offload_orig & OFFLOAD_FLAG_TSO) {
SCLogPerf("%s: restoring tso offloading", dev);
SetEthtoolValue(dev, ETHTOOL_STSO, 1);
}
#endif
#ifdef ETHTOOL_GGSO
if (ldev->offload_orig & OFFLOAD_FLAG_GSO) {
SCLogPerf("%s: restoring gso offloading", dev);
......
*
* \param Name of link
* \param csum check if checksums are offloaded
* \param other check if other things are offloaded: TSO, GRO, etc.
* \param other check if other things are offloaded: LRO, GRO, etc.
* \retval -1 in case of error, 0 if none, 1 if some
*/
int GetIfaceOffloading(const char *dev, int csum, int other)
(1-1/2)