X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdpif-linux.c;h=da48c685a0ccbed91e6200bf1758892fe2fc5d54;hb=24b019f808211a95078efd916064af0975ca5733;hp=55d22b40ca4845893c8d2da312b35875359df97c;hpb=e47bd51a7b2ae66b00c19cc86f7dcb1eeb4ad105;p=sliver-openvswitch.git diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c index 55d22b40c..da48c685a 100644 --- a/lib/dpif-linux.c +++ b/lib/dpif-linux.c @@ -60,6 +60,10 @@ enum { LRU_MAX_PORTS = 1024 }; enum { LRU_MASK = LRU_MAX_PORTS - 1}; BUILD_ASSERT_DECL(IS_POW2(LRU_MAX_PORTS)); +/* This ethtool flag was introduced in Linux 2.6.24, so it might be + * missing if we have old headers. */ +#define ETH_FLAG_LRO (1 << 15) /* LRO is enabled */ + struct dpif_linux_dp { /* Generic Netlink header. */ uint8_t cmd; @@ -393,6 +397,10 @@ dpif_linux_port_add(struct dpif *dpif_, struct netdev *netdev, request.options_len = options->size; } + if (request.type == OVS_VPORT_TYPE_NETDEV) { + netdev_linux_ethtool_set_flag(netdev, ETH_FLAG_LRO, "LRO", false); + } + /* Loop until we find a port that isn't used. */ do { request.port_no = dpif_linux_pop_port(dpif);