aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/jme.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/jme.c')
-rw-r--r--drivers/net/jme.c31
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
1836static int 1835static int
1837jme_fill_first_tx_desc(struct jme_adapter *jme, struct sk_buff *skb, int idx) 1836jme_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 = {
2591static int 2590static int
2592jme_pci_dma64(struct pci_dev *pdev) 2591jme_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 = {
3003static int __init 3016static int __init
3004jme_init_module(void) 3017jme_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}