Lines Matching defs:smc

93 #include	"h/smc.h"
109 static void send_queued_packets(struct s_smc *smc);
111 static void ResetAdapter(struct s_smc *smc);
115 void *mac_drv_get_space(struct s_smc *smc, u_int size);
116 void *mac_drv_get_desc_mem(struct s_smc *smc, u_int size);
117 unsigned long mac_drv_virt2phys(struct s_smc *smc, void *virt);
118 unsigned long dma_master(struct s_smc *smc, void *virt, int len, int flag);
119 void dma_complete(struct s_smc *smc, volatile union s_fp_descr *descr,
121 void mac_drv_tx_complete(struct s_smc *smc, volatile struct s_smt_fp_txd *txd);
122 void llc_restart_tx(struct s_smc *smc);
123 void mac_drv_rx_complete(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
125 void mac_drv_requeue_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
127 void mac_drv_fill_rxd(struct s_smc *smc);
128 void mac_drv_clear_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
130 int mac_drv_rx_init(struct s_smc *smc, int len, int fc, char *look_ahead,
136 extern int mac_drv_init(struct s_smc *smc);
137 extern void hwm_tx_frag(struct s_smc *smc, char far * virt, u_long phys,
139 extern int hwm_tx_init(struct s_smc *smc, u_char fc, int frag_count,
141 extern void fddi_isr(struct s_smc *smc);
142 extern void hwm_rx_frag(struct s_smc *smc, char far * virt, u_long phys,
144 extern void mac_drv_rx_mode(struct s_smc *smc, int mode);
145 extern void mac_drv_clear_rx_queue(struct s_smc *smc);
146 extern void enable_tx_irq(struct s_smc *smc, u_short queue);
203 struct s_smc *smc; /* board pointer */
260 smc = netdev_priv(dev);
261 smc->os.dev = dev;
262 smc->os.bus_type = SK_BUS_TYPE_PCI;
263 smc->os.pdev = *pdev;
264 smc->os.QueueSkb = MAX_TX_QUEUE_LEN;
265 smc->os.MaxFrameSize = MAX_FRAME_SIZE;
266 smc->os.dev = dev;
267 smc->hw.slot = -1;
268 smc->hw.iop = mem;
269 smc->os.ResetRequested = FALSE;
270 skb_queue_head_init(&smc->os.SendSkbQueue);
295 if (smc->os.SharedMemAddr)
296 dma_free_coherent(&pdev->dev, smc->os.SharedMemSize,
297 smc->os.SharedMemAddr,
298 smc->os.SharedMemDMA);
300 smc->os.LocalRxBuffer, smc->os.LocalRxBufferDMA);
378 struct s_smc *smc = netdev_priv(dev);
379 skfddi_priv *bp = &smc->os;
388 smc->hw.irq = dev->irq;
425 card_stop(smc); // Reset adapter.
428 if (mac_drv_init(smc) != 0) {
432 read_address(smc, NULL);
433 pr_debug("HW-Addr: %pMF\n", smc->hw.fddi_canon_addr.a);
434 memcpy(dev->dev_addr, smc->hw.fddi_canon_addr.a, ETH_ALEN);
436 smt_reset_defaults(smc, 0);
480 struct s_smc *smc = netdev_priv(dev);
500 read_address(smc, NULL);
501 memcpy(dev->dev_addr, smc->hw.fddi_canon_addr.a, ETH_ALEN);
503 init_smt(smc, NULL);
504 smt_online(smc, 1);
508 mac_clear_multicast(smc);
511 mac_drv_rx_mode(smc, RX_DISABLE_PROMISC);
547 struct s_smc *smc = netdev_priv(dev);
548 skfddi_priv *bp = &smc->os;
551 smt_reset_defaults(smc, 1);
552 card_stop(smc);
553 mac_drv_clear_tx_queue(smc);
554 mac_drv_clear_rx_queue(smc);
605 struct s_smc *smc; /* private board structure pointer */
608 smc = netdev_priv(dev);
609 bp = &smc->os;
617 if ((inpd(ISR_A) & smc->hw.is_imask) == 0) { // IRQ?
625 fddi_isr(smc);
627 if (smc->os.ResetRequested) {
628 ResetAdapter(smc);
629 smc->os.ResetRequested = FALSE;
835 struct s_smc *smc = netdev_priv(dev);
836 skfddi_priv *bp = &smc->os;
848 struct s_smc *smc = netdev_priv(dev);
853 mac_drv_rx_mode(smc, RX_ENABLE_PROMISC);
858 mac_drv_rx_mode(smc, RX_DISABLE_PROMISC);
862 mac_clear_multicast(smc);
863 mac_drv_rx_mode(smc, RX_DISABLE_ALLMULTI);
866 mac_drv_rx_mode(smc, RX_ENABLE_ALLMULTI);
874 mac_add_multicast(smc,
884 mac_drv_rx_mode(smc, RX_ENABLE_ALLMULTI);
893 mac_update_multicast(smc);
919 struct s_smc *smc = netdev_priv(dev);
921 skfddi_priv *bp = &smc->os;
927 ResetAdapter(smc);
959 struct s_smc *smc = netdev_priv(dev);
960 skfddi_priv *lp = &smc->os;
1040 struct s_smc *smc = netdev_priv(dev);
1041 skfddi_priv *bp = &smc->os;
1090 * smc - pointer to smc (adapter) structure
1100 static void send_queued_packets(struct s_smc *smc)
1102 skfddi_priv *bp = &smc->os;
1130 if (!smc->ess.sync_bw_available)
1135 if (smc->mib.fddiESSSynchTxMode) {
1142 frame_status = hwm_tx_init(smc, fc, 1, skb->len, queue);
1168 CheckSourceAddress(skb->data, smc->hw.fddi_canon_addr.a);
1170 txd = (struct s_smt_fp_txd *) HWM_GET_CURR_TXD(smc, queue);
1178 hwm_tx_frag(smc, skb->data, dma_address, skb->len,
1222 * smc - A pointer to the SMT context struct.
1227 static void ResetAdapter(struct s_smc *smc)
1234 card_stop(smc); // Stop all activity.
1237 mac_drv_clear_tx_queue(smc);
1238 mac_drv_clear_rx_queue(smc);
1242 smt_reset_defaults(smc, 1); // Initialize the SMT module.
1244 init_smt(smc, (smc->os.dev)->dev_addr); // Initialize the hardware.
1246 smt_online(smc, 1); // Insert into the ring again.
1250 skfp_ctl_set_multicast_list_wo_lock(smc->os.dev);
1267 * smc - A pointer to the SMT context struct.
1272 void llc_restart_tx(struct s_smc *smc)
1274 skfddi_priv *bp = &smc->os;
1280 send_queued_packets(smc);
1294 * smc - A pointer to the SMT context struct.
1302 void *mac_drv_get_space(struct s_smc *smc, unsigned int size)
1307 virt = (void *) (smc->os.SharedMemAddr + smc->os.SharedMemHeap);
1309 if ((smc->os.SharedMemHeap + size) > smc->os.SharedMemSize) {
1313 smc->os.SharedMemHeap += size; // Move heap pointer.
1318 (smc->os.SharedMemDMA +
1319 ((char *) virt - (char *)smc->os.SharedMemAddr)));
1334 * smc - A pointer to the SMT context struct.
1342 void *mac_drv_get_desc_mem(struct s_smc *smc, unsigned int size)
1351 virt = mac_drv_get_space(smc, size);
1359 if (!mac_drv_get_space(smc, size)) {
1373 * smc - A pointer to the SMT context struct.
1380 unsigned long mac_drv_virt2phys(struct s_smc *smc, void *virt)
1382 return smc->os.SharedMemDMA +
1383 ((char *) virt - (char *)smc->os.SharedMemAddr);
1399 * smc - A pointer to the SMT context struct.
1415 u_long dma_master(struct s_smc * smc, void *virt, int len, int flag)
1417 return smc->os.SharedMemDMA +
1418 ((char *) virt - (char *)smc->os.SharedMemAddr);
1431 * smc - A pointer to the SMT context struct.
1443 void dma_complete(struct s_smc *smc, volatile union s_fp_descr *descr, int flag)
1458 skfddi_priv *bp = &smc->os;
1480 * smc - A pointer to the SMT context struct.
1487 void mac_drv_tx_complete(struct s_smc *smc, volatile struct s_smt_fp_txd *txd)
1501 pci_unmap_single(&smc->os.pdev, txd->txd_os.dma_addr,
1505 smc->os.MacStat.gen.tx_packets++; // Count transmitted packets.
1506 smc->os.MacStat.gen.tx_bytes+=skb->len; // Count bytes
1544 * smc - A pointer to the SMT context struct.
1555 void mac_drv_rx_complete(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
1558 skfddi_priv *bp = &smc->os;
1574 smc->os.MacStat.gen.rx_errors++;
1627 smc->os.MacStat.gen.rx_packets++; // Count indicated receive
1629 smc->os.MacStat.gen.rx_bytes+=len; // Count bytes.
1634 smc->os.MacStat.gen.multicast++;
1644 HWM_RX_CHECK(smc, RX_LOW_WATERMARK);
1649 mac_drv_requeue_rxd(smc, rxd, frag_count);
1650 smc->os.MacStat.gen.rx_errors++; // Count receive packets
1665 * smc - A pointer to the SMT context struct.
1674 void mac_drv_requeue_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
1688 MaxFrameSize = smc->os.MaxFrameSize;
1692 rxd = HWM_GET_CURR_RXD(smc);
1705 b_addr = pci_map_single(&smc->os.pdev,
1714 v_addr = smc->os.LocalRxBuffer;
1715 b_addr = smc->os.LocalRxBufferDMA;
1721 b_addr = pci_map_single(&smc->os.pdev,
1727 hwm_rx_frag(smc, v_addr, b_addr, MaxFrameSize,
1746 * smc - A pointer to the SMT context struct.
1751 void mac_drv_fill_rxd(struct s_smc *smc)
1764 MaxFrameSize = smc->os.MaxFrameSize;
1766 while (HWM_GET_RX_FREE(smc) > 0) {
1769 rxd = HWM_GET_CURR_RXD(smc);
1776 b_addr = pci_map_single(&smc->os.pdev,
1788 v_addr = smc->os.LocalRxBuffer;
1789 b_addr = smc->os.LocalRxBufferDMA;
1795 hwm_rx_frag(smc, v_addr, b_addr, MaxFrameSize,
1809 * smc - A pointer to the SMT context struct.
1818 void mac_drv_clear_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
1833 skfddi_priv *bp = &smc->os;
1861 * smc - A pointer to the SMT context struct.
1875 int mac_drv_rx_init(struct s_smc *smc, int len, int fc,
1900 skb->protocol = fddi_type_trans(skb, smc->os.dev);
1917 * smc - A pointer to the SMT context struct.
1922 void smt_timer_poll(struct s_smc *smc)
1933 * smc - A pointer to the SMT context struct.
1940 void ring_status_indication(struct s_smc *smc, u_long status)
2006 * smc - A pointer to the SMT context struct.
2014 void smt_stat_counter(struct s_smc *smc, int stat)
2025 smc->os.MacStat.gen.rx_errors++;
2040 * smc - A pointer to the SMT context struct.
2050 void cfm_state_change(struct s_smc *smc, int c_state)
2098 * smc - A pointer to the SMT context struct.
2108 void ecm_state_change(struct s_smc *smc, int e_state)
2153 * smc - A pointer to the SMT context struct.
2163 void rmt_state_change(struct s_smc *smc, int r_state)
2210 * smc - A pointer to the SMT context struct.
2215 void drv_reset_indication(struct s_smc *smc)
2219 smc->os.ResetRequested = TRUE; // Set flag.