diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/core/ethtool.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/net/core/ethtool.c b/net/core/ethtool.c index 31b1eddc1b84..0f2f82185ec4 100644 --- a/net/core/ethtool.c +++ b/net/core/ethtool.c | |||
@@ -135,21 +135,23 @@ u32 ethtool_op_get_flags(struct net_device *dev) | |||
135 | int ethtool_op_set_flags(struct net_device *dev, u32 data) | 135 | int ethtool_op_set_flags(struct net_device *dev, u32 data) |
136 | { | 136 | { |
137 | const struct ethtool_ops *ops = dev->ethtool_ops; | 137 | const struct ethtool_ops *ops = dev->ethtool_ops; |
138 | unsigned long features = dev->features; | ||
138 | 139 | ||
139 | if (data & ETH_FLAG_LRO) | 140 | if (data & ETH_FLAG_LRO) |
140 | dev->features |= NETIF_F_LRO; | 141 | features |= NETIF_F_LRO; |
141 | else | 142 | else |
142 | dev->features &= ~NETIF_F_LRO; | 143 | features &= ~NETIF_F_LRO; |
143 | 144 | ||
144 | if (data & ETH_FLAG_NTUPLE) { | 145 | if (data & ETH_FLAG_NTUPLE) { |
145 | if (!ops->set_rx_ntuple) | 146 | if (!ops->set_rx_ntuple) |
146 | return -EOPNOTSUPP; | 147 | return -EOPNOTSUPP; |
147 | dev->features |= NETIF_F_NTUPLE; | 148 | features |= NETIF_F_NTUPLE; |
148 | } else { | 149 | } else { |
149 | /* safe to clear regardless */ | 150 | /* safe to clear regardless */ |
150 | dev->features &= ~NETIF_F_NTUPLE; | 151 | features &= ~NETIF_F_NTUPLE; |
151 | } | 152 | } |
152 | 153 | ||
154 | dev->features = features; | ||
153 | return 0; | 155 | return 0; |
154 | } | 156 | } |
155 | 157 | ||