Lines Matching refs:smc

78 static void queue_llc_rx(struct s_smc *smc, SMbuf *mb);
79 static void smt_to_llc(struct s_smc *smc, SMbuf *mb);
80 static void init_txd_ring(struct s_smc *smc);
81 static void init_rxd_ring(struct s_smc *smc);
82 static void queue_txd_mb(struct s_smc *smc, SMbuf *mb);
83 static u_long init_descr_ring(struct s_smc *smc, union s_fp_descr volatile *start,
85 static u_long repair_txd_ring(struct s_smc *smc, struct s_smt_tx_queue *queue);
86 static u_long repair_rxd_ring(struct s_smc *smc, struct s_smt_rx_queue *queue);
87 static SMbuf* get_llc_rx(struct s_smc *smc);
88 static SMbuf* get_txd_mb(struct s_smc *smc);
89 static void mac_drv_clear_txd(struct s_smc *smc);
98 extern void* mac_drv_get_space(struct s_smc *smc, unsigned int size);
99 extern void* mac_drv_get_desc_mem(struct s_smc *smc, unsigned int size);
100 extern void mac_drv_fill_rxd(struct s_smc *smc);
101 extern void mac_drv_tx_complete(struct s_smc *smc,
103 extern void mac_drv_rx_complete(struct s_smc *smc,
106 extern void mac_drv_requeue_rxd(struct s_smc *smc,
109 extern void mac_drv_clear_rxd(struct s_smc *smc,
121 extern u_long mac_drv_virt2phys(struct s_smc *smc, void *virt);
122 extern u_long dma_master(struct s_smc *smc, void *virt, int len, int flag);
127 extern void dma_complete(struct s_smc *smc, volatile union s_fp_descr *descr,
131 extern int mac_drv_rx_init(struct s_smc *smc, int len, int fc, char *look_ahead,
139 void process_receive(struct s_smc *smc);
140 void fddi_isr(struct s_smc *smc);
141 void smt_free_mbuf(struct s_smc *smc, SMbuf *mb);
142 void init_driver_fplus(struct s_smc *smc);
143 void mac_drv_rx_mode(struct s_smc *smc, int mode);
144 void init_fddi_driver(struct s_smc *smc, u_char *mac_addr);
145 void mac_drv_clear_tx_queue(struct s_smc *smc);
146 void mac_drv_clear_rx_queue(struct s_smc *smc);
147 void hwm_tx_frag(struct s_smc *smc, char far *virt, u_long phys, int len,
149 void hwm_rx_frag(struct s_smc *smc, char far *virt, u_long phys, int len,
152 int mac_drv_init(struct s_smc *smc);
153 int hwm_tx_init(struct s_smc *smc, u_char fc, int frag_count, int frame_len,
158 SMbuf* smt_get_mbuf(struct s_smc *smc);
178 #define MA smc->hw.fddi_canon_addr.a
181 #define MA smc->hw.fddi_home_addr.a
259 int mac_drv_init(struct s_smc *smc) in mac_drv_init() argument
262 SMT_PANIC(smc,HWM_E0001,HWM_E0001_MSG) ; in mac_drv_init()
265 SMT_PANIC(smc,HWM_E0002,HWM_E0002_MSG) ; in mac_drv_init()
271 if (!(smc->os.hwm.descr_p = (union s_fp_descr volatile *) in mac_drv_init()
272 mac_drv_get_desc_mem(smc,(u_int) in mac_drv_init()
281 smc->os.hwm.mbuf_pool.mb_start=(SMbuf *)(&smc->os.hwm.mbuf_pool.mb[0]) ; in mac_drv_init()
284 if (!(smc->os.hwm.mbuf_pool.mb_start = (SMbuf *) mac_drv_get_space(smc, in mac_drv_init()
290 if (!(mb_start = (SMbuf *) mac_drv_get_space(smc, in mac_drv_init()
309 void init_driver_fplus(struct s_smc *smc) in init_driver_fplus() argument
311 smc->hw.fp.mdr2init = FM_LSB | FM_BMMODE | FM_ENNPRQ | FM_ENHSRQ | 3 ; in init_driver_fplus()
314 smc->hw.fp.mdr2init |= FM_CHKPAR | FM_PARITY ; in init_driver_fplus()
316 smc->hw.fp.mdr3init = FM_MENRQAUNLCK | FM_MENRS ; in init_driver_fplus()
320 smc->hw.fp.frselreg_init = FM_ENXMTADSWAP | FM_ENRCVADSWAP ; in init_driver_fplus()
324 static u_long init_descr_ring(struct s_smc *smc, in init_descr_ring() argument
339 phys = mac_drv_virt2phys(smc,(void *)d1) ; in init_descr_ring()
345 phys = mac_drv_virt2phys(smc,(void *)start) ; in init_descr_ring()
355 static void init_txd_ring(struct s_smc *smc) in init_txd_ring() argument
364 ds = (struct s_smt_fp_txd volatile *) ((char *)smc->os.hwm.descr_p + in init_txd_ring()
366 queue = smc->hw.fp.tx[QUEUE_A0] ; in init_txd_ring()
368 (void)init_descr_ring(smc,(union s_fp_descr volatile *)ds, in init_txd_ring()
380 queue = smc->hw.fp.tx[QUEUE_S] ; in init_txd_ring()
382 (void)init_descr_ring(smc,(union s_fp_descr volatile *)ds, in init_txd_ring()
392 static void init_rxd_ring(struct s_smc *smc) in init_rxd_ring() argument
401 ds = (struct s_smt_fp_rxd volatile *) smc->os.hwm.descr_p ; in init_rxd_ring()
402 queue = smc->hw.fp.rx[QUEUE_R1] ; in init_rxd_ring()
404 (void)init_descr_ring(smc,(union s_fp_descr volatile *)ds, in init_rxd_ring()
422 void init_fddi_driver(struct s_smc *smc, u_char *mac_addr) in init_fddi_driver() argument
427 init_board(smc,mac_addr) ; in init_fddi_driver()
428 (void)init_fplus(smc) ; in init_fddi_driver()
434 mb = smc->os.hwm.mbuf_pool.mb_start ; in init_fddi_driver()
435 smc->os.hwm.mbuf_pool.mb_free = (SMbuf *)NULL ; in init_fddi_driver()
438 smt_free_mbuf(smc,mb) ; in init_fddi_driver()
447 smt_free_mbuf(smc,mb) ; in init_fddi_driver()
457 smc->os.hwm.llc_rx_pipe = smc->os.hwm.llc_rx_tail = (SMbuf *)NULL ; in init_fddi_driver()
458 smc->os.hwm.txd_tx_pipe = smc->os.hwm.txd_tx_tail = NULL ; in init_fddi_driver()
459 smc->os.hwm.pass_SMT = smc->os.hwm.pass_NSA = smc->os.hwm.pass_DB = 0 ; in init_fddi_driver()
460 smc->os.hwm.pass_llc_promisc = TRUE ; in init_fddi_driver()
461 smc->os.hwm.queued_rx_frames = smc->os.hwm.queued_txd_mb = 0 ; in init_fddi_driver()
462 smc->os.hwm.detec_count = 0 ; in init_fddi_driver()
463 smc->os.hwm.rx_break = 0 ; in init_fddi_driver()
464 smc->os.hwm.rx_len_error = 0 ; in init_fddi_driver()
465 smc->os.hwm.isr_flag = FALSE ; in init_fddi_driver()
470 i = 16 - ((long)smc->os.hwm.descr_p & 0xf) ; in init_fddi_driver()
473 smc->os.hwm.descr_p = (union s_fp_descr volatile *) in init_fddi_driver()
474 ((char *)smc->os.hwm.descr_p+i) ; in init_fddi_driver()
476 DB_GEN("pt to descr area = %x",(void *)smc->os.hwm.descr_p,0,3) ; in init_fddi_driver()
478 init_txd_ring(smc) ; in init_fddi_driver()
479 init_rxd_ring(smc) ; in init_fddi_driver()
480 mac_drv_fill_rxd(smc) ; in init_fddi_driver()
482 init_plc(smc) ; in init_fddi_driver()
486 SMbuf *smt_get_mbuf(struct s_smc *smc) in smt_get_mbuf() argument
491 mb = smc->os.hwm.mbuf_pool.mb_free ; in smt_get_mbuf()
497 smc->os.hwm.mbuf_pool.mb_free = mb->sm_next ; in smt_get_mbuf()
508 void smt_free_mbuf(struct s_smc *smc, SMbuf *mb) in smt_free_mbuf() argument
522 mb->sm_next = smc->os.hwm.mbuf_pool.mb_free ; in smt_free_mbuf()
523 smc->os.hwm.mbuf_pool.mb_free = mb ; in smt_free_mbuf()
531 SMT_PANIC(smc,HWM_E0003,HWM_E0003_MSG) ; in smt_free_mbuf()
554 void mac_drv_repair_descr(struct s_smc *smc) in mac_drv_repair_descr() argument
558 if (smc->hw.hw_state != STOPPED) { in mac_drv_repair_descr()
560 SMT_PANIC(smc,HWM_E0013,HWM_E0013_MSG) ; in mac_drv_repair_descr()
567 phys = repair_txd_ring(smc,smc->hw.fp.tx[QUEUE_A0]) ; in mac_drv_repair_descr()
569 if (smc->hw.fp.tx_q[QUEUE_A0].tx_used) { in mac_drv_repair_descr()
572 phys = repair_txd_ring(smc,smc->hw.fp.tx[QUEUE_S]) ; in mac_drv_repair_descr()
574 if (smc->hw.fp.tx_q[QUEUE_S].tx_used) { in mac_drv_repair_descr()
581 phys = repair_rxd_ring(smc,smc->hw.fp.rx[QUEUE_R1]) ; in mac_drv_repair_descr()
586 static u_long repair_txd_ring(struct s_smc *smc, struct s_smt_tx_queue *queue) in repair_txd_ring() argument
594 SK_UNUSED(smc) ; in repair_txd_ring()
638 static u_long repair_rxd_ring(struct s_smc *smc, struct s_smt_rx_queue *queue) in repair_rxd_ring() argument
646 SK_UNUSED(smc) ; in repair_rxd_ring()
709 void fddi_isr(struct s_smc *smc) in fddi_isr() argument
720 if (smc->os.hwm.rx_break) { in fddi_isr()
721 mac_drv_fill_rxd(smc) ; in fddi_isr()
722 if (smc->hw.fp.rx_q[QUEUE_R1].rx_used > 0) { in fddi_isr()
723 smc->os.hwm.rx_break = 0 ; in fddi_isr()
724 process_receive(smc) ; in fddi_isr()
727 smc->os.hwm.detec_count = 0 ; in fddi_isr()
728 smt_force_irq(smc) ; in fddi_isr()
732 smc->os.hwm.isr_flag = TRUE ; in fddi_isr()
736 if (smc->os.hwm.leave_isr) { in fddi_isr()
737 smc->os.hwm.leave_isr = FALSE ; in fddi_isr()
738 process_receive(smc) ; in fddi_isr()
749 plc1_irq(smc) ; in fddi_isr()
752 plc2_irq(smc) ; in fddi_isr()
758 mac1_irq(smc,stu,stl) ; in fddi_isr()
765 mac2_irq(smc,stu,stl) ; in fddi_isr()
771 mac3_irq(smc,stu,stl) ; in fddi_isr()
774 timer_irq(smc) ; in fddi_isr()
781 if (++smc->os.hwm.detec_count > 4) { in fddi_isr()
785 process_receive(smc) ; in fddi_isr()
789 rtm_irq(smc) ; in fddi_isr()
794 SMT_PANIC(smc,HWM_E0004,HWM_E0004_MSG) ; in fddi_isr()
799 SMT_PANIC(smc,HWM_E0005,HWM_E0005_MSG) ; in fddi_isr()
804 SMT_PANIC(smc,HWM_E0006,HWM_E0006_MSG) ; in fddi_isr()
809 SMT_PANIC(smc,HWM_E0007,HWM_E0007_MSG) ; in fddi_isr()
824 mac_drv_clear_txd(smc) ; in fddi_isr()
825 llc_restart_tx(smc) ; in fddi_isr()
836 process_receive(smc) ; in fddi_isr()
838 process_receive(smc) ; in fddi_isr()
839 if (smc->os.hwm.leave_isr) { in fddi_isr()
843 process_receive(smc) ; in fddi_isr()
849 while ((mb = get_llc_rx(smc))) { in fddi_isr()
850 smt_to_llc(smc,mb) ; in fddi_isr()
856 while (!offDepth && (mb = get_llc_rx(smc))) { in fddi_isr()
857 smt_to_llc(smc,mb) ; in fddi_isr()
860 if (!offDepth && smc->os.hwm.rx_break) { in fddi_isr()
861 process_receive(smc) ; in fddi_isr()
864 if (smc->q.ev_get != smc->q.ev_put) { in fddi_isr()
866 ev_dispatcher(smc) ; in fddi_isr()
875 if (smc->os.hwm.leave_isr) { in fddi_isr()
884 if (smc->os.hwm.leave_isr && force_irq) { in fddi_isr()
885 smt_force_irq(smc) ; in fddi_isr()
888 smc->os.hwm.isr_flag = FALSE ; in fddi_isr()
992 void mac_drv_rx_mode(struct s_smc *smc, int mode) in mac_drv_rx_mode() argument
996 smc->os.hwm.pass_SMT = TRUE ; in mac_drv_rx_mode()
999 smc->os.hwm.pass_SMT = FALSE ; in mac_drv_rx_mode()
1002 smc->os.hwm.pass_NSA = TRUE ; in mac_drv_rx_mode()
1005 smc->os.hwm.pass_NSA = FALSE ; in mac_drv_rx_mode()
1008 smc->os.hwm.pass_DB = TRUE ; in mac_drv_rx_mode()
1011 smc->os.hwm.pass_DB = FALSE ; in mac_drv_rx_mode()
1014 smc->os.hwm.pass_SMT = smc->os.hwm.pass_NSA = FALSE ; in mac_drv_rx_mode()
1015 smc->os.hwm.pass_DB = FALSE ; in mac_drv_rx_mode()
1016 smc->os.hwm.pass_llc_promisc = TRUE ; in mac_drv_rx_mode()
1017 mac_set_rx_mode(smc,RX_DISABLE_NSA) ; in mac_drv_rx_mode()
1020 smc->os.hwm.pass_llc_promisc = FALSE ; in mac_drv_rx_mode()
1023 smc->os.hwm.pass_llc_promisc = TRUE ; in mac_drv_rx_mode()
1032 mac_set_rx_mode(smc,mode) ; in mac_drv_rx_mode()
1041 void process_receive(struct s_smc *smc) in process_receive() argument
1059 smc->os.hwm.detec_count = 0 ; in process_receive()
1060 queue = smc->hw.fp.rx[QUEUE_R1] ; in process_receive()
1068 if (smc->os.hwm.leave_isr) { in process_receive()
1074 smc->os.hwm.rx_break = 1 ; in process_receive()
1077 smc->os.hwm.rx_break = 0 ; in process_receive()
1080 if (smc->os.hwm.rx_break) { in process_receive()
1100 SMT_PANIC(smc,HWM_E0009,HWM_E0009_MSG) ; in process_receive()
1104 smc->hw.hw_state = STOPPED ; in process_receive()
1105 mac_drv_clear_rx_queue(smc) ; in process_receive()
1106 smc->hw.hw_state = STARTED ; in process_receive()
1107 mac_drv_fill_rxd(smc) ; in process_receive()
1108 smc->os.hwm.detec_count = 0 ; in process_receive()
1168 dma_complete(smc,(union s_fp_descr volatile *)r,DMA_WR); in process_receive()
1170 smc->hw.fp.err_stats.err_valid++ ; in process_receive()
1171 smc->mib.m[MAC0].fddiMACCopied_Ct++ ; in process_receive()
1183 smc->hw.fp.err_stats.err_abort++ ; in process_receive()
1190 smc->hw.fp.err_stats.err_e_indicator++ ; in process_receive()
1194 smc->hw.fp.err_stats.err_crc++ ; in process_receive()
1198 smc->hw.fp.err_stats.err_imp_frame++ ; in process_receive()
1204 smc->hw.fp.err_stats.err_too_long++ ; in process_receive()
1218 smc->os.hwm.rx_len_error++ ; in process_receive()
1245 if (!smc->os.hwm.pass_llc_promisc) { in process_receive()
1263 mac_drv_rx_complete(smc,rxd,frag_count,len) ; in process_receive()
1266 if (!(mb = smt_get_mbuf(smc))) { in process_receive()
1267 smc->hw.fp.err_stats.err_no_buf++ ; in process_receive()
1296 smc->hw.fp.err_stats.err_smt_frame++ ; in process_receive()
1299 if (smc->os.hwm.pass_SMT) { in process_receive()
1301 mac_drv_rx_complete(smc, rxd, in process_receive()
1306 mac_drv_requeue_rxd(smc,rxd,frag_count); in process_receive()
1309 smt_received_pack(smc,mb,(int)(rfsw>>25)) ; in process_receive()
1312 smc->hw.fp.err_stats.err_smt_frame++ ; in process_receive()
1318 if (smc->os.hwm.pass_NSA || in process_receive()
1319 (smc->os.hwm.pass_SMT && in process_receive()
1322 mac_drv_rx_complete(smc, rxd, in process_receive()
1327 mac_drv_requeue_rxd(smc,rxd,frag_count); in process_receive()
1330 smt_received_pack(smc,mb,(int)(rfsw>>25)) ; in process_receive()
1333 if (smc->os.hwm.pass_DB) { in process_receive()
1335 mac_drv_rx_complete(smc, rxd, in process_receive()
1340 mac_drv_requeue_rxd(smc,rxd,frag_count); in process_receive()
1342 smt_free_mbuf(smc,mb) ; in process_receive()
1349 smt_free_mbuf(smc,mb) ; in process_receive()
1351 mac_drv_requeue_rxd(smc,rxd,frag_count) ; in process_receive()
1353 smc->hw.fp.err_stats.err_mac_frame++ ; in process_receive()
1355 smc->hw.fp.err_stats.err_imp_frame++ ; in process_receive()
1368 mac_drv_requeue_rxd(smc,rxd,frag_count) ; in process_receive()
1375 mac_drv_all_receives_complete(smc) ; in process_receive()
1380 static void smt_to_llc(struct s_smc *smc, SMbuf *mb) in smt_to_llc() argument
1385 smc->os.hwm.r.len = mb->sm_len ; in smt_to_llc()
1386 smc->os.hwm.r.mb_pos = smtod(mb,char *) ; in smt_to_llc()
1387 fc = *smc->os.hwm.r.mb_pos ; in smt_to_llc()
1388 (void)mac_drv_rx_init(smc,(int)mb->sm_len,(int)fc, in smt_to_llc()
1389 smc->os.hwm.r.mb_pos,(int)mb->sm_len) ; in smt_to_llc()
1390 smt_free_mbuf(smc,mb) ; in smt_to_llc()
1415 void hwm_rx_frag(struct s_smc *smc, char far *virt, u_long phys, int len, in hwm_rx_frag() argument
1423 r = smc->hw.fp.rx_q[QUEUE_R1].rx_curr_put ; in hwm_rx_frag()
1434 smc->hw.fp.rx_q[QUEUE_R1].rx_free-- ; in hwm_rx_frag()
1435 smc->hw.fp.rx_q[QUEUE_R1].rx_used++ ; in hwm_rx_frag()
1436 smc->hw.fp.rx_q[QUEUE_R1].rx_curr_put = r->rxd_next ; in hwm_rx_frag()
1463 void mac_drv_clear_rx_queue(struct s_smc *smc) in mac_drv_clear_rx_queue() argument
1471 if (smc->hw.hw_state != STOPPED) { in mac_drv_clear_rx_queue()
1473 SMT_PANIC(smc,HWM_E0012,HWM_E0012_MSG) ; in mac_drv_clear_rx_queue()
1477 queue = smc->hw.fp.rx[QUEUE_R1] ; in mac_drv_clear_rx_queue()
1506 dma_complete(smc,(union s_fp_descr volatile *)r,DMA_WR); in mac_drv_clear_rx_queue()
1511 mac_drv_clear_rxd(smc,queue->rx_curr_get,frag_count) ; in mac_drv_clear_rx_queue()
1550 int hwm_tx_init(struct s_smc *smc, u_char fc, int frag_count, int frame_len, in hwm_tx_init() argument
1554 smc->os.hwm.tx_p = smc->hw.fp.tx[frame_status & QUEUE_A0] ; in hwm_tx_init()
1555 smc->os.hwm.tx_descr = TX_DESCRIPTOR | (((u_long)(frame_len-1)&3)<<27) ; in hwm_tx_init()
1556 smc->os.hwm.tx_len = frame_len ; in hwm_tx_init()
1574 SMT_PANIC(smc,HWM_E0010,HWM_E0010_MSG) ; in hwm_tx_init()
1577 if (!smc->hw.mac_ring_is_up) { in hwm_tx_init()
1582 if (frag_count > smc->os.hwm.tx_p->tx_free) { in hwm_tx_init()
1584 mac_drv_clear_txd(smc) ; in hwm_tx_init()
1585 if (frag_count > smc->os.hwm.tx_p->tx_free) { in hwm_tx_init()
1597 NDD_TRACE("THiE",frame_status,smc->os.hwm.tx_p->tx_free,0) ; in hwm_tx_init()
1628 void hwm_tx_frag(struct s_smc *smc, char far *virt, u_long phys, int len, in hwm_tx_frag() argument
1635 queue = smc->os.hwm.tx_p ; in hwm_tx_frag()
1650 t->txd_txdscr = cpu_to_le32(smc->os.hwm.tx_descr) ; in hwm_tx_frag()
1673 smc->mib.m[MAC0].fddiMACTransmit_Ct++ ; in hwm_tx_frag()
1679 if(!(smc->os.hwm.tx_mb = smt_get_mbuf(smc))) { in hwm_tx_frag()
1680 smc->hw.fp.err_stats.err_no_buf++ ; in hwm_tx_frag()
1684 smc->os.hwm.tx_data = in hwm_tx_frag()
1685 smtod(smc->os.hwm.tx_mb,char *) - 1 ; in hwm_tx_frag()
1688 hwm_cpy_txd2mb(t,smc->os.hwm.tx_data, in hwm_tx_frag()
1689 smc->os.hwm.tx_len) ; in hwm_tx_frag()
1694 if (smc->os.hwm.tx_mb) { in hwm_tx_frag()
1697 memcpy(smc->os.hwm.tx_data,virt,len) ; in hwm_tx_frag()
1698 smc->os.hwm.tx_data += len ; in hwm_tx_frag()
1710 hwm_cpy_txd2mb(t,smc->os.hwm.tx_data, in hwm_tx_frag()
1711 smc->os.hwm.tx_len) ; in hwm_tx_frag()
1714 smc->os.hwm.tx_data = in hwm_tx_frag()
1715 smtod(smc->os.hwm.tx_mb,char *) - 1 ; in hwm_tx_frag()
1716 *(char *)smc->os.hwm.tx_mb->sm_data = in hwm_tx_frag()
1717 *smc->os.hwm.tx_data ; in hwm_tx_frag()
1718 smc->os.hwm.tx_data++ ; in hwm_tx_frag()
1719 smc->os.hwm.tx_mb->sm_len = in hwm_tx_frag()
1720 smc->os.hwm.tx_len - 1 ; in hwm_tx_frag()
1722 smt_received_pack(smc,smc->os.hwm.tx_mb, in hwm_tx_frag()
1734 static void queue_llc_rx(struct s_smc *smc, SMbuf *mb) in queue_llc_rx() argument
1737 smc->os.hwm.queued_rx_frames++ ; in queue_llc_rx()
1739 if (smc->os.hwm.llc_rx_pipe == NULL) { in queue_llc_rx()
1740 smc->os.hwm.llc_rx_pipe = mb ; in queue_llc_rx()
1743 smc->os.hwm.llc_rx_tail->sm_next = mb ; in queue_llc_rx()
1745 smc->os.hwm.llc_rx_tail = mb ; in queue_llc_rx()
1750 if (!smc->os.hwm.isr_flag) { in queue_llc_rx()
1751 smt_force_irq(smc) ; in queue_llc_rx()
1758 static SMbuf *get_llc_rx(struct s_smc *smc) in get_llc_rx() argument
1762 if ((mb = smc->os.hwm.llc_rx_pipe)) { in get_llc_rx()
1763 smc->os.hwm.queued_rx_frames-- ; in get_llc_rx()
1764 smc->os.hwm.llc_rx_pipe = mb->sm_next ; in get_llc_rx()
1774 static void queue_txd_mb(struct s_smc *smc, SMbuf *mb) in queue_txd_mb() argument
1777 smc->os.hwm.queued_txd_mb++ ; in queue_txd_mb()
1779 if (smc->os.hwm.txd_tx_pipe == NULL) { in queue_txd_mb()
1780 smc->os.hwm.txd_tx_pipe = mb ; in queue_txd_mb()
1783 smc->os.hwm.txd_tx_tail->sm_next = mb ; in queue_txd_mb()
1785 smc->os.hwm.txd_tx_tail = mb ; in queue_txd_mb()
1791 static SMbuf *get_txd_mb(struct s_smc *smc) in get_txd_mb() argument
1795 if ((mb = smc->os.hwm.txd_tx_pipe)) { in get_txd_mb()
1796 smc->os.hwm.queued_txd_mb-- ; in get_txd_mb()
1797 smc->os.hwm.txd_tx_pipe = mb->sm_next ; in get_txd_mb()
1806 void smt_send_mbuf(struct s_smc *smc, SMbuf *mb, int fc) in smt_send_mbuf() argument
1852 queue = smc->hw.fp.tx[QUEUE_A0] ; in smt_send_mbuf()
1858 if ((smc->os.hwm.pass_NSA &&(fc == FC_SMT_NSA)) || in smt_send_mbuf()
1859 (smc->os.hwm.pass_SMT &&(fc == FC_SMT_INFO))) in smt_send_mbuf()
1863 if (!smc->hw.mac_ring_is_up || frag_count > queue->tx_free) { in smt_send_mbuf()
1870 smt_free_mbuf(smc,mb) ; in smt_send_mbuf()
1891 phys = dma_master(smc, (void far *)virt[i], in smt_send_mbuf()
1910 smc->mib.m[MAC0].fddiMACTransmit_Ct++ ; in smt_send_mbuf()
1911 queue_txd_mb(smc,mb) ; in smt_send_mbuf()
1916 queue_llc_rx(smc,mb) ; in smt_send_mbuf()
1923 mac_drv_clear_txd(smc) ; in smt_send_mbuf()
1941 static void mac_drv_clear_txd(struct s_smc *smc) in mac_drv_clear_txd() argument
1954 queue = smc->hw.fp.tx[i] ; in mac_drv_clear_txd()
1977 dma_complete(smc, in mac_drv_clear_txd()
1986 mb = get_txd_mb(smc) ; in mac_drv_clear_txd()
1987 smt_free_mbuf(smc,mb) ; in mac_drv_clear_txd()
1992 mac_drv_tx_complete(smc,t2) ; in mac_drv_clear_txd()
1996 mac_drv_tx_complete(smc,queue->tx_curr_get) ; in mac_drv_clear_txd()
2031 void mac_drv_clear_tx_queue(struct s_smc *smc) in mac_drv_clear_tx_queue() argument
2038 if (smc->hw.hw_state != STOPPED) { in mac_drv_clear_tx_queue()
2040 SMT_PANIC(smc,HWM_E0011,HWM_E0011_MSG) ; in mac_drv_clear_tx_queue()
2045 queue = smc->hw.fp.tx[i] ; in mac_drv_clear_tx_queue()
2066 mac_drv_clear_txd(smc) ; in mac_drv_clear_tx_queue()
2069 queue = smc->hw.fp.tx[i] ; in mac_drv_clear_tx_queue()
2123 void mac_drv_debug_lev(struct s_smc *smc, int flag, int lev) in mac_drv_debug_lev() argument