Lines Matching defs:smc

34 #include "h/smc.h"
78 static void ess_send_response(struct s_smc *smc, struct smt_header *sm,
80 static void ess_config_fifo(struct s_smc *smc);
81 static void ess_send_alc_req(struct s_smc *smc);
82 static void ess_send_frame(struct s_smc *smc, SMbuf *mb);
96 void ess_timer_poll(struct s_smc *smc);
97 void ess_para_change(struct s_smc *smc);
98 int ess_raf_received_pack(struct s_smc *smc, SMbuf *mb, struct smt_header *sm,
100 static int process_bw_alloc(struct s_smc *smc, long int payload, long int overhead);
112 int ess_raf_received_pack(struct s_smc *smc, SMbuf *mb, struct smt_header *sm,
131 if (!(p = (void *) sm_to_para(smc,sm,SMT_P0015))) {
140 if (!(cmd = (struct smt_p_0016 *) sm_to_para(smc,sm,SMT_P0016))) {
172 if (!local || smc->mib.fddiESSPayload)
175 p = (void *) sm_to_para(smc,sm,SMT_P0019) ;
186 smc->ess.alloc_trans_id = sm->smt_tid ;
188 p = (void *) sm_to_para(smc,sm,SMT_P320F) ;
190 smc->mib.a[PATH0].fddiPATHSbaPayload ;
191 p = (void *) sm_to_para(smc,sm,SMT_P3210) ;
193 smc->mib.a[PATH0].fddiPATHSbaOverhead ;
196 if (smc->ess.local_sba_active)
199 if (!(db = smt_get_mbuf(smc)))
206 dump_smt(smc,
209 smt_send_frame(smc,db,FC_SMT_INFO,0) ;
217 if (smt_check_para(smc,sm,plist_raf_alc_res)) {
232 if ((((struct smt_p_320b *)sm_to_para(smc,sm,SMT_P320B))->path_index
235 (((struct smt_p_reason *)sm_to_para(smc,sm,SMT_P0012))->rdf_reason
237 (sm->smt_tid != smc->ess.alloc_trans_id)) {
246 p = (void *) sm_to_para(smc,sm,SMT_P320F) ;
252 p = (void *) sm_to_para(smc,sm,SMT_P3210) ;
265 (void)process_bw_alloc(smc,(long)payload,(long)overhead) ;
285 if (smt_check_para(smc,sm,plist_raf_chg_req)) {
296 if ((((struct smt_p_320b *)sm_to_para(smc,sm,SMT_P320B))->path_index
305 p = (void *) sm_to_para(smc,sm,SMT_P320F) ;
307 p = (void *) sm_to_para(smc,sm,SMT_P3210) ;
318 if(!process_bw_alloc(smc,(long)payload,(long)overhead))
324 ess_send_response(smc,sm,CHANGE_ALLOCATION) ;
355 ess_send_response(smc,sm,REPORT_ALLOCATION) ;
375 static int process_bw_alloc(struct s_smc *smc, long int payload, long int overhead)
416 /* if (smt_set_obj(smc,SMT_P320F,payload,S_SET)) {
420 if (smt_set_obj(smc,SMT_P3210,overhead,S_SET)) {
435 if (smc->mib.fddiESSPayload &&
436 ((u_long)payload != smc->mib.fddiESSPayload ||
437 (u_long)overhead != smc->mib.fddiESSOverhead)) {
438 smc->ess.raf_act_timer_poll = TRUE ;
439 smc->ess.timer_count = 0 ;
447 smc->ess.sync_bw_available = TRUE ;
449 smc->ess.sync_bw = overhead -
450 (long)smc->mib.m[MAC0].fddiMACT_Neg *
455 smc->ess.sync_bw_available = FALSE ;
456 smc->ess.sync_bw = 0 ;
460 smc->mib.a[PATH0].fddiPATHSbaPayload = payload ;
461 smc->mib.a[PATH0].fddiPATHSbaOverhead = overhead ;
464 DB_ESSN(2, "tsync = %lx", smc->ess.sync_bw);
466 ess_config_fifo(smc) ;
467 set_formac_tsync(smc,smc->ess.sync_bw) ;
471 static void ess_send_response(struct s_smc *smc, struct smt_header *sm,
482 if (!(mb=smt_build_frame(smc,SMT_RAF,SMT_REPLY,
487 if (!(mb=smt_build_frame(smc,SMT_RAF,SMT_REPLY,
517 chg->payload.mib_payload = smc->mib.a[PATH0].fddiPATHSbaPayload ;
523 chg->overhead.mib_overhead = smc->mib.a[PATH0].fddiPATHSbaOverhead ;
529 p = (void *) sm_to_para(smc,sm,SMT_P001A) ;
532 dump_smt(smc,(struct smt_header *)chg,"RAF") ;
533 ess_send_frame(smc,mb) ;
536 void ess_timer_poll(struct s_smc *smc)
538 if (!smc->ess.raf_act_timer_poll)
543 smc->ess.timer_count++ ;
544 if (smc->ess.timer_count == 10) {
545 smc->ess.timer_count = 0 ;
546 ess_send_alc_req(smc) ;
550 static void ess_send_alc_req(struct s_smc *smc)
560 if (!smc->mib.fddiESSPayload) {
561 smc->mib.fddiESSOverhead = 0 ;
564 if (!smc->mib.fddiESSOverhead)
565 smc->mib.fddiESSOverhead = DEFAULT_OV ;
568 if (smc->mib.fddiESSOverhead ==
569 smc->mib.a[PATH0].fddiPATHSbaOverhead &&
570 smc->mib.fddiESSPayload ==
571 smc->mib.a[PATH0].fddiPATHSbaPayload){
572 smc->ess.raf_act_timer_poll = FALSE ;
573 smc->ess.timer_count = 7 ; /* next RAF alc req after 3 s */
580 if (!(mb=smt_build_frame(smc,SMT_RAF,SMT_REQUEST,
584 req->smt.smt_tid = smc->ess.alloc_trans_id = smt_get_tid(smc) ;
612 req->pl_req.sba_pl_req = smc->mib.fddiESSPayload -
613 smc->mib.a[PATH0].fddiPATHSbaPayload ;
618 req->ov_req.sba_ov_req = smc->mib.fddiESSOverhead -
619 smc->mib.a[PATH0].fddiPATHSbaOverhead ;
625 req->payload.mib_payload = smc->mib.a[PATH0].fddiPATHSbaPayload ;
631 req->overhead.mib_overhead = smc->mib.a[PATH0].fddiPATHSbaOverhead ;
642 req->cat.category = smc->mib.fddiESSCategory ;
647 req->tneg.max_t_neg = smc->mib.fddiESSMaxTNeg ;
652 req->segm.min_seg_siz = smc->mib.fddiESSMinSegmentSize ;
654 dump_smt(smc,(struct smt_header *)req,"RAF") ;
655 ess_send_frame(smc,mb) ;
658 static void ess_send_frame(struct s_smc *smc, SMbuf *mb)
663 if (smc->ess.local_sba_active) {
668 if (!smc->ess.sba_reply_pend)
669 smc->ess.sba_reply_pend = mb ;
672 smt_free_mbuf(smc,mb) ;
680 smt_send_frame(smc,mb,FC_SMT_INFO,0) ;
684 void ess_para_change(struct s_smc *smc)
686 (void)process_bw_alloc(smc,(long)smc->mib.a[PATH0].fddiPATHSbaPayload,
687 (long)smc->mib.a[PATH0].fddiPATHSbaOverhead) ;
690 static void ess_config_fifo(struct s_smc *smc)
695 if (smc->mib.a[PATH0].fddiPATHSbaPayload) {
696 if (smc->hw.fp.fifo.fifo_config_mode & SYNC_TRAFFIC_ON &&
697 (smc->hw.fp.fifo.fifo_config_mode&SEND_ASYNC_AS_SYNC) ==
698 smc->mib.fddiESSSynchTxMode) {
703 if (!(smc->hw.fp.fifo.fifo_config_mode & SYNC_TRAFFIC_ON)) {
711 formac_reinit_tx(smc) ;