Project

General

Profile

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

Proposed patch to leave SG enabled for Linux AF_PACKET runmode - Bhavesh Davda, 10/02/2017 11:41 AM

View differences:

src/util-ioctl.c
if (other) {
const char *lro = "unset", *gro = "unset", *gso = "unset";
const char *sg = "unset";
int other_ret = 0;
#ifdef ETHTOOL_GGRO
if (GetEthtoolValue(dev, ETHTOOL_GGRO, &value) == 0 && value != 0) {
......
other_ret = 1;
}
#endif
#ifdef ETHTOOL_GSG
if (GetEthtoolValue(dev, ETHTOOL_GSG, &value) == 0 && value != 0) {
sg = "SET";
other_ret = 1;
}
#endif
#ifdef ETHTOOL_GFLAGS
if (GetEthtoolValue(dev, ETHTOOL_GFLAGS, &value) == 0) {
if (value & ETH_FLAG_LRO) {
......
}
#endif
if (other_ret == 0) {
SCLogPerf("NIC offloading on %s: SG: %s, GRO: %s, LRO: %s, "
"GSO: %s", dev, sg, gro, lro, gso);
SCLogPerf("NIC offloading on %s: GRO: %s, LRO: %s, "
"GSO: %s", dev, gro, lro, gso);
} else {
SCLogWarning(SC_ERR_NIC_OFFLOADING, "NIC offloading on %s: SG: %s, "
SCLogWarning(SC_ERR_NIC_OFFLOADING, "NIC offloading on %s: "
" GRO: %s, LRO: %s, GSO: %s. Run: "
"ethtool -K %s sg off gro off lro off gso off",
dev, sg, gro, lro, gso, dev);
"ethtool -K %s gro off lro off gso off",
dev, gro, lro, gso, dev);
ret = 1;
}
}
......
ldev->offload_orig |= OFFLOAD_FLAG_GSO;
}
#endif
#ifdef ETHTOOL_GSG
if (GetEthtoolValue(dev, ETHTOOL_GSG, &value) == 0 && value != 0) {
SCLogPerf("%s: disabling sg offloading", dev);
SetEthtoolValue(dev, ETHTOOL_SSG, 0);
ldev->offload_orig |= OFFLOAD_FLAG_SG;
}
#endif
#ifdef ETHTOOL_GFLAGS
if (GetEthtoolValue(dev, ETHTOOL_GFLAGS, &value) == 0) {
if (value & ETH_FLAG_LRO) {
......
SetEthtoolValue(dev, ETHTOOL_SGSO, 1);
}
#endif
#ifdef ETHTOOL_GSG
if (ldev->offload_orig & OFFLOAD_FLAG_SG) {
SCLogPerf("%s: restoring sg offloading", dev);
SetEthtoolValue(dev, ETHTOOL_SSG, 1);
}
#endif
#ifdef ETHTOOL_GFLAGS
if (ldev->offload_orig & OFFLOAD_FLAG_LRO) {
uint32_t value = 0;
(2-2/2)