Lines Matching refs:smc
47 static void build_claim_beacon(struct s_smc *smc, u_long t_request);
48 static int init_mac(struct s_smc *smc, int all);
49 static void rtm_init(struct s_smc *smc);
50 static void smt_split_up_fifo(struct s_smc *smc);
57 #define DUMMY_READ() smc->hw.mc_dummy = (u_short) inp(ADDR(B0_RAP))
62 SMT_PANIC(smc,SMT_E0130, SMT_E0130_MSG) ; \
69 SMT_PANIC(smc,SMT_E0131, SMT_E0131_MSG) ; \
84 #define MA smc->hw.fddi_canon_addr
86 #define MA smc->hw.fddi_home_addr
111 static u_long mac_get_tneg(struct s_smc *smc) in mac_get_tneg() argument
120 void mac_update_counter(struct s_smc *smc) in mac_update_counter() argument
122 smc->mib.m[MAC0].fddiMACFrame_Ct = in mac_update_counter()
123 (smc->mib.m[MAC0].fddiMACFrame_Ct & 0xffff0000L) in mac_update_counter()
125 smc->mib.m[MAC0].fddiMACLost_Ct = in mac_update_counter()
126 (smc->mib.m[MAC0].fddiMACLost_Ct & 0xffff0000L) in mac_update_counter()
128 smc->mib.m[MAC0].fddiMACError_Ct = in mac_update_counter()
129 (smc->mib.m[MAC0].fddiMACError_Ct & 0xffff0000L) in mac_update_counter()
131 smc->mib.m[MAC0].fddiMACT_Neg = mac_get_tneg(smc) ; in mac_update_counter()
138 smt_emulate_token_ct( smc, MAC0 ); in mac_update_counter()
145 static void write_mdr(struct s_smc *smc, u_long val) in write_mdr() argument
155 static u_long read_mdr(struct s_smc *smc, unsigned int addr)
174 static void init_ram(struct s_smc *smc) in init_ram() argument
178 smc->hw.fp.fifo.rbc_ram_start = 0 ; in init_ram()
179 smc->hw.fp.fifo.rbc_ram_end = in init_ram()
180 smc->hw.fp.fifo.rbc_ram_start + RBC_MEM_SIZE ; in init_ram()
182 MARW(smc->hw.fp.fifo.rbc_ram_start) ; in init_ram()
183 for (i = smc->hw.fp.fifo.rbc_ram_start; in init_ram()
184 i < (u_short) (smc->hw.fp.fifo.rbc_ram_end-1); i++) in init_ram()
185 write_mdr(smc,0L) ; in init_ram()
187 write_mdr(smc,0L) ; in init_ram()
193 static void set_recvptr(struct s_smc *smc) in set_recvptr() argument
198 outpw(FM_A(FM_RPR1),smc->hw.fp.fifo.rx1_fifo_start) ; /* RPR1 */ in set_recvptr()
199 outpw(FM_A(FM_SWPR1),smc->hw.fp.fifo.rx1_fifo_start) ; /* SWPR1 */ in set_recvptr()
200 outpw(FM_A(FM_WPR1),smc->hw.fp.fifo.rx1_fifo_start) ; /* WPR1 */ in set_recvptr()
201 outpw(FM_A(FM_EARV1),smc->hw.fp.fifo.tx_s_start-1) ; /* EARV1 */ in set_recvptr()
206 if (smc->hw.fp.fifo.rx2_fifo_size) { in set_recvptr()
207 outpw(FM_A(FM_RPR2),smc->hw.fp.fifo.rx2_fifo_start) ; in set_recvptr()
208 outpw(FM_A(FM_SWPR2),smc->hw.fp.fifo.rx2_fifo_start) ; in set_recvptr()
209 outpw(FM_A(FM_WPR2),smc->hw.fp.fifo.rx2_fifo_start) ; in set_recvptr()
210 outpw(FM_A(FM_EARV2),smc->hw.fp.fifo.rbc_ram_end-1) ; in set_recvptr()
213 outpw(FM_A(FM_RPR2),smc->hw.fp.fifo.rbc_ram_end-1) ; in set_recvptr()
214 outpw(FM_A(FM_SWPR2),smc->hw.fp.fifo.rbc_ram_end-1) ; in set_recvptr()
215 outpw(FM_A(FM_WPR2),smc->hw.fp.fifo.rbc_ram_end-1) ; in set_recvptr()
216 outpw(FM_A(FM_EARV2),smc->hw.fp.fifo.rbc_ram_end-1) ; in set_recvptr()
223 static void set_txptr(struct s_smc *smc) in set_txptr() argument
230 outpw(FM_A(FM_RPXA0),smc->hw.fp.fifo.tx_a0_start) ; /* RPXA0 */ in set_txptr()
231 outpw(FM_A(FM_SWPXA0),smc->hw.fp.fifo.tx_a0_start) ; /* SWPXA0 */ in set_txptr()
232 outpw(FM_A(FM_WPXA0),smc->hw.fp.fifo.tx_a0_start) ; /* WPXA0 */ in set_txptr()
233 outpw(FM_A(FM_EAA0),smc->hw.fp.fifo.rx2_fifo_start-1) ; /* EAA0 */ in set_txptr()
238 if (smc->hw.fp.fifo.tx_s_size) { in set_txptr()
239 outpw(FM_A(FM_RPXS),smc->hw.fp.fifo.tx_s_start) ; in set_txptr()
240 outpw(FM_A(FM_SWPXS),smc->hw.fp.fifo.tx_s_start) ; in set_txptr()
241 outpw(FM_A(FM_WPXS),smc->hw.fp.fifo.tx_s_start) ; in set_txptr()
242 outpw(FM_A(FM_EAS),smc->hw.fp.fifo.tx_a0_start-1) ; in set_txptr()
245 outpw(FM_A(FM_RPXS),smc->hw.fp.fifo.tx_a0_start-1) ; in set_txptr()
246 outpw(FM_A(FM_SWPXS),smc->hw.fp.fifo.tx_a0_start-1) ; in set_txptr()
247 outpw(FM_A(FM_WPXS),smc->hw.fp.fifo.tx_a0_start-1) ; in set_txptr()
248 outpw(FM_A(FM_EAS),smc->hw.fp.fifo.tx_a0_start-1) ; in set_txptr()
255 static void init_rbc(struct s_smc *smc) in init_rbc() argument
262 rbc_ram_addr = smc->hw.fp.fifo.rx2_fifo_start - 1 ; in init_rbc()
269 set_recvptr(smc) ; in init_rbc()
270 set_txptr(smc) ; in init_rbc()
276 static void init_rx(struct s_smc *smc) in init_rx() argument
283 smc->hw.fp.rx[QUEUE_R1] = queue = &smc->hw.fp.rx_q[QUEUE_R1] ; in init_rx()
290 smc->hw.fp.rx[QUEUE_R2] = queue = &smc->hw.fp.rx_q[QUEUE_R2] ; in init_rx()
298 void set_formac_tsync(struct s_smc *smc, long sync_bw) in set_formac_tsync() argument
306 static void init_tx(struct s_smc *smc) in init_tx() argument
313 smc->hw.fp.tx[QUEUE_S] = queue = &smc->hw.fp.tx_q[QUEUE_S] ; in init_tx()
318 set_formac_tsync(smc,smc->ess.sync_bw) ; in init_tx()
324 smc->hw.fp.tx[QUEUE_A0] = queue = &smc->hw.fp.tx_q[QUEUE_A0] ; in init_tx()
329 llc_recover_tx(smc) ; in init_tx()
332 static void mac_counter_init(struct s_smc *smc) in mac_counter_init() argument
346 ec = (u_long *)&smc->hw.fp.err_stats ; in mac_counter_init()
349 smc->mib.m[MAC0].fddiMACRingOp_Ct = 0 ; in mac_counter_init()
355 static void set_formac_addr(struct s_smc *smc) in set_formac_addr() argument
357 long t_requ = smc->mib.m[MAC0].fddiMACT_Req ; in set_formac_addr()
360 outpw(FM_A(FM_LAIL),(unsigned short)((smc->hw.fddi_home_addr.a[4]<<8) + in set_formac_addr()
361 smc->hw.fddi_home_addr.a[5])) ; in set_formac_addr()
362 outpw(FM_A(FM_LAIC),(unsigned short)((smc->hw.fddi_home_addr.a[2]<<8) + in set_formac_addr()
363 smc->hw.fddi_home_addr.a[3])) ; in set_formac_addr()
364 outpw(FM_A(FM_LAIM),(unsigned short)((smc->hw.fddi_home_addr.a[0]<<8) + in set_formac_addr()
365 smc->hw.fddi_home_addr.a[1])) ; in set_formac_addr()
369 outpw(FM_A(FM_LAGL),(unsigned short)((smc->hw.fp.group_addr.a[4]<<8) + in set_formac_addr()
370 smc->hw.fp.group_addr.a[5])) ; in set_formac_addr()
371 outpw(FM_A(FM_LAGC),(unsigned short)((smc->hw.fp.group_addr.a[2]<<8) + in set_formac_addr()
372 smc->hw.fp.group_addr.a[3])) ; in set_formac_addr()
373 outpw(FM_A(FM_LAGM),(unsigned short)((smc->hw.fp.group_addr.a[0]<<8) + in set_formac_addr()
374 smc->hw.fp.group_addr.a[1])) ; in set_formac_addr()
397 static void copy_tx_mac(struct s_smc *smc, u_long td, struct fddi_mac *mac, in copy_tx_mac() argument
416 write_mdr(smc,le32_to_cpu(*p)) ; in copy_tx_mac()
421 write_mdr(smc,td) ; /* write over memory data reg to buffer */ in copy_tx_mac()
446 static void directed_beacon(struct s_smc *smc) in directed_beacon() argument
457 memcpy((char *)a+1, (char *) &smc->mib.m[MAC0].fddiMACUpstreamNbr, ETH_ALEN); in directed_beacon()
461 MARW(smc->hw.fp.fifo.rbc_ram_start+DBEACON_FRAME_OFF+4) ; in directed_beacon()
462 write_mdr(smc,le32_to_cpu(a[0])) ; in directed_beacon()
464 write_mdr(smc,le32_to_cpu(a[1])) ; in directed_beacon()
466 outpw(FM_A(FM_SABC),smc->hw.fp.fifo.rbc_ram_start + DBEACON_FRAME_OFF) ; in directed_beacon()
475 static void build_claim_beacon(struct s_smc *smc, u_long t_request) in build_claim_beacon() argument
486 mac = &smc->hw.fp.mac_sfb ; in build_claim_beacon()
493 copy_tx_mac(smc,td,(struct fddi_mac *)mac, in build_claim_beacon()
494 smc->hw.fp.fifo.rbc_ram_start + CLAIM_FRAME_OFF,len) ; in build_claim_beacon()
496 outpw(FM_A(FM_SACL),smc->hw.fp.fifo.rbc_ram_start + CLAIM_FRAME_OFF) ; in build_claim_beacon()
508 copy_tx_mac(smc,td,(struct fddi_mac *)mac, in build_claim_beacon()
509 smc->hw.fp.fifo.rbc_ram_start + BEACON_FRAME_OFF,len) ; in build_claim_beacon()
511 outpw(FM_A(FM_SABC),smc->hw.fp.fifo.rbc_ram_start + BEACON_FRAME_OFF) ; in build_claim_beacon()
526 copy_tx_mac(smc,td,(struct fddi_mac *)mac, in build_claim_beacon()
527 smc->hw.fp.fifo.rbc_ram_start + DBEACON_FRAME_OFF,len) ; in build_claim_beacon()
530 outpw(FM_A(FM_EACB),smc->hw.fp.fifo.rx1_fifo_start-1) ; in build_claim_beacon()
536 static void formac_rcv_restart(struct s_smc *smc) in formac_rcv_restart() argument
539 SETMASK(FM_A(FM_MDREG1),smc->hw.fp.rx_mode,FM_ADDRX) ; in formac_rcv_restart()
544 void formac_tx_restart(struct s_smc *smc) in formac_tx_restart() argument
550 static void enable_formac(struct s_smc *smc) in enable_formac() argument
590 void enable_tx_irq(struct s_smc *smc, u_short queue)
625 void disable_tx_irq(struct s_smc *smc, u_short queue)
641 static void disable_formac(struct s_smc *smc) in disable_formac() argument
653 static void mac_ring_up(struct s_smc *smc, int up) in mac_ring_up() argument
656 formac_rcv_restart(smc) ; /* enable receive function */ in mac_ring_up()
657 smc->hw.mac_ring_is_up = TRUE ; in mac_ring_up()
658 llc_restart_tx(smc) ; /* TX queue */ in mac_ring_up()
667 smc->hw.mac_ring_is_up = FALSE ; in mac_ring_up()
680 void mac2_irq(struct s_smc *smc, u_short code_s2u, u_short code_s2l) in mac2_irq() argument
689 queue_event(smc,EVENT_RMT,RM_TX_STATE_CHANGE) ; in mac2_irq()
692 queue_event(smc,EVENT_RMT,RM_TX_STATE_CHANGE) ; in mac2_irq()
698 change_s2l = smc->hw.fp.s2l ^ code_s2l ; in mac2_irq()
699 change_s2u = smc->hw.fp.s2u ^ code_s2u ; in mac2_irq()
702 (!smc->hw.mac_ring_is_up && ((code_s2l & FM_SRNGOP)))) { in mac2_irq()
704 mac_ring_up(smc,1) ; in mac2_irq()
705 queue_event(smc,EVENT_RMT,RM_RING_OP) ; in mac2_irq()
706 smc->mib.m[MAC0].fddiMACRingOp_Ct++ ; in mac2_irq()
709 mac_ring_up(smc,0) ; in mac2_irq()
710 queue_event(smc,EVENT_RMT,RM_RING_NON_OP) ; in mac2_irq()
715 smc->mib.m[MAC0].fddiMACNotCopied_Ct++ ; in mac2_irq()
719 smc->hw.mac_ct.mac_r_restart_counter++ ; in mac2_irq()
721 smt_stat_counter(smc,1) ; in mac2_irq()
725 queue_event(smc,EVENT_RMT,RM_OTHER_BEACON) ; in mac2_irq()
727 queue_event(smc,EVENT_RMT,RM_MY_BEACON) ; in mac2_irq()
736 queue_event(smc,EVENT_RMT,RM_MY_CLAIM) ; in mac2_irq()
746 queue_event(smc,EVENT_RMT,RM_VALID_CLAIM) ; in mac2_irq()
753 queue_event(smc,EVENT_RMT,RM_TRT_EXP) ; in mac2_irq()
760 smc->r.dup_addr_test = DA_FAILED ; in mac2_irq()
761 queue_event(smc,EVENT_RMT,RM_DUP_ADDR) ; in mac2_irq()
764 smc->hw.fp.err_stats.err_bec_stat++ ; in mac2_irq()
766 smc->hw.fp.err_stats.err_clm_stat++ ; in mac2_irq()
768 smc->mib.m[MAC0].fddiMACTvxExpired_Ct++ ; in mac2_irq()
770 if (!(change_s2l & FM_SRNGOP) && (smc->hw.fp.s2l & FM_SRNGOP)) { in mac2_irq()
771 mac_ring_up(smc,0) ; in mac2_irq()
772 queue_event(smc,EVENT_RMT,RM_RING_NON_OP) ; in mac2_irq()
774 mac_ring_up(smc,1) ; in mac2_irq()
775 queue_event(smc,EVENT_RMT,RM_RING_OP) ; in mac2_irq()
776 smc->mib.m[MAC0].fddiMACRingOp_Ct++ ; in mac2_irq()
780 smc->hw.fp.err_stats.err_phinv++ ; in mac2_irq()
782 smc->hw.fp.err_stats.err_sifg_det++ ; in mac2_irq()
784 smc->hw.fp.err_stats.err_tkiss++ ; in mac2_irq()
786 smc->hw.fp.err_stats.err_tkerr++ ; in mac2_irq()
788 smc->mib.m[MAC0].fddiMACFrame_Ct += 0x10000L ; in mac2_irq()
790 smc->mib.m[MAC0].fddiMACError_Ct += 0x10000L ; in mac2_irq()
792 smc->mib.m[MAC0].fddiMACLost_Ct += 0x10000L ; in mac2_irq()
794 SMT_PANIC(smc,SMT_E0114, SMT_E0114_MSG) ; in mac2_irq()
798 smc->hw.fp.s2l = code_s2l ; in mac2_irq()
799 smc->hw.fp.s2u = code_s2u ; in mac2_irq()
806 void mac3_irq(struct s_smc *smc, u_short code_s3u, u_short code_s3l) in mac3_irq() argument
812 smc->hw.mac_ct.mac_r_restart_counter++ ; in mac3_irq()
813 smt_stat_counter(smc,1); in mac3_irq()
818 SMT_PANIC(smc,SMT_E0115, SMT_E0115_MSG) ; in mac3_irq()
821 SMT_PANIC(smc,SMT_E0116, SMT_E0116_MSG) ; in mac3_irq()
829 static void formac_offline(struct s_smc *smc) in formac_offline() argument
839 disable_formac(smc) ; in formac_offline()
840 smc->hw.mac_ring_is_up = FALSE ; in formac_offline()
841 smc->hw.hw_state = STOPPED ; in formac_offline()
847 static void formac_online(struct s_smc *smc) in formac_online() argument
849 enable_formac(smc) ; in formac_online()
851 smc->hw.fp.rx_mode, FM_MMODE | FM_SELRA | FM_ADDRX) ; in formac_online()
857 int init_fplus(struct s_smc *smc) in init_fplus() argument
859 smc->hw.fp.nsa_mode = FM_MRNNSAFNMA ; in init_fplus()
860 smc->hw.fp.rx_mode = FM_MDAMA ; in init_fplus()
861 smc->hw.fp.group_addr = fddi_broadcast ; in init_fplus()
862 smc->hw.fp.func_addr = 0 ; in init_fplus()
863 smc->hw.fp.frselreg_init = 0 ; in init_fplus()
865 init_driver_fplus(smc) ; in init_fplus()
866 if (smc->s.sas == SMT_DAS) in init_fplus()
867 smc->hw.fp.mdr3init |= FM_MENDAS ; in init_fplus()
869 smc->hw.mac_ct.mac_nobuf_counter = 0 ; in init_fplus()
870 smc->hw.mac_ct.mac_r_restart_counter = 0 ; in init_fplus()
872 smc->hw.fp.fm_st1u = (HW_PTR) ADDR(B0_ST1U) ; in init_fplus()
873 smc->hw.fp.fm_st1l = (HW_PTR) ADDR(B0_ST1L) ; in init_fplus()
874 smc->hw.fp.fm_st2u = (HW_PTR) ADDR(B0_ST2U) ; in init_fplus()
875 smc->hw.fp.fm_st2l = (HW_PTR) ADDR(B0_ST2L) ; in init_fplus()
876 smc->hw.fp.fm_st3u = (HW_PTR) ADDR(B0_ST3U) ; in init_fplus()
877 smc->hw.fp.fm_st3l = (HW_PTR) ADDR(B0_ST3L) ; in init_fplus()
879 smc->hw.fp.s2l = smc->hw.fp.s2u = 0 ; in init_fplus()
880 smc->hw.mac_ring_is_up = 0 ; in init_fplus()
882 mac_counter_init(smc) ; in init_fplus()
885 smc->hw.mac_pa.t_neg = (u_long)0 ; in init_fplus()
886 smc->hw.mac_pa.t_pri = (u_long)0 ; in init_fplus()
889 mac_do_pci_fix(smc) ; in init_fplus()
891 return init_mac(smc, 1); in init_fplus()
895 static int init_mac(struct s_smc *smc, int all) in init_mac() argument
904 set_formac_addr(smc) ; in init_mac()
907 outpw(FM_A(FM_MDREG2),smc->hw.fp.mdr2init) ; in init_mac()
910 init_ram(smc) ; in init_mac()
917 time = hwt_quick_read(smc) ; in init_mac()
923 smt_split_up_fifo(smc) ; in init_mac()
925 init_tx(smc) ; in init_mac()
926 init_rx(smc) ; in init_mac()
927 init_rbc(smc) ; in init_mac()
929 build_claim_beacon(smc,smc->mib.m[MAC0].fddiMACT_Req) ; in init_mac()
936 outpw(FM_A(FM_MDREG1),MDR1INIT | FM_SELRA | smc->hw.fp.rx_mode) ; in init_mac()
937 outpw(FM_A(FM_MDREG2),smc->hw.fp.mdr2init) ; in init_mac()
938 outpw(FM_A(FM_MDREG3),smc->hw.fp.mdr3init) ; in init_mac()
939 outpw(FM_A(FM_FRSELREG),smc->hw.fp.frselreg_init) ; in init_mac()
947 t_max = (u_short)(smc->mib.m[MAC0].fddiMACT_Max/32) ; in init_mac()
955 if (smc->mib.m[MAC0].fddiMACTvxValue < (u_long) (- US2BCLK(52))) { in init_mac()
959 (u_short)((smc->mib.m[MAC0].fddiMACTvxValue/255) & MB)) ; in init_mac()
969 rtm_init(smc) ; /* RT-Monitor */ in init_mac()
975 hwt_wait_time(smc,time,MS2BCLK(10)) ; in init_mac()
983 if (!smc->hw.hw_is_64bit) { in init_mac()
988 smc->hw.hw_state = STOPPED ; in init_mac()
989 mac_drv_repair_descr(smc) ; in init_mac()
991 smc->hw.hw_state = STARTED ; in init_mac()
1000 void config_mux(struct s_smc *smc, int mux) in config_mux() argument
1002 plc_config_mux(smc,mux) ; in config_mux()
1014 void sm_mac_check_beacon_claim(struct s_smc *smc) in sm_mac_check_beacon_claim() argument
1019 formac_rcv_restart(smc) ; in sm_mac_check_beacon_claim()
1020 process_receive(smc) ; in sm_mac_check_beacon_claim()
1027 void sm_ma_control(struct s_smc *smc, int mode) in sm_ma_control() argument
1032 formac_offline(smc) ; in sm_ma_control()
1035 (void)init_mac(smc,0) ; in sm_ma_control()
1038 formac_online(smc) ; in sm_ma_control()
1041 directed_beacon(smc) ; in sm_ma_control()
1051 int sm_mac_get_tx_state(struct s_smc *smc) in sm_mac_get_tx_state() argument
1060 static struct s_fpmc* mac_get_mc_table(struct s_smc *smc, in mac_get_mc_table() argument
1080 for (i = 0, tb = smc->hw.fp.mc.table ; i < FPMAX_MULTICAST ; i++, tb++){ in mac_get_mc_table()
1104 void mac_clear_multicast(struct s_smc *smc) in mac_clear_multicast() argument
1109 smc->hw.fp.os_slots_used = 0 ; /* note the SMT addresses */ in mac_clear_multicast()
1111 for (i = 0, tb = smc->hw.fp.mc.table ; i < FPMAX_MULTICAST ; i++, tb++){ in mac_clear_multicast()
1146 int mac_add_multicast(struct s_smc *smc, struct fddi_addr *addr, int can) in mac_add_multicast() argument
1155 if (smc->hw.fp.smt_slots_used >= SMT_MAX_MULTI) { in mac_add_multicast()
1160 if (smc->hw.fp.os_slots_used >= FPMAX_MULTICAST-SMT_MAX_MULTI) { in mac_add_multicast()
1168 if (!(tb = mac_get_mc_table(smc,addr,&own,0,can & ~0x80))) in mac_add_multicast()
1175 smc->hw.fp.smt_slots_used++ ; in mac_add_multicast()
1177 smc->hw.fp.os_slots_used++ ; in mac_add_multicast()
1200 void mac_update_multicast(struct s_smc *smc) in mac_update_multicast() argument
1214 if (smc->hw.fp.func_addr) { in mac_update_multicast()
1215 fu = (u_char *) &smc->hw.fp.func_addr ; in mac_update_multicast()
1234 for (i = 0, tb = smc->hw.fp.mc.table; i < FPMAX_MULTICAST; i++, tb++) { in mac_update_multicast()
1276 void mac_set_rx_mode(struct s_smc *smc, int mode) in mac_set_rx_mode() argument
1280 smc->hw.fp.rx_prom |= RX_MODE_ALL_MULTI ; in mac_set_rx_mode()
1283 smc->hw.fp.rx_prom &= ~RX_MODE_ALL_MULTI ; in mac_set_rx_mode()
1286 smc->hw.fp.rx_prom |= RX_MODE_PROM ; in mac_set_rx_mode()
1289 smc->hw.fp.rx_prom &= ~RX_MODE_PROM ; in mac_set_rx_mode()
1292 smc->hw.fp.nsa_mode = FM_MDAMA ; in mac_set_rx_mode()
1293 smc->hw.fp.rx_mode = (smc->hw.fp.rx_mode & ~FM_ADDET) | in mac_set_rx_mode()
1294 smc->hw.fp.nsa_mode ; in mac_set_rx_mode()
1297 smc->hw.fp.nsa_mode = FM_MRNNSAFNMA ; in mac_set_rx_mode()
1298 smc->hw.fp.rx_mode = (smc->hw.fp.rx_mode & ~FM_ADDET) | in mac_set_rx_mode()
1299 smc->hw.fp.nsa_mode ; in mac_set_rx_mode()
1302 if (smc->hw.fp.rx_prom & RX_MODE_PROM) { in mac_set_rx_mode()
1303 smc->hw.fp.rx_mode = FM_MLIMPROM ; in mac_set_rx_mode()
1305 else if (smc->hw.fp.rx_prom & RX_MODE_ALL_MULTI) { in mac_set_rx_mode()
1306 smc->hw.fp.rx_mode = smc->hw.fp.nsa_mode | FM_EXGPA0 ; in mac_set_rx_mode()
1309 smc->hw.fp.rx_mode = smc->hw.fp.nsa_mode ; in mac_set_rx_mode()
1310 SETMASK(FM_A(FM_MDREG1),smc->hw.fp.rx_mode,FM_ADDRX) ; in mac_set_rx_mode()
1311 mac_update_multicast(smc) ; in mac_set_rx_mode()
1332 void rtm_irq(struct s_smc *smc) in rtm_irq() argument
1338 AIX_EVENT(smc, (u_long) FDDI_RING_STATUS, in rtm_irq()
1340 (u_long) FDDI_RTT, smt_get_event_word(smc)); in rtm_irq()
1345 static void rtm_init(struct s_smc *smc) in rtm_init() argument
1351 void rtm_set_timer(struct s_smc *smc) in rtm_set_timer() argument
1357 (int) smc->mib.a[PATH0].fddiPATHT_Rmode,0) ; in rtm_set_timer()
1358 outpd(ADDR(B2_RTM_INI),smc->mib.a[PATH0].fddiPATHT_Rmode) ; in rtm_set_timer()
1361 static void smt_split_up_fifo(struct s_smc *smc) in smt_split_up_fifo() argument
1390 SMT_PANIC(smc,SMT_E0117, SMT_E0117_MSG) ; in smt_split_up_fifo()
1395 smc->hw.fp.fifo.rx1_fifo_size = RX_FIFO_SPACE ; in smt_split_up_fifo()
1396 smc->hw.fp.fifo.rx2_fifo_size = 0 ; in smt_split_up_fifo()
1401 smc->hw.fp.fifo.rx1_fifo_size = RX_LARGE_FIFO ; in smt_split_up_fifo()
1402 smc->hw.fp.fifo.rx2_fifo_size = RX_SMALL_FIFO ; in smt_split_up_fifo()
1405 smc->hw.fp.fifo.rx1_fifo_size = RX_FIFO_SPACE * in smt_split_up_fifo()
1407 smc->hw.fp.fifo.rx2_fifo_size = RX_FIFO_SPACE * in smt_split_up_fifo()
1434 if (smc->mib.a[PATH0].fddiPATHSbaPayload) { in smt_split_up_fifo()
1436 smc->hw.fp.fifo.fifo_config_mode |= in smt_split_up_fifo()
1437 smc->mib.fddiESSSynchTxMode | SYNC_TRAFFIC_ON ; in smt_split_up_fifo()
1441 smc->hw.fp.fifo.fifo_config_mode &= in smt_split_up_fifo()
1448 if (smc->hw.fp.fifo.fifo_config_mode & SYNC_TRAFFIC_ON) { in smt_split_up_fifo()
1449 if (smc->hw.fp.fifo.fifo_config_mode & SEND_ASYNC_AS_SYNC) { in smt_split_up_fifo()
1450 smc->hw.fp.fifo.tx_s_size = TX_LARGE_FIFO ; in smt_split_up_fifo()
1451 smc->hw.fp.fifo.tx_a0_size = TX_SMALL_FIFO ; in smt_split_up_fifo()
1454 smc->hw.fp.fifo.tx_s_size = TX_MEDIUM_FIFO ; in smt_split_up_fifo()
1455 smc->hw.fp.fifo.tx_a0_size = TX_MEDIUM_FIFO ; in smt_split_up_fifo()
1459 smc->hw.fp.fifo.tx_s_size = 0 ; in smt_split_up_fifo()
1460 smc->hw.fp.fifo.tx_a0_size = TX_FIFO_SPACE ; in smt_split_up_fifo()
1463 smc->hw.fp.fifo.rx1_fifo_start = smc->hw.fp.fifo.rbc_ram_start + in smt_split_up_fifo()
1465 smc->hw.fp.fifo.tx_s_start = smc->hw.fp.fifo.rx1_fifo_start + in smt_split_up_fifo()
1466 smc->hw.fp.fifo.rx1_fifo_size ; in smt_split_up_fifo()
1467 smc->hw.fp.fifo.tx_a0_start = smc->hw.fp.fifo.tx_s_start + in smt_split_up_fifo()
1468 smc->hw.fp.fifo.tx_s_size ; in smt_split_up_fifo()
1469 smc->hw.fp.fifo.rx2_fifo_start = smc->hw.fp.fifo.tx_a0_start + in smt_split_up_fifo()
1470 smc->hw.fp.fifo.tx_a0_size ; in smt_split_up_fifo()
1472 DB_SMT("FIFO split: mode = %x\n",smc->hw.fp.fifo.fifo_config_mode,0) ; in smt_split_up_fifo()
1474 smc->hw.fp.fifo.rbc_ram_start, smc->hw.fp.fifo.rbc_ram_end) ; in smt_split_up_fifo()
1476 smc->hw.fp.fifo.rx1_fifo_start, smc->hw.fp.fifo.tx_s_start) ; in smt_split_up_fifo()
1478 smc->hw.fp.fifo.tx_a0_start, smc->hw.fp.fifo.rx2_fifo_start) ; in smt_split_up_fifo()
1481 void formac_reinit_tx(struct s_smc *smc) in formac_reinit_tx() argument
1488 if (!smc->hw.fp.fifo.tx_s_size && smc->mib.a[PATH0].fddiPATHSbaPayload){ in formac_reinit_tx()
1489 (void)init_mac(smc,0) ; in formac_reinit_tx()