Lines Matching refs:jme

63 	struct jme_adapter *jme = netdev_priv(netdev);  in jme_mdio_read()  local
67 jwrite32(jme, JME_SMI, SMI_OP_REQ | in jme_mdio_read()
74 val = jread32(jme, JME_SMI); in jme_mdio_read()
94 struct jme_adapter *jme = netdev_priv(netdev); in jme_mdio_write() local
97 jwrite32(jme, JME_SMI, SMI_OP_WRITE | SMI_OP_REQ | in jme_mdio_write()
104 if ((jread32(jme, JME_SMI) & SMI_OP_REQ) == 0) in jme_mdio_write()
113 jme_reset_phy_processor(struct jme_adapter *jme) in jme_reset_phy_processor() argument
117 jme_mdio_write(jme->dev, in jme_reset_phy_processor()
118 jme->mii_if.phy_id, in jme_reset_phy_processor()
122 if (jme->pdev->device == PCI_DEVICE_ID_JMICRON_JMC250) in jme_reset_phy_processor()
123 jme_mdio_write(jme->dev, in jme_reset_phy_processor()
124 jme->mii_if.phy_id, in jme_reset_phy_processor()
128 val = jme_mdio_read(jme->dev, in jme_reset_phy_processor()
129 jme->mii_if.phy_id, in jme_reset_phy_processor()
132 jme_mdio_write(jme->dev, in jme_reset_phy_processor()
133 jme->mii_if.phy_id, in jme_reset_phy_processor()
138 jme_setup_wakeup_frame(struct jme_adapter *jme, in jme_setup_wakeup_frame() argument
146 jwrite32(jme, JME_WFOI, WFOI_CRC_SEL | (fnr & WFOI_FRAME_SEL)); in jme_setup_wakeup_frame()
148 jwrite32(jme, JME_WFODP, crc); in jme_setup_wakeup_frame()
155 jwrite32(jme, JME_WFOI, in jme_setup_wakeup_frame()
159 jwrite32(jme, JME_WFODP, mask[i]); in jme_setup_wakeup_frame()
165 jme_mac_rxclk_off(struct jme_adapter *jme) in jme_mac_rxclk_off() argument
167 jme->reg_gpreg1 |= GPREG1_RXCLKOFF; in jme_mac_rxclk_off()
168 jwrite32f(jme, JME_GPREG1, jme->reg_gpreg1); in jme_mac_rxclk_off()
172 jme_mac_rxclk_on(struct jme_adapter *jme) in jme_mac_rxclk_on() argument
174 jme->reg_gpreg1 &= ~GPREG1_RXCLKOFF; in jme_mac_rxclk_on()
175 jwrite32f(jme, JME_GPREG1, jme->reg_gpreg1); in jme_mac_rxclk_on()
179 jme_mac_txclk_off(struct jme_adapter *jme) in jme_mac_txclk_off() argument
181 jme->reg_ghc &= ~(GHC_TO_CLK_SRC | GHC_TXMAC_CLK_SRC); in jme_mac_txclk_off()
182 jwrite32f(jme, JME_GHC, jme->reg_ghc); in jme_mac_txclk_off()
186 jme_mac_txclk_on(struct jme_adapter *jme) in jme_mac_txclk_on() argument
188 u32 speed = jme->reg_ghc & GHC_SPEED; in jme_mac_txclk_on()
190 jme->reg_ghc |= GHC_TO_CLK_GPHY | GHC_TXMAC_CLK_GPHY; in jme_mac_txclk_on()
192 jme->reg_ghc |= GHC_TO_CLK_PCIE | GHC_TXMAC_CLK_PCIE; in jme_mac_txclk_on()
193 jwrite32f(jme, JME_GHC, jme->reg_ghc); in jme_mac_txclk_on()
197 jme_reset_ghc_speed(struct jme_adapter *jme) in jme_reset_ghc_speed() argument
199 jme->reg_ghc &= ~(GHC_SPEED | GHC_DPX); in jme_reset_ghc_speed()
200 jwrite32f(jme, JME_GHC, jme->reg_ghc); in jme_reset_ghc_speed()
204 jme_reset_250A2_workaround(struct jme_adapter *jme) in jme_reset_250A2_workaround() argument
206 jme->reg_gpreg1 &= ~(GPREG1_HALFMODEPATCH | in jme_reset_250A2_workaround()
208 jwrite32(jme, JME_GPREG1, jme->reg_gpreg1); in jme_reset_250A2_workaround()
212 jme_assert_ghc_reset(struct jme_adapter *jme) in jme_assert_ghc_reset() argument
214 jme->reg_ghc |= GHC_SWRST; in jme_assert_ghc_reset()
215 jwrite32f(jme, JME_GHC, jme->reg_ghc); in jme_assert_ghc_reset()
219 jme_clear_ghc_reset(struct jme_adapter *jme) in jme_clear_ghc_reset() argument
221 jme->reg_ghc &= ~GHC_SWRST; in jme_clear_ghc_reset()
222 jwrite32f(jme, JME_GHC, jme->reg_ghc); in jme_clear_ghc_reset()
226 jme_reset_mac_processor(struct jme_adapter *jme) in jme_reset_mac_processor() argument
233 jme_reset_ghc_speed(jme); in jme_reset_mac_processor()
234 jme_reset_250A2_workaround(jme); in jme_reset_mac_processor()
236 jme_mac_rxclk_on(jme); in jme_reset_mac_processor()
237 jme_mac_txclk_on(jme); in jme_reset_mac_processor()
239 jme_assert_ghc_reset(jme); in jme_reset_mac_processor()
241 jme_mac_rxclk_off(jme); in jme_reset_mac_processor()
242 jme_mac_txclk_off(jme); in jme_reset_mac_processor()
244 jme_clear_ghc_reset(jme); in jme_reset_mac_processor()
246 jme_mac_rxclk_on(jme); in jme_reset_mac_processor()
247 jme_mac_txclk_on(jme); in jme_reset_mac_processor()
249 jme_mac_rxclk_off(jme); in jme_reset_mac_processor()
250 jme_mac_txclk_off(jme); in jme_reset_mac_processor()
252 jwrite32(jme, JME_RXDBA_LO, 0x00000000); in jme_reset_mac_processor()
253 jwrite32(jme, JME_RXDBA_HI, 0x00000000); in jme_reset_mac_processor()
254 jwrite32(jme, JME_RXQDC, 0x00000000); in jme_reset_mac_processor()
255 jwrite32(jme, JME_RXNDA, 0x00000000); in jme_reset_mac_processor()
256 jwrite32(jme, JME_TXDBA_LO, 0x00000000); in jme_reset_mac_processor()
257 jwrite32(jme, JME_TXDBA_HI, 0x00000000); in jme_reset_mac_processor()
258 jwrite32(jme, JME_TXQDC, 0x00000000); in jme_reset_mac_processor()
259 jwrite32(jme, JME_TXNDA, 0x00000000); in jme_reset_mac_processor()
261 jwrite32(jme, JME_RXMCHT_LO, 0x00000000); in jme_reset_mac_processor()
262 jwrite32(jme, JME_RXMCHT_HI, 0x00000000); in jme_reset_mac_processor()
264 jme_setup_wakeup_frame(jme, mask, crc, i); in jme_reset_mac_processor()
265 if (jme->fpgaver) in jme_reset_mac_processor()
269 jwrite32(jme, JME_GPREG0, gpreg0); in jme_reset_mac_processor()
273 jme_clear_pm_enable_wol(struct jme_adapter *jme) in jme_clear_pm_enable_wol() argument
275 jwrite32(jme, JME_PMCS, PMCS_STMASK | jme->reg_pmcs); in jme_clear_pm_enable_wol()
279 jme_clear_pm_disable_wol(struct jme_adapter *jme) in jme_clear_pm_disable_wol() argument
281 jwrite32(jme, JME_PMCS, PMCS_STMASK); in jme_clear_pm_disable_wol()
285 jme_reload_eeprom(struct jme_adapter *jme) in jme_reload_eeprom() argument
290 val = jread32(jme, JME_SMBCSR); in jme_reload_eeprom()
294 jwrite32(jme, JME_SMBCSR, val); in jme_reload_eeprom()
296 jwrite32(jme, JME_SMBCSR, val); in jme_reload_eeprom()
301 if ((jread32(jme, JME_SMBCSR) & SMBCSR_RELOAD) == 0) in jme_reload_eeprom()
317 struct jme_adapter *jme = netdev_priv(netdev); in jme_load_macaddr() local
321 spin_lock_bh(&jme->macaddr_lock); in jme_load_macaddr()
322 val = jread32(jme, JME_RXUMA_LO); in jme_load_macaddr()
327 val = jread32(jme, JME_RXUMA_HI); in jme_load_macaddr()
331 spin_unlock_bh(&jme->macaddr_lock); in jme_load_macaddr()
335 jme_set_rx_pcc(struct jme_adapter *jme, int p) in jme_set_rx_pcc() argument
339 jwrite32(jme, JME_PCCRX0, in jme_set_rx_pcc()
344 jwrite32(jme, JME_PCCRX0, in jme_set_rx_pcc()
349 jwrite32(jme, JME_PCCRX0, in jme_set_rx_pcc()
354 jwrite32(jme, JME_PCCRX0, in jme_set_rx_pcc()
363 if (!(test_bit(JME_FLAG_POLL, &jme->flags))) in jme_set_rx_pcc()
364 netif_info(jme, rx_status, jme->dev, "Switched to PCC_P%d\n", p); in jme_set_rx_pcc()
368 jme_start_irq(struct jme_adapter *jme) in jme_start_irq() argument
370 register struct dynpcc_info *dpi = &(jme->dpi); in jme_start_irq()
372 jme_set_rx_pcc(jme, PCC_P1); in jme_start_irq()
377 jwrite32(jme, JME_PCCTX, in jme_start_irq()
386 jwrite32(jme, JME_IENS, INTR_ENABLE); in jme_start_irq()
390 jme_stop_irq(struct jme_adapter *jme) in jme_stop_irq() argument
395 jwrite32f(jme, JME_IENC, INTR_ENABLE); in jme_stop_irq()
399 jme_linkstat_from_phy(struct jme_adapter *jme) in jme_linkstat_from_phy() argument
403 phylink = jme_mdio_read(jme->dev, jme->mii_if.phy_id, 17); in jme_linkstat_from_phy()
404 bmsr = jme_mdio_read(jme->dev, jme->mii_if.phy_id, MII_BMSR); in jme_linkstat_from_phy()
412 jme_set_phyfifo_5level(struct jme_adapter *jme) in jme_set_phyfifo_5level() argument
414 jme_mdio_write(jme->dev, jme->mii_if.phy_id, 27, 0x0004); in jme_set_phyfifo_5level()
418 jme_set_phyfifo_8level(struct jme_adapter *jme) in jme_set_phyfifo_8level() argument
420 jme_mdio_write(jme->dev, jme->mii_if.phy_id, 27, 0x0000); in jme_set_phyfifo_8level()
426 struct jme_adapter *jme = netdev_priv(netdev); in jme_check_link() local
433 if (jme->fpgaver) in jme_check_link()
434 phylink = jme_linkstat_from_phy(jme); in jme_check_link()
436 phylink = jread32(jme, JME_PHY_LINK); in jme_check_link()
446 bmcr = jme_mdio_read(jme->dev, in jme_check_link()
447 jme->mii_if.phy_id, in jme_check_link()
470 if (jme->fpgaver) in jme_check_link()
471 phylink = jme_linkstat_from_phy(jme); in jme_check_link()
473 phylink = jread32(jme, JME_PHY_LINK); in jme_check_link()
481 if (jme->phylink == phylink) { in jme_check_link()
488 jme->phylink = phylink; in jme_check_link()
496 jme->reg_ghc |= GHC_SPEED_10M; in jme_check_link()
500 jme->reg_ghc |= GHC_SPEED_100M; in jme_check_link()
504 jme->reg_ghc |= GHC_SPEED_1000M; in jme_check_link()
512 jwrite32(jme, JME_TXMCS, TXMCS_DEFAULT); in jme_check_link()
513 jwrite32(jme, JME_TXTRHD, TXTRHD_FULLDUPLEX); in jme_check_link()
514 jme->reg_ghc |= GHC_DPX; in jme_check_link()
516 jwrite32(jme, JME_TXMCS, TXMCS_DEFAULT | in jme_check_link()
520 jwrite32(jme, JME_TXTRHD, TXTRHD_HALFDUPLEX); in jme_check_link()
523 jwrite32(jme, JME_GHC, jme->reg_ghc); in jme_check_link()
525 if (is_buggy250(jme->pdev->device, jme->chiprev)) { in jme_check_link()
526 jme->reg_gpreg1 &= ~(GPREG1_HALFMODEPATCH | in jme_check_link()
529 jme->reg_gpreg1 |= GPREG1_HALFMODEPATCH; in jme_check_link()
532 jme_set_phyfifo_8level(jme); in jme_check_link()
533 jme->reg_gpreg1 |= GPREG1_RSSPATCH; in jme_check_link()
536 jme_set_phyfifo_5level(jme); in jme_check_link()
537 jme->reg_gpreg1 |= GPREG1_RSSPATCH; in jme_check_link()
540 jme_set_phyfifo_8level(jme); in jme_check_link()
546 jwrite32(jme, JME_GPREG1, jme->reg_gpreg1); in jme_check_link()
554 netif_info(jme, link, jme->dev, "Link is up at %s\n", linkmsg); in jme_check_link()
560 netif_info(jme, link, jme->dev, "Link is down\n"); in jme_check_link()
561 jme->phylink = 0; in jme_check_link()
570 jme_setup_tx_resources(struct jme_adapter *jme) in jme_setup_tx_resources() argument
572 struct jme_ring *txring = &(jme->txring[0]); in jme_setup_tx_resources()
574 txring->alloc = dma_alloc_coherent(&(jme->pdev->dev), in jme_setup_tx_resources()
575 TX_RING_ALLOC_SIZE(jme->tx_ring_size), in jme_setup_tx_resources()
590 atomic_set(&txring->nr_free, jme->tx_ring_size); in jme_setup_tx_resources()
593 jme->tx_ring_size, GFP_ATOMIC); in jme_setup_tx_resources()
600 memset(txring->alloc, 0, TX_RING_ALLOC_SIZE(jme->tx_ring_size)); in jme_setup_tx_resources()
605 dma_free_coherent(&(jme->pdev->dev), in jme_setup_tx_resources()
606 TX_RING_ALLOC_SIZE(jme->tx_ring_size), in jme_setup_tx_resources()
620 jme_free_tx_resources(struct jme_adapter *jme) in jme_free_tx_resources() argument
623 struct jme_ring *txring = &(jme->txring[0]); in jme_free_tx_resources()
628 for (i = 0 ; i < jme->tx_ring_size ; ++i) { in jme_free_tx_resources()
642 dma_free_coherent(&(jme->pdev->dev), in jme_free_tx_resources()
643 TX_RING_ALLOC_SIZE(jme->tx_ring_size), in jme_free_tx_resources()
659 jme_enable_tx_engine(struct jme_adapter *jme) in jme_enable_tx_engine() argument
664 jwrite32(jme, JME_TXCS, TXCS_DEFAULT | TXCS_SELECT_QUEUE0); in jme_enable_tx_engine()
670 jwrite32(jme, JME_TXDBA_LO, (__u64)jme->txring[0].dma & 0xFFFFFFFFUL); in jme_enable_tx_engine()
671 jwrite32(jme, JME_TXDBA_HI, (__u64)(jme->txring[0].dma) >> 32); in jme_enable_tx_engine()
672 jwrite32(jme, JME_TXNDA, (__u64)jme->txring[0].dma & 0xFFFFFFFFUL); in jme_enable_tx_engine()
677 jwrite32(jme, JME_TXQDC, jme->tx_ring_size); in jme_enable_tx_engine()
683 jwrite32f(jme, JME_TXCS, jme->reg_txcs | in jme_enable_tx_engine()
690 jme_mac_txclk_on(jme); in jme_enable_tx_engine()
694 jme_restart_tx_engine(struct jme_adapter *jme) in jme_restart_tx_engine() argument
699 jwrite32(jme, JME_TXCS, jme->reg_txcs | in jme_restart_tx_engine()
705 jme_disable_tx_engine(struct jme_adapter *jme) in jme_disable_tx_engine() argument
713 jwrite32(jme, JME_TXCS, jme->reg_txcs | TXCS_SELECT_QUEUE0); in jme_disable_tx_engine()
716 val = jread32(jme, JME_TXCS); in jme_disable_tx_engine()
719 val = jread32(jme, JME_TXCS); in jme_disable_tx_engine()
729 jme_mac_txclk_off(jme); in jme_disable_tx_engine()
733 jme_set_clean_rxdesc(struct jme_adapter *jme, int i) in jme_set_clean_rxdesc() argument
735 struct jme_ring *rxring = &(jme->rxring[0]); in jme_set_clean_rxdesc()
747 if (jme->dev->features & NETIF_F_HIGHDMA) in jme_set_clean_rxdesc()
754 jme_make_new_rx_buf(struct jme_adapter *jme, int i) in jme_make_new_rx_buf() argument
756 struct jme_ring *rxring = &(jme->rxring[0]); in jme_make_new_rx_buf()
761 skb = netdev_alloc_skb(jme->dev, in jme_make_new_rx_buf()
762 jme->dev->mtu + RX_EXTRA_LEN); in jme_make_new_rx_buf()
766 mapping = pci_map_page(jme->pdev, virt_to_page(skb->data), in jme_make_new_rx_buf()
769 if (unlikely(pci_dma_mapping_error(jme->pdev, mapping))) { in jme_make_new_rx_buf()
775 pci_unmap_page(jme->pdev, rxbi->mapping, in jme_make_new_rx_buf()
785 jme_free_rx_buf(struct jme_adapter *jme, int i) in jme_free_rx_buf() argument
787 struct jme_ring *rxring = &(jme->rxring[0]); in jme_free_rx_buf()
792 pci_unmap_page(jme->pdev, in jme_free_rx_buf()
804 jme_free_rx_resources(struct jme_adapter *jme) in jme_free_rx_resources() argument
807 struct jme_ring *rxring = &(jme->rxring[0]); in jme_free_rx_resources()
811 for (i = 0 ; i < jme->rx_ring_size ; ++i) in jme_free_rx_resources()
812 jme_free_rx_buf(jme, i); in jme_free_rx_resources()
816 dma_free_coherent(&(jme->pdev->dev), in jme_free_rx_resources()
817 RX_RING_ALLOC_SIZE(jme->rx_ring_size), in jme_free_rx_resources()
831 jme_setup_rx_resources(struct jme_adapter *jme) in jme_setup_rx_resources() argument
834 struct jme_ring *rxring = &(jme->rxring[0]); in jme_setup_rx_resources()
836 rxring->alloc = dma_alloc_coherent(&(jme->pdev->dev), in jme_setup_rx_resources()
837 RX_RING_ALLOC_SIZE(jme->rx_ring_size), in jme_setup_rx_resources()
853 jme->rx_ring_size, GFP_ATOMIC); in jme_setup_rx_resources()
860 for (i = 0 ; i < jme->rx_ring_size ; ++i) { in jme_setup_rx_resources()
861 if (unlikely(jme_make_new_rx_buf(jme, i))) { in jme_setup_rx_resources()
862 jme_free_rx_resources(jme); in jme_setup_rx_resources()
866 jme_set_clean_rxdesc(jme, i); in jme_setup_rx_resources()
872 dma_free_coherent(&(jme->pdev->dev), in jme_setup_rx_resources()
873 RX_RING_ALLOC_SIZE(jme->rx_ring_size), in jme_setup_rx_resources()
886 jme_enable_rx_engine(struct jme_adapter *jme) in jme_enable_rx_engine() argument
891 jwrite32(jme, JME_RXCS, jme->reg_rxcs | in jme_enable_rx_engine()
898 jwrite32(jme, JME_RXDBA_LO, (__u64)(jme->rxring[0].dma) & 0xFFFFFFFFUL); in jme_enable_rx_engine()
899 jwrite32(jme, JME_RXDBA_HI, (__u64)(jme->rxring[0].dma) >> 32); in jme_enable_rx_engine()
900 jwrite32(jme, JME_RXNDA, (__u64)(jme->rxring[0].dma) & 0xFFFFFFFFUL); in jme_enable_rx_engine()
905 jwrite32(jme, JME_RXQDC, jme->rx_ring_size); in jme_enable_rx_engine()
910 jme_set_unicastaddr(jme->dev); in jme_enable_rx_engine()
911 jme_set_multi(jme->dev); in jme_enable_rx_engine()
917 jwrite32f(jme, JME_RXCS, jme->reg_rxcs | in jme_enable_rx_engine()
925 jme_mac_rxclk_on(jme); in jme_enable_rx_engine()
929 jme_restart_rx_engine(struct jme_adapter *jme) in jme_restart_rx_engine() argument
934 jwrite32(jme, JME_RXCS, jme->reg_rxcs | in jme_restart_rx_engine()
941 jme_disable_rx_engine(struct jme_adapter *jme) in jme_disable_rx_engine() argument
949 jwrite32(jme, JME_RXCS, jme->reg_rxcs); in jme_disable_rx_engine()
952 val = jread32(jme, JME_RXCS); in jme_disable_rx_engine()
955 val = jread32(jme, JME_RXCS); in jme_disable_rx_engine()
965 jme_mac_rxclk_off(jme); in jme_disable_rx_engine()
995 jme_rxsum_ok(struct jme_adapter *jme, u16 flags, struct sk_buff *skb) in jme_rxsum_ok() argument
1003 netif_err(jme, rx_err, jme->dev, "TCP Checksum error\n"); in jme_rxsum_ok()
1010 netif_err(jme, rx_err, jme->dev, "UDP Checksum error\n"); in jme_rxsum_ok()
1016 netif_err(jme, rx_err, jme->dev, "IPv4 Checksum error\n"); in jme_rxsum_ok()
1024 jme_alloc_and_feed_skb(struct jme_adapter *jme, int idx) in jme_alloc_and_feed_skb() argument
1026 struct jme_ring *rxring = &(jme->rxring[0]); in jme_alloc_and_feed_skb()
1036 pci_dma_sync_single_for_cpu(jme->pdev, in jme_alloc_and_feed_skb()
1041 if (unlikely(jme_make_new_rx_buf(jme, idx))) { in jme_alloc_and_feed_skb()
1042 pci_dma_sync_single_for_device(jme->pdev, in jme_alloc_and_feed_skb()
1047 ++(NET_STAT(jme).rx_dropped); in jme_alloc_and_feed_skb()
1054 skb->protocol = eth_type_trans(skb, jme->dev); in jme_alloc_and_feed_skb()
1056 if (jme_rxsum_ok(jme, le16_to_cpu(rxdesc->descwb.flags), skb)) in jme_alloc_and_feed_skb()
1065 NET_STAT(jme).rx_bytes += 4; in jme_alloc_and_feed_skb()
1067 jme->jme_rx(skb); in jme_alloc_and_feed_skb()
1071 ++(NET_STAT(jme).multicast); in jme_alloc_and_feed_skb()
1073 NET_STAT(jme).rx_bytes += framesize; in jme_alloc_and_feed_skb()
1074 ++(NET_STAT(jme).rx_packets); in jme_alloc_and_feed_skb()
1077 jme_set_clean_rxdesc(jme, idx); in jme_alloc_and_feed_skb()
1082 jme_process_receive(struct jme_adapter *jme, int limit) in jme_process_receive() argument
1084 struct jme_ring *rxring = &(jme->rxring[0]); in jme_process_receive()
1086 int i, j, ccnt, desccnt, mask = jme->rx_ring_mask; in jme_process_receive()
1088 if (unlikely(!atomic_dec_and_test(&jme->rx_cleaning))) in jme_process_receive()
1091 if (unlikely(atomic_read(&jme->link_changing) != 1)) in jme_process_receive()
1094 if (unlikely(!netif_carrier_ok(jme->dev))) in jme_process_receive()
1114 ++(NET_STAT(jme).rx_crc_errors); in jme_process_receive()
1116 ++(NET_STAT(jme).rx_fifo_errors); in jme_process_receive()
1118 ++(NET_STAT(jme).rx_errors); in jme_process_receive()
1124 jme_set_clean_rxdesc(jme, j); in jme_process_receive()
1129 jme_alloc_and_feed_skb(jme, i); in jme_process_receive()
1139 atomic_inc(&jme->rx_cleaning); in jme_process_receive()
1163 jme_dynamic_pcc(struct jme_adapter *jme) in jme_dynamic_pcc() argument
1165 register struct dynpcc_info *dpi = &(jme->dpi); in jme_dynamic_pcc()
1167 if ((NET_STAT(jme).rx_bytes - dpi->last_bytes) > PCC_P3_THRESHOLD) in jme_dynamic_pcc()
1169 else if ((NET_STAT(jme).rx_packets - dpi->last_pkts) > PCC_P2_THRESHOLD || in jme_dynamic_pcc()
1177 tasklet_schedule(&jme->rxclean_task); in jme_dynamic_pcc()
1178 jme_set_rx_pcc(jme, dpi->attempt); in jme_dynamic_pcc()
1185 jme_start_pcc_timer(struct jme_adapter *jme) in jme_start_pcc_timer() argument
1187 struct dynpcc_info *dpi = &(jme->dpi); in jme_start_pcc_timer()
1188 dpi->last_bytes = NET_STAT(jme).rx_bytes; in jme_start_pcc_timer()
1189 dpi->last_pkts = NET_STAT(jme).rx_packets; in jme_start_pcc_timer()
1191 jwrite32(jme, JME_TMCSR, in jme_start_pcc_timer()
1196 jme_stop_pcc_timer(struct jme_adapter *jme) in jme_stop_pcc_timer() argument
1198 jwrite32(jme, JME_TMCSR, 0); in jme_stop_pcc_timer()
1202 jme_shutdown_nic(struct jme_adapter *jme) in jme_shutdown_nic() argument
1206 phylink = jme_linkstat_from_phy(jme); in jme_shutdown_nic()
1212 jme_stop_irq(jme); in jme_shutdown_nic()
1213 jwrite32(jme, JME_TIMER2, TMCSR_EN | 0xFFFFFE); in jme_shutdown_nic()
1220 struct jme_adapter *jme = (struct jme_adapter *)arg; in jme_pcc_tasklet() local
1221 struct net_device *netdev = jme->dev; in jme_pcc_tasklet()
1223 if (unlikely(test_bit(JME_FLAG_SHUTDOWN, &jme->flags))) { in jme_pcc_tasklet()
1224 jme_shutdown_nic(jme); in jme_pcc_tasklet()
1229 (atomic_read(&jme->link_changing) != 1) in jme_pcc_tasklet()
1231 jme_stop_pcc_timer(jme); in jme_pcc_tasklet()
1235 if (!(test_bit(JME_FLAG_POLL, &jme->flags))) in jme_pcc_tasklet()
1236 jme_dynamic_pcc(jme); in jme_pcc_tasklet()
1238 jme_start_pcc_timer(jme); in jme_pcc_tasklet()
1242 jme_polling_mode(struct jme_adapter *jme) in jme_polling_mode() argument
1244 jme_set_rx_pcc(jme, PCC_OFF); in jme_polling_mode()
1248 jme_interrupt_mode(struct jme_adapter *jme) in jme_interrupt_mode() argument
1250 jme_set_rx_pcc(jme, PCC_P1); in jme_interrupt_mode()
1254 jme_pseudo_hotplug_enabled(struct jme_adapter *jme) in jme_pseudo_hotplug_enabled() argument
1257 apmc = jread32(jme, JME_APMC); in jme_pseudo_hotplug_enabled()
1262 jme_start_shutdown_timer(struct jme_adapter *jme) in jme_start_shutdown_timer() argument
1266 apmc = jread32(jme, JME_APMC) | JME_APMC_PCIE_SD_EN; in jme_start_shutdown_timer()
1269 jwrite32f(jme, JME_APMC, apmc | JME_APMC_EPIEN_CTRL_EN); in jme_start_shutdown_timer()
1272 jwrite32f(jme, JME_APMC, apmc); in jme_start_shutdown_timer()
1274 jwrite32f(jme, JME_TIMER2, 0); in jme_start_shutdown_timer()
1275 set_bit(JME_FLAG_SHUTDOWN, &jme->flags); in jme_start_shutdown_timer()
1276 jwrite32(jme, JME_TMCSR, in jme_start_shutdown_timer()
1281 jme_stop_shutdown_timer(struct jme_adapter *jme) in jme_stop_shutdown_timer() argument
1285 jwrite32f(jme, JME_TMCSR, 0); in jme_stop_shutdown_timer()
1286 jwrite32f(jme, JME_TIMER2, 0); in jme_stop_shutdown_timer()
1287 clear_bit(JME_FLAG_SHUTDOWN, &jme->flags); in jme_stop_shutdown_timer()
1289 apmc = jread32(jme, JME_APMC); in jme_stop_shutdown_timer()
1291 jwrite32f(jme, JME_APMC, apmc | JME_APMC_EPIEN_CTRL_DIS); in jme_stop_shutdown_timer()
1293 jwrite32f(jme, JME_APMC, apmc); in jme_stop_shutdown_timer()
1299 struct jme_adapter *jme = (struct jme_adapter *)arg; in jme_link_change_tasklet() local
1300 struct net_device *netdev = jme->dev; in jme_link_change_tasklet()
1303 while (!atomic_dec_and_test(&jme->link_changing)) { in jme_link_change_tasklet()
1304 atomic_inc(&jme->link_changing); in jme_link_change_tasklet()
1305 netif_info(jme, intr, jme->dev, "Get link change lock failed\n"); in jme_link_change_tasklet()
1306 while (atomic_read(&jme->link_changing) != 1) in jme_link_change_tasklet()
1307 netif_info(jme, intr, jme->dev, "Waiting link change lock\n"); in jme_link_change_tasklet()
1310 if (jme_check_link(netdev, 1) && jme->old_mtu == netdev->mtu) in jme_link_change_tasklet()
1313 jme->old_mtu = netdev->mtu; in jme_link_change_tasklet()
1315 if (jme_pseudo_hotplug_enabled(jme)) in jme_link_change_tasklet()
1316 jme_stop_shutdown_timer(jme); in jme_link_change_tasklet()
1318 jme_stop_pcc_timer(jme); in jme_link_change_tasklet()
1319 tasklet_disable(&jme->txclean_task); in jme_link_change_tasklet()
1320 tasklet_disable(&jme->rxclean_task); in jme_link_change_tasklet()
1321 tasklet_disable(&jme->rxempty_task); in jme_link_change_tasklet()
1324 jme_disable_rx_engine(jme); in jme_link_change_tasklet()
1325 jme_disable_tx_engine(jme); in jme_link_change_tasklet()
1326 jme_reset_mac_processor(jme); in jme_link_change_tasklet()
1327 jme_free_rx_resources(jme); in jme_link_change_tasklet()
1328 jme_free_tx_resources(jme); in jme_link_change_tasklet()
1330 if (test_bit(JME_FLAG_POLL, &jme->flags)) in jme_link_change_tasklet()
1331 jme_polling_mode(jme); in jme_link_change_tasklet()
1338 rc = jme_setup_rx_resources(jme); in jme_link_change_tasklet()
1344 rc = jme_setup_tx_resources(jme); in jme_link_change_tasklet()
1350 jme_enable_rx_engine(jme); in jme_link_change_tasklet()
1351 jme_enable_tx_engine(jme); in jme_link_change_tasklet()
1355 if (test_bit(JME_FLAG_POLL, &jme->flags)) in jme_link_change_tasklet()
1356 jme_interrupt_mode(jme); in jme_link_change_tasklet()
1358 jme_start_pcc_timer(jme); in jme_link_change_tasklet()
1359 } else if (jme_pseudo_hotplug_enabled(jme)) { in jme_link_change_tasklet()
1360 jme_start_shutdown_timer(jme); in jme_link_change_tasklet()
1366 jme_free_rx_resources(jme); in jme_link_change_tasklet()
1368 tasklet_enable(&jme->txclean_task); in jme_link_change_tasklet()
1369 tasklet_enable(&jme->rxclean_task); in jme_link_change_tasklet()
1370 tasklet_enable(&jme->rxempty_task); in jme_link_change_tasklet()
1372 atomic_inc(&jme->link_changing); in jme_link_change_tasklet()
1378 struct jme_adapter *jme = (struct jme_adapter *)arg; in jme_rx_clean_tasklet() local
1379 struct dynpcc_info *dpi = &(jme->dpi); in jme_rx_clean_tasklet()
1381 jme_process_receive(jme, jme->rx_ring_size); in jme_rx_clean_tasklet()
1389 struct jme_adapter *jme = jme_napi_priv(holder); in jme_poll() local
1392 rest = jme_process_receive(jme, JME_NAPI_WEIGHT_VAL(budget)); in jme_poll()
1394 while (atomic_read(&jme->rx_empty) > 0) { in jme_poll()
1395 atomic_dec(&jme->rx_empty); in jme_poll()
1396 ++(NET_STAT(jme).rx_dropped); in jme_poll()
1397 jme_restart_rx_engine(jme); in jme_poll()
1399 atomic_inc(&jme->rx_empty); in jme_poll()
1403 jme_interrupt_mode(jme); in jme_poll()
1413 struct jme_adapter *jme = (struct jme_adapter *)arg; in jme_rx_empty_tasklet() local
1415 if (unlikely(atomic_read(&jme->link_changing) != 1)) in jme_rx_empty_tasklet()
1418 if (unlikely(!netif_carrier_ok(jme->dev))) in jme_rx_empty_tasklet()
1421 netif_info(jme, rx_status, jme->dev, "RX Queue Full!\n"); in jme_rx_empty_tasklet()
1425 while (atomic_read(&jme->rx_empty) > 0) { in jme_rx_empty_tasklet()
1426 atomic_dec(&jme->rx_empty); in jme_rx_empty_tasklet()
1427 ++(NET_STAT(jme).rx_dropped); in jme_rx_empty_tasklet()
1428 jme_restart_rx_engine(jme); in jme_rx_empty_tasklet()
1430 atomic_inc(&jme->rx_empty); in jme_rx_empty_tasklet()
1434 jme_wake_queue_if_stopped(struct jme_adapter *jme) in jme_wake_queue_if_stopped() argument
1436 struct jme_ring *txring = &(jme->txring[0]); in jme_wake_queue_if_stopped()
1439 if (unlikely(netif_queue_stopped(jme->dev) && in jme_wake_queue_if_stopped()
1440 atomic_read(&txring->nr_free) >= (jme->tx_wake_threshold))) { in jme_wake_queue_if_stopped()
1441 netif_info(jme, tx_done, jme->dev, "TX Queue Waked\n"); in jme_wake_queue_if_stopped()
1442 netif_wake_queue(jme->dev); in jme_wake_queue_if_stopped()
1450 struct jme_adapter *jme = (struct jme_adapter *)arg; in jme_tx_clean_tasklet() local
1451 struct jme_ring *txring = &(jme->txring[0]); in jme_tx_clean_tasklet()
1456 tx_dbg(jme, "Into txclean\n"); in jme_tx_clean_tasklet()
1458 if (unlikely(!atomic_dec_and_test(&jme->tx_cleaning))) in jme_tx_clean_tasklet()
1461 if (unlikely(atomic_read(&jme->link_changing) != 1)) in jme_tx_clean_tasklet()
1464 if (unlikely(!netif_carrier_ok(jme->dev))) in jme_tx_clean_tasklet()
1467 max = jme->tx_ring_size - atomic_read(&txring->nr_free); in jme_tx_clean_tasklet()
1468 mask = jme->tx_ring_mask; in jme_tx_clean_tasklet()
1477 tx_dbg(jme, "txclean: %d+%d@%lu\n", in jme_tx_clean_tasklet()
1486 pci_unmap_page(jme->pdev, in jme_tx_clean_tasklet()
1500 ++(NET_STAT(jme).tx_carrier_errors); in jme_tx_clean_tasklet()
1502 ++(NET_STAT(jme).tx_packets); in jme_tx_clean_tasklet()
1503 NET_STAT(jme).tx_bytes += ctxbi->len; in jme_tx_clean_tasklet()
1519 tx_dbg(jme, "txclean: done %d@%lu\n", i, jiffies); in jme_tx_clean_tasklet()
1523 jme_wake_queue_if_stopped(jme); in jme_tx_clean_tasklet()
1526 atomic_inc(&jme->tx_cleaning); in jme_tx_clean_tasklet()
1530 jme_intr_msi(struct jme_adapter *jme, u32 intrstat) in jme_intr_msi() argument
1535 jwrite32f(jme, JME_IENC, INTR_ENABLE); in jme_intr_msi()
1542 jwrite32(jme, JME_IEVE, intrstat); in jme_intr_msi()
1543 tasklet_schedule(&jme->linkch_task); in jme_intr_msi()
1548 jwrite32(jme, JME_IEVE, INTR_TMINTR); in jme_intr_msi()
1549 tasklet_schedule(&jme->pcc_task); in jme_intr_msi()
1553 jwrite32(jme, JME_IEVE, INTR_PCCTXTO | INTR_PCCTX | INTR_TX0); in jme_intr_msi()
1554 tasklet_schedule(&jme->txclean_task); in jme_intr_msi()
1558 jwrite32(jme, JME_IEVE, (intrstat & (INTR_PCCRX0TO | in jme_intr_msi()
1564 if (test_bit(JME_FLAG_POLL, &jme->flags)) { in jme_intr_msi()
1566 atomic_inc(&jme->rx_empty); in jme_intr_msi()
1569 if (likely(JME_RX_SCHEDULE_PREP(jme))) { in jme_intr_msi()
1570 jme_polling_mode(jme); in jme_intr_msi()
1571 JME_RX_SCHEDULE(jme); in jme_intr_msi()
1576 atomic_inc(&jme->rx_empty); in jme_intr_msi()
1577 tasklet_hi_schedule(&jme->rxempty_task); in jme_intr_msi()
1579 tasklet_hi_schedule(&jme->rxclean_task); in jme_intr_msi()
1587 jwrite32f(jme, JME_IENS, INTR_ENABLE); in jme_intr_msi()
1594 struct jme_adapter *jme = netdev_priv(netdev); in jme_intr() local
1597 intrstat = jread32(jme, JME_IEVE); in jme_intr()
1611 jme_intr_msi(jme, intrstat); in jme_intr()
1620 struct jme_adapter *jme = netdev_priv(netdev); in jme_msi() local
1623 intrstat = jread32(jme, JME_IEVE); in jme_msi()
1625 jme_intr_msi(jme, intrstat); in jme_msi()
1631 jme_reset_link(struct jme_adapter *jme) in jme_reset_link() argument
1633 jwrite32(jme, JME_TMCSR, TMCSR_SWIT); in jme_reset_link()
1637 jme_restart_an(struct jme_adapter *jme) in jme_restart_an() argument
1641 spin_lock_bh(&jme->phy_lock); in jme_restart_an()
1642 bmcr = jme_mdio_read(jme->dev, jme->mii_if.phy_id, MII_BMCR); in jme_restart_an()
1644 jme_mdio_write(jme->dev, jme->mii_if.phy_id, MII_BMCR, bmcr); in jme_restart_an()
1645 spin_unlock_bh(&jme->phy_lock); in jme_restart_an()
1649 jme_request_irq(struct jme_adapter *jme) in jme_request_irq() argument
1652 struct net_device *netdev = jme->dev; in jme_request_irq()
1656 if (!pci_enable_msi(jme->pdev)) { in jme_request_irq()
1657 set_bit(JME_FLAG_MSI, &jme->flags); in jme_request_irq()
1662 rc = request_irq(jme->pdev->irq, handler, irq_flags, netdev->name, in jme_request_irq()
1667 test_bit(JME_FLAG_MSI, &jme->flags) ? "MSI" : "INTx", in jme_request_irq()
1670 if (test_bit(JME_FLAG_MSI, &jme->flags)) { in jme_request_irq()
1671 pci_disable_msi(jme->pdev); in jme_request_irq()
1672 clear_bit(JME_FLAG_MSI, &jme->flags); in jme_request_irq()
1675 netdev->irq = jme->pdev->irq; in jme_request_irq()
1682 jme_free_irq(struct jme_adapter *jme) in jme_free_irq() argument
1684 free_irq(jme->pdev->irq, jme->dev); in jme_free_irq()
1685 if (test_bit(JME_FLAG_MSI, &jme->flags)) { in jme_free_irq()
1686 pci_disable_msi(jme->pdev); in jme_free_irq()
1687 clear_bit(JME_FLAG_MSI, &jme->flags); in jme_free_irq()
1688 jme->dev->irq = jme->pdev->irq; in jme_free_irq()
1693 jme_new_phy_on(struct jme_adapter *jme) in jme_new_phy_on() argument
1697 reg = jread32(jme, JME_PHY_PWR); in jme_new_phy_on()
1700 jwrite32(jme, JME_PHY_PWR, reg); in jme_new_phy_on()
1702 pci_read_config_dword(jme->pdev, PCI_PRIV_PE1, &reg); in jme_new_phy_on()
1705 pci_write_config_dword(jme->pdev, PCI_PRIV_PE1, reg); in jme_new_phy_on()
1709 jme_new_phy_off(struct jme_adapter *jme) in jme_new_phy_off() argument
1713 reg = jread32(jme, JME_PHY_PWR); in jme_new_phy_off()
1716 jwrite32(jme, JME_PHY_PWR, reg); in jme_new_phy_off()
1718 pci_read_config_dword(jme->pdev, PCI_PRIV_PE1, &reg); in jme_new_phy_off()
1721 pci_write_config_dword(jme->pdev, PCI_PRIV_PE1, reg); in jme_new_phy_off()
1725 jme_phy_on(struct jme_adapter *jme) in jme_phy_on() argument
1729 bmcr = jme_mdio_read(jme->dev, jme->mii_if.phy_id, MII_BMCR); in jme_phy_on()
1731 jme_mdio_write(jme->dev, jme->mii_if.phy_id, MII_BMCR, bmcr); in jme_phy_on()
1733 if (new_phy_power_ctrl(jme->chip_main_rev)) in jme_phy_on()
1734 jme_new_phy_on(jme); in jme_phy_on()
1738 jme_phy_off(struct jme_adapter *jme) in jme_phy_off() argument
1742 bmcr = jme_mdio_read(jme->dev, jme->mii_if.phy_id, MII_BMCR); in jme_phy_off()
1744 jme_mdio_write(jme->dev, jme->mii_if.phy_id, MII_BMCR, bmcr); in jme_phy_off()
1746 if (new_phy_power_ctrl(jme->chip_main_rev)) in jme_phy_off()
1747 jme_new_phy_off(jme); in jme_phy_off()
1751 jme_phy_specreg_read(struct jme_adapter *jme, u32 specreg) in jme_phy_specreg_read() argument
1756 jme_mdio_write(jme->dev, jme->mii_if.phy_id, JM_PHY_SPEC_ADDR_REG, in jme_phy_specreg_read()
1758 return jme_mdio_read(jme->dev, jme->mii_if.phy_id, in jme_phy_specreg_read()
1763 jme_phy_specreg_write(struct jme_adapter *jme, u32 ext_reg, u32 phy_data) in jme_phy_specreg_write() argument
1768 jme_mdio_write(jme->dev, jme->mii_if.phy_id, JM_PHY_SPEC_DATA_REG, in jme_phy_specreg_write()
1770 jme_mdio_write(jme->dev, jme->mii_if.phy_id, JM_PHY_SPEC_ADDR_REG, in jme_phy_specreg_write()
1775 jme_phy_calibration(struct jme_adapter *jme) in jme_phy_calibration() argument
1779 jme_phy_off(jme); in jme_phy_calibration()
1780 jme_phy_on(jme); in jme_phy_calibration()
1782 ctrl1000 = jme_mdio_read(jme->dev, jme->mii_if.phy_id, MII_CTRL1000); in jme_phy_calibration()
1785 jme_mdio_write(jme->dev, jme->mii_if.phy_id, MII_CTRL1000, ctrl1000); in jme_phy_calibration()
1787 phy_data = jme_phy_specreg_read(jme, JM_PHY_EXT_COMM_2_REG); in jme_phy_calibration()
1791 jme_phy_specreg_write(jme, JM_PHY_EXT_COMM_2_REG, phy_data); in jme_phy_calibration()
1793 phy_data = jme_phy_specreg_read(jme, JM_PHY_EXT_COMM_2_REG); in jme_phy_calibration()
1797 jme_phy_specreg_write(jme, JM_PHY_EXT_COMM_2_REG, phy_data); in jme_phy_calibration()
1800 ctrl1000 = jme_mdio_read(jme->dev, jme->mii_if.phy_id, MII_CTRL1000); in jme_phy_calibration()
1802 jme_mdio_write(jme->dev, jme->mii_if.phy_id, MII_CTRL1000, ctrl1000); in jme_phy_calibration()
1807 jme_phy_setEA(struct jme_adapter *jme) in jme_phy_setEA() argument
1812 pci_read_config_byte(jme->pdev, PCI_PRIV_SHARE_NICCTRL, &nic_ctrl); in jme_phy_setEA()
1816 switch (jme->pdev->device) { in jme_phy_setEA()
1818 if (((jme->chip_main_rev == 5) && in jme_phy_setEA()
1819 ((jme->chip_sub_rev == 0) || (jme->chip_sub_rev == 1) || in jme_phy_setEA()
1820 (jme->chip_sub_rev == 3))) || in jme_phy_setEA()
1821 (jme->chip_main_rev >= 6)) { in jme_phy_setEA()
1825 if ((jme->chip_main_rev == 3) && in jme_phy_setEA()
1826 ((jme->chip_sub_rev == 1) || (jme->chip_sub_rev == 2))) in jme_phy_setEA()
1830 if (((jme->chip_main_rev == 5) && in jme_phy_setEA()
1831 ((jme->chip_sub_rev == 0) || (jme->chip_sub_rev == 1) || in jme_phy_setEA()
1832 (jme->chip_sub_rev == 3))) || in jme_phy_setEA()
1833 (jme->chip_main_rev >= 6)) { in jme_phy_setEA()
1837 if ((jme->chip_main_rev == 3) && in jme_phy_setEA()
1838 ((jme->chip_sub_rev == 1) || (jme->chip_sub_rev == 2))) in jme_phy_setEA()
1840 if ((jme->chip_main_rev == 2) && (jme->chip_sub_rev == 0)) in jme_phy_setEA()
1842 if ((jme->chip_main_rev == 2) && (jme->chip_sub_rev == 2)) in jme_phy_setEA()
1849 jme_phy_specreg_write(jme, JM_PHY_EXT_COMM_0_REG, phy_comm0); in jme_phy_setEA()
1851 jme_phy_specreg_write(jme, JM_PHY_EXT_COMM_1_REG, phy_comm1); in jme_phy_setEA()
1859 struct jme_adapter *jme = netdev_priv(netdev); in jme_open() local
1862 jme_clear_pm_disable_wol(jme); in jme_open()
1863 JME_NAPI_ENABLE(jme); in jme_open()
1865 tasklet_init(&jme->linkch_task, jme_link_change_tasklet, in jme_open()
1866 (unsigned long) jme); in jme_open()
1867 tasklet_init(&jme->txclean_task, jme_tx_clean_tasklet, in jme_open()
1868 (unsigned long) jme); in jme_open()
1869 tasklet_init(&jme->rxclean_task, jme_rx_clean_tasklet, in jme_open()
1870 (unsigned long) jme); in jme_open()
1871 tasklet_init(&jme->rxempty_task, jme_rx_empty_tasklet, in jme_open()
1872 (unsigned long) jme); in jme_open()
1874 rc = jme_request_irq(jme); in jme_open()
1878 jme_start_irq(jme); in jme_open()
1880 jme_phy_on(jme); in jme_open()
1881 if (test_bit(JME_FLAG_SSET, &jme->flags)) in jme_open()
1882 jme_set_settings(netdev, &jme->old_ecmd); in jme_open()
1884 jme_reset_phy_processor(jme); in jme_open()
1885 jme_phy_calibration(jme); in jme_open()
1886 jme_phy_setEA(jme); in jme_open()
1887 jme_reset_link(jme); in jme_open()
1898 jme_set_100m_half(struct jme_adapter *jme) in jme_set_100m_half() argument
1902 jme_phy_on(jme); in jme_set_100m_half()
1903 bmcr = jme_mdio_read(jme->dev, jme->mii_if.phy_id, MII_BMCR); in jme_set_100m_half()
1909 jme_mdio_write(jme->dev, jme->mii_if.phy_id, MII_BMCR, tmp); in jme_set_100m_half()
1911 if (jme->fpgaver) in jme_set_100m_half()
1912 jwrite32(jme, JME_GHC, GHC_SPEED_100M | GHC_LINK_POLL); in jme_set_100m_half()
1914 jwrite32(jme, JME_GHC, GHC_SPEED_100M); in jme_set_100m_half()
1919 jme_wait_link(struct jme_adapter *jme) in jme_wait_link() argument
1924 phylink = jme_linkstat_from_phy(jme); in jme_wait_link()
1927 phylink = jme_linkstat_from_phy(jme); in jme_wait_link()
1932 jme_powersave_phy(struct jme_adapter *jme) in jme_powersave_phy() argument
1934 if (jme->reg_pmcs && device_may_wakeup(&jme->pdev->dev)) { in jme_powersave_phy()
1935 jme_set_100m_half(jme); in jme_powersave_phy()
1936 if (jme->reg_pmcs & (PMCS_LFEN | PMCS_LREN)) in jme_powersave_phy()
1937 jme_wait_link(jme); in jme_powersave_phy()
1938 jme_clear_pm_enable_wol(jme); in jme_powersave_phy()
1940 jme_phy_off(jme); in jme_powersave_phy()
1947 struct jme_adapter *jme = netdev_priv(netdev); in jme_close() local
1952 jme_stop_irq(jme); in jme_close()
1953 jme_free_irq(jme); in jme_close()
1955 JME_NAPI_DISABLE(jme); in jme_close()
1957 tasklet_kill(&jme->linkch_task); in jme_close()
1958 tasklet_kill(&jme->txclean_task); in jme_close()
1959 tasklet_kill(&jme->rxclean_task); in jme_close()
1960 tasklet_kill(&jme->rxempty_task); in jme_close()
1962 jme_disable_rx_engine(jme); in jme_close()
1963 jme_disable_tx_engine(jme); in jme_close()
1964 jme_reset_mac_processor(jme); in jme_close()
1965 jme_free_rx_resources(jme); in jme_close()
1966 jme_free_tx_resources(jme); in jme_close()
1967 jme->phylink = 0; in jme_close()
1968 jme_phy_off(jme); in jme_close()
1974 jme_alloc_txdesc(struct jme_adapter *jme, in jme_alloc_txdesc() argument
1977 struct jme_ring *txring = &(jme->txring[0]); in jme_alloc_txdesc()
1978 int idx, nr_alloc, mask = jme->tx_ring_mask; in jme_alloc_txdesc()
2032 static void jme_drop_tx_map(struct jme_adapter *jme, int startidx, int count) in jme_drop_tx_map() argument
2034 struct jme_ring *txring = &(jme->txring[0]); in jme_drop_tx_map()
2036 int mask = jme->tx_ring_mask; in jme_drop_tx_map()
2041 pci_unmap_page(jme->pdev, in jme_drop_tx_map()
2053 jme_map_tx_skb(struct jme_adapter *jme, struct sk_buff *skb, int idx) in jme_map_tx_skb() argument
2055 struct jme_ring *txring = &(jme->txring[0]); in jme_map_tx_skb()
2058 bool hidma = jme->dev->features & NETIF_F_HIGHDMA; in jme_map_tx_skb()
2060 int mask = jme->tx_ring_mask; in jme_map_tx_skb()
2070 ret = jme_fill_tx_map(jme->pdev, ctxdesc, ctxbi, in jme_map_tx_skb()
2074 jme_drop_tx_map(jme, idx, i); in jme_map_tx_skb()
2083 ret = jme_fill_tx_map(jme->pdev, ctxdesc, ctxbi, virt_to_page(skb->data), in jme_map_tx_skb()
2086 jme_drop_tx_map(jme, idx, i); in jme_map_tx_skb()
2125 jme_tx_csum(struct jme_adapter *jme, struct sk_buff *skb, u8 *flags) in jme_tx_csum() argument
2150 netif_err(jme, tx_err, jme->dev, "Error upper layer protocol\n"); in jme_tx_csum()
2166 jme_fill_tx_desc(struct jme_adapter *jme, struct sk_buff *skb, int idx) in jme_fill_tx_desc() argument
2168 struct jme_ring *txring = &(jme->txring[0]); in jme_fill_tx_desc()
2195 jme_tx_csum(jme, skb, &flags); in jme_fill_tx_desc()
2197 ret = jme_map_tx_skb(jme, skb, idx); in jme_fill_tx_desc()
2218 jme_stop_queue_if_full(struct jme_adapter *jme) in jme_stop_queue_if_full() argument
2220 struct jme_ring *txring = &(jme->txring[0]); in jme_stop_queue_if_full()
2228 netif_stop_queue(jme->dev); in jme_stop_queue_if_full()
2229 netif_info(jme, tx_queued, jme->dev, "TX Queue Paused\n"); in jme_stop_queue_if_full()
2232 >= (jme->tx_wake_threshold)) { in jme_stop_queue_if_full()
2233 netif_wake_queue(jme->dev); in jme_stop_queue_if_full()
2234 netif_info(jme, tx_queued, jme->dev, "TX Queue Fast Waked\n"); in jme_stop_queue_if_full()
2241 netif_stop_queue(jme->dev); in jme_stop_queue_if_full()
2242 netif_info(jme, tx_queued, jme->dev, in jme_stop_queue_if_full()
2254 struct jme_adapter *jme = netdev_priv(netdev); in jme_start_xmit() local
2259 ++(NET_STAT(jme).tx_dropped); in jme_start_xmit()
2263 idx = jme_alloc_txdesc(jme, skb); in jme_start_xmit()
2267 netif_err(jme, tx_err, jme->dev, in jme_start_xmit()
2273 if (jme_fill_tx_desc(jme, skb, idx)) in jme_start_xmit()
2276 jwrite32(jme, JME_TXCS, jme->reg_txcs | in jme_start_xmit()
2281 tx_dbg(jme, "xmit: %d+%d@%lu\n", in jme_start_xmit()
2283 jme_stop_queue_if_full(jme); in jme_start_xmit()
2291 struct jme_adapter *jme = netdev_priv(netdev); in jme_set_unicastaddr() local
2298 jwrite32(jme, JME_RXUMA_LO, val); in jme_set_unicastaddr()
2301 jwrite32(jme, JME_RXUMA_HI, val); in jme_set_unicastaddr()
2307 struct jme_adapter *jme = netdev_priv(netdev); in jme_set_macaddr() local
2313 spin_lock_bh(&jme->macaddr_lock); in jme_set_macaddr()
2316 spin_unlock_bh(&jme->macaddr_lock); in jme_set_macaddr()
2324 struct jme_adapter *jme = netdev_priv(netdev); in jme_set_multi() local
2327 spin_lock_bh(&jme->rxmcs_lock); in jme_set_multi()
2329 jme->reg_rxmcs |= RXMCS_BRDFRAME | RXMCS_UNIFRAME; in jme_set_multi()
2332 jme->reg_rxmcs |= RXMCS_ALLFRAME; in jme_set_multi()
2334 jme->reg_rxmcs |= RXMCS_ALLMULFRAME; in jme_set_multi()
2339 jme->reg_rxmcs |= RXMCS_MULFRAME | RXMCS_MULFILTERED; in jme_set_multi()
2345 jwrite32(jme, JME_RXMCHT_LO, mc_hash[0]); in jme_set_multi()
2346 jwrite32(jme, JME_RXMCHT_HI, mc_hash[1]); in jme_set_multi()
2350 jwrite32(jme, JME_RXMCS, jme->reg_rxmcs); in jme_set_multi()
2352 spin_unlock_bh(&jme->rxmcs_lock); in jme_set_multi()
2358 struct jme_adapter *jme = netdev_priv(netdev); in jme_change_mtu() local
2360 if (new_mtu == jme->old_mtu) in jme_change_mtu()
2371 jme_restart_rx_engine(jme); in jme_change_mtu()
2372 jme_reset_link(jme); in jme_change_mtu()
2380 struct jme_adapter *jme = netdev_priv(netdev); in jme_tx_timeout() local
2382 jme->phylink = 0; in jme_tx_timeout()
2383 jme_reset_phy_processor(jme); in jme_tx_timeout()
2384 if (test_bit(JME_FLAG_SSET, &jme->flags)) in jme_tx_timeout()
2385 jme_set_settings(netdev, &jme->old_ecmd); in jme_tx_timeout()
2390 jme_reset_link(jme); in jme_tx_timeout()
2393 static inline void jme_pause_rx(struct jme_adapter *jme) in jme_pause_rx() argument
2395 atomic_dec(&jme->link_changing); in jme_pause_rx()
2397 jme_set_rx_pcc(jme, PCC_OFF); in jme_pause_rx()
2398 if (test_bit(JME_FLAG_POLL, &jme->flags)) { in jme_pause_rx()
2399 JME_NAPI_DISABLE(jme); in jme_pause_rx()
2401 tasklet_disable(&jme->rxclean_task); in jme_pause_rx()
2402 tasklet_disable(&jme->rxempty_task); in jme_pause_rx()
2406 static inline void jme_resume_rx(struct jme_adapter *jme) in jme_resume_rx() argument
2408 struct dynpcc_info *dpi = &(jme->dpi); in jme_resume_rx()
2410 if (test_bit(JME_FLAG_POLL, &jme->flags)) { in jme_resume_rx()
2411 JME_NAPI_ENABLE(jme); in jme_resume_rx()
2413 tasklet_enable(&jme->rxclean_task); in jme_resume_rx()
2414 tasklet_enable(&jme->rxempty_task); in jme_resume_rx()
2419 jme_set_rx_pcc(jme, PCC_P1); in jme_resume_rx()
2421 atomic_inc(&jme->link_changing); in jme_resume_rx()
2428 struct jme_adapter *jme = netdev_priv(netdev); in jme_get_drvinfo() local
2432 strlcpy(info->bus_info, pci_name(jme->pdev), sizeof(info->bus_info)); in jme_get_drvinfo()
2442 mmapio_memcpy(struct jme_adapter *jme, u32 *p, u32 reg, int len) in mmapio_memcpy() argument
2447 p[i >> 2] = jread32(jme, reg + i); in mmapio_memcpy()
2451 mdio_memcpy(struct jme_adapter *jme, u32 *p, int reg_nr) in mdio_memcpy() argument
2457 p16[i] = jme_mdio_read(jme->dev, jme->mii_if.phy_id, i); in mdio_memcpy()
2463 struct jme_adapter *jme = netdev_priv(netdev); in jme_get_regs() local
2469 mmapio_memcpy(jme, p32, JME_MAC, JME_MAC_LEN); in jme_get_regs()
2472 mmapio_memcpy(jme, p32, JME_PHY, JME_PHY_LEN); in jme_get_regs()
2475 mmapio_memcpy(jme, p32, JME_MISC, JME_MISC_LEN); in jme_get_regs()
2478 mmapio_memcpy(jme, p32, JME_RSS, JME_RSS_LEN); in jme_get_regs()
2481 mdio_memcpy(jme, p32, JME_PHY_REG_NR); in jme_get_regs()
2487 struct jme_adapter *jme = netdev_priv(netdev); in jme_get_coalesce() local
2492 if (test_bit(JME_FLAG_POLL, &jme->flags)) { in jme_get_coalesce()
2501 switch (jme->dpi.cur) { in jme_get_coalesce()
2524 struct jme_adapter *jme = netdev_priv(netdev); in jme_set_coalesce() local
2525 struct dynpcc_info *dpi = &(jme->dpi); in jme_set_coalesce()
2531 test_bit(JME_FLAG_POLL, &jme->flags)) { in jme_set_coalesce()
2532 clear_bit(JME_FLAG_POLL, &jme->flags); in jme_set_coalesce()
2533 jme->jme_rx = netif_rx; in jme_set_coalesce()
2537 jme_set_rx_pcc(jme, PCC_P1); in jme_set_coalesce()
2538 jme_interrupt_mode(jme); in jme_set_coalesce()
2540 !(test_bit(JME_FLAG_POLL, &jme->flags))) { in jme_set_coalesce()
2541 set_bit(JME_FLAG_POLL, &jme->flags); in jme_set_coalesce()
2542 jme->jme_rx = netif_receive_skb; in jme_set_coalesce()
2543 jme_interrupt_mode(jme); in jme_set_coalesce()
2553 struct jme_adapter *jme = netdev_priv(netdev); in jme_get_pauseparam() local
2556 ecmd->tx_pause = (jme->reg_txpfc & TXPFC_PF_EN) != 0; in jme_get_pauseparam()
2557 ecmd->rx_pause = (jme->reg_rxmcs & RXMCS_FLOWCTRL) != 0; in jme_get_pauseparam()
2559 spin_lock_bh(&jme->phy_lock); in jme_get_pauseparam()
2560 val = jme_mdio_read(jme->dev, jme->mii_if.phy_id, MII_ADVERTISE); in jme_get_pauseparam()
2561 spin_unlock_bh(&jme->phy_lock); in jme_get_pauseparam()
2571 struct jme_adapter *jme = netdev_priv(netdev); in jme_set_pauseparam() local
2574 if (((jme->reg_txpfc & TXPFC_PF_EN) != 0) ^ in jme_set_pauseparam()
2578 jme->reg_txpfc |= TXPFC_PF_EN; in jme_set_pauseparam()
2580 jme->reg_txpfc &= ~TXPFC_PF_EN; in jme_set_pauseparam()
2582 jwrite32(jme, JME_TXPFC, jme->reg_txpfc); in jme_set_pauseparam()
2585 spin_lock_bh(&jme->rxmcs_lock); in jme_set_pauseparam()
2586 if (((jme->reg_rxmcs & RXMCS_FLOWCTRL) != 0) ^ in jme_set_pauseparam()
2590 jme->reg_rxmcs |= RXMCS_FLOWCTRL; in jme_set_pauseparam()
2592 jme->reg_rxmcs &= ~RXMCS_FLOWCTRL; in jme_set_pauseparam()
2594 jwrite32(jme, JME_RXMCS, jme->reg_rxmcs); in jme_set_pauseparam()
2596 spin_unlock_bh(&jme->rxmcs_lock); in jme_set_pauseparam()
2598 spin_lock_bh(&jme->phy_lock); in jme_set_pauseparam()
2599 val = jme_mdio_read(jme->dev, jme->mii_if.phy_id, MII_ADVERTISE); in jme_set_pauseparam()
2608 jme_mdio_write(jme->dev, jme->mii_if.phy_id, in jme_set_pauseparam()
2611 spin_unlock_bh(&jme->phy_lock); in jme_set_pauseparam()
2620 struct jme_adapter *jme = netdev_priv(netdev); in jme_get_wol() local
2626 if (jme->reg_pmcs & (PMCS_LFEN | PMCS_LREN)) in jme_get_wol()
2629 if (jme->reg_pmcs & PMCS_MFEN) in jme_get_wol()
2638 struct jme_adapter *jme = netdev_priv(netdev); in jme_set_wol() local
2647 jme->reg_pmcs = 0; in jme_set_wol()
2650 jme->reg_pmcs |= PMCS_LFEN | PMCS_LREN; in jme_set_wol()
2653 jme->reg_pmcs |= PMCS_MFEN; in jme_set_wol()
2662 struct jme_adapter *jme = netdev_priv(netdev); in jme_get_settings() local
2665 spin_lock_bh(&jme->phy_lock); in jme_get_settings()
2666 rc = mii_ethtool_gset(&(jme->mii_if), ecmd); in jme_get_settings()
2667 spin_unlock_bh(&jme->phy_lock); in jme_get_settings()
2675 struct jme_adapter *jme = netdev_priv(netdev); in jme_set_settings() local
2686 if (jme->mii_if.force_media && in jme_set_settings()
2688 (jme->mii_if.full_duplex != ecmd->duplex)) in jme_set_settings()
2691 spin_lock_bh(&jme->phy_lock); in jme_set_settings()
2692 rc = mii_ethtool_sset(&(jme->mii_if), ecmd); in jme_set_settings()
2693 spin_unlock_bh(&jme->phy_lock); in jme_set_settings()
2697 jme_reset_link(jme); in jme_set_settings()
2698 jme->old_ecmd = *ecmd; in jme_set_settings()
2699 set_bit(JME_FLAG_SSET, &jme->flags); in jme_set_settings()
2709 struct jme_adapter *jme = netdev_priv(netdev); in jme_ioctl() local
2720 spin_lock_bh(&jme->phy_lock); in jme_ioctl()
2721 rc = generic_mii_ioctl(&jme->mii_if, mii_data, cmd, &duplex_chg); in jme_ioctl()
2722 spin_unlock_bh(&jme->phy_lock); in jme_ioctl()
2726 jme_reset_link(jme); in jme_ioctl()
2727 jme_get_settings(netdev, &jme->old_ecmd); in jme_ioctl()
2728 set_bit(JME_FLAG_SSET, &jme->flags); in jme_ioctl()
2737 struct jme_adapter *jme = netdev_priv(netdev); in jme_get_link() local
2738 return jread32(jme, JME_PHY_LINK) & PHY_LINK_UP; in jme_get_link()
2744 struct jme_adapter *jme = netdev_priv(netdev); in jme_get_msglevel() local
2745 return jme->msg_enable; in jme_get_msglevel()
2751 struct jme_adapter *jme = netdev_priv(netdev); in jme_set_msglevel() local
2752 jme->msg_enable = value; in jme_set_msglevel()
2766 struct jme_adapter *jme = netdev_priv(netdev); in jme_set_features() local
2768 spin_lock_bh(&jme->rxmcs_lock); in jme_set_features()
2770 jme->reg_rxmcs |= RXMCS_CHECKSUM; in jme_set_features()
2772 jme->reg_rxmcs &= ~RXMCS_CHECKSUM; in jme_set_features()
2773 jwrite32(jme, JME_RXMCS, jme->reg_rxmcs); in jme_set_features()
2774 spin_unlock_bh(&jme->rxmcs_lock); in jme_set_features()
2793 struct jme_adapter *jme = netdev_priv(netdev); in jme_nway_reset() local
2794 jme_restart_an(jme); in jme_nway_reset()
2799 jme_smb_read(struct jme_adapter *jme, unsigned int addr) in jme_smb_read() argument
2804 val = jread32(jme, JME_SMBCSR); in jme_smb_read()
2808 val = jread32(jme, JME_SMBCSR); in jme_smb_read()
2811 netif_err(jme, hw, jme->dev, "SMB Bus Busy\n"); in jme_smb_read()
2815 jwrite32(jme, JME_SMBINTF, in jme_smb_read()
2820 val = jread32(jme, JME_SMBINTF); in jme_smb_read()
2824 val = jread32(jme, JME_SMBINTF); in jme_smb_read()
2827 netif_err(jme, hw, jme->dev, "SMB Bus Busy\n"); in jme_smb_read()
2835 jme_smb_write(struct jme_adapter *jme, unsigned int addr, u8 data) in jme_smb_write() argument
2840 val = jread32(jme, JME_SMBCSR); in jme_smb_write()
2844 val = jread32(jme, JME_SMBCSR); in jme_smb_write()
2847 netif_err(jme, hw, jme->dev, "SMB Bus Busy\n"); in jme_smb_write()
2851 jwrite32(jme, JME_SMBINTF, in jme_smb_write()
2857 val = jread32(jme, JME_SMBINTF); in jme_smb_write()
2861 val = jread32(jme, JME_SMBINTF); in jme_smb_write()
2864 netif_err(jme, hw, jme->dev, "SMB Bus Busy\n"); in jme_smb_write()
2874 struct jme_adapter *jme = netdev_priv(netdev); in jme_get_eeprom_len() local
2876 val = jread32(jme, JME_SMBCSR); in jme_get_eeprom_len()
2884 struct jme_adapter *jme = netdev_priv(netdev); in jme_get_eeprom() local
2892 data[i] = jme_smb_read(jme, i + offset); in jme_get_eeprom()
2901 struct jme_adapter *jme = netdev_priv(netdev); in jme_set_eeprom() local
2911 jme_smb_write(jme, i + offset, data[i]); in jme_set_eeprom()
2958 jme_phy_init(struct jme_adapter *jme) in jme_phy_init() argument
2962 reg26 = jme_mdio_read(jme->dev, jme->mii_if.phy_id, 26); in jme_phy_init()
2963 jme_mdio_write(jme->dev, jme->mii_if.phy_id, 26, reg26 | 0x1000); in jme_phy_init()
2967 jme_check_hw_ver(struct jme_adapter *jme) in jme_check_hw_ver() argument
2971 chipmode = jread32(jme, JME_CHIPMODE); in jme_check_hw_ver()
2973 jme->fpgaver = (chipmode & CM_FPGAVER_MASK) >> CM_FPGAVER_SHIFT; in jme_check_hw_ver()
2974 jme->chiprev = (chipmode & CM_CHIPREV_MASK) >> CM_CHIPREV_SHIFT; in jme_check_hw_ver()
2975 jme->chip_main_rev = jme->chiprev & 0xF; in jme_check_hw_ver()
2976 jme->chip_sub_rev = (jme->chiprev >> 4) & 0xF; in jme_check_hw_ver()
3002 struct jme_adapter *jme; in jme_init_one() local
3042 netdev = alloc_etherdev(sizeof(*jme)); in jme_init_one()
3072 jme = netdev_priv(netdev); in jme_init_one()
3073 jme->pdev = pdev; in jme_init_one()
3074 jme->dev = netdev; in jme_init_one()
3075 jme->jme_rx = netif_rx; in jme_init_one()
3076 jme->old_mtu = netdev->mtu = 1500; in jme_init_one()
3077 jme->phylink = 0; in jme_init_one()
3078 jme->tx_ring_size = 1 << 10; in jme_init_one()
3079 jme->tx_ring_mask = jme->tx_ring_size - 1; in jme_init_one()
3080 jme->tx_wake_threshold = 1 << 9; in jme_init_one()
3081 jme->rx_ring_size = 1 << 9; in jme_init_one()
3082 jme->rx_ring_mask = jme->rx_ring_size - 1; in jme_init_one()
3083 jme->msg_enable = JME_DEF_MSG_ENABLE; in jme_init_one()
3084 jme->regs = ioremap(pci_resource_start(pdev, 0), in jme_init_one()
3086 if (!(jme->regs)) { in jme_init_one()
3093 apmc = jread32(jme, JME_APMC) & ~JME_APMC_PSEUDO_HP_EN; in jme_init_one()
3094 jwrite32(jme, JME_APMC, apmc); in jme_init_one()
3096 apmc = jread32(jme, JME_APMC) | JME_APMC_PSEUDO_HP_EN; in jme_init_one()
3097 jwrite32(jme, JME_APMC, apmc); in jme_init_one()
3100 NETIF_NAPI_SET(netdev, &jme->napi, jme_poll, NAPI_POLL_WEIGHT) in jme_init_one()
3102 spin_lock_init(&jme->phy_lock); in jme_init_one()
3103 spin_lock_init(&jme->macaddr_lock); in jme_init_one()
3104 spin_lock_init(&jme->rxmcs_lock); in jme_init_one()
3106 atomic_set(&jme->link_changing, 1); in jme_init_one()
3107 atomic_set(&jme->rx_cleaning, 1); in jme_init_one()
3108 atomic_set(&jme->tx_cleaning, 1); in jme_init_one()
3109 atomic_set(&jme->rx_empty, 1); in jme_init_one()
3111 tasklet_init(&jme->pcc_task, in jme_init_one()
3113 (unsigned long) jme); in jme_init_one()
3114 jme->dpi.cur = PCC_P1; in jme_init_one()
3116 jme->reg_ghc = 0; in jme_init_one()
3117 jme->reg_rxcs = RXCS_DEFAULT; in jme_init_one()
3118 jme->reg_rxmcs = RXMCS_DEFAULT; in jme_init_one()
3119 jme->reg_txpfc = 0; in jme_init_one()
3120 jme->reg_pmcs = PMCS_MFEN; in jme_init_one()
3121 jme->reg_gpreg1 = GPREG1_DEFAULT; in jme_init_one()
3123 if (jme->reg_rxmcs & RXMCS_CHECKSUM) in jme_init_one()
3129 pci_read_config_byte(pdev, PCI_DCSR_MRRS, &jme->mrrs); in jme_init_one()
3130 jme->mrrs &= PCI_DCSR_MRRS_MASK; in jme_init_one()
3131 switch (jme->mrrs) { in jme_init_one()
3133 jme->reg_txcs = TXCS_DEFAULT | TXCS_DMASIZE_128B; in jme_init_one()
3136 jme->reg_txcs = TXCS_DEFAULT | TXCS_DMASIZE_256B; in jme_init_one()
3139 jme->reg_txcs = TXCS_DEFAULT | TXCS_DMASIZE_512B; in jme_init_one()
3146 jme_check_hw_ver(jme); in jme_init_one()
3147 jme->mii_if.dev = netdev; in jme_init_one()
3148 if (jme->fpgaver) { in jme_init_one()
3149 jme->mii_if.phy_id = 0; in jme_init_one()
3154 jme->mii_if.phy_id = i; in jme_init_one()
3159 if (!jme->mii_if.phy_id) { in jme_init_one()
3165 jme->reg_ghc |= GHC_LINK_POLL; in jme_init_one()
3167 jme->mii_if.phy_id = 1; in jme_init_one()
3170 jme->mii_if.supports_gmii = true; in jme_init_one()
3172 jme->mii_if.supports_gmii = false; in jme_init_one()
3173 jme->mii_if.phy_id_mask = 0x1F; in jme_init_one()
3174 jme->mii_if.reg_num_mask = 0x1F; in jme_init_one()
3175 jme->mii_if.mdio_read = jme_mdio_read; in jme_init_one()
3176 jme->mii_if.mdio_write = jme_mdio_write; in jme_init_one()
3178 jme_clear_pm_disable_wol(jme); in jme_init_one()
3181 jme_set_phyfifo_5level(jme); in jme_init_one()
3182 jme->pcirev = pdev->revision; in jme_init_one()
3183 if (!jme->fpgaver) in jme_init_one()
3184 jme_phy_init(jme); in jme_init_one()
3185 jme_phy_off(jme); in jme_init_one()
3190 jme_reset_mac_processor(jme); in jme_init_one()
3191 rc = jme_reload_eeprom(jme); in jme_init_one()
3209 netif_info(jme, probe, jme->dev, "%s%s chiprev:%x pcirev:%x macaddr:%pM\n", in jme_init_one()
3210 (jme->pdev->device == PCI_DEVICE_ID_JMICRON_JMC250) ? in jme_init_one()
3212 (jme->pdev->device == PCI_DEVICE_ID_JMICRON_JMC260) ? in jme_init_one()
3214 (jme->fpgaver != 0) ? " (FPGA)" : "", in jme_init_one()
3215 (jme->fpgaver != 0) ? jme->fpgaver : jme->chiprev, in jme_init_one()
3216 jme->pcirev, netdev->dev_addr); in jme_init_one()
3221 iounmap(jme->regs); in jme_init_one()
3236 struct jme_adapter *jme = netdev_priv(netdev); in jme_remove_one() local
3239 iounmap(jme->regs); in jme_remove_one()
3250 struct jme_adapter *jme = netdev_priv(netdev); in jme_shutdown() local
3252 jme_powersave_phy(jme); in jme_shutdown()
3262 struct jme_adapter *jme = netdev_priv(netdev); in jme_suspend() local
3267 atomic_dec(&jme->link_changing); in jme_suspend()
3271 jme_stop_irq(jme); in jme_suspend()
3273 tasklet_disable(&jme->txclean_task); in jme_suspend()
3274 tasklet_disable(&jme->rxclean_task); in jme_suspend()
3275 tasklet_disable(&jme->rxempty_task); in jme_suspend()
3278 if (test_bit(JME_FLAG_POLL, &jme->flags)) in jme_suspend()
3279 jme_polling_mode(jme); in jme_suspend()
3281 jme_stop_pcc_timer(jme); in jme_suspend()
3282 jme_disable_rx_engine(jme); in jme_suspend()
3283 jme_disable_tx_engine(jme); in jme_suspend()
3284 jme_reset_mac_processor(jme); in jme_suspend()
3285 jme_free_rx_resources(jme); in jme_suspend()
3286 jme_free_tx_resources(jme); in jme_suspend()
3288 jme->phylink = 0; in jme_suspend()
3291 tasklet_enable(&jme->txclean_task); in jme_suspend()
3292 tasklet_enable(&jme->rxclean_task); in jme_suspend()
3293 tasklet_enable(&jme->rxempty_task); in jme_suspend()
3295 jme_powersave_phy(jme); in jme_suspend()
3305 struct jme_adapter *jme = netdev_priv(netdev); in jme_resume() local
3310 jme_clear_pm_disable_wol(jme); in jme_resume()
3311 jme_phy_on(jme); in jme_resume()
3312 if (test_bit(JME_FLAG_SSET, &jme->flags)) in jme_resume()
3313 jme_set_settings(netdev, &jme->old_ecmd); in jme_resume()
3315 jme_reset_phy_processor(jme); in jme_resume()
3316 jme_phy_calibration(jme); in jme_resume()
3317 jme_phy_setEA(jme); in jme_resume()
3320 atomic_inc(&jme->link_changing); in jme_resume()
3322 jme_reset_link(jme); in jme_resume()
3324 jme_start_irq(jme); in jme_resume()