aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/bonding/bond_main.c6
-rw-r--r--drivers/net/gianfar.c24
-rw-r--r--drivers/net/gianfar.h3
-rw-r--r--drivers/net/pppoe.c3
-rw-r--r--drivers/net/r6040.c8
-rw-r--r--drivers/net/tulip/dmfe.c4
6 files changed, 31 insertions, 17 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 61265f74ed3..b9eaf5c0dc7 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1415,9 +1415,9 @@ out:
1415 return features; 1415 return features;
1416} 1416}
1417 1417
1418#define BOND_VLAN_FEATURES (NETIF_F_ALL_TX_OFFLOADS | \ 1418#define BOND_VLAN_FEATURES (NETIF_F_ALL_CSUM | NETIF_F_SG | \
1419 NETIF_F_SOFT_FEATURES | \ 1419 NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \
1420 NETIF_F_LRO) 1420 NETIF_F_HIGHDMA | NETIF_F_LRO)
1421 1421
1422static void bond_compute_features(struct bonding *bond) 1422static void bond_compute_features(struct bonding *bond)
1423{ 1423{
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index 3321d714ca2..d265c6e1387 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -2287,6 +2287,23 @@ static int gfar_set_mac_address(struct net_device *dev)
2287 return 0; 2287 return 0;
2288} 2288}
2289 2289
2290/* Check if rx parser should be activated */
2291void gfar_check_rx_parser_mode(struct gfar_private *priv)
2292{
2293 struct gfar __iomem *regs;
2294 u32 tempval;
2295
2296 regs = priv->gfargrp[0].regs;
2297
2298 tempval = gfar_read(&regs->rctrl);
2299 /* If parse is no longer required, then disable parser */
2300 if (tempval & RCTRL_REQ_PARSER)
2301 tempval |= RCTRL_PRSDEP_INIT;
2302 else
2303 tempval &= ~RCTRL_PRSDEP_INIT;
2304 gfar_write(&regs->rctrl, tempval);
2305}
2306
2290 2307
2291/* Enables and disables VLAN insertion/extraction */ 2308/* Enables and disables VLAN insertion/extraction */
2292static void gfar_vlan_rx_register(struct net_device *dev, 2309static void gfar_vlan_rx_register(struct net_device *dev,
@@ -2323,12 +2340,9 @@ static void gfar_vlan_rx_register(struct net_device *dev,
2323 /* Disable VLAN tag extraction */ 2340 /* Disable VLAN tag extraction */
2324 tempval = gfar_read(&regs->rctrl); 2341 tempval = gfar_read(&regs->rctrl);
2325 tempval &= ~RCTRL_VLEX; 2342 tempval &= ~RCTRL_VLEX;
2326 /* If parse is no longer required, then disable parser */
2327 if (tempval & RCTRL_REQ_PARSER)
2328 tempval |= RCTRL_PRSDEP_INIT;
2329 else
2330 tempval &= ~RCTRL_PRSDEP_INIT;
2331 gfar_write(&regs->rctrl, tempval); 2343 gfar_write(&regs->rctrl, tempval);
2344
2345 gfar_check_rx_parser_mode(priv);
2332 } 2346 }
2333 2347
2334 gfar_change_mtu(dev, dev->mtu); 2348 gfar_change_mtu(dev, dev->mtu);
diff --git a/drivers/net/gianfar.h b/drivers/net/gianfar.h
index 27499c606a4..87c1d8608b7 100644
--- a/drivers/net/gianfar.h
+++ b/drivers/net/gianfar.h
@@ -286,7 +286,7 @@ extern const char gfar_driver_version[];
286#define RCTRL_PROM 0x00000008 286#define RCTRL_PROM 0x00000008
287#define RCTRL_EMEN 0x00000002 287#define RCTRL_EMEN 0x00000002
288#define RCTRL_REQ_PARSER (RCTRL_VLEX | RCTRL_IPCSEN | \ 288#define RCTRL_REQ_PARSER (RCTRL_VLEX | RCTRL_IPCSEN | \
289 RCTRL_TUCSEN) 289 RCTRL_TUCSEN | RCTRL_FILREN)
290#define RCTRL_CHECKSUMMING (RCTRL_IPCSEN | RCTRL_TUCSEN | \ 290#define RCTRL_CHECKSUMMING (RCTRL_IPCSEN | RCTRL_TUCSEN | \
291 RCTRL_PRSDEP_INIT) 291 RCTRL_PRSDEP_INIT)
292#define RCTRL_EXTHASH (RCTRL_GHTX) 292#define RCTRL_EXTHASH (RCTRL_GHTX)
@@ -1182,6 +1182,7 @@ extern void gfar_configure_coalescing(struct gfar_private *priv,
1182 unsigned long tx_mask, unsigned long rx_mask); 1182 unsigned long tx_mask, unsigned long rx_mask);
1183void gfar_init_sysfs(struct net_device *dev); 1183void gfar_init_sysfs(struct net_device *dev);
1184int gfar_set_features(struct net_device *dev, u32 features); 1184int gfar_set_features(struct net_device *dev, u32 features);
1185extern void gfar_check_rx_parser_mode(struct gfar_private *priv);
1185 1186
1186extern const struct ethtool_ops gfar_ethtool_ops; 1187extern const struct ethtool_ops gfar_ethtool_ops;
1187 1188
diff --git a/drivers/net/pppoe.c b/drivers/net/pppoe.c
index 718879b35b7..bc9a4bb3198 100644
--- a/drivers/net/pppoe.c
+++ b/drivers/net/pppoe.c
@@ -348,8 +348,9 @@ static int pppoe_device_event(struct notifier_block *this,
348 348
349 /* Only look at sockets that are using this specific device. */ 349 /* Only look at sockets that are using this specific device. */
350 switch (event) { 350 switch (event) {
351 case NETDEV_CHANGEADDR:
351 case NETDEV_CHANGEMTU: 352 case NETDEV_CHANGEMTU:
352 /* A change in mtu is a bad thing, requiring 353 /* A change in mtu or address is a bad thing, requiring
353 * LCP re-negotiation. 354 * LCP re-negotiation.
354 */ 355 */
355 356
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c
index 00f06e9a779..b64fcee483a 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 */
diff --git a/drivers/net/tulip/dmfe.c b/drivers/net/tulip/dmfe.c
index 46851273196..9a21ca3873f 100644
--- a/drivers/net/tulip/dmfe.c
+++ b/drivers/net/tulip/dmfe.c
@@ -879,7 +879,6 @@ static void dmfe_free_tx_pkt(struct DEVICE *dev, struct dmfe_board_info * db)
879 txptr = db->tx_remove_ptr; 879 txptr = db->tx_remove_ptr;
880 while(db->tx_packet_cnt) { 880 while(db->tx_packet_cnt) {
881 tdes0 = le32_to_cpu(txptr->tdes0); 881 tdes0 = le32_to_cpu(txptr->tdes0);
882 pr_debug("tdes0=%x\n", tdes0);
883 if (tdes0 & 0x80000000) 882 if (tdes0 & 0x80000000)
884 break; 883 break;
885 884
@@ -889,7 +888,6 @@ static void dmfe_free_tx_pkt(struct DEVICE *dev, struct dmfe_board_info * db)
889 888
890 /* Transmit statistic counter */ 889 /* Transmit statistic counter */
891 if ( tdes0 != 0x7fffffff ) { 890 if ( tdes0 != 0x7fffffff ) {
892 pr_debug("tdes0=%x\n", tdes0);
893 dev->stats.collisions += (tdes0 >> 3) & 0xf; 891 dev->stats.collisions += (tdes0 >> 3) & 0xf;
894 dev->stats.tx_bytes += le32_to_cpu(txptr->tdes1) & 0x7ff; 892 dev->stats.tx_bytes += le32_to_cpu(txptr->tdes1) & 0x7ff;
895 if (tdes0 & TDES0_ERR_MASK) { 893 if (tdes0 & TDES0_ERR_MASK) {
@@ -986,7 +984,6 @@ static void dmfe_rx_packet(struct DEVICE *dev, struct dmfe_board_info * db)
986 /* error summary bit check */ 984 /* error summary bit check */
987 if (rdes0 & 0x8000) { 985 if (rdes0 & 0x8000) {
988 /* This is a error packet */ 986 /* This is a error packet */
989 pr_debug("rdes0: %x\n", rdes0);
990 dev->stats.rx_errors++; 987 dev->stats.rx_errors++;
991 if (rdes0 & 1) 988 if (rdes0 & 1)
992 dev->stats.rx_fifo_errors++; 989 dev->stats.rx_fifo_errors++;
@@ -1638,7 +1635,6 @@ static u8 dmfe_sense_speed(struct dmfe_board_info * db)
1638 else /* DM9102/DM9102A */ 1635 else /* DM9102/DM9102A */
1639 phy_mode = phy_read(db->ioaddr, 1636 phy_mode = phy_read(db->ioaddr,
1640 db->phy_addr, 17, db->chip_id) & 0xf000; 1637 db->phy_addr, 17, db->chip_id) & 0xf000;
1641 pr_debug("Phy_mode %x\n", phy_mode);
1642 switch (phy_mode) { 1638 switch (phy_mode) {
1643 case 0x1000: db->op_mode = DMFE_10MHF; break; 1639 case 0x1000: db->op_mode = DMFE_10MHF; break;
1644 case 0x2000: db->op_mode = DMFE_10MFD; break; 1640 case 0x2000: db->op_mode = DMFE_10MFD; break;