Lines Matching defs:smc

34 #include "h/smc.h"
79 static void ess_send_response(struct s_smc *smc, struct smt_header *sm,
81 static void ess_config_fifo(struct s_smc *smc);
82 static void ess_send_alc_req(struct s_smc *smc);
83 static void ess_send_frame(struct s_smc *smc, SMbuf *mb);
97 void ess_timer_poll(struct s_smc *smc);
98 void ess_para_change(struct s_smc *smc);
99 int ess_raf_received_pack(struct s_smc *smc, SMbuf *mb, struct smt_header *sm,
101 static int process_bw_alloc(struct s_smc *smc, long int payload, long int overhead);
113 int ess_raf_received_pack(struct s_smc *smc, SMbuf *mb, struct smt_header *sm,
132 if (!(p = (void *) sm_to_para(smc,sm,SMT_P0015))) {
141 if (!(cmd = (struct smt_p_0016 *) sm_to_para(smc,sm,SMT_P0016))) {
173 if (!local || smc->mib.fddiESSPayload)
176 p = (void *) sm_to_para(smc,sm,SMT_P0019) ;
187 smc->ess.alloc_trans_id = sm->smt_tid ;
189 p = (void *) sm_to_para(smc,sm,SMT_P320F) ;
191 smc->mib.a[PATH0].fddiPATHSbaPayload ;
192 p = (void *) sm_to_para(smc,sm,SMT_P3210) ;
194 smc->mib.a[PATH0].fddiPATHSbaOverhead ;
197 if (smc->ess.local_sba_active)
200 if (!(db = smt_get_mbuf(smc)))
207 dump_smt(smc,
210 smt_send_frame(smc,db,FC_SMT_INFO,0) ;
218 if (smt_check_para(smc,sm,plist_raf_alc_res)) {
233 if ((((struct smt_p_320b *)sm_to_para(smc,sm,SMT_P320B))->path_index
236 (((struct smt_p_reason *)sm_to_para(smc,sm,SMT_P0012))->rdf_reason
238 (sm->smt_tid != smc->ess.alloc_trans_id)) {
247 p = (void *) sm_to_para(smc,sm,SMT_P320F) ;
253 p = (void *) sm_to_para(smc,sm,SMT_P3210) ;
266 (void)process_bw_alloc(smc,(long)payload,(long)overhead) ;
286 if (smt_check_para(smc,sm,plist_raf_chg_req)) {
297 if ((((struct smt_p_320b *)sm_to_para(smc,sm,SMT_P320B))->path_index
306 p = (void *) sm_to_para(smc,sm,SMT_P320F) ;
308 p = (void *) sm_to_para(smc,sm,SMT_P3210) ;
319 if(!process_bw_alloc(smc,(long)payload,(long)overhead))
325 ess_send_response(smc,sm,CHANGE_ALLOCATION) ;
356 ess_send_response(smc,sm,REPORT_ALLOCATION) ;
376 static int process_bw_alloc(struct s_smc *smc, long int payload, long int overhead)
417 /* if (smt_set_obj(smc,SMT_P320F,payload,S_SET)) {
421 if (smt_set_obj(smc,SMT_P3210,overhead,S_SET)) {
436 if (smc->mib.fddiESSPayload &&
437 ((u_long)payload != smc->mib.fddiESSPayload ||
438 (u_long)overhead != smc->mib.fddiESSOverhead)) {
439 smc->ess.raf_act_timer_poll = TRUE ;
440 smc->ess.timer_count = 0 ;
448 smc->ess.sync_bw_available = TRUE ;
450 smc->ess.sync_bw = overhead -
451 (long)smc->mib.m[MAC0].fddiMACT_Neg *
456 smc->ess.sync_bw_available = FALSE ;
457 smc->ess.sync_bw = 0 ;
461 smc->mib.a[PATH0].fddiPATHSbaPayload = payload ;
462 smc->mib.a[PATH0].fddiPATHSbaOverhead = overhead ;
465 DB_ESSN(2, "tsync = %lx", smc->ess.sync_bw);
467 ess_config_fifo(smc) ;
468 set_formac_tsync(smc,smc->ess.sync_bw) ;
472 static void ess_send_response(struct s_smc *smc, struct smt_header *sm,
483 if (!(mb=smt_build_frame(smc,SMT_RAF,SMT_REPLY,
488 if (!(mb=smt_build_frame(smc,SMT_RAF,SMT_REPLY,
518 chg->payload.mib_payload = smc->mib.a[PATH0].fddiPATHSbaPayload ;
524 chg->overhead.mib_overhead = smc->mib.a[PATH0].fddiPATHSbaOverhead ;
530 p = (void *) sm_to_para(smc,sm,SMT_P001A) ;
533 dump_smt(smc,(struct smt_header *)chg,"RAF") ;
534 ess_send_frame(smc,mb) ;
537 void ess_timer_poll(struct s_smc *smc)
539 if (!smc->ess.raf_act_timer_poll)
544 smc->ess.timer_count++ ;
545 if (smc->ess.timer_count == 10) {
546 smc->ess.timer_count = 0 ;
547 ess_send_alc_req(smc) ;
551 static void ess_send_alc_req(struct s_smc *smc)
561 if (!smc->mib.fddiESSPayload) {
562 smc->mib.fddiESSOverhead = 0 ;
565 if (!smc->mib.fddiESSOverhead)
566 smc->mib.fddiESSOverhead = DEFAULT_OV ;
569 if (smc->mib.fddiESSOverhead ==
570 smc->mib.a[PATH0].fddiPATHSbaOverhead &&
571 smc->mib.fddiESSPayload ==
572 smc->mib.a[PATH0].fddiPATHSbaPayload){
573 smc->ess.raf_act_timer_poll = FALSE ;
574 smc->ess.timer_count = 7 ; /* next RAF alc req after 3 s */
581 if (!(mb=smt_build_frame(smc,SMT_RAF,SMT_REQUEST,
585 req->smt.smt_tid = smc->ess.alloc_trans_id = smt_get_tid(smc) ;
613 req->pl_req.sba_pl_req = smc->mib.fddiESSPayload -
614 smc->mib.a[PATH0].fddiPATHSbaPayload ;
619 req->ov_req.sba_ov_req = smc->mib.fddiESSOverhead -
620 smc->mib.a[PATH0].fddiPATHSbaOverhead ;
626 req->payload.mib_payload = smc->mib.a[PATH0].fddiPATHSbaPayload ;
632 req->overhead.mib_overhead = smc->mib.a[PATH0].fddiPATHSbaOverhead ;
643 req->cat.category = smc->mib.fddiESSCategory ;
648 req->tneg.max_t_neg = smc->mib.fddiESSMaxTNeg ;
653 req->segm.min_seg_siz = smc->mib.fddiESSMinSegmentSize ;
655 dump_smt(smc,(struct smt_header *)req,"RAF") ;
656 ess_send_frame(smc,mb) ;
659 static void ess_send_frame(struct s_smc *smc, SMbuf *mb)
664 if (smc->ess.local_sba_active) {
669 if (!smc->ess.sba_reply_pend)
670 smc->ess.sba_reply_pend = mb ;
673 smt_free_mbuf(smc,mb) ;
681 smt_send_frame(smc,mb,FC_SMT_INFO,0) ;
685 void ess_para_change(struct s_smc *smc)
687 (void)process_bw_alloc(smc,(long)smc->mib.a[PATH0].fddiPATHSbaPayload,
688 (long)smc->mib.a[PATH0].fddiPATHSbaOverhead) ;
691 static void ess_config_fifo(struct s_smc *smc)
696 if (smc->mib.a[PATH0].fddiPATHSbaPayload) {
697 if (smc->hw.fp.fifo.fifo_config_mode & SYNC_TRAFFIC_ON &&
698 (smc->hw.fp.fifo.fifo_config_mode&SEND_ASYNC_AS_SYNC) ==
699 smc->mib.fddiESSSynchTxMode) {
704 if (!(smc->hw.fp.fifo.fifo_config_mode & SYNC_TRAFFIC_ON)) {
712 formac_reinit_tx(smc) ;