diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-03-25 13:05:37 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-03-25 13:05:37 -0400 |
| commit | 2849a3a945d0e440fa245c47c49c80ef1cc103c3 (patch) | |
| tree | 616868130f4b8a063cfa1c138135c10247a4da0e /drivers/net/ethernet | |
| parent | 417c765af914106f5e76c4e0181dd555fe6a89a0 (diff) | |
| parent | 8bb9660418e05bb1845ac1a2428444d78e322cc7 (diff) | |
Merge 3.9-rc4 into usb-next
This picks up the fixes we had for USB in 3.9-rc4
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/net/ethernet')
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h | 3 | ||||
| -rw-r--r-- | drivers/net/ethernet/broadcom/tg3.c | 8 | ||||
| -rw-r--r-- | drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | 12 | ||||
| -rw-r--r-- | drivers/net/ethernet/dec/tulip/Kconfig | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/freescale/fec.c | 27 | ||||
| -rw-r--r-- | drivers/net/ethernet/freescale/fec.h | 1 | ||||
| -rw-r--r-- | drivers/net/ethernet/sfc/nic.c | 3 | ||||
| -rw-r--r-- | drivers/net/ethernet/ti/cpsw.c | 2 | ||||
| -rw-r--r-- | drivers/net/ethernet/ti/davinci_emac.c | 2 |
10 files changed, 42 insertions, 18 deletions
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index a923bc4d5a1f..4046f97378c2 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | |||
| @@ -2760,6 +2760,7 @@ load_error2: | |||
| 2760 | bp->port.pmf = 0; | 2760 | bp->port.pmf = 0; |
| 2761 | load_error1: | 2761 | load_error1: |
| 2762 | bnx2x_napi_disable(bp); | 2762 | bnx2x_napi_disable(bp); |
| 2763 | bnx2x_del_all_napi(bp); | ||
| 2763 | 2764 | ||
| 2764 | /* clear pf_load status, as it was already set */ | 2765 | /* clear pf_load status, as it was already set */ |
| 2765 | if (IS_PF(bp)) | 2766 | if (IS_PF(bp)) |
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h index 364e37ecbc5c..198f6f1c9ad5 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.h | |||
| @@ -459,8 +459,9 @@ struct bnx2x_fw_port_stats_old { | |||
| 459 | 459 | ||
| 460 | #define UPDATE_QSTAT(s, t) \ | 460 | #define UPDATE_QSTAT(s, t) \ |
| 461 | do { \ | 461 | do { \ |
| 462 | qstats->t##_hi = qstats_old->t##_hi + le32_to_cpu(s.hi); \ | ||
| 463 | qstats->t##_lo = qstats_old->t##_lo + le32_to_cpu(s.lo); \ | 462 | qstats->t##_lo = qstats_old->t##_lo + le32_to_cpu(s.lo); \ |
| 463 | qstats->t##_hi = qstats_old->t##_hi + le32_to_cpu(s.hi) \ | ||
| 464 | + ((qstats->t##_lo < qstats_old->t##_lo) ? 1 : 0); \ | ||
| 464 | } while (0) | 465 | } while (0) |
| 465 | 466 | ||
| 466 | #define UPDATE_QSTAT_OLD(f) \ | 467 | #define UPDATE_QSTAT_OLD(f) \ |
diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c index 93729f942358..67d2663b3974 100644 --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c | |||
| @@ -4130,6 +4130,14 @@ static void tg3_phy_copper_begin(struct tg3 *tp) | |||
| 4130 | tp->link_config.active_speed = tp->link_config.speed; | 4130 | tp->link_config.active_speed = tp->link_config.speed; |
| 4131 | tp->link_config.active_duplex = tp->link_config.duplex; | 4131 | tp->link_config.active_duplex = tp->link_config.duplex; |
| 4132 | 4132 | ||
| 4133 | if (tg3_asic_rev(tp) == ASIC_REV_5714) { | ||
| 4134 | /* With autoneg disabled, 5715 only links up when the | ||
| 4135 | * advertisement register has the configured speed | ||
| 4136 | * enabled. | ||
| 4137 | */ | ||
| 4138 | tg3_writephy(tp, MII_ADVERTISE, ADVERTISE_ALL); | ||
| 4139 | } | ||
| 4140 | |||
| 4133 | bmcr = 0; | 4141 | bmcr = 0; |
| 4134 | switch (tp->link_config.speed) { | 4142 | switch (tp->link_config.speed) { |
| 4135 | default: | 4143 | default: |
diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c index 4ce62031f62f..8049268ce0f2 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c +++ b/drivers/net/ethernet/chelsio/cxgb4/t4_hw.c | |||
| @@ -497,8 +497,9 @@ int t4_memory_write(struct adapter *adap, int mtype, u32 addr, u32 len, | |||
| 497 | } | 497 | } |
| 498 | 498 | ||
| 499 | #define EEPROM_STAT_ADDR 0x7bfc | 499 | #define EEPROM_STAT_ADDR 0x7bfc |
| 500 | #define VPD_BASE 0 | ||
| 501 | #define VPD_LEN 512 | 500 | #define VPD_LEN 512 |
| 501 | #define VPD_BASE 0x400 | ||
| 502 | #define VPD_BASE_OLD 0 | ||
| 502 | 503 | ||
| 503 | /** | 504 | /** |
| 504 | * t4_seeprom_wp - enable/disable EEPROM write protection | 505 | * t4_seeprom_wp - enable/disable EEPROM write protection |
| @@ -524,7 +525,7 @@ int t4_seeprom_wp(struct adapter *adapter, bool enable) | |||
| 524 | int get_vpd_params(struct adapter *adapter, struct vpd_params *p) | 525 | int get_vpd_params(struct adapter *adapter, struct vpd_params *p) |
| 525 | { | 526 | { |
| 526 | u32 cclk_param, cclk_val; | 527 | u32 cclk_param, cclk_val; |
| 527 | int i, ret; | 528 | int i, ret, addr; |
| 528 | int ec, sn; | 529 | int ec, sn; |
| 529 | u8 *vpd, csum; | 530 | u8 *vpd, csum; |
| 530 | unsigned int vpdr_len, kw_offset, id_len; | 531 | unsigned int vpdr_len, kw_offset, id_len; |
| @@ -533,7 +534,12 @@ int get_vpd_params(struct adapter *adapter, struct vpd_params *p) | |||
| 533 | if (!vpd) | 534 | if (!vpd) |
| 534 | return -ENOMEM; | 535 | return -ENOMEM; |
| 535 | 536 | ||
| 536 | ret = pci_read_vpd(adapter->pdev, VPD_BASE, VPD_LEN, vpd); | 537 | ret = pci_read_vpd(adapter->pdev, VPD_BASE, sizeof(u32), vpd); |
| 538 | if (ret < 0) | ||
| 539 | goto out; | ||
| 540 | addr = *vpd == 0x82 ? VPD_BASE : VPD_BASE_OLD; | ||
| 541 | |||
| 542 | ret = pci_read_vpd(adapter->pdev, addr, VPD_LEN, vpd); | ||
| 537 | if (ret < 0) | 543 | if (ret < 0) |
| 538 | goto out; | 544 | goto out; |
| 539 | 545 | ||
diff --git a/drivers/net/ethernet/dec/tulip/Kconfig b/drivers/net/ethernet/dec/tulip/Kconfig index 0c37fb2cc867..1df33c799c00 100644 --- a/drivers/net/ethernet/dec/tulip/Kconfig +++ b/drivers/net/ethernet/dec/tulip/Kconfig | |||
| @@ -108,6 +108,7 @@ config TULIP_DM910X | |||
| 108 | config DE4X5 | 108 | config DE4X5 |
| 109 | tristate "Generic DECchip & DIGITAL EtherWORKS PCI/EISA" | 109 | tristate "Generic DECchip & DIGITAL EtherWORKS PCI/EISA" |
| 110 | depends on (PCI || EISA) | 110 | depends on (PCI || EISA) |
| 111 | depends on VIRT_TO_BUS || ALPHA || PPC || SPARC | ||
| 111 | select CRC32 | 112 | select CRC32 |
| 112 | ---help--- | 113 | ---help--- |
| 113 | This is support for the DIGITAL series of PCI/EISA Ethernet cards. | 114 | This is support for the DIGITAL series of PCI/EISA Ethernet cards. |
diff --git a/drivers/net/ethernet/freescale/fec.c b/drivers/net/ethernet/freescale/fec.c index 069a155d16ed..e3f39372ce25 100644 --- a/drivers/net/ethernet/freescale/fec.c +++ b/drivers/net/ethernet/freescale/fec.c | |||
| @@ -934,24 +934,28 @@ static void fec_enet_adjust_link(struct net_device *ndev) | |||
| 934 | goto spin_unlock; | 934 | goto spin_unlock; |
| 935 | } | 935 | } |
| 936 | 936 | ||
| 937 | /* Duplex link change */ | ||
| 938 | if (phy_dev->link) { | 937 | if (phy_dev->link) { |
| 939 | if (fep->full_duplex != phy_dev->duplex) { | 938 | if (!fep->link) { |
| 940 | fec_restart(ndev, phy_dev->duplex); | ||
| 941 | /* prevent unnecessary second fec_restart() below */ | ||
| 942 | fep->link = phy_dev->link; | 939 | fep->link = phy_dev->link; |
| 943 | status_change = 1; | 940 | status_change = 1; |
| 944 | } | 941 | } |
| 945 | } | ||
| 946 | 942 | ||
| 947 | /* Link on or off change */ | 943 | if (fep->full_duplex != phy_dev->duplex) |
| 948 | if (phy_dev->link != fep->link) { | 944 | status_change = 1; |
| 949 | fep->link = phy_dev->link; | 945 | |
| 950 | if (phy_dev->link) | 946 | if (phy_dev->speed != fep->speed) { |
| 947 | fep->speed = phy_dev->speed; | ||
| 948 | status_change = 1; | ||
| 949 | } | ||
| 950 | |||
| 951 | /* if any of the above changed restart the FEC */ | ||
| 952 | if (status_change) | ||
| 951 | fec_restart(ndev, phy_dev->duplex); | 953 | fec_restart(ndev, phy_dev->duplex); |
| 952 | else | 954 | } else { |
| 955 | if (fep->link) { | ||
| 953 | fec_stop(ndev); | 956 | fec_stop(ndev); |
| 954 | status_change = 1; | 957 | status_change = 1; |
| 958 | } | ||
| 955 | } | 959 | } |
| 956 | 960 | ||
| 957 | spin_unlock: | 961 | spin_unlock: |
| @@ -1437,6 +1441,7 @@ fec_enet_close(struct net_device *ndev) | |||
| 1437 | struct fec_enet_private *fep = netdev_priv(ndev); | 1441 | struct fec_enet_private *fep = netdev_priv(ndev); |
| 1438 | 1442 | ||
| 1439 | /* Don't know what to do yet. */ | 1443 | /* Don't know what to do yet. */ |
| 1444 | napi_disable(&fep->napi); | ||
| 1440 | fep->opened = 0; | 1445 | fep->opened = 0; |
| 1441 | netif_stop_queue(ndev); | 1446 | netif_stop_queue(ndev); |
| 1442 | fec_stop(ndev); | 1447 | fec_stop(ndev); |
diff --git a/drivers/net/ethernet/freescale/fec.h b/drivers/net/ethernet/freescale/fec.h index f5390071efd0..eb4372962839 100644 --- a/drivers/net/ethernet/freescale/fec.h +++ b/drivers/net/ethernet/freescale/fec.h | |||
| @@ -240,6 +240,7 @@ struct fec_enet_private { | |||
| 240 | phy_interface_t phy_interface; | 240 | phy_interface_t phy_interface; |
| 241 | int link; | 241 | int link; |
| 242 | int full_duplex; | 242 | int full_duplex; |
| 243 | int speed; | ||
| 243 | struct completion mdio_done; | 244 | struct completion mdio_done; |
| 244 | int irq[FEC_IRQ_NUM]; | 245 | int irq[FEC_IRQ_NUM]; |
| 245 | int bufdesc_ex; | 246 | int bufdesc_ex; |
diff --git a/drivers/net/ethernet/sfc/nic.c b/drivers/net/ethernet/sfc/nic.c index 0ad790cc473c..eaa8e874a3cb 100644 --- a/drivers/net/ethernet/sfc/nic.c +++ b/drivers/net/ethernet/sfc/nic.c | |||
| @@ -376,7 +376,8 @@ efx_may_push_tx_desc(struct efx_tx_queue *tx_queue, unsigned int write_count) | |||
| 376 | return false; | 376 | return false; |
| 377 | 377 | ||
| 378 | tx_queue->empty_read_count = 0; | 378 | tx_queue->empty_read_count = 0; |
| 379 | return ((empty_read_count ^ write_count) & ~EFX_EMPTY_COUNT_VALID) == 0; | 379 | return ((empty_read_count ^ write_count) & ~EFX_EMPTY_COUNT_VALID) == 0 |
| 380 | && tx_queue->write_count - write_count == 1; | ||
| 380 | } | 381 | } |
| 381 | 382 | ||
| 382 | /* For each entry inserted into the software descriptor ring, create a | 383 | /* For each entry inserted into the software descriptor ring, create a |
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c index 01ffbc486982..75c48558e6fd 100644 --- a/drivers/net/ethernet/ti/cpsw.c +++ b/drivers/net/ethernet/ti/cpsw.c | |||
| @@ -905,7 +905,7 @@ static netdev_tx_t cpsw_ndo_start_xmit(struct sk_buff *skb, | |||
| 905 | /* If there is no more tx desc left free then we need to | 905 | /* If there is no more tx desc left free then we need to |
| 906 | * tell the kernel to stop sending us tx frames. | 906 | * tell the kernel to stop sending us tx frames. |
| 907 | */ | 907 | */ |
| 908 | if (unlikely(cpdma_check_free_tx_desc(priv->txch))) | 908 | if (unlikely(!cpdma_check_free_tx_desc(priv->txch))) |
| 909 | netif_stop_queue(ndev); | 909 | netif_stop_queue(ndev); |
| 910 | 910 | ||
| 911 | return NETDEV_TX_OK; | 911 | return NETDEV_TX_OK; |
diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c index 52c05366599a..ae1b77aa199f 100644 --- a/drivers/net/ethernet/ti/davinci_emac.c +++ b/drivers/net/ethernet/ti/davinci_emac.c | |||
| @@ -1102,7 +1102,7 @@ static int emac_dev_xmit(struct sk_buff *skb, struct net_device *ndev) | |||
| 1102 | /* If there is no more tx desc left free then we need to | 1102 | /* If there is no more tx desc left free then we need to |
| 1103 | * tell the kernel to stop sending us tx frames. | 1103 | * tell the kernel to stop sending us tx frames. |
| 1104 | */ | 1104 | */ |
| 1105 | if (unlikely(cpdma_check_free_tx_desc(priv->txchan))) | 1105 | if (unlikely(!cpdma_check_free_tx_desc(priv->txchan))) |
| 1106 | netif_stop_queue(ndev); | 1106 | netif_stop_queue(ndev); |
| 1107 | 1107 | ||
| 1108 | return NETDEV_TX_OK; | 1108 | return NETDEV_TX_OK; |
