Lines Matching full: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);
207 struct s_smc *smc; /* board pointer */ in skfp_init_one() local
264 smc = netdev_priv(dev); in skfp_init_one()
265 smc->os.dev = dev; in skfp_init_one()
266 smc->os.bus_type = SK_BUS_TYPE_PCI; in skfp_init_one()
267 smc->os.pdev = *pdev; in skfp_init_one()
268 smc->os.QueueSkb = MAX_TX_QUEUE_LEN; in skfp_init_one()
269 smc->os.MaxFrameSize = MAX_FRAME_SIZE; in skfp_init_one()
270 smc->os.dev = dev; in skfp_init_one()
271 smc->hw.slot = -1; in skfp_init_one()
272 smc->hw.iop = mem; in skfp_init_one()
273 smc->os.ResetRequested = FALSE; in skfp_init_one()
274 skb_queue_head_init(&smc->os.SendSkbQueue); in skfp_init_one()
299 if (smc->os.SharedMemAddr) in skfp_init_one()
300 dma_free_coherent(&pdev->dev, smc->os.SharedMemSize, in skfp_init_one()
301 smc->os.SharedMemAddr, in skfp_init_one()
302 smc->os.SharedMemDMA); in skfp_init_one()
304 smc->os.LocalRxBuffer, smc->os.LocalRxBufferDMA); in skfp_init_one()
382 struct s_smc *smc = netdev_priv(dev); in skfp_driver_init() local
383 skfddi_priv *bp = &smc->os; in skfp_driver_init()
392 smc->hw.irq = dev->irq; in skfp_driver_init()
429 card_stop(smc); // Reset adapter. in skfp_driver_init()
432 if (mac_drv_init(smc) != 0) { in skfp_driver_init()
436 read_address(smc, NULL); in skfp_driver_init()
437 pr_debug("HW-Addr: %pMF\n", smc->hw.fddi_canon_addr.a); in skfp_driver_init()
438 eth_hw_addr_set(dev, smc->hw.fddi_canon_addr.a); in skfp_driver_init()
440 smt_reset_defaults(smc, 0); in skfp_driver_init()
484 struct s_smc *smc = netdev_priv(dev); in skfp_open() local
504 read_address(smc, NULL); in skfp_open()
505 eth_hw_addr_set(dev, smc->hw.fddi_canon_addr.a); in skfp_open()
507 init_smt(smc, NULL); in skfp_open()
508 smt_online(smc, 1); in skfp_open()
512 mac_clear_multicast(smc); in skfp_open()
515 mac_drv_rx_mode(smc, RX_DISABLE_PROMISC); in skfp_open()
551 struct s_smc *smc = netdev_priv(dev); in skfp_close() local
552 skfddi_priv *bp = &smc->os; in skfp_close()
555 smt_reset_defaults(smc, 1); in skfp_close()
556 card_stop(smc); in skfp_close()
557 mac_drv_clear_tx_queue(smc); in skfp_close()
558 mac_drv_clear_rx_queue(smc); in skfp_close()
609 struct s_smc *smc; /* private board structure pointer */ in skfp_interrupt() local
612 smc = netdev_priv(dev); in skfp_interrupt()
613 bp = &smc->os; in skfp_interrupt()
621 if ((inpd(ISR_A) & smc->hw.is_imask) == 0) { // IRQ? in skfp_interrupt()
629 fddi_isr(smc); in skfp_interrupt()
631 if (smc->os.ResetRequested) { in skfp_interrupt()
632 ResetAdapter(smc); in skfp_interrupt()
633 smc->os.ResetRequested = FALSE; in skfp_interrupt()
839 struct s_smc *smc = netdev_priv(dev); in skfp_ctl_set_multicast_list() local
840 skfddi_priv *bp = &smc->os; in skfp_ctl_set_multicast_list()
852 struct s_smc *smc = netdev_priv(dev); in skfp_ctl_set_multicast_list_wo_lock() local
857 mac_drv_rx_mode(smc, RX_ENABLE_PROMISC); in skfp_ctl_set_multicast_list_wo_lock()
862 mac_drv_rx_mode(smc, RX_DISABLE_PROMISC); in skfp_ctl_set_multicast_list_wo_lock()
866 mac_clear_multicast(smc); in skfp_ctl_set_multicast_list_wo_lock()
867 mac_drv_rx_mode(smc, RX_DISABLE_ALLMULTI); in skfp_ctl_set_multicast_list_wo_lock()
870 mac_drv_rx_mode(smc, RX_ENABLE_ALLMULTI); in skfp_ctl_set_multicast_list_wo_lock()
878 mac_add_multicast(smc, in skfp_ctl_set_multicast_list_wo_lock()
888 mac_drv_rx_mode(smc, RX_ENABLE_ALLMULTI); in skfp_ctl_set_multicast_list_wo_lock()
897 mac_update_multicast(smc); in skfp_ctl_set_multicast_list_wo_lock()
923 struct s_smc *smc = netdev_priv(dev); in skfp_ctl_set_mac_address() local
925 skfddi_priv *bp = &smc->os; in skfp_ctl_set_mac_address()
931 ResetAdapter(smc); in skfp_ctl_set_mac_address()
963 struct s_smc *smc = netdev_priv(dev); in skfp_siocdevprivate() local
964 skfddi_priv *lp = &smc->os; in skfp_siocdevprivate()
1047 struct s_smc *smc = netdev_priv(dev); in skfp_send_pkt() local
1048 skfddi_priv *bp = &smc->os; in skfp_send_pkt()
1097 * smc - pointer to smc (adapter) structure
1107 static void send_queued_packets(struct s_smc *smc) in send_queued_packets() argument
1109 skfddi_priv *bp = &smc->os; in send_queued_packets()
1137 if (!smc->ess.sync_bw_available) in send_queued_packets()
1142 if (smc->mib.fddiESSSynchTxMode) { in send_queued_packets()
1149 frame_status = hwm_tx_init(smc, fc, 1, skb->len, queue); in send_queued_packets()
1175 CheckSourceAddress(skb->data, smc->hw.fddi_canon_addr.a); in send_queued_packets()
1177 txd = (struct s_smt_fp_txd *) HWM_GET_CURR_TXD(smc, queue); in send_queued_packets()
1185 hwm_tx_frag(smc, skb->data, dma_address, skb->len, in send_queued_packets()
1229 * smc - A pointer to the SMT context struct.
1234 static void ResetAdapter(struct s_smc *smc) in ResetAdapter() argument
1241 card_stop(smc); // Stop all activity. in ResetAdapter()
1244 mac_drv_clear_tx_queue(smc); in ResetAdapter()
1245 mac_drv_clear_rx_queue(smc); in ResetAdapter()
1249 smt_reset_defaults(smc, 1); // Initialize the SMT module. in ResetAdapter()
1251 init_smt(smc, (smc->os.dev)->dev_addr); // Initialize the hardware. in ResetAdapter()
1253 smt_online(smc, 1); // Insert into the ring again. in ResetAdapter()
1257 skfp_ctl_set_multicast_list_wo_lock(smc->os.dev); in ResetAdapter()
1274 * smc - A pointer to the SMT context struct.
1279 void llc_restart_tx(struct s_smc *smc) in llc_restart_tx() argument
1281 skfddi_priv *bp = &smc->os; in llc_restart_tx()
1287 send_queued_packets(smc); in llc_restart_tx()
1301 * smc - A pointer to the SMT context struct.
1309 void *mac_drv_get_space(struct s_smc *smc, unsigned int size) in mac_drv_get_space() argument
1314 virt = (void *) (smc->os.SharedMemAddr + smc->os.SharedMemHeap); in mac_drv_get_space()
1316 if ((smc->os.SharedMemHeap + size) > smc->os.SharedMemSize) { in mac_drv_get_space()
1320 smc->os.SharedMemHeap += size; // Move heap pointer. in mac_drv_get_space()
1325 (smc->os.SharedMemDMA + in mac_drv_get_space()
1326 ((char *) virt - (char *)smc->os.SharedMemAddr))); in mac_drv_get_space()
1341 * smc - A pointer to the SMT context struct.
1349 void *mac_drv_get_desc_mem(struct s_smc *smc, unsigned int size) in mac_drv_get_desc_mem() argument
1358 virt = mac_drv_get_space(smc, size); in mac_drv_get_desc_mem()
1366 if (!mac_drv_get_space(smc, size)) { in mac_drv_get_desc_mem()
1380 * smc - A pointer to the SMT context struct.
1387 unsigned long mac_drv_virt2phys(struct s_smc *smc, void *virt) in mac_drv_virt2phys() argument
1389 return smc->os.SharedMemDMA + in mac_drv_virt2phys()
1390 ((char *) virt - (char *)smc->os.SharedMemAddr); in mac_drv_virt2phys()
1406 * smc - A pointer to the SMT context struct.
1422 u_long dma_master(struct s_smc * smc, void *virt, int len, int flag) in dma_master() argument
1424 return smc->os.SharedMemDMA + in dma_master()
1425 ((char *) virt - (char *)smc->os.SharedMemAddr); in dma_master()
1438 * smc - A pointer to the SMT context struct.
1450 void dma_complete(struct s_smc *smc, volatile union s_fp_descr *descr, int flag) in dma_complete() argument
1465 skfddi_priv *bp = &smc->os; in dma_complete()
1488 * smc - A pointer to the SMT context struct.
1495 void mac_drv_tx_complete(struct s_smc *smc, volatile struct s_smt_fp_txd *txd) in mac_drv_tx_complete() argument
1509 dma_unmap_single(&(&smc->os.pdev)->dev, txd->txd_os.dma_addr, in mac_drv_tx_complete()
1513 smc->os.MacStat.gen.tx_packets++; // Count transmitted packets. in mac_drv_tx_complete()
1514 smc->os.MacStat.gen.tx_bytes+=skb->len; // Count bytes in mac_drv_tx_complete()
1552 * smc - A pointer to the SMT context struct.
1563 void mac_drv_rx_complete(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd, in mac_drv_rx_complete() argument
1566 skfddi_priv *bp = &smc->os; in mac_drv_rx_complete()
1582 smc->os.MacStat.gen.rx_errors++; in mac_drv_rx_complete()
1635 smc->os.MacStat.gen.rx_packets++; // Count indicated receive in mac_drv_rx_complete()
1637 smc->os.MacStat.gen.rx_bytes+=len; // Count bytes. in mac_drv_rx_complete()
1642 smc->os.MacStat.gen.multicast++; in mac_drv_rx_complete()
1652 HWM_RX_CHECK(smc, RX_LOW_WATERMARK); in mac_drv_rx_complete()
1657 mac_drv_requeue_rxd(smc, rxd, frag_count); in mac_drv_rx_complete()
1658 smc->os.MacStat.gen.rx_errors++; // Count receive packets in mac_drv_rx_complete()
1673 * smc - A pointer to the SMT context struct.
1682 void mac_drv_requeue_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd, in mac_drv_requeue_rxd() argument
1696 MaxFrameSize = smc->os.MaxFrameSize; in mac_drv_requeue_rxd()
1700 rxd = HWM_GET_CURR_RXD(smc); in mac_drv_requeue_rxd()
1713 b_addr = dma_map_single(&(&smc->os.pdev)->dev, in mac_drv_requeue_rxd()
1721 v_addr = smc->os.LocalRxBuffer; in mac_drv_requeue_rxd()
1722 b_addr = smc->os.LocalRxBufferDMA; in mac_drv_requeue_rxd()
1728 b_addr = dma_map_single(&(&smc->os.pdev)->dev, v_addr, in mac_drv_requeue_rxd()
1732 hwm_rx_frag(smc, v_addr, b_addr, MaxFrameSize, in mac_drv_requeue_rxd()
1751 * smc - A pointer to the SMT context struct.
1756 void mac_drv_fill_rxd(struct s_smc *smc) in mac_drv_fill_rxd() argument
1769 MaxFrameSize = smc->os.MaxFrameSize; in mac_drv_fill_rxd()
1771 while (HWM_GET_RX_FREE(smc) > 0) { in mac_drv_fill_rxd()
1774 rxd = HWM_GET_CURR_RXD(smc); in mac_drv_fill_rxd()
1781 b_addr = dma_map_single(&(&smc->os.pdev)->dev, v_addr, in mac_drv_fill_rxd()
1791 v_addr = smc->os.LocalRxBuffer; in mac_drv_fill_rxd()
1792 b_addr = smc->os.LocalRxBufferDMA; in mac_drv_fill_rxd()
1798 hwm_rx_frag(smc, v_addr, b_addr, MaxFrameSize, in mac_drv_fill_rxd()
1812 * smc - A pointer to the SMT context struct.
1821 void mac_drv_clear_rxd(struct s_smc *smc, volatile struct s_smt_fp_rxd *rxd, in mac_drv_clear_rxd() argument
1836 skfddi_priv *bp = &smc->os; in mac_drv_clear_rxd()
1865 * smc - A pointer to the SMT context struct.
1879 int mac_drv_rx_init(struct s_smc *smc, int len, int fc, in mac_drv_rx_init() argument
1904 skb->protocol = fddi_type_trans(skb, smc->os.dev); in mac_drv_rx_init()
1921 * smc - A pointer to the SMT context struct.
1926 void smt_timer_poll(struct s_smc *smc) in smt_timer_poll() argument
1937 * smc - A pointer to the SMT context struct.
1944 void ring_status_indication(struct s_smc *smc, u_long status) in ring_status_indication() argument
2010 * smc - A pointer to the SMT context struct.
2018 void smt_stat_counter(struct s_smc *smc, int stat) in smt_stat_counter() argument
2029 smc->os.MacStat.gen.rx_errors++; in smt_stat_counter()
2044 * smc - A pointer to the SMT context struct.
2054 void cfm_state_change(struct s_smc *smc, int c_state) in cfm_state_change() argument
2102 * smc - A pointer to the SMT context struct.
2112 void ecm_state_change(struct s_smc *smc, int e_state) in ecm_state_change() argument
2157 * smc - A pointer to the SMT context struct.
2167 void rmt_state_change(struct s_smc *smc, int r_state) in rmt_state_change() argument
2214 * smc - A pointer to the SMT context struct.
2219 void drv_reset_indication(struct s_smc *smc) in drv_reset_indication() argument
2223 smc->os.ResetRequested = TRUE; // Set flag. in drv_reset_indication()