Lines Matching refs:smc
35 static int smt_authorize(struct s_smc *smc, struct smt_header *sm);
36 static int smt_check_set_count(struct s_smc *smc, struct smt_header *sm);
38 static int smt_mib_phys(struct s_smc *smc);
39 static int smt_set_para(struct s_smc *smc, struct smt_para *pa, int index,
41 void smt_add_para(struct s_smc *smc, struct s_pcon *pcon, u_short para,
43 static SMbuf *smt_build_pmf_response(struct s_smc *smc, struct smt_header *req,
45 static int port_to_mib(struct s_smc *smc, int p);
281 void smt_pmf_received_pack(struct s_smc *smc, SMbuf *mb, int local) in smt_pmf_received_pack() argument
289 dump_smt(smc,sm,"PMF Received") ; in smt_pmf_received_pack()
295 smt_start_watchdog(smc) ; in smt_pmf_received_pack()
299 reply = smt_build_pmf_response(smc,sm, in smt_pmf_received_pack()
304 dump_smt(smc,sm,"PMF Reply") ; in smt_pmf_received_pack()
306 smt_send_frame(smc,reply,FC_SMT_INFO,local) ; in smt_pmf_received_pack()
311 static SMbuf *smt_build_pmf_response(struct s_smc *smc, struct smt_header *req, in smt_build_pmf_response() argument
330 if (!(mb = smt_get_mbuf(smc))) in smt_build_pmf_response()
355 if (!local && smt_authorize(smc,req)) in smt_build_pmf_response()
357 else if (smt_check_set_count(smc,req)) in smt_build_pmf_response()
364 smt_add_para(smc,&pcon,(u_short) SMT_P_REASON,0,0) ; in smt_build_pmf_response()
365 smt_add_para(smc,&pcon,(u_short) SMT_P1033,0,0) ; in smt_build_pmf_response()
368 smt_add_para(smc,&pcon,(u_short) SMT_P1035,0,0) ; in smt_build_pmf_response()
369 smt_add_para(smc,&pcon,(u_short) SMT_P1036,0,0) ; in smt_build_pmf_response()
408 if (smc->s.sas == SMT_SAS) in smt_build_pmf_response()
436 smt_add_para(smc,&pcon,pt->p_num, in smt_build_pmf_response()
450 smt_add_para(smc,&pcon,pa->p_type, in smt_build_pmf_response()
454 st = smt_set_para(smc,pa,index,local,1); in smt_build_pmf_response()
458 smt_add_para(smc,&pcon,pa->p_type, in smt_build_pmf_response()
467 smt_add_para(smc,&pcon,pa->p_type, in smt_build_pmf_response()
490 smc->mib.fddiSMTSetCount.count++ ; in smt_build_pmf_response()
491 smt_set_timestamp(smc,smc->mib.fddiSMTSetCount.timestamp) ; in smt_build_pmf_response()
492 smc->mib.fddiSMTLastSetStationId = req->smt_sid ; in smt_build_pmf_response()
493 smt_add_para(smc,&set_pcon,(u_short) SMT_P1035,0,0) ; in smt_build_pmf_response()
494 smt_add_para(smc,&set_pcon,(u_short) SMT_P1036,0,0) ; in smt_build_pmf_response()
499 static int smt_authorize(struct s_smc *smc, struct smt_header *sm) in smt_authorize() argument
508 p = (char *) &smc->mib.fddiPRPMFStation ; in smt_authorize()
513 (char *) &smc->mib.fddiPRPMFStation,8)) in smt_authorize()
519 p = (char *) smc->mib.fddiPRPMFPasswd ; in smt_authorize()
523 pa = (struct smt_para *) sm_to_para(smc,sm,SMT_P_AUTHOR) ; in smt_authorize()
528 if (memcmp((char *)(pa+1),(char *)smc->mib.fddiPRPMFPasswd,8)) in smt_authorize()
534 static int smt_check_set_count(struct s_smc *smc, struct smt_header *sm) in smt_check_set_count() argument
539 pa = (struct smt_para *) sm_to_para(smc,sm,SMT_P1035) ; in smt_check_set_count()
542 if ((smc->mib.fddiSMTSetCount.count != sc->count) || in smt_check_set_count()
543 memcmp((char *) smc->mib.fddiSMTSetCount.timestamp, in smt_check_set_count()
550 void smt_add_para(struct s_smc *smc, struct s_pcon *pcon, u_short para, in smt_add_para() argument
612 mib_addr = (char *) (&smc->mib) ; in smt_add_para()
619 mib_addr = (char *) (&smc->mib.m[mac]) ; in smt_add_para()
627 mib_addr = (char *) (&smc->mib.a[path]) ; in smt_add_para()
630 if (port < 0 || port >= smt_mib_phys(smc)) { in smt_add_para()
634 mib_addr = (char *) (&smc->mib.p[port_to_mib(smc,port)]) ; in smt_add_para()
669 mac_update_counter(smc) ; in smt_add_para()
673 sm_pm_get_ls(smc,port_to_mib(smc,port))) ; in smt_add_para()
680 smt_set_timestamp(smc,smc->mib.fddiSMTTimeStamp) ; in smt_add_para()
688 if (smc->s.sas == SMT_SAS) in smt_add_para()
703 sp_len = cem_build_path(smc,to,path) ; in smt_add_para()
710 sp->p1048_flag = smc->mib.fddiSMTPeerWrapFlag ; in smt_add_para()
711 sp->p1048_cf_state = smc->mib.fddiSMTCF_State ; in smt_add_para()
720 smc->mib.m[MAC0].fddiMACDuplicateAddressCond ; in smt_add_para()
1033 SMT_PANIC(smc,SMT_E0119, SMT_E0119_MSG) ; in smt_add_para()
1075 static int smt_set_para(struct s_smc *smc, struct smt_para *pa, int index, in smt_set_para() argument
1104 mib = &smc->mib ; in smt_set_para()
1114 mib_m = &smc->mib.m[mac] ; in smt_set_para()
1123 mib_a = &smc->mib.a[path] ; in smt_set_para()
1129 if (port < 0 || port >= smt_mib_phys(smc)) { in smt_set_para()
1132 mib_p = &smc->mib.p[port_to_mib(smc,port)] ; in smt_set_para()
1292 SMT_PANIC(smc,SMT_E0120, SMT_E0120_MSG) ; in smt_set_para()
1333 if (set && smc->mib.fddiESSPayload != long_val) { in smt_set_para()
1334 smc->ess.raf_act_timer_poll = TRUE ; in smt_set_para()
1335 smc->mib.fddiESSPayload = long_val ; in smt_set_para()
1341 if (set && smc->mib.fddiESSPayload && in smt_set_para()
1342 smc->mib.fddiESSOverhead != long_val) { in smt_set_para()
1343 smc->ess.raf_act_timer_poll = TRUE ; in smt_set_para()
1344 smc->mib.fddiESSOverhead = long_val ; in smt_set_para()
1399 queue_event(smc,EVENT_RMT,RM_ENABLE_FLAG) ; in smt_set_para()
1411 ess_para_change(smc) ; in smt_set_para()
1424 ess_para_change(smc) ; in smt_set_para()
1433 rtm_set_timer(smc) ; in smt_set_para()
1455 if (set && smt_set_mac_opvalues(smc)) { in smt_set_para()
1456 RS_SET(smc,RS_EVENT) ; in smt_set_para()
1457 smc->sm.please_reconnect = 1 ; in smt_set_para()
1458 queue_event(smc,EVENT_ECM,EC_DISCONNECT) ; in smt_set_para()
1491 if (smt_action(smc,SMT_STATION_ACTION, (int) word_val, 0)) in smt_set_para()
1495 if (smt_action(smc,SMT_PORT_ACTION, (int) word_val, in smt_set_para()
1496 port_to_mib(smc,port))) in smt_set_para()
1531 static int smt_mib_phys(struct s_smc *smc) in smt_mib_phys() argument
1534 SK_UNUSED(smc) ; in smt_mib_phys()
1538 if (smc->s.sas == SMT_SAS) in smt_mib_phys()
1544 static int port_to_mib(struct s_smc *smc, int p) in port_to_mib() argument
1547 SK_UNUSED(smc) ; in port_to_mib()
1551 if (smc->s.sas == SMT_SAS) in port_to_mib()
1560 void dump_smt(struct s_smc *smc, struct smt_header *sm, char *text) in dump_smt() argument
1571 SK_UNUSED(smc) ; in dump_smt()
1574 if (smc->debug.d_smtf < 2) in dump_smt()