Lines Matching full:smc

94 #include	"h/smc.h"
111 static void send_queued_packets(struct s_smc *smc);
113 static void ResetAdapter(struct s_smc *smc);
117 void *mac_drv_get_space(struct s_smc *smc, u_int size);
118 void *mac_drv_get_desc_mem(struct s_smc *smc, u_int size);
119 unsigned long mac_drv_virt2phys(struct s_smc *smc, void *virt);
120 unsigned long dma_master(struct s_smc *smc, void *virt, int len, int flag);
121 void dma_complete(struct s_smc *smc, volatile union s_fp_descr *descr,
123 void mac_drv_tx_complete(struct s_smc *smc, volatile struct s_smt_fp_txd *txd);
124 void llc_restart_tx(struct s_smc *smc);
125 void mac_drv_rx_complete(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
127 void mac_drv_requeue_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
129 void mac_drv_fill_rxd(struct s_smc *smc);
130 void mac_drv_clear_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd,
132 int mac_drv_rx_init(struct s_smc *smc, int len, int fc, char *look_ahead,
138 extern int mac_drv_init(struct s_smc *smc);
139 extern void hwm_tx_frag(struct s_smc *smc, char far * virt, u_long phys,
141 extern int hwm_tx_init(struct s_smc *smc, u_char fc, int frag_count,
143 extern void fddi_isr(struct s_smc *smc);
144 extern void hwm_rx_frag(struct s_smc *smc, char far * virt, u_long phys,
146 extern void mac_drv_rx_mode(struct s_smc *smc, int mode);
147 extern void mac_drv_clear_rx_queue(struct s_smc *smc);
148 extern void enable_tx_irq(struct s_smc *smc, u_short queue);
205 struct s_smc *smc; /* board pointer */ in skfp_init_one() local
262 smc = netdev_priv(dev); in skfp_init_one()
263 smc->os.dev = dev; in skfp_init_one()
264 smc->os.bus_type = SK_BUS_TYPE_PCI; in skfp_init_one()
265 smc->os.pdev = *pdev; in skfp_init_one()
266 smc->os.QueueSkb = MAX_TX_QUEUE_LEN; in skfp_init_one()
267 smc->os.MaxFrameSize = MAX_FRAME_SIZE; in skfp_init_one()
268 smc->os.dev = dev; in skfp_init_one()
269 smc->hw.slot = -1; in skfp_init_one()
270 smc->hw.iop = mem; in skfp_init_one()
271 smc->os.ResetRequested = FALSE; in skfp_init_one()
272 skb_queue_head_init(&smc->os.SendSkbQueue); in skfp_init_one()
297 if (smc->os.SharedMemAddr) in skfp_init_one()
298 dma_free_coherent(&pdev->dev, smc->os.SharedMemSize, in skfp_init_one()
299 smc->os.SharedMemAddr, in skfp_init_one()
300 smc->os.SharedMemDMA); in skfp_init_one()
302 smc->os.LocalRxBuffer, smc->os.LocalRxBufferDMA); in skfp_init_one()
380 struct s_smc *smc = netdev_priv(dev); in skfp_driver_init() local
381 skfddi_priv *bp = &smc->os; in skfp_driver_init()
390 smc->hw.irq = dev->irq; in skfp_driver_init()
427 card_stop(smc); // Reset adapter. in skfp_driver_init()
430 if (mac_drv_init(smc) != 0) { in skfp_driver_init()
434 read_address(smc, NULL); in skfp_driver_init()
435 pr_debug("HW-Addr: %pMF\n", smc->hw.fddi_canon_addr.a); in skfp_driver_init()
436 memcpy(dev->dev_addr, smc->hw.fddi_canon_addr.a, ETH_ALEN); in skfp_driver_init()
438 smt_reset_defaults(smc, 0); in skfp_driver_init()
482 struct s_smc *smc = netdev_priv(dev); in skfp_open() local
502 read_address(smc, NULL); in skfp_open()
503 memcpy(dev->dev_addr, smc->hw.fddi_canon_addr.a, ETH_ALEN); in skfp_open()
505 init_smt(smc, NULL); in skfp_open()
506 smt_online(smc, 1); in skfp_open()
510 mac_clear_multicast(smc); in skfp_open()
513 mac_drv_rx_mode(smc, RX_DISABLE_PROMISC); in skfp_open()
549 struct s_smc *smc = netdev_priv(dev); in skfp_close() local
550 skfddi_priv *bp = &smc->os; in skfp_close()
553 smt_reset_defaults(smc, 1); in skfp_close()
554 card_stop(smc); in skfp_close()
555 mac_drv_clear_tx_queue(smc); in skfp_close()
556 mac_drv_clear_rx_queue(smc); in skfp_close()
607 struct s_smc *smc; /* private board structure pointer */ in skfp_interrupt() local
610 smc = netdev_priv(dev); in skfp_interrupt()
611 bp = &smc->os; in skfp_interrupt()
619 if ((inpd(ISR_A) & smc->hw.is_imask) == 0) { // IRQ? in skfp_interrupt()
627 fddi_isr(smc); in skfp_interrupt()
629 if (smc->os.ResetRequested) { in skfp_interrupt()
630 ResetAdapter(smc); in skfp_interrupt()
631 smc->os.ResetRequested = FALSE; in skfp_interrupt()
837 struct s_smc *smc = netdev_priv(dev); in skfp_ctl_set_multicast_list() local
838 skfddi_priv *bp = &smc->os; in skfp_ctl_set_multicast_list()
850 struct s_smc *smc = netdev_priv(dev); in skfp_ctl_set_multicast_list_wo_lock() local
855 mac_drv_rx_mode(smc, RX_ENABLE_PROMISC); in skfp_ctl_set_multicast_list_wo_lock()
860 mac_drv_rx_mode(smc, RX_DISABLE_PROMISC); in skfp_ctl_set_multicast_list_wo_lock()
864 mac_clear_multicast(smc); in skfp_ctl_set_multicast_list_wo_lock()
865 mac_drv_rx_mode(smc, RX_DISABLE_ALLMULTI); in skfp_ctl_set_multicast_list_wo_lock()
868 mac_drv_rx_mode(smc, RX_ENABLE_ALLMULTI); in skfp_ctl_set_multicast_list_wo_lock()
876 mac_add_multicast(smc, in skfp_ctl_set_multicast_list_wo_lock()
886 mac_drv_rx_mode(smc, RX_ENABLE_ALLMULTI); in skfp_ctl_set_multicast_list_wo_lock()
895 mac_update_multicast(smc); in skfp_ctl_set_multicast_list_wo_lock()
921 struct s_smc *smc = netdev_priv(dev); in skfp_ctl_set_mac_address() local
923 skfddi_priv *bp = &smc->os; in skfp_ctl_set_mac_address()
929 ResetAdapter(smc); in skfp_ctl_set_mac_address()
961 struct s_smc *smc = netdev_priv(dev); in skfp_siocdevprivate() local
962 skfddi_priv *lp = &smc->os; in skfp_siocdevprivate()
1045 struct s_smc *smc = netdev_priv(dev); in skfp_send_pkt() local
1046 skfddi_priv *bp = &smc->os; in skfp_send_pkt()
1095 * smc - pointer to smc (adapter) structure
1105 static void send_queued_packets(struct s_smc *smc) in send_queued_packets() argument
1107 skfddi_priv *bp = &smc->os; in send_queued_packets()
1135 if (!smc->ess.sync_bw_available) in send_queued_packets()
1140 if (smc->mib.fddiESSSynchTxMode) { in send_queued_packets()
1147 frame_status = hwm_tx_init(smc, fc, 1, skb->len, queue); in send_queued_packets()
1173 CheckSourceAddress(skb->data, smc->hw.fddi_canon_addr.a); in send_queued_packets()
1175 txd = (struct s_smt_fp_txd *) HWM_GET_CURR_TXD(smc, queue); in send_queued_packets()
1183 hwm_tx_frag(smc, skb->data, dma_address, skb->len, in send_queued_packets()
1227 * smc - A pointer to the SMT context struct.
1232 static void ResetAdapter(struct s_smc *smc) in ResetAdapter() argument
1239 card_stop(smc); // Stop all activity. in ResetAdapter()
1242 mac_drv_clear_tx_queue(smc); in ResetAdapter()
1243 mac_drv_clear_rx_queue(smc); in ResetAdapter()
1247 smt_reset_defaults(smc, 1); // Initialize the SMT module. in ResetAdapter()
1249 init_smt(smc, (smc->os.dev)->dev_addr); // Initialize the hardware. in ResetAdapter()
1251 smt_online(smc, 1); // Insert into the ring again. in ResetAdapter()
1255 skfp_ctl_set_multicast_list_wo_lock(smc->os.dev); in ResetAdapter()
1272 * smc - A pointer to the SMT context struct.
1277 void llc_restart_tx(struct s_smc *smc) in llc_restart_tx() argument
1279 skfddi_priv *bp = &smc->os; in llc_restart_tx()
1285 send_queued_packets(smc); in llc_restart_tx()
1299 * smc - A pointer to the SMT context struct.
1307 void *mac_drv_get_space(struct s_smc *smc, unsigned int size) in mac_drv_get_space() argument
1312 virt = (void *) (smc->os.SharedMemAddr + smc->os.SharedMemHeap); in mac_drv_get_space()
1314 if ((smc->os.SharedMemHeap + size) > smc->os.SharedMemSize) { in mac_drv_get_space()
1318 smc->os.SharedMemHeap += size; // Move heap pointer. in mac_drv_get_space()
1323 (smc->os.SharedMemDMA + in mac_drv_get_space()
1324 ((char *) virt - (char *)smc->os.SharedMemAddr))); in mac_drv_get_space()
1339 * smc - A pointer to the SMT context struct.
1347 void *mac_drv_get_desc_mem(struct s_smc *smc, unsigned int size) in mac_drv_get_desc_mem() argument
1356 virt = mac_drv_get_space(smc, size); in mac_drv_get_desc_mem()
1364 if (!mac_drv_get_space(smc, size)) { in mac_drv_get_desc_mem()
1378 * smc - A pointer to the SMT context struct.
1385 unsigned long mac_drv_virt2phys(struct s_smc *smc, void *virt) in mac_drv_virt2phys() argument
1387 return smc->os.SharedMemDMA + in mac_drv_virt2phys()
1388 ((char *) virt - (char *)smc->os.SharedMemAddr); in mac_drv_virt2phys()
1404 * smc - A pointer to the SMT context struct.
1420 u_long dma_master(struct s_smc * smc, void *virt, int len, int flag) in dma_master() argument
1422 return smc->os.SharedMemDMA + in dma_master()
1423 ((char *) virt - (char *)smc->os.SharedMemAddr); in dma_master()
1436 * smc - A pointer to the SMT context struct.
1448 void dma_complete(struct s_smc *smc, volatile union s_fp_descr *descr, int flag) in dma_complete() argument
1463 skfddi_priv *bp = &smc->os; in dma_complete()
1486 * smc - A pointer to the SMT context struct.
1493 void mac_drv_tx_complete(struct s_smc *smc, volatile struct s_smt_fp_txd *txd) in mac_drv_tx_complete() argument
1507 dma_unmap_single(&(&smc->os.pdev)->dev, txd->txd_os.dma_addr, in mac_drv_tx_complete()
1511 smc->os.MacStat.gen.tx_packets++; // Count transmitted packets. in mac_drv_tx_complete()
1512 smc->os.MacStat.gen.tx_bytes+=skb->len; // Count bytes in mac_drv_tx_complete()
1550 * smc - A pointer to the SMT context struct.
1561 void mac_drv_rx_complete(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd, in mac_drv_rx_complete() argument
1564 skfddi_priv *bp = &smc->os; in mac_drv_rx_complete()
1580 smc->os.MacStat.gen.rx_errors++; in mac_drv_rx_complete()
1633 smc->os.MacStat.gen.rx_packets++; // Count indicated receive in mac_drv_rx_complete()
1635 smc->os.MacStat.gen.rx_bytes+=len; // Count bytes. in mac_drv_rx_complete()
1640 smc->os.MacStat.gen.multicast++; in mac_drv_rx_complete()
1650 HWM_RX_CHECK(smc, RX_LOW_WATERMARK); in mac_drv_rx_complete()
1655 mac_drv_requeue_rxd(smc, rxd, frag_count); in mac_drv_rx_complete()
1656 smc->os.MacStat.gen.rx_errors++; // Count receive packets in mac_drv_rx_complete()
1671 * smc - A pointer to the SMT context struct.
1680 void mac_drv_requeue_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd, in mac_drv_requeue_rxd() argument
1694 MaxFrameSize = smc->os.MaxFrameSize; in mac_drv_requeue_rxd()
1698 rxd = HWM_GET_CURR_RXD(smc); in mac_drv_requeue_rxd()
1711 b_addr = dma_map_single(&(&smc->os.pdev)->dev, in mac_drv_requeue_rxd()
1719 v_addr = smc->os.LocalRxBuffer; in mac_drv_requeue_rxd()
1720 b_addr = smc->os.LocalRxBufferDMA; in mac_drv_requeue_rxd()
1726 b_addr = dma_map_single(&(&smc->os.pdev)->dev, v_addr, in mac_drv_requeue_rxd()
1730 hwm_rx_frag(smc, v_addr, b_addr, MaxFrameSize, in mac_drv_requeue_rxd()
1749 * smc - A pointer to the SMT context struct.
1754 void mac_drv_fill_rxd(struct s_smc *smc) in mac_drv_fill_rxd() argument
1767 MaxFrameSize = smc->os.MaxFrameSize; in mac_drv_fill_rxd()
1769 while (HWM_GET_RX_FREE(smc) > 0) { in mac_drv_fill_rxd()
1772 rxd = HWM_GET_CURR_RXD(smc); in mac_drv_fill_rxd()
1779 b_addr = dma_map_single(&(&smc->os.pdev)->dev, v_addr, in mac_drv_fill_rxd()
1789 v_addr = smc->os.LocalRxBuffer; in mac_drv_fill_rxd()
1790 b_addr = smc->os.LocalRxBufferDMA; in mac_drv_fill_rxd()
1796 hwm_rx_frag(smc, v_addr, b_addr, MaxFrameSize, in mac_drv_fill_rxd()
1810 * smc - A pointer to the SMT context struct.
1819 void mac_drv_clear_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd, in mac_drv_clear_rxd() argument
1834 skfddi_priv *bp = &smc->os; in mac_drv_clear_rxd()
1863 * smc - A pointer to the SMT context struct.
1877 int mac_drv_rx_init(struct s_smc *smc, int len, int fc, in mac_drv_rx_init() argument
1902 skb->protocol = fddi_type_trans(skb, smc->os.dev); in mac_drv_rx_init()
1919 * smc - A pointer to the SMT context struct.
1924 void smt_timer_poll(struct s_smc *smc) in smt_timer_poll() argument
1935 * smc - A pointer to the SMT context struct.
1942 void ring_status_indication(struct s_smc *smc, u_long status) in ring_status_indication() argument
2008 * smc - A pointer to the SMT context struct.
2016 void smt_stat_counter(struct s_smc *smc, int stat) in smt_stat_counter() argument
2027 smc->os.MacStat.gen.rx_errors++; in smt_stat_counter()
2042 * smc - A pointer to the SMT context struct.
2052 void cfm_state_change(struct s_smc *smc, int c_state) in cfm_state_change() argument
2100 * smc - A pointer to the SMT context struct.
2110 void ecm_state_change(struct s_smc *smc, int e_state) in ecm_state_change() argument
2155 * smc - A pointer to the SMT context struct.
2165 void rmt_state_change(struct s_smc *smc, int r_state) in rmt_state_change() argument
2212 * smc - A pointer to the SMT context struct.
2217 void drv_reset_indication(struct s_smc *smc) in drv_reset_indication() argument
2221 smc->os.ResetRequested = TRUE; // Set flag. in drv_reset_indication()