Lines Matching defs:smc
95 #include "h/smc.h"
112 static void send_queued_packets(struct s_smc *smc);
114 static void ResetAdapter(struct s_smc *smc);
118 void *mac_drv_get_space(struct s_smc *smc, u_int size);
119 void *mac_drv_get_desc_mem(struct s_smc *smc, u_int size);
120 unsigned long mac_drv_virt2phys(struct s_smc *smc, void *virt);
121 unsigned long dma_master(struct s_smc *smc, void *virt, int len, int flag);
122 void dma_complete(struct s_smc *smc, volatile union s_fp_descr *descr,
124 void mac_drv_tx_complete(struct s_smc *smc, volatile struct s_smt_fp_txd *txd);
125 void llc_restart_tx(struct s_smc *smc);
126 void mac_drv_rx_complete(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
128 void mac_drv_requeue_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
130 void mac_drv_fill_rxd(struct s_smc *smc);
131 void mac_drv_clear_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
133 int mac_drv_rx_init(struct s_smc *smc, int len, int fc, char *look_ahead,
139 extern int mac_drv_init(struct s_smc *smc);
140 extern void hwm_tx_frag(struct s_smc *smc, char far * virt, u_long phys,
142 extern int hwm_tx_init(struct s_smc *smc, u_char fc, int frag_count,
144 extern void fddi_isr(struct s_smc *smc);
145 extern void hwm_rx_frag(struct s_smc *smc, char far * virt, u_long phys,
147 extern void mac_drv_rx_mode(struct s_smc *smc, int mode);
148 extern void mac_drv_clear_rx_queue(struct s_smc *smc);
149 extern void enable_tx_irq(struct s_smc *smc, u_short queue);
206 struct s_smc *smc; /* board pointer */
263 smc = netdev_priv(dev);
264 smc->os.dev = dev;
265 smc->os.bus_type = SK_BUS_TYPE_PCI;
266 smc->os.pdev = *pdev;
267 smc->os.QueueSkb = MAX_TX_QUEUE_LEN;
268 smc->os.MaxFrameSize = MAX_FRAME_SIZE;
269 smc->os.dev = dev;
270 smc->hw.slot = -1;
271 smc->hw.iop = mem;
272 smc->os.ResetRequested = FALSE;
273 skb_queue_head_init(&smc->os.SendSkbQueue);
298 if (smc->os.SharedMemAddr)
299 dma_free_coherent(&pdev->dev, smc->os.SharedMemSize,
300 smc->os.SharedMemAddr,
301 smc->os.SharedMemDMA);
303 smc->os.LocalRxBuffer, smc->os.LocalRxBufferDMA);
381 struct s_smc *smc = netdev_priv(dev);
382 skfddi_priv *bp = &smc->os;
391 smc->hw.irq = dev->irq;
428 card_stop(smc); // Reset adapter.
431 if (mac_drv_init(smc) != 0) {
435 read_address(smc, NULL);
436 pr_debug("HW-Addr: %pMF\n", smc->hw.fddi_canon_addr.a);
437 eth_hw_addr_set(dev, smc->hw.fddi_canon_addr.a);
439 smt_reset_defaults(smc, 0);
483 struct s_smc *smc = netdev_priv(dev);
503 read_address(smc, NULL);
504 eth_hw_addr_set(dev, smc->hw.fddi_canon_addr.a);
506 init_smt(smc, NULL);
507 smt_online(smc, 1);
511 mac_clear_multicast(smc);
514 mac_drv_rx_mode(smc, RX_DISABLE_PROMISC);
550 struct s_smc *smc = netdev_priv(dev);
551 skfddi_priv *bp = &smc->os;
554 smt_reset_defaults(smc, 1);
555 card_stop(smc);
556 mac_drv_clear_tx_queue(smc);
557 mac_drv_clear_rx_queue(smc);
608 struct s_smc *smc; /* private board structure pointer */
611 smc = netdev_priv(dev);
612 bp = &smc->os;
620 if ((inpd(ISR_A) & smc->hw.is_imask) == 0) { // IRQ?
628 fddi_isr(smc);
630 if (smc->os.ResetRequested) {
631 ResetAdapter(smc);
632 smc->os.ResetRequested = FALSE;
838 struct s_smc *smc = netdev_priv(dev);
839 skfddi_priv *bp = &smc->os;
851 struct s_smc *smc = netdev_priv(dev);
856 mac_drv_rx_mode(smc, RX_ENABLE_PROMISC);
861 mac_drv_rx_mode(smc, RX_DISABLE_PROMISC);
865 mac_clear_multicast(smc);
866 mac_drv_rx_mode(smc, RX_DISABLE_ALLMULTI);
869 mac_drv_rx_mode(smc, RX_ENABLE_ALLMULTI);
877 mac_add_multicast(smc,
887 mac_drv_rx_mode(smc, RX_ENABLE_ALLMULTI);
896 mac_update_multicast(smc);
922 struct s_smc *smc = netdev_priv(dev);
924 skfddi_priv *bp = &smc->os;
930 ResetAdapter(smc);
962 struct s_smc *smc = netdev_priv(dev);
963 skfddi_priv *lp = &smc->os;
1046 struct s_smc *smc = netdev_priv(dev);
1047 skfddi_priv *bp = &smc->os;
1096 * smc - pointer to smc (adapter) structure
1106 static void send_queued_packets(struct s_smc *smc)
1108 skfddi_priv *bp = &smc->os;
1136 if (!smc->ess.sync_bw_available)
1141 if (smc->mib.fddiESSSynchTxMode) {
1148 frame_status = hwm_tx_init(smc, fc, 1, skb->len, queue);
1174 CheckSourceAddress(skb->data, smc->hw.fddi_canon_addr.a);
1176 txd = (struct s_smt_fp_txd *) HWM_GET_CURR_TXD(smc, queue);
1184 hwm_tx_frag(smc, skb->data, dma_address, skb->len,
1228 * smc - A pointer to the SMT context struct.
1233 static void ResetAdapter(struct s_smc *smc)
1240 card_stop(smc); // Stop all activity.
1243 mac_drv_clear_tx_queue(smc);
1244 mac_drv_clear_rx_queue(smc);
1248 smt_reset_defaults(smc, 1); // Initialize the SMT module.
1250 init_smt(smc, (smc->os.dev)->dev_addr); // Initialize the hardware.
1252 smt_online(smc, 1); // Insert into the ring again.
1256 skfp_ctl_set_multicast_list_wo_lock(smc->os.dev);
1273 * smc - A pointer to the SMT context struct.
1278 void llc_restart_tx(struct s_smc *smc)
1280 skfddi_priv *bp = &smc->os;
1286 send_queued_packets(smc);
1300 * smc - A pointer to the SMT context struct.
1308 void *mac_drv_get_space(struct s_smc *smc, unsigned int size)
1313 virt = (void *) (smc->os.SharedMemAddr + smc->os.SharedMemHeap);
1315 if ((smc->os.SharedMemHeap + size) > smc->os.SharedMemSize) {
1319 smc->os.SharedMemHeap += size; // Move heap pointer.
1324 (smc->os.SharedMemDMA +
1325 ((char *) virt - (char *)smc->os.SharedMemAddr)));
1340 * smc - A pointer to the SMT context struct.
1348 void *mac_drv_get_desc_mem(struct s_smc *smc, unsigned int size)
1357 virt = mac_drv_get_space(smc, size);
1365 if (!mac_drv_get_space(smc, size)) {
1379 * smc - A pointer to the SMT context struct.
1386 unsigned long mac_drv_virt2phys(struct s_smc *smc, void *virt)
1388 return smc->os.SharedMemDMA +
1389 ((char *) virt - (char *)smc->os.SharedMemAddr);
1405 * smc - A pointer to the SMT context struct.
1421 u_long dma_master(struct s_smc * smc, void *virt, int len, int flag)
1423 return smc->os.SharedMemDMA +
1424 ((char *) virt - (char *)smc->os.SharedMemAddr);
1437 * smc - A pointer to the SMT context struct.
1449 void dma_complete(struct s_smc *smc, volatile union s_fp_descr *descr, int flag)
1464 skfddi_priv *bp = &smc->os;
1487 * smc - A pointer to the SMT context struct.
1494 void mac_drv_tx_complete(struct s_smc *smc, volatile struct s_smt_fp_txd *txd)
1508 dma_unmap_single(&(&smc->os.pdev)->dev, txd->txd_os.dma_addr,
1512 smc->os.MacStat.gen.tx_packets++; // Count transmitted packets.
1513 smc->os.MacStat.gen.tx_bytes+=skb->len; // Count bytes
1551 * smc - A pointer to the SMT context struct.
1562 void mac_drv_rx_complete(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
1565 skfddi_priv *bp = &smc->os;
1581 smc->os.MacStat.gen.rx_errors++;
1634 smc->os.MacStat.gen.rx_packets++; // Count indicated receive
1636 smc->os.MacStat.gen.rx_bytes+=len; // Count bytes.
1641 smc->os.MacStat.gen.multicast++;
1651 HWM_RX_CHECK(smc, RX_LOW_WATERMARK);
1656 mac_drv_requeue_rxd(smc, rxd, frag_count);
1657 smc->os.MacStat.gen.rx_errors++; // Count receive packets
1672 * smc - A pointer to the SMT context struct.
1681 void mac_drv_requeue_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
1695 MaxFrameSize = smc->os.MaxFrameSize;
1699 rxd = HWM_GET_CURR_RXD(smc);
1712 b_addr = dma_map_single(&(&smc->os.pdev)->dev,
1720 v_addr = smc->os.LocalRxBuffer;
1721 b_addr = smc->os.LocalRxBufferDMA;
1727 b_addr = dma_map_single(&(&smc->os.pdev)->dev, v_addr,
1731 hwm_rx_frag(smc, v_addr, b_addr, MaxFrameSize,
1750 * smc - A pointer to the SMT context struct.
1755 void mac_drv_fill_rxd(struct s_smc *smc)
1768 MaxFrameSize = smc->os.MaxFrameSize;
1770 while (HWM_GET_RX_FREE(smc) > 0) {
1773 rxd = HWM_GET_CURR_RXD(smc);
1780 b_addr = dma_map_single(&(&smc->os.pdev)->dev, v_addr,
1790 v_addr = smc->os.LocalRxBuffer;
1791 b_addr = smc->os.LocalRxBufferDMA;
1797 hwm_rx_frag(smc, v_addr, b_addr, MaxFrameSize,
1811 * smc - A pointer to the SMT context struct.
1820 void mac_drv_clear_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
1835 skfddi_priv *bp = &smc->os;
1864 * smc - A pointer to the SMT context struct.
1878 int mac_drv_rx_init(struct s_smc *smc, int len, int fc,
1903 skb->protocol = fddi_type_trans(skb, smc->os.dev);
1920 * smc - A pointer to the SMT context struct.
1925 void smt_timer_poll(struct s_smc *smc)
1936 * smc - A pointer to the SMT context struct.
1943 void ring_status_indication(struct s_smc *smc, u_long status)
2009 * smc - A pointer to the SMT context struct.
2017 void smt_stat_counter(struct s_smc *smc, int stat)
2028 smc->os.MacStat.gen.rx_errors++;
2043 * smc - A pointer to the SMT context struct.
2053 void cfm_state_change(struct s_smc *smc, int c_state)
2101 * smc - A pointer to the SMT context struct.
2111 void ecm_state_change(struct s_smc *smc, int e_state)
2156 * smc - A pointer to the SMT context struct.
2166 void rmt_state_change(struct s_smc *smc, int r_state)
2213 * smc - A pointer to the SMT context struct.
2218 void drv_reset_indication(struct s_smc *smc)
2222 smc->os.ResetRequested = TRUE; // Set flag.