diff options
Diffstat (limited to 'drivers/net/jme.c')
-rw-r--r-- | drivers/net/jme.c | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/drivers/net/jme.c b/drivers/net/jme.c index a6e1a35a13cb..860dcd98a07c 100644 --- a/drivers/net/jme.c +++ b/drivers/net/jme.c | |||
@@ -429,10 +429,9 @@ jme_check_link(struct net_device *netdev, int testonly) | |||
429 | 429 | ||
430 | jme->phylink = phylink; | 430 | jme->phylink = phylink; |
431 | 431 | ||
432 | ghc = jme->reg_ghc & ~(GHC_SPEED_10M | | 432 | ghc = jme->reg_ghc & ~(GHC_SPEED | GHC_DPX | |
433 | GHC_SPEED_100M | | 433 | GHC_TO_CLK_PCIE | GHC_TXMAC_CLK_PCIE | |
434 | GHC_SPEED_1000M | | 434 | GHC_TO_CLK_GPHY | GHC_TXMAC_CLK_GPHY); |
435 | GHC_DPX); | ||
436 | switch (phylink & PHY_LINK_SPEED_MASK) { | 435 | switch (phylink & PHY_LINK_SPEED_MASK) { |
437 | case PHY_LINK_SPEED_10M: | 436 | case PHY_LINK_SPEED_10M: |
438 | ghc |= GHC_SPEED_10M | | 437 | ghc |= GHC_SPEED_10M | |
@@ -1834,7 +1833,7 @@ jme_tx_vlan(struct sk_buff *skb, __le16 *vlan, u8 *flags) | |||
1834 | } | 1833 | } |
1835 | 1834 | ||
1836 | static int | 1835 | static int |
1837 | jme_fill_first_tx_desc(struct jme_adapter *jme, struct sk_buff *skb, int idx) | 1836 | jme_fill_tx_desc(struct jme_adapter *jme, struct sk_buff *skb, int idx) |
1838 | { | 1837 | { |
1839 | struct jme_ring *txring = jme->txring; | 1838 | struct jme_ring *txring = jme->txring; |
1840 | struct txdesc *txdesc; | 1839 | struct txdesc *txdesc; |
@@ -1864,6 +1863,7 @@ jme_fill_first_tx_desc(struct jme_adapter *jme, struct sk_buff *skb, int idx) | |||
1864 | if (jme_tx_tso(skb, &txdesc->desc1.mss, &flags)) | 1863 | if (jme_tx_tso(skb, &txdesc->desc1.mss, &flags)) |
1865 | jme_tx_csum(jme, skb, &flags); | 1864 | jme_tx_csum(jme, skb, &flags); |
1866 | jme_tx_vlan(skb, &txdesc->desc1.vlan, &flags); | 1865 | jme_tx_vlan(skb, &txdesc->desc1.vlan, &flags); |
1866 | jme_map_tx_skb(jme, skb, idx); | ||
1867 | txdesc->desc1.flags = flags; | 1867 | txdesc->desc1.flags = flags; |
1868 | /* | 1868 | /* |
1869 | * Set tx buffer info after telling NIC to send | 1869 | * Set tx buffer info after telling NIC to send |
@@ -1933,8 +1933,7 @@ jme_start_xmit(struct sk_buff *skb, struct net_device *netdev) | |||
1933 | return NETDEV_TX_BUSY; | 1933 | return NETDEV_TX_BUSY; |
1934 | } | 1934 | } |
1935 | 1935 | ||
1936 | jme_map_tx_skb(jme, skb, idx); | 1936 | jme_fill_tx_desc(jme, skb, idx); |
1937 | jme_fill_first_tx_desc(jme, skb, idx); | ||
1938 | 1937 | ||
1939 | jwrite32(jme, JME_TXCS, jme->reg_txcs | | 1938 | jwrite32(jme, JME_TXCS, jme->reg_txcs | |
1940 | TXCS_SELECT_QUEUE0 | | 1939 | TXCS_SELECT_QUEUE0 | |
@@ -2591,6 +2590,16 @@ static const struct ethtool_ops jme_ethtool_ops = { | |||
2591 | static int | 2590 | static int |
2592 | jme_pci_dma64(struct pci_dev *pdev) | 2591 | jme_pci_dma64(struct pci_dev *pdev) |
2593 | { | 2592 | { |
2593 | if (pdev->device == PCI_DEVICE_ID_JMICRON_JMC250 && | ||
2594 | !pci_set_dma_mask(pdev, DMA_64BIT_MASK)) | ||
2595 | if (!pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK)) | ||
2596 | return 1; | ||
2597 | |||
2598 | if (pdev->device == PCI_DEVICE_ID_JMICRON_JMC250 && | ||
2599 | !pci_set_dma_mask(pdev, DMA_40BIT_MASK)) | ||
2600 | if (!pci_set_consistent_dma_mask(pdev, DMA_40BIT_MASK)) | ||
2601 | return 1; | ||
2602 | |||
2594 | if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK)) | 2603 | if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK)) |
2595 | if (!pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK)) | 2604 | if (!pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK)) |
2596 | return 0; | 2605 | return 0; |
@@ -2857,7 +2866,11 @@ jme_init_one(struct pci_dev *pdev, | |||
2857 | goto err_out_free_shadow; | 2866 | goto err_out_free_shadow; |
2858 | } | 2867 | } |
2859 | 2868 | ||
2860 | msg_probe(jme, "JMC250 gigabit%s ver:%x rev:%x macaddr:%pM\n", | 2869 | msg_probe(jme, "%s%s ver:%x rev:%x macaddr:%pM\n", |
2870 | (jme->pdev->device == PCI_DEVICE_ID_JMICRON_JMC250) ? | ||
2871 | "JMC250 Gigabit Ethernet" : | ||
2872 | (jme->pdev->device == PCI_DEVICE_ID_JMICRON_JMC260) ? | ||
2873 | "JMC260 Fast Ethernet" : "Unknown", | ||
2861 | (jme->fpgaver != 0) ? " (FPGA)" : "", | 2874 | (jme->fpgaver != 0) ? " (FPGA)" : "", |
2862 | (jme->fpgaver != 0) ? jme->fpgaver : jme->chiprev, | 2875 | (jme->fpgaver != 0) ? jme->fpgaver : jme->chiprev, |
2863 | jme->rev, netdev->dev_addr); | 2876 | jme->rev, netdev->dev_addr); |
@@ -3003,7 +3016,7 @@ static struct pci_driver jme_driver = { | |||
3003 | static int __init | 3016 | static int __init |
3004 | jme_init_module(void) | 3017 | jme_init_module(void) |
3005 | { | 3018 | { |
3006 | printk(KERN_INFO PFX "JMicron JMC250 gigabit ethernet " | 3019 | printk(KERN_INFO PFX "JMicron JMC2XX ethernet " |
3007 | "driver version %s\n", DRV_VERSION); | 3020 | "driver version %s\n", DRV_VERSION); |
3008 | return pci_register_driver(&jme_driver); | 3021 | return pci_register_driver(&jme_driver); |
3009 | } | 3022 | } |