Lines Matching refs:de
333 static void de_tx (struct de_private *de);
334 static void de_clean_rings (struct de_private *de);
335 static void de_media_interrupt (struct de_private *de, u32 status);
338 static unsigned int de_ok_to_advertise (struct de_private *de, u32 new_media);
372 #define dr32(reg) ioread32(de->regs + (reg))
373 #define dw32(reg, val) iowrite32((val), de->regs + (reg))
376 static void de_rx_err_acct (struct de_private *de, unsigned rx_tail, in de_rx_err_acct() argument
379 netif_dbg(de, rx_err, de->dev, in de_rx_err_acct()
386 netif_warn(de, rx_err, de->dev, in de_rx_err_acct()
389 de->dev->stats.rx_length_errors++; in de_rx_err_acct()
393 de->dev->stats.rx_errors++; /* end of a packet.*/ in de_rx_err_acct()
394 if (status & 0x0890) de->dev->stats.rx_length_errors++; in de_rx_err_acct()
395 if (status & RxErrCRC) de->dev->stats.rx_crc_errors++; in de_rx_err_acct()
396 if (status & RxErrFIFO) de->dev->stats.rx_fifo_errors++; in de_rx_err_acct()
400 static void de_rx (struct de_private *de) in de_rx() argument
402 unsigned rx_tail = de->rx_tail; in de_rx()
413 skb = de->rx_skb[rx_tail].skb; in de_rx()
416 status = le32_to_cpu(de->rx_ring[rx_tail].opts1); in de_rx()
421 mapping = de->rx_skb[rx_tail].mapping; in de_rx()
424 de->dev->stats.rx_dropped++; in de_rx()
429 de_rx_err_acct(de, rx_tail, status, len); in de_rx()
435 netif_dbg(de, rx_status, de->dev, in de_rx()
439 buflen = copying_skb ? (len + RX_OFFSET) : de->rx_buf_sz; in de_rx()
440 copy_skb = netdev_alloc_skb(de->dev, buflen); in de_rx()
442 de->dev->stats.rx_dropped++; in de_rx()
449 pci_unmap_single(de->pdev, mapping, in de_rx()
454 de->rx_skb[rx_tail].mapping = in de_rx()
455 pci_map_single(de->pdev, copy_skb->data, in de_rx()
457 de->rx_skb[rx_tail].skb = copy_skb; in de_rx()
459 pci_dma_sync_single_for_cpu(de->pdev, mapping, len, PCI_DMA_FROMDEVICE); in de_rx()
463 pci_dma_sync_single_for_device(de->pdev, mapping, len, PCI_DMA_FROMDEVICE); in de_rx()
469 skb->protocol = eth_type_trans (skb, de->dev); in de_rx()
471 de->dev->stats.rx_packets++; in de_rx()
472 de->dev->stats.rx_bytes += skb->len; in de_rx()
479 de->rx_ring[rx_tail].opts2 = in de_rx()
480 cpu_to_le32(RingEnd | de->rx_buf_sz); in de_rx()
482 de->rx_ring[rx_tail].opts2 = cpu_to_le32(de->rx_buf_sz); in de_rx()
483 de->rx_ring[rx_tail].addr1 = cpu_to_le32(mapping); in de_rx()
485 de->rx_ring[rx_tail].opts1 = cpu_to_le32(DescOwn); in de_rx()
490 netdev_warn(de->dev, "rx work limit reached\n"); in de_rx()
492 de->rx_tail = rx_tail; in de_rx()
498 struct de_private *de = netdev_priv(dev); in de_interrupt() local
505 netif_dbg(de, intr, dev, "intr, status %08x mode %08x desc %u/%u/%u\n", in de_interrupt()
507 de->rx_tail, de->tx_head, de->tx_tail); in de_interrupt()
512 de_rx(de); in de_interrupt()
517 spin_lock(&de->lock); in de_interrupt()
520 de_tx(de); in de_interrupt()
523 de_media_interrupt(de, status); in de_interrupt()
525 spin_unlock(&de->lock); in de_interrupt()
530 pci_read_config_word(de->pdev, PCI_STATUS, &pci_status); in de_interrupt()
531 pci_write_config_word(de->pdev, PCI_STATUS, pci_status); in de_interrupt()
532 netdev_err(de->dev, in de_interrupt()
540 static void de_tx (struct de_private *de) in de_tx() argument
542 unsigned tx_head = de->tx_head; in de_tx()
543 unsigned tx_tail = de->tx_tail; in de_tx()
550 status = le32_to_cpu(de->tx_ring[tx_tail].opts1); in de_tx()
554 skb = de->tx_skb[tx_tail].skb; in de_tx()
560 pci_unmap_single(de->pdev, de->tx_skb[tx_tail].mapping, in de_tx()
561 sizeof(de->setup_frame), PCI_DMA_TODEVICE); in de_tx()
565 pci_unmap_single(de->pdev, de->tx_skb[tx_tail].mapping, in de_tx()
570 netif_dbg(de, tx_err, de->dev, in de_tx()
573 de->dev->stats.tx_errors++; in de_tx()
575 de->dev->stats.tx_window_errors++; in de_tx()
577 de->dev->stats.tx_aborted_errors++; in de_tx()
579 de->dev->stats.tx_carrier_errors++; in de_tx()
581 de->dev->stats.tx_fifo_errors++; in de_tx()
583 de->dev->stats.tx_packets++; in de_tx()
584 de->dev->stats.tx_bytes += skb->len; in de_tx()
585 netif_dbg(de, tx_done, de->dev, in de_tx()
592 de->tx_skb[tx_tail].skb = NULL; in de_tx()
597 de->tx_tail = tx_tail; in de_tx()
599 if (netif_queue_stopped(de->dev) && (TX_BUFFS_AVAIL(de) > (DE_TX_RING_SIZE / 4))) in de_tx()
600 netif_wake_queue(de->dev); in de_tx()
606 struct de_private *de = netdev_priv(dev); in de_start_xmit() local
611 spin_lock_irq(&de->lock); in de_start_xmit()
613 tx_free = TX_BUFFS_AVAIL(de); in de_start_xmit()
616 spin_unlock_irq(&de->lock); in de_start_xmit()
621 entry = de->tx_head; in de_start_xmit()
623 txd = &de->tx_ring[entry]; in de_start_xmit()
626 mapping = pci_map_single(de->pdev, skb->data, len, PCI_DMA_TODEVICE); in de_start_xmit()
635 de->tx_skb[entry].skb = skb; in de_start_xmit()
636 de->tx_skb[entry].mapping = mapping; in de_start_xmit()
642 de->tx_head = NEXT_TX(entry); in de_start_xmit()
643 netif_dbg(de, tx_queued, dev, "tx queued, slot %d, skblen %d\n", in de_start_xmit()
649 spin_unlock_irq(&de->lock); in de_start_xmit()
664 struct de_private *de = netdev_priv(dev); in build_setup_frame_hash() local
683 setup_frm = &de->setup_frame[13*6]; in build_setup_frame_hash()
694 struct de_private *de = netdev_priv(dev); in build_setup_frame_perfect() local
708 setup_frm = &de->setup_frame[15*6]; in build_setup_frame_perfect()
720 struct de_private *de = netdev_priv(dev); in __de_set_rx_mode() local
743 build_setup_frame_hash (de->setup_frame, dev); in __de_set_rx_mode()
745 build_setup_frame_perfect (de->setup_frame, dev); in __de_set_rx_mode()
751 entry = de->tx_head; in __de_set_rx_mode()
755 de->tx_skb[entry].skb = DE_DUMMY_SKB; in __de_set_rx_mode()
757 dummy_txd = &de->tx_ring[entry]; in __de_set_rx_mode()
767 de->tx_skb[entry].skb = DE_SETUP_SKB; in __de_set_rx_mode()
768 de->tx_skb[entry].mapping = mapping = in __de_set_rx_mode()
769 pci_map_single (de->pdev, de->setup_frame, in __de_set_rx_mode()
770 sizeof (de->setup_frame), PCI_DMA_TODEVICE); in __de_set_rx_mode()
773 txd = &de->tx_ring[entry]; in __de_set_rx_mode()
775 txd->opts2 = cpu_to_le32(SetupFrame | RingEnd | sizeof (de->setup_frame)); in __de_set_rx_mode()
777 txd->opts2 = cpu_to_le32(SetupFrame | sizeof (de->setup_frame)); in __de_set_rx_mode()
789 de->tx_head = NEXT_TX(entry); in __de_set_rx_mode()
791 if (TX_BUFFS_AVAIL(de) == 0) in __de_set_rx_mode()
805 struct de_private *de = netdev_priv(dev); in de_set_rx_mode() local
807 spin_lock_irqsave (&de->lock, flags); in de_set_rx_mode()
809 spin_unlock_irqrestore (&de->lock, flags); in de_set_rx_mode()
812 static inline void de_rx_missed(struct de_private *de, u32 rx_missed) in de_rx_missed() argument
815 de->dev->stats.rx_missed_errors += RxMissedMask; in de_rx_missed()
817 de->dev->stats.rx_missed_errors += (rx_missed & RxMissedMask); in de_rx_missed()
820 static void __de_get_stats(struct de_private *de) in __de_get_stats() argument
824 de_rx_missed(de, tmp); in __de_get_stats()
829 struct de_private *de = netdev_priv(dev); in de_get_stats() local
832 spin_lock_irq(&de->lock); in de_get_stats()
834 __de_get_stats(de); in de_get_stats()
835 spin_unlock_irq(&de->lock); in de_get_stats()
840 static inline int de_is_running (struct de_private *de) in de_is_running() argument
845 static void de_stop_rxtx (struct de_private *de) in de_stop_rxtx() argument
861 if (!de_is_running(de)) in de_stop_rxtx()
866 netdev_warn(de->dev, "timeout expired, stopping DMA\n"); in de_stop_rxtx()
869 static inline void de_start_rxtx (struct de_private *de) in de_start_rxtx() argument
880 static void de_stop_hw (struct de_private *de) in de_stop_hw() argument
886 de_stop_rxtx(de); in de_stop_hw()
892 de->rx_tail = 0; in de_stop_hw()
893 de->tx_head = de->tx_tail = 0; in de_stop_hw()
896 static void de_link_up(struct de_private *de) in de_link_up() argument
898 if (!netif_carrier_ok(de->dev)) { in de_link_up()
899 netif_carrier_on(de->dev); in de_link_up()
900 netif_info(de, link, de->dev, "link up, media %s\n", in de_link_up()
901 media_name[de->media_type]); in de_link_up()
905 static void de_link_down(struct de_private *de) in de_link_down() argument
907 if (netif_carrier_ok(de->dev)) { in de_link_down()
908 netif_carrier_off(de->dev); in de_link_down()
909 netif_info(de, link, de->dev, "link down\n"); in de_link_down()
913 static void de_set_media (struct de_private *de) in de_set_media() argument
915 unsigned media = de->media_type; in de_set_media()
918 if (de_is_running(de)) in de_set_media()
919 netdev_warn(de->dev, "chip is running while changing media!\n"); in de_set_media()
921 if (de->de21040) in de_set_media()
924 dw32(CSR14, de->media[media].csr14); in de_set_media()
925 dw32(CSR15, de->media[media].csr15); in de_set_media()
926 dw32(CSR13, de->media[media].csr13); in de_set_media()
938 netif_info(de, link, de->dev, "set link %s\n", media_name[media]); in de_set_media()
939 netif_info(de, hw, de->dev, "mode 0x%x, sia 0x%x,0x%x,0x%x,0x%x\n", in de_set_media()
942 netif_info(de, hw, de->dev, "set mode 0x%x, set sia 0x%x,0x%x,0x%x\n", in de_set_media()
943 macmode, de->media[media].csr13, in de_set_media()
944 de->media[media].csr14, de->media[media].csr15); in de_set_media()
949 static void de_next_media (struct de_private *de, const u32 *media, in de_next_media() argument
955 if (de_ok_to_advertise(de, media[i])) { in de_next_media()
956 de->media_type = media[i]; in de_next_media()
964 struct de_private *de = from_timer(de, t, media_timer); in de21040_media_timer() local
965 struct net_device *dev = de->dev; in de21040_media_timer()
973 if (de->media_type != DE_MEDIA_AUI && (status & LinkFailStatus)) in de21040_media_timer()
976 de->media_timer.expires = jiffies + DE_TIMER_LINK; in de21040_media_timer()
977 add_timer(&de->media_timer); in de21040_media_timer()
979 de_link_up(de); in de21040_media_timer()
981 netif_info(de, timer, dev, "%s link ok, status %x\n", in de21040_media_timer()
982 media_name[de->media_type], status); in de21040_media_timer()
986 de_link_down(de); in de21040_media_timer()
988 if (de->media_lock) in de21040_media_timer()
991 if (de->media_type == DE_MEDIA_AUI) { in de21040_media_timer()
993 de_next_media(de, &next_state, 1); in de21040_media_timer()
996 de_next_media(de, &next_state, 1); in de21040_media_timer()
999 spin_lock_irqsave(&de->lock, flags); in de21040_media_timer()
1000 de_stop_rxtx(de); in de21040_media_timer()
1001 spin_unlock_irqrestore(&de->lock, flags); in de21040_media_timer()
1002 de_set_media(de); in de21040_media_timer()
1003 de_start_rxtx(de); in de21040_media_timer()
1006 de->media_timer.expires = jiffies + DE_TIMER_NO_LINK; in de21040_media_timer()
1007 add_timer(&de->media_timer); in de21040_media_timer()
1009 netif_info(de, timer, dev, "no link, trying media %s, status %x\n", in de21040_media_timer()
1010 media_name[de->media_type], status); in de21040_media_timer()
1013 static unsigned int de_ok_to_advertise (struct de_private *de, u32 new_media) in de_ok_to_advertise() argument
1017 if (!(de->media_advertise & ADVERTISED_Autoneg)) in de_ok_to_advertise()
1019 if (!(de->media_advertise & (ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full))) in de_ok_to_advertise()
1023 if (!(de->media_advertise & ADVERTISED_BNC)) in de_ok_to_advertise()
1027 if (!(de->media_advertise & ADVERTISED_AUI)) in de_ok_to_advertise()
1031 if (!(de->media_advertise & ADVERTISED_10baseT_Half)) in de_ok_to_advertise()
1035 if (!(de->media_advertise & ADVERTISED_10baseT_Full)) in de_ok_to_advertise()
1045 struct de_private *de = from_timer(de, t, media_timer); in de21041_media_timer() local
1046 struct net_device *dev = de->dev; in de21041_media_timer()
1057 if ((de->media_type == DE_MEDIA_TP_AUTO || in de21041_media_timer()
1058 de->media_type == DE_MEDIA_TP || in de21041_media_timer()
1059 de->media_type == DE_MEDIA_TP_FD) && in de21041_media_timer()
1063 de->media_timer.expires = jiffies + DE_TIMER_LINK; in de21041_media_timer()
1064 add_timer(&de->media_timer); in de21041_media_timer()
1066 de_link_up(de); in de21041_media_timer()
1068 netif_info(de, timer, dev, in de21041_media_timer()
1070 media_name[de->media_type], in de21041_media_timer()
1075 de_link_down(de); in de21041_media_timer()
1078 if (de->media_lock) in de21041_media_timer()
1086 if (de->media_type == DE_MEDIA_AUI || in de21041_media_timer()
1087 de->media_type == DE_MEDIA_BNC) { in de21041_media_timer()
1088 if (de_ok_to_advertise(de, DE_MEDIA_TP_AUTO)) in de21041_media_timer()
1089 de->media_type = DE_MEDIA_TP_AUTO; in de21041_media_timer()
1095 else if (((de->media_supported & DE_AUI_BNC) == SUPPORTED_BNC) && in de21041_media_timer()
1096 de_ok_to_advertise(de, DE_MEDIA_BNC)) in de21041_media_timer()
1097 de->media_type = DE_MEDIA_BNC; in de21041_media_timer()
1100 else if (((de->media_supported & DE_AUI_BNC) == SUPPORTED_AUI) && in de21041_media_timer()
1101 de_ok_to_advertise(de, DE_MEDIA_AUI)) in de21041_media_timer()
1102 de->media_type = DE_MEDIA_AUI; in de21041_media_timer()
1117 if (de->media_type == DE_MEDIA_AUI) { in de21041_media_timer()
1121 de_next_media(de, next_states, ARRAY_SIZE(next_states)); in de21041_media_timer()
1122 } else if (de->media_type == DE_MEDIA_BNC) { in de21041_media_timer()
1126 de_next_media(de, next_states, ARRAY_SIZE(next_states)); in de21041_media_timer()
1131 de_next_media(de, next_states, ARRAY_SIZE(next_states)); in de21041_media_timer()
1135 spin_lock_irqsave(&de->lock, flags); in de21041_media_timer()
1136 de_stop_rxtx(de); in de21041_media_timer()
1137 spin_unlock_irqrestore(&de->lock, flags); in de21041_media_timer()
1138 de_set_media(de); in de21041_media_timer()
1139 de_start_rxtx(de); in de21041_media_timer()
1142 de->media_timer.expires = jiffies + DE_TIMER_NO_LINK; in de21041_media_timer()
1143 add_timer(&de->media_timer); in de21041_media_timer()
1145 netif_info(de, timer, dev, "no link, trying media %s, status %x\n", in de21041_media_timer()
1146 media_name[de->media_type], status); in de21041_media_timer()
1149 static void de_media_interrupt (struct de_private *de, u32 status) in de_media_interrupt() argument
1153 if ((de->media_type == DE_MEDIA_AUI || in de_media_interrupt()
1154 de->media_type == DE_MEDIA_BNC) && in de_media_interrupt()
1155 (de->media_lock || in de_media_interrupt()
1156 !de_ok_to_advertise(de, DE_MEDIA_TP_AUTO))) in de_media_interrupt()
1159 if ((de->media_type == DE_MEDIA_AUI || in de_media_interrupt()
1160 de->media_type == DE_MEDIA_BNC)) { in de_media_interrupt()
1161 de->media_type = DE_MEDIA_TP_AUTO; in de_media_interrupt()
1162 de_stop_rxtx(de); in de_media_interrupt()
1163 de_set_media(de); in de_media_interrupt()
1164 de_start_rxtx(de); in de_media_interrupt()
1166 de_link_up(de); in de_media_interrupt()
1167 mod_timer(&de->media_timer, jiffies + DE_TIMER_LINK); in de_media_interrupt()
1173 if (netif_carrier_ok(de->dev) && de->media_type != DE_MEDIA_AUI && in de_media_interrupt()
1174 de->media_type != DE_MEDIA_BNC) { in de_media_interrupt()
1175 de_link_down(de); in de_media_interrupt()
1176 mod_timer(&de->media_timer, jiffies + DE_TIMER_NO_LINK); in de_media_interrupt()
1180 static int de_reset_mac (struct de_private *de) in de_reset_mac() argument
1214 static void de_adapter_wake (struct de_private *de) in de_adapter_wake() argument
1218 if (de->de21040) in de_adapter_wake()
1221 pci_read_config_dword(de->pdev, PCIPM, &pmctl); in de_adapter_wake()
1224 pci_write_config_dword(de->pdev, PCIPM, pmctl); in de_adapter_wake()
1231 static void de_adapter_sleep (struct de_private *de) in de_adapter_sleep() argument
1235 if (de->de21040) in de_adapter_sleep()
1239 pci_read_config_dword(de->pdev, PCIPM, &pmctl); in de_adapter_sleep()
1241 pci_write_config_dword(de->pdev, PCIPM, pmctl); in de_adapter_sleep()
1244 static int de_init_hw (struct de_private *de) in de_init_hw() argument
1246 struct net_device *dev = de->dev; in de_init_hw()
1250 de_adapter_wake(de); in de_init_hw()
1254 rc = de_reset_mac(de); in de_init_hw()
1258 de_set_media(de); /* reset phy */ in de_init_hw()
1260 dw32(RxRingAddr, de->ring_dma); in de_init_hw()
1261 dw32(TxRingAddr, de->ring_dma + (sizeof(struct de_desc) * DE_RX_RING_SIZE)); in de_init_hw()
1274 static int de_refill_rx (struct de_private *de) in de_refill_rx() argument
1281 skb = netdev_alloc_skb(de->dev, de->rx_buf_sz); in de_refill_rx()
1285 de->rx_skb[i].mapping = pci_map_single(de->pdev, in de_refill_rx()
1286 skb->data, de->rx_buf_sz, PCI_DMA_FROMDEVICE); in de_refill_rx()
1287 de->rx_skb[i].skb = skb; in de_refill_rx()
1289 de->rx_ring[i].opts1 = cpu_to_le32(DescOwn); in de_refill_rx()
1291 de->rx_ring[i].opts2 = in de_refill_rx()
1292 cpu_to_le32(RingEnd | de->rx_buf_sz); in de_refill_rx()
1294 de->rx_ring[i].opts2 = cpu_to_le32(de->rx_buf_sz); in de_refill_rx()
1295 de->rx_ring[i].addr1 = cpu_to_le32(de->rx_skb[i].mapping); in de_refill_rx()
1296 de->rx_ring[i].addr2 = 0; in de_refill_rx()
1302 de_clean_rings(de); in de_refill_rx()
1306 static int de_init_rings (struct de_private *de) in de_init_rings() argument
1308 memset(de->tx_ring, 0, sizeof(struct de_desc) * DE_TX_RING_SIZE); in de_init_rings()
1309 de->tx_ring[DE_TX_RING_SIZE - 1].opts2 = cpu_to_le32(RingEnd); in de_init_rings()
1311 de->rx_tail = 0; in de_init_rings()
1312 de->tx_head = de->tx_tail = 0; in de_init_rings()
1314 return de_refill_rx (de); in de_init_rings()
1317 static int de_alloc_rings (struct de_private *de) in de_alloc_rings() argument
1319 de->rx_ring = pci_alloc_consistent(de->pdev, DE_RING_BYTES, &de->ring_dma); in de_alloc_rings()
1320 if (!de->rx_ring) in de_alloc_rings()
1322 de->tx_ring = &de->rx_ring[DE_RX_RING_SIZE]; in de_alloc_rings()
1323 return de_init_rings(de); in de_alloc_rings()
1326 static void de_clean_rings (struct de_private *de) in de_clean_rings() argument
1330 memset(de->rx_ring, 0, sizeof(struct de_desc) * DE_RX_RING_SIZE); in de_clean_rings()
1331 de->rx_ring[DE_RX_RING_SIZE - 1].opts2 = cpu_to_le32(RingEnd); in de_clean_rings()
1333 memset(de->tx_ring, 0, sizeof(struct de_desc) * DE_TX_RING_SIZE); in de_clean_rings()
1334 de->tx_ring[DE_TX_RING_SIZE - 1].opts2 = cpu_to_le32(RingEnd); in de_clean_rings()
1338 if (de->rx_skb[i].skb) { in de_clean_rings()
1339 pci_unmap_single(de->pdev, de->rx_skb[i].mapping, in de_clean_rings()
1340 de->rx_buf_sz, PCI_DMA_FROMDEVICE); in de_clean_rings()
1341 dev_kfree_skb(de->rx_skb[i].skb); in de_clean_rings()
1346 struct sk_buff *skb = de->tx_skb[i].skb; in de_clean_rings()
1349 de->dev->stats.tx_dropped++; in de_clean_rings()
1350 pci_unmap_single(de->pdev, in de_clean_rings()
1351 de->tx_skb[i].mapping, in de_clean_rings()
1355 pci_unmap_single(de->pdev, in de_clean_rings()
1356 de->tx_skb[i].mapping, in de_clean_rings()
1357 sizeof(de->setup_frame), in de_clean_rings()
1363 memset(&de->rx_skb, 0, sizeof(struct ring_info) * DE_RX_RING_SIZE); in de_clean_rings()
1364 memset(&de->tx_skb, 0, sizeof(struct ring_info) * DE_TX_RING_SIZE); in de_clean_rings()
1367 static void de_free_rings (struct de_private *de) in de_free_rings() argument
1369 de_clean_rings(de); in de_free_rings()
1370 pci_free_consistent(de->pdev, DE_RING_BYTES, de->rx_ring, de->ring_dma); in de_free_rings()
1371 de->rx_ring = NULL; in de_free_rings()
1372 de->tx_ring = NULL; in de_free_rings()
1377 struct de_private *de = netdev_priv(dev); in de_open() local
1378 const int irq = de->pdev->irq; in de_open()
1381 netif_dbg(de, ifup, dev, "enabling interface\n"); in de_open()
1383 de->rx_buf_sz = (dev->mtu <= 1500 ? PKT_BUF_SZ : dev->mtu + 32); in de_open()
1385 rc = de_alloc_rings(de); in de_open()
1399 rc = de_init_hw(de); in de_open()
1406 mod_timer(&de->media_timer, jiffies + DE_TIMER_NO_LINK); in de_open()
1413 de_free_rings(de); in de_open()
1419 struct de_private *de = netdev_priv(dev); in de_close() local
1422 netif_dbg(de, ifdown, dev, "disabling interface\n"); in de_close()
1424 del_timer_sync(&de->media_timer); in de_close()
1426 spin_lock_irqsave(&de->lock, flags); in de_close()
1427 de_stop_hw(de); in de_close()
1430 spin_unlock_irqrestore(&de->lock, flags); in de_close()
1432 free_irq(de->pdev->irq, dev); in de_close()
1434 de_free_rings(de); in de_close()
1435 de_adapter_sleep(de); in de_close()
1441 struct de_private *de = netdev_priv(dev); in de_tx_timeout() local
1442 const int irq = de->pdev->irq; in de_tx_timeout()
1446 de->rx_tail, de->tx_head, de->tx_tail); in de_tx_timeout()
1448 del_timer_sync(&de->media_timer); in de_tx_timeout()
1451 spin_lock_irq(&de->lock); in de_tx_timeout()
1453 de_stop_hw(de); in de_tx_timeout()
1457 spin_unlock_irq(&de->lock); in de_tx_timeout()
1461 __de_get_stats(de); in de_tx_timeout()
1464 de_clean_rings(de); in de_tx_timeout()
1466 de_init_rings(de); in de_tx_timeout()
1468 de_init_hw(de); in de_tx_timeout()
1473 static void __de_get_regs(struct de_private *de, u8 *buf) in __de_get_regs() argument
1483 de_rx_missed(de, rbuf[8]); in __de_get_regs()
1486 static void __de_get_link_ksettings(struct de_private *de, in __de_get_link_ksettings() argument
1490 de->media_supported); in __de_get_link_ksettings()
1493 de->media_advertise); in __de_get_link_ksettings()
1495 switch (de->media_type) { in __de_get_link_ksettings()
1514 if (de->media_lock) in __de_get_link_ksettings()
1522 static int __de_set_link_ksettings(struct de_private *de, in __de_set_link_ksettings() argument
1541 if (de->de21040 && port == PORT_BNC) in __de_set_link_ksettings()
1545 if (advertising & ~de->media_supported) in __de_set_link_ksettings()
1579 if ((new_media == de->media_type) && in __de_set_link_ksettings()
1580 (media_lock == de->media_lock) && in __de_set_link_ksettings()
1581 (advertising == de->media_advertise)) in __de_set_link_ksettings()
1584 de_link_down(de); in __de_set_link_ksettings()
1585 mod_timer(&de->media_timer, jiffies + DE_TIMER_NO_LINK); in __de_set_link_ksettings()
1586 de_stop_rxtx(de); in __de_set_link_ksettings()
1588 de->media_type = new_media; in __de_set_link_ksettings()
1589 de->media_lock = media_lock; in __de_set_link_ksettings()
1590 de->media_advertise = advertising; in __de_set_link_ksettings()
1591 de_set_media(de); in __de_set_link_ksettings()
1592 if (netif_running(de->dev)) in __de_set_link_ksettings()
1593 de_start_rxtx(de); in __de_set_link_ksettings()
1600 struct de_private *de = netdev_priv(dev); in de_get_drvinfo() local
1604 strlcpy(info->bus_info, pci_name(de->pdev), sizeof(info->bus_info)); in de_get_drvinfo()
1615 struct de_private *de = netdev_priv(dev); in de_get_link_ksettings() local
1617 spin_lock_irq(&de->lock); in de_get_link_ksettings()
1618 __de_get_link_ksettings(de, cmd); in de_get_link_ksettings()
1619 spin_unlock_irq(&de->lock); in de_get_link_ksettings()
1627 struct de_private *de = netdev_priv(dev); in de_set_link_ksettings() local
1630 spin_lock_irq(&de->lock); in de_set_link_ksettings()
1631 rc = __de_set_link_ksettings(de, cmd); in de_set_link_ksettings()
1632 spin_unlock_irq(&de->lock); in de_set_link_ksettings()
1639 struct de_private *de = netdev_priv(dev); in de_get_msglevel() local
1641 return de->msg_enable; in de_get_msglevel()
1646 struct de_private *de = netdev_priv(dev); in de_set_msglevel() local
1648 de->msg_enable = msglvl; in de_set_msglevel()
1654 struct de_private *de = netdev_priv(dev); in de_get_eeprom() local
1656 if (!de->ee_data) in de_get_eeprom()
1661 memcpy(data, de->ee_data, eeprom->len); in de_get_eeprom()
1668 struct de_private *de = netdev_priv(dev); in de_nway_reset() local
1671 if (de->media_type != DE_MEDIA_TP_AUTO) in de_nway_reset()
1673 if (netif_carrier_ok(de->dev)) in de_nway_reset()
1674 de_link_down(de); in de_nway_reset()
1678 netif_info(de, link, dev, "link nway restart, status %x,%x\n", in de_nway_reset()
1686 struct de_private *de = netdev_priv(dev); in de_get_regs() local
1688 regs->version = (DE_REGS_VER << 2) | de->de21040; in de_get_regs()
1690 spin_lock_irq(&de->lock); in de_get_regs()
1691 __de_get_regs(de, data); in de_get_regs()
1692 spin_unlock_irq(&de->lock); in de_get_regs()
1708 static void de21040_get_mac_address(struct de_private *de) in de21040_get_mac_address() argument
1721 de->dev->dev_addr[i] = value; in de21040_get_mac_address()
1729 static void de21040_get_media_info(struct de_private *de) in de21040_get_media_info() argument
1733 de->media_type = DE_MEDIA_TP; in de21040_get_media_info()
1734 de->media_supported |= SUPPORTED_TP | SUPPORTED_10baseT_Full | in de21040_get_media_info()
1736 de->media_advertise = de->media_supported; in de21040_get_media_info()
1743 de->media[i].type = i; in de21040_get_media_info()
1744 de->media[i].csr13 = t21040_csr13[i]; in de21040_get_media_info()
1745 de->media[i].csr14 = t21040_csr14[i]; in de21040_get_media_info()
1746 de->media[i].csr15 = t21040_csr15[i]; in de21040_get_media_info()
1749 de->media[i].type = DE_MEDIA_INVALID; in de21040_get_media_info()
1792 static void de21041_get_srom_info(struct de_private *de) in de21041_get_srom_info() argument
1796 unsigned ee_addr_size = tulip_read_eeprom(de->regs, 0xff, 8) & 0x40000 ? 8 : 6; in de21041_get_srom_info()
1803 cpu_to_le16(tulip_read_eeprom(de->regs, i, ee_addr_size)); in de21041_get_srom_info()
1819 de->dev->dev_addr[i] = ee_data[i + sa_offset]; in de21041_get_srom_info()
1838 case 0x0001: de->media_type = DE_MEDIA_BNC; break; in de21041_get_srom_info()
1839 case 0x0002: de->media_type = DE_MEDIA_AUI; break; in de21041_get_srom_info()
1840 case 0x0204: de->media_type = DE_MEDIA_TP_FD; break; in de21041_get_srom_info()
1841 default: de->media_type = DE_MEDIA_TP_AUTO; break; in de21041_get_srom_info()
1844 if (netif_msg_probe(de)) in de21041_get_srom_info()
1846 de->board_idx, ofs, media_name[de->media_type]); in de21041_get_srom_info()
1850 de->media[i].type = DE_MEDIA_INVALID; in de21041_get_srom_info()
1851 de->media[i].csr13 = 0xffff; in de21041_get_srom_info()
1852 de->media[i].csr14 = 0xffff; in de21041_get_srom_info()
1853 de->media[i].csr15 = 0xffff; in de21041_get_srom_info()
1867 de->media_supported |= SUPPORTED_TP | SUPPORTED_10baseT_Half in de21041_get_srom_info()
1870 de->media[DE_MEDIA_TP_AUTO].type = DE_MEDIA_TP_AUTO; in de21041_get_srom_info()
1873 de->media_supported |= SUPPORTED_BNC; in de21041_get_srom_info()
1877 de->media_supported |= SUPPORTED_AUI; in de21041_get_srom_info()
1881 de->media_supported |= SUPPORTED_TP | SUPPORTED_10baseT_Full in de21041_get_srom_info()
1884 de->media[DE_MEDIA_TP_AUTO].type = DE_MEDIA_TP_AUTO; in de21041_get_srom_info()
1890 de->media[idx].type = idx; in de21041_get_srom_info()
1892 if (netif_msg_probe(de)) in de21041_get_srom_info()
1894 de->board_idx, i, in de21041_get_srom_info()
1895 media_name[de->media[idx].type]); in de21041_get_srom_info()
1900 de->media[idx].csr13 = get_unaligned(&ib->csr13); in de21041_get_srom_info()
1901 de->media[idx].csr14 = get_unaligned(&ib->csr14); in de21041_get_srom_info()
1902 de->media[idx].csr15 = get_unaligned(&ib->csr15); in de21041_get_srom_info()
1906 if (netif_msg_probe(de)) in de21041_get_srom_info()
1908 de->media[idx].csr13, in de21041_get_srom_info()
1909 de->media[idx].csr14, in de21041_get_srom_info()
1910 de->media[idx].csr15); in de21041_get_srom_info()
1913 if (netif_msg_probe(de)) in de21041_get_srom_info()
1921 de->media_advertise = de->media_supported; in de21041_get_srom_info()
1926 if (de->media[i].csr13 == 0xffff) in de21041_get_srom_info()
1927 de->media[i].csr13 = t21041_csr13[i]; in de21041_get_srom_info()
1928 if (de->media[i].csr14 == 0xffff) { in de21041_get_srom_info()
1931 if (de->pdev->revision < 0x20) in de21041_get_srom_info()
1932 de->media[i].csr14 = t21041_csr14_brk[i]; in de21041_get_srom_info()
1934 de->media[i].csr14 = t21041_csr14[i]; in de21041_get_srom_info()
1936 if (de->media[i].csr15 == 0xffff) in de21041_get_srom_info()
1937 de->media[i].csr15 = t21041_csr15[i]; in de21041_get_srom_info()
1940 de->ee_data = kmemdup(&ee_data[0], DE_EEPROM_SIZE, GFP_KERNEL); in de21041_get_srom_info()
1947 de->media[i].type = i; in de21041_get_srom_info()
1948 de->media_supported = in de21041_get_srom_info()
1972 struct de_private *de; in de_init_one() local
1995 de = netdev_priv(dev); in de_init_one()
1996 de->de21040 = ent->driver_data == 0 ? 1 : 0; in de_init_one()
1997 de->pdev = pdev; in de_init_one()
1998 de->dev = dev; in de_init_one()
1999 de->msg_enable = (debug < 0 ? DE_DEF_MSG_ENABLE : debug); in de_init_one()
2000 de->board_idx = board_idx; in de_init_one()
2001 spin_lock_init (&de->lock); in de_init_one()
2002 timer_setup(&de->media_timer, in de_init_one()
2003 de->de21040 ? de21040_media_timer : de21041_media_timer, in de_init_one()
2050 de->regs = regs; in de_init_one()
2052 de_adapter_wake(de); in de_init_one()
2055 rc = de_reset_mac(de); in de_init_one()
2064 if (de->de21040) { in de_init_one()
2065 de21040_get_mac_address(de); in de_init_one()
2066 de21040_get_media_info(de); in de_init_one()
2068 de21041_get_srom_info(de); in de_init_one()
2078 de->de21040 ? "21040" : "21041", in de_init_one()
2087 de_adapter_sleep(de); in de_init_one()
2092 kfree(de->ee_data); in de_init_one()
2106 struct de_private *de = netdev_priv(dev); in de_remove_one() local
2110 kfree(de->ee_data); in de_remove_one()
2111 iounmap(de->regs); in de_remove_one()
2122 struct de_private *de = netdev_priv(dev); in de_suspend() local
2128 del_timer_sync(&de->media_timer); in de_suspend()
2131 spin_lock_irq(&de->lock); in de_suspend()
2133 de_stop_hw(de); in de_suspend()
2138 spin_unlock_irq(&de->lock); in de_suspend()
2142 __de_get_stats(de); in de_suspend()
2145 de_clean_rings(de); in de_suspend()
2147 de_adapter_sleep(de); in de_suspend()
2159 struct de_private *de = netdev_priv(dev); in de_resume() local
2172 de_init_rings(de); in de_resume()
2173 de_init_hw(de); in de_resume()