netfilter: fix hardware offload regression (FS#1551)
[openwrt/openwrt.git] / target / linux / generic / pending-4.14 / 643-net-bridge-support-hardware-flow-table-offload.patch
index 3158714f541037615fc027e26b9f0cb34c7dfd41..a070fe16362af4380a8d033a63db814a99c16f73 100644 (file)
@@ -9,19 +9,22 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/bridge/br_device.c
 +++ b/net/bridge/br_device.c
-@@ -18,6 +18,8 @@
+@@ -18,6 +18,10 @@
  #include <linux/ethtool.h>
  #include <linux/list.h>
  #include <linux/netfilter_bridge.h>
++#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
 +#include <linux/netfilter.h>
 +#include <net/netfilter/nf_flow_table.h>
++#endif
  
  #include <linux/uaccess.h>
  #include "br_private.h"
-@@ -340,6 +342,26 @@ static const struct ethtool_ops br_ethto
+@@ -340,6 +344,28 @@ static const struct ethtool_ops br_ethto
        .get_link       = ethtool_op_get_link,
  };
  
++#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
 +static int br_flow_offload_check(struct flow_offload_hw_path *path)
 +{
 +      struct net_device *dev = path->dev;
@@ -41,15 +44,18 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +
 +      return 0;
 +}
++#endif /* CONFIG_NF_FLOW_TABLE */
 +
  static const struct net_device_ops br_netdev_ops = {
        .ndo_open                = br_dev_open,
        .ndo_stop                = br_dev_stop,
-@@ -367,6 +389,7 @@ static const struct net_device_ops br_ne
+@@ -367,6 +393,9 @@ static const struct net_device_ops br_ne
        .ndo_bridge_setlink      = br_setlink,
        .ndo_bridge_dellink      = br_dellink,
        .ndo_features_check      = passthru_features_check,
++#if IS_ENABLED(CONFIG_NF_FLOW_TABLE)
 +      .ndo_flow_offload_check  = br_flow_offload_check,
++#endif
  };
  
  static struct device_type br_type = {