Lines Matching refs:mgr

81 	struct manager	*mgr = fi->userdata;  in da_debug()  local
93 printk(KERN_DEBUG "mgr(%d): %pV\n", mgr->ch.st->dev->id, &vaf); in da_debug()
101 struct manager *mgr = fi->userdata; in da_activate() local
104 mISDN_FsmDelTimer(&mgr->datimer, 1); in da_activate()
117 struct manager *mgr = fi->userdata; in da_deactivate() local
121 read_lock_irqsave(&mgr->lock, flags); in da_deactivate()
122 list_for_each_entry(l2, &mgr->layer2, list) { in da_deactivate()
125 read_unlock_irqrestore(&mgr->lock, flags); in da_deactivate()
129 read_unlock_irqrestore(&mgr->lock, flags); in da_deactivate()
131 if (!test_bit(OPTION_L1_HOLD, &mgr->options)) { in da_deactivate()
132 mISDN_FsmAddTimer(&mgr->datimer, DATIMER_VAL, EV_DATIMER, in da_deactivate()
141 struct manager *mgr = fi->userdata; in da_ui() local
144 if (!test_bit(OPTION_L1_HOLD, &mgr->options)) { in da_ui()
145 mISDN_FsmDelTimer(&mgr->datimer, 2); in da_ui()
146 mISDN_FsmAddTimer(&mgr->datimer, DATIMER_VAL, EV_DATIMER, in da_ui()
154 struct manager *mgr = fi->userdata; in da_timer() local
159 read_lock_irqsave(&mgr->lock, flags); in da_timer()
160 list_for_each_entry(l2, &mgr->layer2, list) { in da_timer()
163 read_unlock_irqrestore(&mgr->lock, flags); in da_timer()
168 read_unlock_irqrestore(&mgr->lock, flags); in da_timer()
171 _queue_data(&mgr->ch, PH_DEACTIVATE_REQ, MISDN_ID_ANY, 0, NULL, in da_timer()
251 get_free_id(struct manager *mgr) in get_free_id() argument
257 list_for_each_entry(l2, &mgr->layer2, list) { in get_free_id()
275 get_free_tei(struct manager *mgr) in get_free_tei() argument
281 list_for_each_entry(l2, &mgr->layer2, list) { in get_free_tei()
302 teiup_create(struct manager *mgr, u_int prim, int len, void *arg) in teiup_create() argument
313 hh->id = (mgr->ch.nr << 16) | mgr->ch.addr; in teiup_create()
316 err = mgr->up->send(mgr->up, skb); in teiup_create()
324 new_id(struct manager *mgr) in new_id() argument
328 id = mgr->nextid++; in new_id()
330 mgr->nextid = 1; in new_id()
338 do_send(struct manager *mgr) in do_send() argument
340 if (!test_bit(MGR_PH_ACTIVE, &mgr->options)) in do_send()
343 if (!test_and_set_bit(MGR_PH_NOTREADY, &mgr->options)) { in do_send()
344 struct sk_buff *skb = skb_dequeue(&mgr->sendq); in do_send()
347 test_and_clear_bit(MGR_PH_NOTREADY, &mgr->options); in do_send()
350 mgr->lastid = mISDN_HEAD_ID(skb); in do_send()
351 mISDN_FsmEvent(&mgr->deact, EV_UI, NULL); in do_send()
352 if (mgr->ch.recv(mgr->ch.peer, skb)) { in do_send()
354 test_and_clear_bit(MGR_PH_NOTREADY, &mgr->options); in do_send()
355 mgr->lastid = MISDN_ID_NONE; in do_send()
361 do_ack(struct manager *mgr, u_int id) in do_ack() argument
363 if (test_bit(MGR_PH_NOTREADY, &mgr->options)) { in do_ack()
364 if (id == mgr->lastid) { in do_ack()
365 if (test_bit(MGR_PH_ACTIVE, &mgr->options)) { in do_ack()
368 skb = skb_dequeue(&mgr->sendq); in do_ack()
370 mgr->lastid = mISDN_HEAD_ID(skb); in do_ack()
371 if (!mgr->ch.recv(mgr->ch.peer, skb)) in do_ack()
376 mgr->lastid = MISDN_ID_NONE; in do_ack()
377 test_and_clear_bit(MGR_PH_NOTREADY, &mgr->options); in do_ack()
383 mgr_send_down(struct manager *mgr, struct sk_buff *skb) in mgr_send_down() argument
385 skb_queue_tail(&mgr->sendq, skb); in mgr_send_down()
386 if (!test_bit(MGR_PH_ACTIVE, &mgr->options)) { in mgr_send_down()
387 _queue_data(&mgr->ch, PH_ACTIVATE_REQ, MISDN_ID_ANY, 0, in mgr_send_down()
390 do_send(mgr); in mgr_send_down()
395 dl_unit_data(struct manager *mgr, struct sk_buff *skb) in dl_unit_data() argument
397 if (!test_bit(MGR_OPT_NETWORK, &mgr->options)) /* only net send UI */ in dl_unit_data()
399 if (!test_bit(MGR_PH_ACTIVE, &mgr->options)) in dl_unit_data()
400 _queue_data(&mgr->ch, PH_ACTIVATE_REQ, MISDN_ID_ANY, 0, in dl_unit_data()
407 mISDN_HEAD_ID(skb) = new_id(mgr); in dl_unit_data()
408 skb_queue_tail(&mgr->sendq, skb); in dl_unit_data()
409 do_send(mgr); in dl_unit_data()
423 findtei(struct manager *mgr, int tei) in findtei() argument
428 read_lock_irqsave(&mgr->lock, flags); in findtei()
429 list_for_each_entry(l2, &mgr->layer2, list) { in findtei()
436 read_unlock_irqrestore(&mgr->lock, flags); in findtei()
441 put_tei_msg(struct manager *mgr, u_char m_id, unsigned int ri, int tei) in put_tei_msg() argument
447 if (test_bit(MGR_OPT_NETWORK, &mgr->options)) in put_tei_msg()
456 skb = _alloc_mISDN_skb(PH_DATA_REQ, new_id(mgr), 8, bp, GFP_ATOMIC); in put_tei_msg()
461 mgr_send_down(mgr, skb); in put_tei_msg()
479 put_tei_msg(tm->mgr, ID_REQUEST, tm->ri, GROUP_TEI); in tei_id_request()
500 l2 = findtei(tm->mgr, tei); in tei_id_assign()
529 l2 = findtei(tm->mgr, tei); in tei_id_test_dup()
569 put_tei_msg(tm->mgr, ID_CHK_RES, random_ri(), tm->l2->tei); in tei_id_chk_req()
599 put_tei_msg(tm->mgr, ID_VERIFY, 0, tm->l2->tei); in tei_id_verify()
615 put_tei_msg(tm->mgr, ID_REQUEST, tm->ri, GROUP_TEI); in tei_id_req_tout()
634 put_tei_msg(tm->mgr, ID_VERIFY, 0, tm->l2->tei); in tei_id_ver_tout()
662 put_tei_msg(l2->tm->mgr, ID_REMOVE, 0, l2->tei); in tei_l2remove()
684 put_tei_msg(tm->mgr, ID_ASSIGNED, tm->ri, tm->l2->tei); in tei_assign_req()
697 put_tei_msg(tm->mgr, ID_CHK_REQ, 0, tm->l2->tei); in tei_id_chk_req_net()
750 put_tei_msg(tm->mgr, ID_CHK_REQ, 0, tm->l2->tei); in tei_id_ver_tout_net()
791 create_new_tei(struct manager *mgr, int tei, int sapi) in create_new_tei() argument
799 if (!mgr->up) in create_new_tei()
803 if (mgr->ch.st->dev->Dprotocols & ((1 << ISDN_P_TE_E1) | in create_new_tei()
810 l2 = create_l2(mgr->up, ISDN_P_LAPD_NT, opt, tei, sapi); in create_new_tei()
821 l2->tm->mgr = mgr; in create_new_tei()
830 write_lock_irqsave(&mgr->lock, flags); in create_new_tei()
831 id = get_free_id(mgr); in create_new_tei()
832 list_add_tail(&l2->list, &mgr->layer2); in create_new_tei()
833 write_unlock_irqrestore(&mgr->lock, flags); in create_new_tei()
840 __add_layer2(&l2->ch, mgr->ch.st); in create_new_tei()
841 l2->ch.recv = mgr->ch.recv; in create_new_tei()
842 l2->ch.peer = mgr->ch.peer; in create_new_tei()
845 rq.adr.dev = mgr->ch.st->dev->id; in create_new_tei()
846 id = mgr->ch.st->own.ctrl(&mgr->ch.st->own, OPEN_CHANNEL, &rq); in create_new_tei()
857 new_tei_req(struct manager *mgr, u_char *dp) in new_tei_req() argument
864 if (!mgr->up) in new_tei_req()
871 tei = get_free_tei(mgr); in new_tei_req()
876 l2 = create_new_tei(mgr, tei, CTRL_SAPI); in new_tei_req()
883 put_tei_msg(mgr, ID_DENIED, ri, GROUP_TEI); in new_tei_req()
887 ph_data_ind(struct manager *mgr, struct sk_buff *skb) in ph_data_ind() argument
917 if (!test_bit(MGR_OPT_NETWORK, &mgr->options)) in ph_data_ind()
924 if (test_bit(MGR_OPT_NETWORK, &mgr->options)) in ph_data_ind()
932 new_tei_req(mgr, &skb->data[4]); in ph_data_ind()
935 list_for_each_entry_safe(l2, nl2, &mgr->layer2, list) { in ph_data_ind()
956 if (test_bit(MGR_OPT_NETWORK, &tm->mgr->options)) in l2_tei()
958 if (test_bit(MGR_OPT_USER, &tm->mgr->options)) in l2_tei()
962 if (test_bit(MGR_OPT_NETWORK, &tm->mgr->options)) in l2_tei()
963 mISDN_FsmEvent(&tm->mgr->deact, EV_ACTIVATE, NULL); in l2_tei()
966 if (test_bit(MGR_OPT_NETWORK, &tm->mgr->options)) in l2_tei()
967 mISDN_FsmEvent(&tm->mgr->deact, EV_DEACTIVATE, NULL); in l2_tei()
970 if (test_bit(MGR_OPT_NETWORK, &tm->mgr->options)) in l2_tei()
971 mISDN_FsmEvent(&tm->mgr->deact, EV_UI, NULL); in l2_tei()
984 write_lock_irqsave(&tm->mgr->lock, flags); in TEIrelease()
986 write_unlock_irqrestore(&tm->mgr->lock, flags); in TEIrelease()
992 create_teimgr(struct manager *mgr, struct channel_req *crq) in create_teimgr() argument
1002 __func__, dev_name(&mgr->ch.st->dev->dev), in create_teimgr()
1011 if (test_bit(MGR_OPT_NETWORK, &mgr->options)) { in create_teimgr()
1016 if (mgr->up) { in create_teimgr()
1022 } else if (test_bit(MGR_OPT_USER, &mgr->options)) { in create_teimgr()
1029 test_and_set_bit(MGR_OPT_NETWORK, &mgr->options); in create_teimgr()
1031 test_and_set_bit(MGR_OPT_USER, &mgr->options); in create_teimgr()
1034 if (mgr->ch.st->dev->Dprotocols in create_teimgr()
1038 mgr->up = crq->ch; in create_teimgr()
1040 teiup_create(mgr, DL_INFORMATION_IND, sizeof(id), &id); in create_teimgr()
1041 if (test_bit(MGR_PH_ACTIVE, &mgr->options)) in create_teimgr()
1042 teiup_create(mgr, PH_ACTIVATE_IND, 0, NULL); in create_teimgr()
1044 if (!list_empty(&mgr->layer2)) { in create_teimgr()
1045 read_lock_irqsave(&mgr->lock, flags); in create_teimgr()
1046 list_for_each_entry(l2, &mgr->layer2, list) { in create_teimgr()
1047 l2->up = mgr->up; in create_teimgr()
1050 read_unlock_irqrestore(&mgr->lock, flags); in create_teimgr()
1064 l2->tm->mgr = mgr; in create_teimgr()
1087 write_lock_irqsave(&mgr->lock, flags); in create_teimgr()
1088 id = get_free_id(mgr); in create_teimgr()
1089 list_add_tail(&l2->list, &mgr->layer2); in create_teimgr()
1090 write_unlock_irqrestore(&mgr->lock, flags); in create_teimgr()
1096 id = mgr->ch.st->own.ctrl(&mgr->ch.st->own, OPEN_CHANNEL, in create_teimgr()
1107 struct manager *mgr; in mgr_send() local
1111 mgr = container_of(ch, struct manager, ch); in mgr_send()
1117 mISDN_FsmEvent(&mgr->deact, EV_UI, NULL); in mgr_send()
1118 ret = ph_data_ind(mgr, skb); in mgr_send()
1121 do_ack(mgr, hh->id); in mgr_send()
1125 test_and_set_bit(MGR_PH_ACTIVE, &mgr->options); in mgr_send()
1126 if (mgr->up) in mgr_send()
1127 teiup_create(mgr, PH_ACTIVATE_IND, 0, NULL); in mgr_send()
1128 mISDN_FsmEvent(&mgr->deact, EV_ACTIVATE_IND, NULL); in mgr_send()
1129 do_send(mgr); in mgr_send()
1133 test_and_clear_bit(MGR_PH_ACTIVE, &mgr->options); in mgr_send()
1134 if (mgr->up) in mgr_send()
1135 teiup_create(mgr, PH_DEACTIVATE_IND, 0, NULL); in mgr_send()
1136 mISDN_FsmEvent(&mgr->deact, EV_DEACTIVATE_IND, NULL); in mgr_send()
1140 return dl_unit_data(mgr, skb); in mgr_send()
1148 free_teimanager(struct manager *mgr) in free_teimanager() argument
1152 test_and_clear_bit(OPTION_L1_HOLD, &mgr->options); in free_teimanager()
1153 if (test_bit(MGR_OPT_NETWORK, &mgr->options)) { in free_teimanager()
1155 mgr->up = NULL; in free_teimanager()
1156 if (test_bit(OPTION_L2_CLEANUP, &mgr->options)) { in free_teimanager()
1157 list_for_each_entry_safe(l2, nl2, &mgr->layer2, list) { in free_teimanager()
1158 put_tei_msg(mgr, ID_REMOVE, 0, l2->tei); in free_teimanager()
1159 mutex_lock(&mgr->ch.st->lmutex); in free_teimanager()
1161 mutex_unlock(&mgr->ch.st->lmutex); in free_teimanager()
1164 test_and_clear_bit(MGR_OPT_NETWORK, &mgr->options); in free_teimanager()
1166 list_for_each_entry_safe(l2, nl2, &mgr->layer2, list) { in free_teimanager()
1171 if (test_bit(MGR_OPT_USER, &mgr->options)) { in free_teimanager()
1172 if (list_empty(&mgr->layer2)) in free_teimanager()
1173 test_and_clear_bit(MGR_OPT_USER, &mgr->options); in free_teimanager()
1175 mgr->ch.st->dev->D.ctrl(&mgr->ch.st->dev->D, CLOSE_CHANNEL, NULL); in free_teimanager()
1180 ctrl_teimanager(struct manager *mgr, void *arg) in ctrl_teimanager() argument
1188 test_and_set_bit(OPTION_L2_CLEANUP, &mgr->options); in ctrl_teimanager()
1190 test_and_clear_bit(OPTION_L2_CLEANUP, &mgr->options); in ctrl_teimanager()
1194 test_and_set_bit(OPTION_L1_HOLD, &mgr->options); in ctrl_teimanager()
1196 test_and_clear_bit(OPTION_L1_HOLD, &mgr->options); in ctrl_teimanager()
1206 check_data(struct manager *mgr, struct sk_buff *skb) in check_data() argument
1215 if (test_bit(MGR_OPT_USER, &mgr->options)) in check_data()
1235 l2 = create_new_tei(mgr, tei, sapi); in check_data()
1249 struct manager *mgr; in delete_teimanager() local
1252 mgr = container_of(ch, struct manager, ch); in delete_teimanager()
1254 list_for_each_entry_safe(l2, nl2, &mgr->layer2, list) { in delete_teimanager()
1255 mutex_lock(&mgr->ch.st->lmutex); in delete_teimanager()
1257 mutex_unlock(&mgr->ch.st->lmutex); in delete_teimanager()
1260 list_del(&mgr->ch.list); in delete_teimanager()
1261 list_del(&mgr->bcast.list); in delete_teimanager()
1262 skb_queue_purge(&mgr->sendq); in delete_teimanager()
1263 kfree(mgr); in delete_teimanager()
1269 struct manager *mgr; in mgr_ctrl() local
1272 mgr = container_of(ch, struct manager, ch); in mgr_ctrl()
1277 ret = create_teimgr(mgr, arg); in mgr_ctrl()
1280 ret = free_teimanager(mgr); in mgr_ctrl()
1283 ret = ctrl_teimanager(mgr, arg); in mgr_ctrl()
1286 ret = check_data(mgr, arg); in mgr_ctrl()
1295 struct manager *mgr = container_of(ch, struct manager, bcast); in mgr_bcast() local
1302 read_lock_irqsave(&mgr->lock, flags); in mgr_bcast()
1303 list_for_each_entry(l2, &mgr->layer2, list) { in mgr_bcast()
1306 if (list_is_last(&l2->list, &mgr->layer2)) { in mgr_bcast()
1339 read_unlock_irqrestore(&mgr->lock, flags); in mgr_bcast()
1357 struct manager *mgr; in create_teimanager() local
1359 mgr = kzalloc(sizeof(struct manager), GFP_KERNEL); in create_teimanager()
1360 if (!mgr) in create_teimanager()
1362 INIT_LIST_HEAD(&mgr->layer2); in create_teimanager()
1363 rwlock_init(&mgr->lock); in create_teimanager()
1364 skb_queue_head_init(&mgr->sendq); in create_teimanager()
1365 mgr->nextid = 1; in create_teimanager()
1366 mgr->lastid = MISDN_ID_NONE; in create_teimanager()
1367 mgr->ch.send = mgr_send; in create_teimanager()
1368 mgr->ch.ctrl = mgr_ctrl; in create_teimanager()
1369 mgr->ch.st = dev->D.st; in create_teimanager()
1370 set_channel_address(&mgr->ch, TEI_SAPI, GROUP_TEI); in create_teimanager()
1371 add_layer2(&mgr->ch, dev->D.st); in create_teimanager()
1372 mgr->bcast.send = mgr_bcast; in create_teimanager()
1373 mgr->bcast.ctrl = mgr_bcast_ctrl; in create_teimanager()
1374 mgr->bcast.st = dev->D.st; in create_teimanager()
1375 set_channel_address(&mgr->bcast, 0, GROUP_TEI); in create_teimanager()
1376 add_layer2(&mgr->bcast, dev->D.st); in create_teimanager()
1377 mgr->deact.debug = *debug & DEBUG_MANAGER; in create_teimanager()
1378 mgr->deact.userdata = mgr; in create_teimanager()
1379 mgr->deact.printdebug = da_debug; in create_teimanager()
1380 mgr->deact.fsm = &deactfsm; in create_teimanager()
1381 mgr->deact.state = ST_L1_DEACT; in create_teimanager()
1382 mISDN_FsmInitTimer(&mgr->deact, &mgr->datimer); in create_teimanager()
1383 dev->teimgr = &mgr->ch; in create_teimanager()