Lines Matching refs:de

327 static void de_tx (struct de_private *de);
328 static void de_clean_rings (struct de_private *de);
329 static void de_media_interrupt (struct de_private *de, u32 status);
332 static unsigned int de_ok_to_advertise (struct de_private *de, u32 new_media);
366 #define dr32(reg) ioread32(de->regs + (reg))
367 #define dw32(reg, val) iowrite32((val), de->regs + (reg))
370 static void de_rx_err_acct (struct de_private *de, unsigned rx_tail, in de_rx_err_acct() argument
373 netif_dbg(de, rx_err, de->dev, in de_rx_err_acct()
380 netif_warn(de, rx_err, de->dev, in de_rx_err_acct()
383 de->dev->stats.rx_length_errors++; in de_rx_err_acct()
387 de->dev->stats.rx_errors++; /* end of a packet.*/ in de_rx_err_acct()
388 if (status & 0x0890) de->dev->stats.rx_length_errors++; in de_rx_err_acct()
389 if (status & RxErrCRC) de->dev->stats.rx_crc_errors++; in de_rx_err_acct()
390 if (status & RxErrFIFO) de->dev->stats.rx_fifo_errors++; in de_rx_err_acct()
394 static void de_rx (struct de_private *de) in de_rx() argument
396 unsigned rx_tail = de->rx_tail; in de_rx()
407 skb = de->rx_skb[rx_tail].skb; in de_rx()
410 status = le32_to_cpu(de->rx_ring[rx_tail].opts1); in de_rx()
418 mapping = de->rx_skb[rx_tail].mapping; in de_rx()
421 de->dev->stats.rx_dropped++; in de_rx()
426 de_rx_err_acct(de, rx_tail, status, len); in de_rx()
432 netif_dbg(de, rx_status, de->dev, in de_rx()
436 buflen = copying_skb ? (len + RX_OFFSET) : de->rx_buf_sz; in de_rx()
437 copy_skb = netdev_alloc_skb(de->dev, buflen); in de_rx()
439 de->dev->stats.rx_dropped++; in de_rx()
446 dma_unmap_single(&de->pdev->dev, mapping, buflen, in de_rx()
451 de->rx_skb[rx_tail].mapping = in de_rx()
452 dma_map_single(&de->pdev->dev, copy_skb->data, in de_rx()
454 de->rx_skb[rx_tail].skb = copy_skb; in de_rx()
456 dma_sync_single_for_cpu(&de->pdev->dev, mapping, len, in de_rx()
461 dma_sync_single_for_device(&de->pdev->dev, mapping, in de_rx()
468 skb->protocol = eth_type_trans (skb, de->dev); in de_rx()
470 de->dev->stats.rx_packets++; in de_rx()
471 de->dev->stats.rx_bytes += skb->len; in de_rx()
478 de->rx_ring[rx_tail].opts2 = in de_rx()
479 cpu_to_le32(RingEnd | de->rx_buf_sz); in de_rx()
481 de->rx_ring[rx_tail].opts2 = cpu_to_le32(de->rx_buf_sz); in de_rx()
482 de->rx_ring[rx_tail].addr1 = cpu_to_le32(mapping); in de_rx()
484 de->rx_ring[rx_tail].opts1 = cpu_to_le32(DescOwn); in de_rx()
489 netdev_warn(de->dev, "rx work limit reached\n"); in de_rx()
491 de->rx_tail = rx_tail; in de_rx()
497 struct de_private *de = netdev_priv(dev); in de_interrupt() local
504 netif_dbg(de, intr, dev, "intr, status %08x mode %08x desc %u/%u/%u\n", in de_interrupt()
506 de->rx_tail, de->tx_head, de->tx_tail); in de_interrupt()
511 de_rx(de); in de_interrupt()
516 spin_lock(&de->lock); in de_interrupt()
519 de_tx(de); in de_interrupt()
522 de_media_interrupt(de, status); in de_interrupt()
524 spin_unlock(&de->lock); in de_interrupt()
529 pci_read_config_word(de->pdev, PCI_STATUS, &pci_status); in de_interrupt()
530 pci_write_config_word(de->pdev, PCI_STATUS, pci_status); in de_interrupt()
531 netdev_err(de->dev, in de_interrupt()
539 static void de_tx (struct de_private *de) in de_tx() argument
541 unsigned tx_head = de->tx_head; in de_tx()
542 unsigned tx_tail = de->tx_tail; in de_tx()
549 status = le32_to_cpu(de->tx_ring[tx_tail].opts1); in de_tx()
553 skb = de->tx_skb[tx_tail].skb; in de_tx()
559 dma_unmap_single(&de->pdev->dev, in de_tx()
560 de->tx_skb[tx_tail].mapping, in de_tx()
561 sizeof(de->setup_frame), in de_tx()
566 dma_unmap_single(&de->pdev->dev, de->tx_skb[tx_tail].mapping, in de_tx()
571 netif_dbg(de, tx_err, de->dev, in de_tx()
574 de->dev->stats.tx_errors++; in de_tx()
576 de->dev->stats.tx_window_errors++; in de_tx()
578 de->dev->stats.tx_aborted_errors++; in de_tx()
580 de->dev->stats.tx_carrier_errors++; in de_tx()
582 de->dev->stats.tx_fifo_errors++; in de_tx()
584 de->dev->stats.tx_packets++; in de_tx()
585 de->dev->stats.tx_bytes += skb->len; in de_tx()
586 netif_dbg(de, tx_done, de->dev, in de_tx()
593 de->tx_skb[tx_tail].skb = NULL; in de_tx()
598 de->tx_tail = tx_tail; in de_tx()
600 if (netif_queue_stopped(de->dev) && (TX_BUFFS_AVAIL(de) > (DE_TX_RING_SIZE / 4))) in de_tx()
601 netif_wake_queue(de->dev); in de_tx()
607 struct de_private *de = netdev_priv(dev); in de_start_xmit() local
612 spin_lock_irq(&de->lock); in de_start_xmit()
614 tx_free = TX_BUFFS_AVAIL(de); in de_start_xmit()
617 spin_unlock_irq(&de->lock); in de_start_xmit()
622 entry = de->tx_head; in de_start_xmit()
624 txd = &de->tx_ring[entry]; in de_start_xmit()
627 mapping = dma_map_single(&de->pdev->dev, skb->data, len, in de_start_xmit()
637 de->tx_skb[entry].skb = skb; in de_start_xmit()
638 de->tx_skb[entry].mapping = mapping; in de_start_xmit()
644 de->tx_head = NEXT_TX(entry); in de_start_xmit()
645 netif_dbg(de, tx_queued, dev, "tx queued, slot %d, skblen %d\n", in de_start_xmit()
651 spin_unlock_irq(&de->lock); in de_start_xmit()
666 struct de_private *de = netdev_priv(dev); in build_setup_frame_hash() local
685 setup_frm = &de->setup_frame[13*6]; in build_setup_frame_hash()
696 struct de_private *de = netdev_priv(dev); in build_setup_frame_perfect() local
710 setup_frm = &de->setup_frame[15*6]; in build_setup_frame_perfect()
722 struct de_private *de = netdev_priv(dev); in __de_set_rx_mode() local
745 build_setup_frame_hash (de->setup_frame, dev); in __de_set_rx_mode()
747 build_setup_frame_perfect (de->setup_frame, dev); in __de_set_rx_mode()
753 entry = de->tx_head; in __de_set_rx_mode()
757 de->tx_skb[entry].skb = DE_DUMMY_SKB; in __de_set_rx_mode()
759 dummy_txd = &de->tx_ring[entry]; in __de_set_rx_mode()
769 de->tx_skb[entry].skb = DE_SETUP_SKB; in __de_set_rx_mode()
770 de->tx_skb[entry].mapping = mapping = in __de_set_rx_mode()
771 dma_map_single(&de->pdev->dev, de->setup_frame, in __de_set_rx_mode()
772 sizeof(de->setup_frame), DMA_TO_DEVICE); in __de_set_rx_mode()
775 txd = &de->tx_ring[entry]; in __de_set_rx_mode()
777 txd->opts2 = cpu_to_le32(SetupFrame | RingEnd | sizeof (de->setup_frame)); in __de_set_rx_mode()
779 txd->opts2 = cpu_to_le32(SetupFrame | sizeof (de->setup_frame)); in __de_set_rx_mode()
791 de->tx_head = NEXT_TX(entry); in __de_set_rx_mode()
793 if (TX_BUFFS_AVAIL(de) == 0) in __de_set_rx_mode()
807 struct de_private *de = netdev_priv(dev); in de_set_rx_mode() local
809 spin_lock_irqsave (&de->lock, flags); in de_set_rx_mode()
811 spin_unlock_irqrestore (&de->lock, flags); in de_set_rx_mode()
814 static inline void de_rx_missed(struct de_private *de, u32 rx_missed) in de_rx_missed() argument
817 de->dev->stats.rx_missed_errors += RxMissedMask; in de_rx_missed()
819 de->dev->stats.rx_missed_errors += (rx_missed & RxMissedMask); in de_rx_missed()
822 static void __de_get_stats(struct de_private *de) in __de_get_stats() argument
826 de_rx_missed(de, tmp); in __de_get_stats()
831 struct de_private *de = netdev_priv(dev); in de_get_stats() local
834 spin_lock_irq(&de->lock); in de_get_stats()
836 __de_get_stats(de); in de_get_stats()
837 spin_unlock_irq(&de->lock); in de_get_stats()
842 static inline int de_is_running (struct de_private *de) in de_is_running() argument
847 static void de_stop_rxtx (struct de_private *de) in de_stop_rxtx() argument
863 if (!de_is_running(de)) in de_stop_rxtx()
868 netdev_warn(de->dev, "timeout expired, stopping DMA\n"); in de_stop_rxtx()
871 static inline void de_start_rxtx (struct de_private *de) in de_start_rxtx() argument
882 static void de_stop_hw (struct de_private *de) in de_stop_hw() argument
888 de_stop_rxtx(de); in de_stop_hw()
894 de->rx_tail = 0; in de_stop_hw()
895 de->tx_head = de->tx_tail = 0; in de_stop_hw()
898 static void de_link_up(struct de_private *de) in de_link_up() argument
900 if (!netif_carrier_ok(de->dev)) { in de_link_up()
901 netif_carrier_on(de->dev); in de_link_up()
902 netif_info(de, link, de->dev, "link up, media %s\n", in de_link_up()
903 media_name[de->media_type]); in de_link_up()
907 static void de_link_down(struct de_private *de) in de_link_down() argument
909 if (netif_carrier_ok(de->dev)) { in de_link_down()
910 netif_carrier_off(de->dev); in de_link_down()
911 netif_info(de, link, de->dev, "link down\n"); in de_link_down()
915 static void de_set_media (struct de_private *de) in de_set_media() argument
917 unsigned media = de->media_type; in de_set_media()
920 if (de_is_running(de)) in de_set_media()
921 netdev_warn(de->dev, "chip is running while changing media!\n"); in de_set_media()
923 if (de->de21040) in de_set_media()
926 dw32(CSR14, de->media[media].csr14); in de_set_media()
927 dw32(CSR15, de->media[media].csr15); in de_set_media()
928 dw32(CSR13, de->media[media].csr13); in de_set_media()
940 netif_info(de, link, de->dev, "set link %s\n", media_name[media]); in de_set_media()
941 netif_info(de, hw, de->dev, "mode 0x%x, sia 0x%x,0x%x,0x%x,0x%x\n", in de_set_media()
944 netif_info(de, hw, de->dev, "set mode 0x%x, set sia 0x%x,0x%x,0x%x\n", in de_set_media()
945 macmode, de->media[media].csr13, in de_set_media()
946 de->media[media].csr14, de->media[media].csr15); in de_set_media()
951 static void de_next_media (struct de_private *de, const u32 *media, in de_next_media() argument
957 if (de_ok_to_advertise(de, media[i])) { in de_next_media()
958 de->media_type = media[i]; in de_next_media()
966 struct de_private *de = from_timer(de, t, media_timer); in de21040_media_timer() local
967 struct net_device *dev = de->dev; in de21040_media_timer()
975 if (de->media_type != DE_MEDIA_AUI && (status & LinkFailStatus)) in de21040_media_timer()
978 de->media_timer.expires = jiffies + DE_TIMER_LINK; in de21040_media_timer()
979 add_timer(&de->media_timer); in de21040_media_timer()
981 de_link_up(de); in de21040_media_timer()
983 netif_info(de, timer, dev, "%s link ok, status %x\n", in de21040_media_timer()
984 media_name[de->media_type], status); in de21040_media_timer()
988 de_link_down(de); in de21040_media_timer()
990 if (de->media_lock) in de21040_media_timer()
993 if (de->media_type == DE_MEDIA_AUI) { in de21040_media_timer()
995 de_next_media(de, &next_state, 1); in de21040_media_timer()
998 de_next_media(de, &next_state, 1); in de21040_media_timer()
1001 spin_lock_irqsave(&de->lock, flags); in de21040_media_timer()
1002 de_stop_rxtx(de); in de21040_media_timer()
1003 spin_unlock_irqrestore(&de->lock, flags); in de21040_media_timer()
1004 de_set_media(de); in de21040_media_timer()
1005 de_start_rxtx(de); in de21040_media_timer()
1008 de->media_timer.expires = jiffies + DE_TIMER_NO_LINK; in de21040_media_timer()
1009 add_timer(&de->media_timer); in de21040_media_timer()
1011 netif_info(de, timer, dev, "no link, trying media %s, status %x\n", in de21040_media_timer()
1012 media_name[de->media_type], status); in de21040_media_timer()
1015 static unsigned int de_ok_to_advertise (struct de_private *de, u32 new_media) in de_ok_to_advertise() argument
1019 if (!(de->media_advertise & ADVERTISED_Autoneg)) in de_ok_to_advertise()
1021 if (!(de->media_advertise & (ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full))) in de_ok_to_advertise()
1025 if (!(de->media_advertise & ADVERTISED_BNC)) in de_ok_to_advertise()
1029 if (!(de->media_advertise & ADVERTISED_AUI)) in de_ok_to_advertise()
1033 if (!(de->media_advertise & ADVERTISED_10baseT_Half)) in de_ok_to_advertise()
1037 if (!(de->media_advertise & ADVERTISED_10baseT_Full)) in de_ok_to_advertise()
1047 struct de_private *de = from_timer(de, t, media_timer); in de21041_media_timer() local
1048 struct net_device *dev = de->dev; in de21041_media_timer()
1059 if ((de->media_type == DE_MEDIA_TP_AUTO || in de21041_media_timer()
1060 de->media_type == DE_MEDIA_TP || in de21041_media_timer()
1061 de->media_type == DE_MEDIA_TP_FD) && in de21041_media_timer()
1065 de->media_timer.expires = jiffies + DE_TIMER_LINK; in de21041_media_timer()
1066 add_timer(&de->media_timer); in de21041_media_timer()
1068 de_link_up(de); in de21041_media_timer()
1070 netif_info(de, timer, dev, in de21041_media_timer()
1072 media_name[de->media_type], in de21041_media_timer()
1077 de_link_down(de); in de21041_media_timer()
1080 if (de->media_lock) in de21041_media_timer()
1088 if (de->media_type == DE_MEDIA_AUI || in de21041_media_timer()
1089 de->media_type == DE_MEDIA_BNC) { in de21041_media_timer()
1090 if (de_ok_to_advertise(de, DE_MEDIA_TP_AUTO)) in de21041_media_timer()
1091 de->media_type = DE_MEDIA_TP_AUTO; in de21041_media_timer()
1097 else if (((de->media_supported & DE_AUI_BNC) == SUPPORTED_BNC) && in de21041_media_timer()
1098 de_ok_to_advertise(de, DE_MEDIA_BNC)) in de21041_media_timer()
1099 de->media_type = DE_MEDIA_BNC; in de21041_media_timer()
1102 else if (((de->media_supported & DE_AUI_BNC) == SUPPORTED_AUI) && in de21041_media_timer()
1103 de_ok_to_advertise(de, DE_MEDIA_AUI)) in de21041_media_timer()
1104 de->media_type = DE_MEDIA_AUI; in de21041_media_timer()
1119 if (de->media_type == DE_MEDIA_AUI) { in de21041_media_timer()
1123 de_next_media(de, next_states, ARRAY_SIZE(next_states)); in de21041_media_timer()
1124 } else if (de->media_type == DE_MEDIA_BNC) { in de21041_media_timer()
1128 de_next_media(de, next_states, ARRAY_SIZE(next_states)); in de21041_media_timer()
1133 de_next_media(de, next_states, ARRAY_SIZE(next_states)); in de21041_media_timer()
1137 spin_lock_irqsave(&de->lock, flags); in de21041_media_timer()
1138 de_stop_rxtx(de); in de21041_media_timer()
1139 spin_unlock_irqrestore(&de->lock, flags); in de21041_media_timer()
1140 de_set_media(de); in de21041_media_timer()
1141 de_start_rxtx(de); in de21041_media_timer()
1144 de->media_timer.expires = jiffies + DE_TIMER_NO_LINK; in de21041_media_timer()
1145 add_timer(&de->media_timer); in de21041_media_timer()
1147 netif_info(de, timer, dev, "no link, trying media %s, status %x\n", in de21041_media_timer()
1148 media_name[de->media_type], status); in de21041_media_timer()
1151 static void de_media_interrupt (struct de_private *de, u32 status) in de_media_interrupt() argument
1155 if ((de->media_type == DE_MEDIA_AUI || in de_media_interrupt()
1156 de->media_type == DE_MEDIA_BNC) && in de_media_interrupt()
1157 (de->media_lock || in de_media_interrupt()
1158 !de_ok_to_advertise(de, DE_MEDIA_TP_AUTO))) in de_media_interrupt()
1161 if ((de->media_type == DE_MEDIA_AUI || in de_media_interrupt()
1162 de->media_type == DE_MEDIA_BNC)) { in de_media_interrupt()
1163 de->media_type = DE_MEDIA_TP_AUTO; in de_media_interrupt()
1164 de_stop_rxtx(de); in de_media_interrupt()
1165 de_set_media(de); in de_media_interrupt()
1166 de_start_rxtx(de); in de_media_interrupt()
1168 de_link_up(de); in de_media_interrupt()
1169 mod_timer(&de->media_timer, jiffies + DE_TIMER_LINK); in de_media_interrupt()
1175 if (netif_carrier_ok(de->dev) && de->media_type != DE_MEDIA_AUI && in de_media_interrupt()
1176 de->media_type != DE_MEDIA_BNC) { in de_media_interrupt()
1177 de_link_down(de); in de_media_interrupt()
1178 mod_timer(&de->media_timer, jiffies + DE_TIMER_NO_LINK); in de_media_interrupt()
1182 static int de_reset_mac (struct de_private *de) in de_reset_mac() argument
1216 static void de_adapter_wake (struct de_private *de) in de_adapter_wake() argument
1220 if (de->de21040) in de_adapter_wake()
1223 pci_read_config_dword(de->pdev, PCIPM, &pmctl); in de_adapter_wake()
1226 pci_write_config_dword(de->pdev, PCIPM, pmctl); in de_adapter_wake()
1233 static void de_adapter_sleep (struct de_private *de) in de_adapter_sleep() argument
1237 if (de->de21040) in de_adapter_sleep()
1241 pci_read_config_dword(de->pdev, PCIPM, &pmctl); in de_adapter_sleep()
1243 pci_write_config_dword(de->pdev, PCIPM, pmctl); in de_adapter_sleep()
1246 static int de_init_hw (struct de_private *de) in de_init_hw() argument
1248 struct net_device *dev = de->dev; in de_init_hw()
1252 de_adapter_wake(de); in de_init_hw()
1256 rc = de_reset_mac(de); in de_init_hw()
1260 de_set_media(de); /* reset phy */ in de_init_hw()
1262 dw32(RxRingAddr, de->ring_dma); in de_init_hw()
1263 dw32(TxRingAddr, de->ring_dma + (sizeof(struct de_desc) * DE_RX_RING_SIZE)); in de_init_hw()
1276 static int de_refill_rx (struct de_private *de) in de_refill_rx() argument
1283 skb = netdev_alloc_skb(de->dev, de->rx_buf_sz); in de_refill_rx()
1287 de->rx_skb[i].mapping = dma_map_single(&de->pdev->dev, in de_refill_rx()
1289 de->rx_buf_sz, in de_refill_rx()
1291 de->rx_skb[i].skb = skb; in de_refill_rx()
1293 de->rx_ring[i].opts1 = cpu_to_le32(DescOwn); in de_refill_rx()
1295 de->rx_ring[i].opts2 = in de_refill_rx()
1296 cpu_to_le32(RingEnd | de->rx_buf_sz); in de_refill_rx()
1298 de->rx_ring[i].opts2 = cpu_to_le32(de->rx_buf_sz); in de_refill_rx()
1299 de->rx_ring[i].addr1 = cpu_to_le32(de->rx_skb[i].mapping); in de_refill_rx()
1300 de->rx_ring[i].addr2 = 0; in de_refill_rx()
1306 de_clean_rings(de); in de_refill_rx()
1310 static int de_init_rings (struct de_private *de) in de_init_rings() argument
1312 memset(de->tx_ring, 0, sizeof(struct de_desc) * DE_TX_RING_SIZE); in de_init_rings()
1313 de->tx_ring[DE_TX_RING_SIZE - 1].opts2 = cpu_to_le32(RingEnd); in de_init_rings()
1315 de->rx_tail = 0; in de_init_rings()
1316 de->tx_head = de->tx_tail = 0; in de_init_rings()
1318 return de_refill_rx (de); in de_init_rings()
1321 static int de_alloc_rings (struct de_private *de) in de_alloc_rings() argument
1323 de->rx_ring = dma_alloc_coherent(&de->pdev->dev, DE_RING_BYTES, in de_alloc_rings()
1324 &de->ring_dma, GFP_KERNEL); in de_alloc_rings()
1325 if (!de->rx_ring) in de_alloc_rings()
1327 de->tx_ring = &de->rx_ring[DE_RX_RING_SIZE]; in de_alloc_rings()
1328 return de_init_rings(de); in de_alloc_rings()
1331 static void de_clean_rings (struct de_private *de) in de_clean_rings() argument
1335 memset(de->rx_ring, 0, sizeof(struct de_desc) * DE_RX_RING_SIZE); in de_clean_rings()
1336 de->rx_ring[DE_RX_RING_SIZE - 1].opts2 = cpu_to_le32(RingEnd); in de_clean_rings()
1338 memset(de->tx_ring, 0, sizeof(struct de_desc) * DE_TX_RING_SIZE); in de_clean_rings()
1339 de->tx_ring[DE_TX_RING_SIZE - 1].opts2 = cpu_to_le32(RingEnd); in de_clean_rings()
1343 if (de->rx_skb[i].skb) { in de_clean_rings()
1344 dma_unmap_single(&de->pdev->dev, in de_clean_rings()
1345 de->rx_skb[i].mapping, de->rx_buf_sz, in de_clean_rings()
1347 dev_kfree_skb(de->rx_skb[i].skb); in de_clean_rings()
1352 struct sk_buff *skb = de->tx_skb[i].skb; in de_clean_rings()
1355 de->dev->stats.tx_dropped++; in de_clean_rings()
1356 dma_unmap_single(&de->pdev->dev, in de_clean_rings()
1357 de->tx_skb[i].mapping, in de_clean_rings()
1361 dma_unmap_single(&de->pdev->dev, in de_clean_rings()
1362 de->tx_skb[i].mapping, in de_clean_rings()
1363 sizeof(de->setup_frame), in de_clean_rings()
1369 memset(&de->rx_skb, 0, sizeof(struct ring_info) * DE_RX_RING_SIZE); in de_clean_rings()
1370 memset(&de->tx_skb, 0, sizeof(struct ring_info) * DE_TX_RING_SIZE); in de_clean_rings()
1373 static void de_free_rings (struct de_private *de) in de_free_rings() argument
1375 de_clean_rings(de); in de_free_rings()
1376 dma_free_coherent(&de->pdev->dev, DE_RING_BYTES, de->rx_ring, in de_free_rings()
1377 de->ring_dma); in de_free_rings()
1378 de->rx_ring = NULL; in de_free_rings()
1379 de->tx_ring = NULL; in de_free_rings()
1384 struct de_private *de = netdev_priv(dev); in de_open() local
1385 const int irq = de->pdev->irq; in de_open()
1388 netif_dbg(de, ifup, dev, "enabling interface\n"); in de_open()
1390 de->rx_buf_sz = (dev->mtu <= 1500 ? PKT_BUF_SZ : dev->mtu + 32); in de_open()
1392 rc = de_alloc_rings(de); in de_open()
1406 rc = de_init_hw(de); in de_open()
1413 mod_timer(&de->media_timer, jiffies + DE_TIMER_NO_LINK); in de_open()
1420 de_free_rings(de); in de_open()
1426 struct de_private *de = netdev_priv(dev); in de_close() local
1429 netif_dbg(de, ifdown, dev, "disabling interface\n"); in de_close()
1431 del_timer_sync(&de->media_timer); in de_close()
1433 spin_lock_irqsave(&de->lock, flags); in de_close()
1434 de_stop_hw(de); in de_close()
1437 spin_unlock_irqrestore(&de->lock, flags); in de_close()
1439 free_irq(de->pdev->irq, dev); in de_close()
1441 de_free_rings(de); in de_close()
1442 de_adapter_sleep(de); in de_close()
1448 struct de_private *de = netdev_priv(dev); in de_tx_timeout() local
1449 const int irq = de->pdev->irq; in de_tx_timeout()
1453 de->rx_tail, de->tx_head, de->tx_tail); in de_tx_timeout()
1455 del_timer_sync(&de->media_timer); in de_tx_timeout()
1458 spin_lock_irq(&de->lock); in de_tx_timeout()
1460 de_stop_hw(de); in de_tx_timeout()
1464 spin_unlock_irq(&de->lock); in de_tx_timeout()
1468 __de_get_stats(de); in de_tx_timeout()
1471 de_clean_rings(de); in de_tx_timeout()
1473 de_init_rings(de); in de_tx_timeout()
1475 de_init_hw(de); in de_tx_timeout()
1480 static void __de_get_regs(struct de_private *de, u8 *buf) in __de_get_regs() argument
1490 de_rx_missed(de, rbuf[8]); in __de_get_regs()
1493 static void __de_get_link_ksettings(struct de_private *de, in __de_get_link_ksettings() argument
1497 de->media_supported); in __de_get_link_ksettings()
1500 de->media_advertise); in __de_get_link_ksettings()
1502 switch (de->media_type) { in __de_get_link_ksettings()
1521 if (de->media_lock) in __de_get_link_ksettings()
1529 static int __de_set_link_ksettings(struct de_private *de, in __de_set_link_ksettings() argument
1548 if (de->de21040 && port == PORT_BNC) in __de_set_link_ksettings()
1552 if (advertising & ~de->media_supported) in __de_set_link_ksettings()
1586 if ((new_media == de->media_type) && in __de_set_link_ksettings()
1587 (media_lock == de->media_lock) && in __de_set_link_ksettings()
1588 (advertising == de->media_advertise)) in __de_set_link_ksettings()
1591 de_link_down(de); in __de_set_link_ksettings()
1592 mod_timer(&de->media_timer, jiffies + DE_TIMER_NO_LINK); in __de_set_link_ksettings()
1593 de_stop_rxtx(de); in __de_set_link_ksettings()
1595 de->media_type = new_media; in __de_set_link_ksettings()
1596 de->media_lock = media_lock; in __de_set_link_ksettings()
1597 de->media_advertise = advertising; in __de_set_link_ksettings()
1598 de_set_media(de); in __de_set_link_ksettings()
1599 if (netif_running(de->dev)) in __de_set_link_ksettings()
1600 de_start_rxtx(de); in __de_set_link_ksettings()
1607 struct de_private *de = netdev_priv(dev); in de_get_drvinfo() local
1610 strscpy(info->bus_info, pci_name(de->pdev), sizeof(info->bus_info)); in de_get_drvinfo()
1621 struct de_private *de = netdev_priv(dev); in de_get_link_ksettings() local
1623 spin_lock_irq(&de->lock); in de_get_link_ksettings()
1624 __de_get_link_ksettings(de, cmd); in de_get_link_ksettings()
1625 spin_unlock_irq(&de->lock); in de_get_link_ksettings()
1633 struct de_private *de = netdev_priv(dev); in de_set_link_ksettings() local
1636 spin_lock_irq(&de->lock); in de_set_link_ksettings()
1637 rc = __de_set_link_ksettings(de, cmd); in de_set_link_ksettings()
1638 spin_unlock_irq(&de->lock); in de_set_link_ksettings()
1645 struct de_private *de = netdev_priv(dev); in de_get_msglevel() local
1647 return de->msg_enable; in de_get_msglevel()
1652 struct de_private *de = netdev_priv(dev); in de_set_msglevel() local
1654 de->msg_enable = msglvl; in de_set_msglevel()
1660 struct de_private *de = netdev_priv(dev); in de_get_eeprom() local
1662 if (!de->ee_data) in de_get_eeprom()
1667 memcpy(data, de->ee_data, eeprom->len); in de_get_eeprom()
1674 struct de_private *de = netdev_priv(dev); in de_nway_reset() local
1677 if (de->media_type != DE_MEDIA_TP_AUTO) in de_nway_reset()
1679 if (netif_carrier_ok(de->dev)) in de_nway_reset()
1680 de_link_down(de); in de_nway_reset()
1684 netif_info(de, link, dev, "link nway restart, status %x,%x\n", in de_nway_reset()
1692 struct de_private *de = netdev_priv(dev); in de_get_regs() local
1694 regs->version = (DE_REGS_VER << 2) | de->de21040; in de_get_regs()
1696 spin_lock_irq(&de->lock); in de_get_regs()
1697 __de_get_regs(de, data); in de_get_regs()
1698 spin_unlock_irq(&de->lock); in de_get_regs()
1714 static void de21040_get_mac_address(struct de_private *de) in de21040_get_mac_address() argument
1734 eth_hw_addr_set(de->dev, addr); in de21040_get_mac_address()
1737 static void de21040_get_media_info(struct de_private *de) in de21040_get_media_info() argument
1741 de->media_type = DE_MEDIA_TP; in de21040_get_media_info()
1742 de->media_supported |= SUPPORTED_TP | SUPPORTED_10baseT_Full | in de21040_get_media_info()
1744 de->media_advertise = de->media_supported; in de21040_get_media_info()
1751 de->media[i].type = i; in de21040_get_media_info()
1752 de->media[i].csr13 = t21040_csr13[i]; in de21040_get_media_info()
1753 de->media[i].csr14 = t21040_csr14[i]; in de21040_get_media_info()
1754 de->media[i].csr15 = t21040_csr15[i]; in de21040_get_media_info()
1757 de->media[i].type = DE_MEDIA_INVALID; in de21040_get_media_info()
1800 static void de21041_get_srom_info(struct de_private *de) in de21041_get_srom_info() argument
1804 unsigned ee_addr_size = tulip_read_eeprom(de->regs, 0xff, 8) & 0x40000 ? 8 : 6; in de21041_get_srom_info()
1811 cpu_to_le16(tulip_read_eeprom(de->regs, i, ee_addr_size)); in de21041_get_srom_info()
1826 eth_hw_addr_set(de->dev, &ee_data[sa_offset]); in de21041_get_srom_info()
1845 case 0x0001: de->media_type = DE_MEDIA_BNC; break; in de21041_get_srom_info()
1846 case 0x0002: de->media_type = DE_MEDIA_AUI; break; in de21041_get_srom_info()
1847 case 0x0204: de->media_type = DE_MEDIA_TP_FD; break; in de21041_get_srom_info()
1848 default: de->media_type = DE_MEDIA_TP_AUTO; break; in de21041_get_srom_info()
1851 if (netif_msg_probe(de)) in de21041_get_srom_info()
1853 de->board_idx, ofs, media_name[de->media_type]); in de21041_get_srom_info()
1857 de->media[i].type = DE_MEDIA_INVALID; in de21041_get_srom_info()
1858 de->media[i].csr13 = 0xffff; in de21041_get_srom_info()
1859 de->media[i].csr14 = 0xffff; in de21041_get_srom_info()
1860 de->media[i].csr15 = 0xffff; in de21041_get_srom_info()
1874 de->media_supported |= SUPPORTED_TP | SUPPORTED_10baseT_Half in de21041_get_srom_info()
1877 de->media[DE_MEDIA_TP_AUTO].type = DE_MEDIA_TP_AUTO; in de21041_get_srom_info()
1880 de->media_supported |= SUPPORTED_BNC; in de21041_get_srom_info()
1884 de->media_supported |= SUPPORTED_AUI; in de21041_get_srom_info()
1888 de->media_supported |= SUPPORTED_TP | SUPPORTED_10baseT_Full in de21041_get_srom_info()
1891 de->media[DE_MEDIA_TP_AUTO].type = DE_MEDIA_TP_AUTO; in de21041_get_srom_info()
1897 de->media[idx].type = idx; in de21041_get_srom_info()
1899 if (netif_msg_probe(de)) in de21041_get_srom_info()
1901 de->board_idx, i, in de21041_get_srom_info()
1902 media_name[de->media[idx].type]); in de21041_get_srom_info()
1907 de->media[idx].csr13 = get_unaligned(&ib->csr13); in de21041_get_srom_info()
1908 de->media[idx].csr14 = get_unaligned(&ib->csr14); in de21041_get_srom_info()
1909 de->media[idx].csr15 = get_unaligned(&ib->csr15); in de21041_get_srom_info()
1913 if (netif_msg_probe(de)) in de21041_get_srom_info()
1915 de->media[idx].csr13, in de21041_get_srom_info()
1916 de->media[idx].csr14, in de21041_get_srom_info()
1917 de->media[idx].csr15); in de21041_get_srom_info()
1920 if (netif_msg_probe(de)) in de21041_get_srom_info()
1928 de->media_advertise = de->media_supported; in de21041_get_srom_info()
1933 if (de->media[i].csr13 == 0xffff) in de21041_get_srom_info()
1934 de->media[i].csr13 = t21041_csr13[i]; in de21041_get_srom_info()
1935 if (de->media[i].csr14 == 0xffff) { in de21041_get_srom_info()
1938 if (de->pdev->revision < 0x20) in de21041_get_srom_info()
1939 de->media[i].csr14 = t21041_csr14_brk[i]; in de21041_get_srom_info()
1941 de->media[i].csr14 = t21041_csr14[i]; in de21041_get_srom_info()
1943 if (de->media[i].csr15 == 0xffff) in de21041_get_srom_info()
1944 de->media[i].csr15 = t21041_csr15[i]; in de21041_get_srom_info()
1947 de->ee_data = kmemdup(&ee_data[0], DE_EEPROM_SIZE, GFP_KERNEL); in de21041_get_srom_info()
1954 de->media[i].type = i; in de21041_get_srom_info()
1955 de->media_supported = in de21041_get_srom_info()
1979 struct de_private *de; in de_init_one() local
1997 de = netdev_priv(dev); in de_init_one()
1998 de->de21040 = ent->driver_data == 0 ? 1 : 0; in de_init_one()
1999 de->pdev = pdev; in de_init_one()
2000 de->dev = dev; in de_init_one()
2001 de->msg_enable = (debug < 0 ? DE_DEF_MSG_ENABLE : debug); in de_init_one()
2002 de->board_idx = board_idx; in de_init_one()
2003 spin_lock_init (&de->lock); in de_init_one()
2004 timer_setup(&de->media_timer, in de_init_one()
2005 de->de21040 ? de21040_media_timer : de21041_media_timer, in de_init_one()
2052 de->regs = regs; in de_init_one()
2054 de_adapter_wake(de); in de_init_one()
2057 rc = de_reset_mac(de); in de_init_one()
2066 if (de->de21040) { in de_init_one()
2067 de21040_get_mac_address(de); in de_init_one()
2068 de21040_get_media_info(de); in de_init_one()
2070 de21041_get_srom_info(de); in de_init_one()
2080 de->de21040 ? "21040" : "21041", in de_init_one()
2089 de_adapter_sleep(de); in de_init_one()
2094 kfree(de->ee_data); in de_init_one()
2108 struct de_private *de = netdev_priv(dev); in de_remove_one() local
2112 kfree(de->ee_data); in de_remove_one()
2113 iounmap(de->regs); in de_remove_one()
2123 struct de_private *de = netdev_priv(dev); in de_suspend() local
2129 del_timer_sync(&de->media_timer); in de_suspend()
2132 spin_lock_irq(&de->lock); in de_suspend()
2134 de_stop_hw(de); in de_suspend()
2139 spin_unlock_irq(&de->lock); in de_suspend()
2143 __de_get_stats(de); in de_suspend()
2146 de_clean_rings(de); in de_suspend()
2148 de_adapter_sleep(de); in de_suspend()
2160 struct de_private *de = netdev_priv(dev); in de_resume() local
2168 de_init_rings(de); in de_resume()
2169 de_init_hw(de); in de_resume()