diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/bonding/bond_main.c | 6 | ||||
-rw-r--r-- | drivers/net/gianfar.c | 24 | ||||
-rw-r--r-- | drivers/net/gianfar.h | 3 | ||||
-rw-r--r-- | drivers/net/r6040.c | 8 |
4 files changed, 29 insertions, 12 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index eafe44a528ac..63c22b0bb5ad 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
@@ -1428,9 +1428,9 @@ out: | |||
1428 | return features; | 1428 | return features; |
1429 | } | 1429 | } |
1430 | 1430 | ||
1431 | #define BOND_VLAN_FEATURES (NETIF_F_ALL_TX_OFFLOADS | \ | 1431 | #define BOND_VLAN_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | \ |
1432 | NETIF_F_SOFT_FEATURES | \ | 1432 | NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ |
1433 | NETIF_F_LRO) | 1433 | NETIF_F_HIGHDMA | NETIF_F_LRO) |
1434 | 1434 | ||
1435 | static void bond_compute_features(struct bonding *bond) | 1435 | static void bond_compute_features(struct bonding *bond) |
1436 | { | 1436 | { |
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index 2dfcc8047847..dfa55f94ba7f 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c | |||
@@ -2289,6 +2289,23 @@ static int gfar_set_mac_address(struct net_device *dev) | |||
2289 | return 0; | 2289 | return 0; |
2290 | } | 2290 | } |
2291 | 2291 | ||
2292 | /* Check if rx parser should be activated */ | ||
2293 | void gfar_check_rx_parser_mode(struct gfar_private *priv) | ||
2294 | { | ||
2295 | struct gfar __iomem *regs; | ||
2296 | u32 tempval; | ||
2297 | |||
2298 | regs = priv->gfargrp[0].regs; | ||
2299 | |||
2300 | tempval = gfar_read(®s->rctrl); | ||
2301 | /* If parse is no longer required, then disable parser */ | ||
2302 | if (tempval & RCTRL_REQ_PARSER) | ||
2303 | tempval |= RCTRL_PRSDEP_INIT; | ||
2304 | else | ||
2305 | tempval &= ~RCTRL_PRSDEP_INIT; | ||
2306 | gfar_write(®s->rctrl, tempval); | ||
2307 | } | ||
2308 | |||
2292 | 2309 | ||
2293 | /* Enables and disables VLAN insertion/extraction */ | 2310 | /* Enables and disables VLAN insertion/extraction */ |
2294 | static void gfar_vlan_rx_register(struct net_device *dev, | 2311 | static void gfar_vlan_rx_register(struct net_device *dev, |
@@ -2325,12 +2342,9 @@ static void gfar_vlan_rx_register(struct net_device *dev, | |||
2325 | /* Disable VLAN tag extraction */ | 2342 | /* Disable VLAN tag extraction */ |
2326 | tempval = gfar_read(®s->rctrl); | 2343 | tempval = gfar_read(®s->rctrl); |
2327 | tempval &= ~RCTRL_VLEX; | 2344 | tempval &= ~RCTRL_VLEX; |
2328 | /* If parse is no longer required, then disable parser */ | ||
2329 | if (tempval & RCTRL_REQ_PARSER) | ||
2330 | tempval |= RCTRL_PRSDEP_INIT; | ||
2331 | else | ||
2332 | tempval &= ~RCTRL_PRSDEP_INIT; | ||
2333 | gfar_write(®s->rctrl, tempval); | 2345 | gfar_write(®s->rctrl, tempval); |
2346 | |||
2347 | gfar_check_rx_parser_mode(priv); | ||
2334 | } | 2348 | } |
2335 | 2349 | ||
2336 | gfar_change_mtu(dev, dev->mtu); | 2350 | gfar_change_mtu(dev, dev->mtu); |
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h index ba36dc7a3435..440e69d8beff 100644 --- a/drivers/net/gianfar.h +++ b/drivers/net/gianfar.h | |||
@@ -274,7 +274,7 @@ extern const char gfar_driver_version[]; | |||
274 | #define RCTRL_PROM 0x00000008 | 274 | #define RCTRL_PROM 0x00000008 |
275 | #define RCTRL_EMEN 0x00000002 | 275 | #define RCTRL_EMEN 0x00000002 |
276 | #define RCTRL_REQ_PARSER (RCTRL_VLEX | RCTRL_IPCSEN | \ | 276 | #define RCTRL_REQ_PARSER (RCTRL_VLEX | RCTRL_IPCSEN | \ |
277 | RCTRL_TUCSEN) | 277 | RCTRL_TUCSEN | RCTRL_FILREN) |
278 | #define RCTRL_CHECKSUMMING (RCTRL_IPCSEN | RCTRL_TUCSEN | \ | 278 | #define RCTRL_CHECKSUMMING (RCTRL_IPCSEN | RCTRL_TUCSEN | \ |
279 | RCTRL_PRSDEP_INIT) | 279 | RCTRL_PRSDEP_INIT) |
280 | #define RCTRL_EXTHASH (RCTRL_GHTX) | 280 | #define RCTRL_EXTHASH (RCTRL_GHTX) |
@@ -1156,6 +1156,7 @@ extern void gfar_configure_coalescing(struct gfar_private *priv, | |||
1156 | unsigned long tx_mask, unsigned long rx_mask); | 1156 | unsigned long tx_mask, unsigned long rx_mask); |
1157 | void gfar_init_sysfs(struct net_device *dev); | 1157 | void gfar_init_sysfs(struct net_device *dev); |
1158 | int gfar_set_features(struct net_device *dev, u32 features); | 1158 | int gfar_set_features(struct net_device *dev, u32 features); |
1159 | extern void gfar_check_rx_parser_mode(struct gfar_private *priv); | ||
1159 | 1160 | ||
1160 | extern const struct ethtool_ops gfar_ethtool_ops; | 1161 | extern const struct ethtool_ops gfar_ethtool_ops; |
1161 | 1162 | ||
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c index 200a363c3bf5..0ffec4608441 100644 --- a/drivers/net/r6040.c +++ b/drivers/net/r6040.c | |||
@@ -677,9 +677,11 @@ static irqreturn_t r6040_interrupt(int irq, void *dev_id) | |||
677 | if (status & RX_FIFO_FULL) | 677 | if (status & RX_FIFO_FULL) |
678 | dev->stats.rx_fifo_errors++; | 678 | dev->stats.rx_fifo_errors++; |
679 | 679 | ||
680 | /* Mask off RX interrupt */ | 680 | if (likely(napi_schedule_prep(&lp->napi))) { |
681 | misr &= ~RX_INTS; | 681 | /* Mask off RX interrupt */ |
682 | napi_schedule(&lp->napi); | 682 | misr &= ~RX_INTS; |
683 | __napi_schedule(&lp->napi); | ||
684 | } | ||
683 | } | 685 | } |
684 | 686 | ||
685 | /* TX interrupt request */ | 687 | /* TX interrupt request */ |