diff options
Diffstat (limited to 'net/bridge')
| -rw-r--r-- | net/bridge/br_device.c | 2 | ||||
| -rw-r--r-- | net/bridge/br_if.c | 14 |
2 files changed, 11 insertions, 5 deletions
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index 22ba8632196f..6c023f0f8252 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c | |||
| @@ -179,5 +179,5 @@ void br_dev_setup(struct net_device *dev) | |||
| 179 | 179 | ||
| 180 | dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HIGHDMA | | 180 | dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HIGHDMA | |
| 181 | NETIF_F_GSO_MASK | NETIF_F_NO_CSUM | NETIF_F_LLTX | | 181 | NETIF_F_GSO_MASK | NETIF_F_NO_CSUM | NETIF_F_LLTX | |
| 182 | NETIF_F_NETNS_LOCAL; | 182 | NETIF_F_NETNS_LOCAL | NETIF_F_GSO; |
| 183 | } | 183 | } |
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c index 573e20f7dba4..0a09ccf68c1c 100644 --- a/net/bridge/br_if.c +++ b/net/bridge/br_if.c | |||
| @@ -347,15 +347,21 @@ int br_min_mtu(const struct net_bridge *br) | |||
| 347 | void br_features_recompute(struct net_bridge *br) | 347 | void br_features_recompute(struct net_bridge *br) |
| 348 | { | 348 | { |
| 349 | struct net_bridge_port *p; | 349 | struct net_bridge_port *p; |
| 350 | unsigned long features; | 350 | unsigned long features, mask; |
| 351 | 351 | ||
| 352 | features = br->feature_mask; | 352 | features = mask = br->feature_mask; |
| 353 | if (list_empty(&br->port_list)) | ||
| 354 | goto done; | ||
| 355 | |||
| 356 | features &= ~NETIF_F_ONE_FOR_ALL; | ||
| 353 | 357 | ||
| 354 | list_for_each_entry(p, &br->port_list, list) { | 358 | list_for_each_entry(p, &br->port_list, list) { |
| 355 | features = netdev_compute_features(features, p->dev->features); | 359 | features = netdev_increment_features(features, |
| 360 | p->dev->features, mask); | ||
| 356 | } | 361 | } |
| 357 | 362 | ||
| 358 | br->dev->features = features; | 363 | done: |
| 364 | br->dev->features = netdev_fix_features(features, NULL); | ||
| 359 | } | 365 | } |
| 360 | 366 | ||
| 361 | /* called with RTNL */ | 367 | /* called with RTNL */ |
