Lines Matching defs:mgr
72 struct manager *mgr = fi->userdata;
84 printk(KERN_DEBUG "mgr(%d): %pV\n", mgr->ch.st->dev->id, &vaf);
92 struct manager *mgr = fi->userdata;
95 mISDN_FsmDelTimer(&mgr->datimer, 1);
108 struct manager *mgr = fi->userdata;
112 read_lock_irqsave(&mgr->lock, flags);
113 list_for_each_entry(l2, &mgr->layer2, list) {
116 read_unlock_irqrestore(&mgr->lock, flags);
120 read_unlock_irqrestore(&mgr->lock, flags);
122 if (!test_bit(OPTION_L1_HOLD, &mgr->options)) {
123 mISDN_FsmAddTimer(&mgr->datimer, DATIMER_VAL, EV_DATIMER,
132 struct manager *mgr = fi->userdata;
135 if (!test_bit(OPTION_L1_HOLD, &mgr->options)) {
136 mISDN_FsmDelTimer(&mgr->datimer, 2);
137 mISDN_FsmAddTimer(&mgr->datimer, DATIMER_VAL, EV_DATIMER,
145 struct manager *mgr = fi->userdata;
150 read_lock_irqsave(&mgr->lock, flags);
151 list_for_each_entry(l2, &mgr->layer2, list) {
154 read_unlock_irqrestore(&mgr->lock, flags);
159 read_unlock_irqrestore(&mgr->lock, flags);
162 _queue_data(&mgr->ch, PH_DEACTIVATE_REQ, MISDN_ID_ANY, 0, NULL,
242 get_free_id(struct manager *mgr)
248 list_for_each_entry(l2, &mgr->layer2, list) {
266 get_free_tei(struct manager *mgr)
272 list_for_each_entry(l2, &mgr->layer2, list) {
293 teiup_create(struct manager *mgr, u_int prim, int len, void *arg)
304 hh->id = (mgr->ch.nr << 16) | mgr->ch.addr;
307 err = mgr->up->send(mgr->up, skb);
315 new_id(struct manager *mgr)
319 id = mgr->nextid++;
321 mgr->nextid = 1;
329 do_send(struct manager *mgr)
331 if (!test_bit(MGR_PH_ACTIVE, &mgr->options))
334 if (!test_and_set_bit(MGR_PH_NOTREADY, &mgr->options)) {
335 struct sk_buff *skb = skb_dequeue(&mgr->sendq);
338 test_and_clear_bit(MGR_PH_NOTREADY, &mgr->options);
341 mgr->lastid = mISDN_HEAD_ID(skb);
342 mISDN_FsmEvent(&mgr->deact, EV_UI, NULL);
343 if (mgr->ch.recv(mgr->ch.peer, skb)) {
345 test_and_clear_bit(MGR_PH_NOTREADY, &mgr->options);
346 mgr->lastid = MISDN_ID_NONE;
352 do_ack(struct manager *mgr, u_int id)
354 if (test_bit(MGR_PH_NOTREADY, &mgr->options)) {
355 if (id == mgr->lastid) {
356 if (test_bit(MGR_PH_ACTIVE, &mgr->options)) {
359 skb = skb_dequeue(&mgr->sendq);
361 mgr->lastid = mISDN_HEAD_ID(skb);
362 if (!mgr->ch.recv(mgr->ch.peer, skb))
367 mgr->lastid = MISDN_ID_NONE;
368 test_and_clear_bit(MGR_PH_NOTREADY, &mgr->options);
374 mgr_send_down(struct manager *mgr, struct sk_buff *skb)
376 skb_queue_tail(&mgr->sendq, skb);
377 if (!test_bit(MGR_PH_ACTIVE, &mgr->options)) {
378 _queue_data(&mgr->ch, PH_ACTIVATE_REQ, MISDN_ID_ANY, 0,
381 do_send(mgr);
386 dl_unit_data(struct manager *mgr, struct sk_buff *skb)
388 if (!test_bit(MGR_OPT_NETWORK, &mgr->options)) /* only net send UI */
390 if (!test_bit(MGR_PH_ACTIVE, &mgr->options))
391 _queue_data(&mgr->ch, PH_ACTIVATE_REQ, MISDN_ID_ANY, 0,
398 mISDN_HEAD_ID(skb) = new_id(mgr);
399 skb_queue_tail(&mgr->sendq, skb);
400 do_send(mgr);
414 findtei(struct manager *mgr, int tei)
419 read_lock_irqsave(&mgr->lock, flags);
420 list_for_each_entry(l2, &mgr->layer2, list) {
427 read_unlock_irqrestore(&mgr->lock, flags);
432 put_tei_msg(struct manager *mgr, u_char m_id, unsigned int ri, int tei)
438 if (test_bit(MGR_OPT_NETWORK, &mgr->options))
447 skb = _alloc_mISDN_skb(PH_DATA_REQ, new_id(mgr), 8, bp, GFP_ATOMIC);
452 mgr_send_down(mgr, skb);
470 put_tei_msg(tm->mgr, ID_REQUEST, tm->ri, GROUP_TEI);
491 l2 = findtei(tm->mgr, tei);
520 l2 = findtei(tm->mgr, tei);
560 put_tei_msg(tm->mgr, ID_CHK_RES, random_ri(), tm->l2->tei);
590 put_tei_msg(tm->mgr, ID_VERIFY, 0, tm->l2->tei);
606 put_tei_msg(tm->mgr, ID_REQUEST, tm->ri, GROUP_TEI);
625 put_tei_msg(tm->mgr, ID_VERIFY, 0, tm->l2->tei);
653 put_tei_msg(l2->tm->mgr, ID_REMOVE, 0, l2->tei);
675 put_tei_msg(tm->mgr, ID_ASSIGNED, tm->ri, tm->l2->tei);
688 put_tei_msg(tm->mgr, ID_CHK_REQ, 0, tm->l2->tei);
741 put_tei_msg(tm->mgr, ID_CHK_REQ, 0, tm->l2->tei);
782 create_new_tei(struct manager *mgr, int tei, int sapi)
790 if (!mgr->up)
794 if (mgr->ch.st->dev->Dprotocols & ((1 << ISDN_P_TE_E1) |
801 l2 = create_l2(mgr->up, ISDN_P_LAPD_NT, opt, tei, sapi);
812 l2->tm->mgr = mgr;
821 write_lock_irqsave(&mgr->lock, flags);
822 id = get_free_id(mgr);
823 list_add_tail(&l2->list, &mgr->layer2);
824 write_unlock_irqrestore(&mgr->lock, flags);
831 __add_layer2(&l2->ch, mgr->ch.st);
832 l2->ch.recv = mgr->ch.recv;
833 l2->ch.peer = mgr->ch.peer;
836 rq.adr.dev = mgr->ch.st->dev->id;
837 id = mgr->ch.st->own.ctrl(&mgr->ch.st->own, OPEN_CHANNEL, &rq);
848 new_tei_req(struct manager *mgr, u_char *dp)
855 if (!mgr->up)
862 tei = get_free_tei(mgr);
867 l2 = create_new_tei(mgr, tei, CTRL_SAPI);
874 put_tei_msg(mgr, ID_DENIED, ri, GROUP_TEI);
878 ph_data_ind(struct manager *mgr, struct sk_buff *skb)
886 printk(KERN_DEBUG "%s: short mgr frame %d/8\n",
908 if (!test_bit(MGR_OPT_NETWORK, &mgr->options))
915 if (test_bit(MGR_OPT_NETWORK, &mgr->options))
923 new_tei_req(mgr, &skb->data[4]);
926 list_for_each_entry_safe(l2, nl2, &mgr->layer2, list) {
947 if (test_bit(MGR_OPT_NETWORK, &tm->mgr->options))
949 if (test_bit(MGR_OPT_USER, &tm->mgr->options))
953 if (test_bit(MGR_OPT_NETWORK, &tm->mgr->options))
954 mISDN_FsmEvent(&tm->mgr->deact, EV_ACTIVATE, NULL);
957 if (test_bit(MGR_OPT_NETWORK, &tm->mgr->options))
958 mISDN_FsmEvent(&tm->mgr->deact, EV_DEACTIVATE, NULL);
961 if (test_bit(MGR_OPT_NETWORK, &tm->mgr->options))
962 mISDN_FsmEvent(&tm->mgr->deact, EV_UI, NULL);
975 write_lock_irqsave(&tm->mgr->lock, flags);
977 write_unlock_irqrestore(&tm->mgr->lock, flags);
983 create_teimgr(struct manager *mgr, struct channel_req *crq)
993 __func__, dev_name(&mgr->ch.st->dev->dev),
1002 if (test_bit(MGR_OPT_NETWORK, &mgr->options)) {
1007 if (mgr->up) {
1013 } else if (test_bit(MGR_OPT_USER, &mgr->options)) {
1020 test_and_set_bit(MGR_OPT_NETWORK, &mgr->options);
1022 test_and_set_bit(MGR_OPT_USER, &mgr->options);
1025 if (mgr->ch.st->dev->Dprotocols
1029 mgr->up = crq->ch;
1031 teiup_create(mgr, DL_INFORMATION_IND, sizeof(id), &id);
1032 if (test_bit(MGR_PH_ACTIVE, &mgr->options))
1033 teiup_create(mgr, PH_ACTIVATE_IND, 0, NULL);
1035 if (!list_empty(&mgr->layer2)) {
1036 read_lock_irqsave(&mgr->lock, flags);
1037 list_for_each_entry(l2, &mgr->layer2, list) {
1038 l2->up = mgr->up;
1041 read_unlock_irqrestore(&mgr->lock, flags);
1055 l2->tm->mgr = mgr;
1078 write_lock_irqsave(&mgr->lock, flags);
1079 id = get_free_id(mgr);
1080 list_add_tail(&l2->list, &mgr->layer2);
1081 write_unlock_irqrestore(&mgr->lock, flags);
1087 id = mgr->ch.st->own.ctrl(&mgr->ch.st->own, OPEN_CHANNEL,
1098 struct manager *mgr;
1102 mgr = container_of(ch, struct manager, ch);
1108 mISDN_FsmEvent(&mgr->deact, EV_UI, NULL);
1109 ret = ph_data_ind(mgr, skb);
1112 do_ack(mgr, hh->id);
1116 test_and_set_bit(MGR_PH_ACTIVE, &mgr->options);
1117 if (mgr->up)
1118 teiup_create(mgr, PH_ACTIVATE_IND, 0, NULL);
1119 mISDN_FsmEvent(&mgr->deact, EV_ACTIVATE_IND, NULL);
1120 do_send(mgr);
1124 test_and_clear_bit(MGR_PH_ACTIVE, &mgr->options);
1125 if (mgr->up)
1126 teiup_create(mgr, PH_DEACTIVATE_IND, 0, NULL);
1127 mISDN_FsmEvent(&mgr->deact, EV_DEACTIVATE_IND, NULL);
1131 return dl_unit_data(mgr, skb);
1139 free_teimanager(struct manager *mgr)
1143 test_and_clear_bit(OPTION_L1_HOLD, &mgr->options);
1144 if (test_bit(MGR_OPT_NETWORK, &mgr->options)) {
1146 mgr->up = NULL;
1147 if (test_bit(OPTION_L2_CLEANUP, &mgr->options)) {
1148 list_for_each_entry_safe(l2, nl2, &mgr->layer2, list) {
1149 put_tei_msg(mgr, ID_REMOVE, 0, l2->tei);
1150 mutex_lock(&mgr->ch.st->lmutex);
1152 mutex_unlock(&mgr->ch.st->lmutex);
1155 test_and_clear_bit(MGR_OPT_NETWORK, &mgr->options);
1157 list_for_each_entry_safe(l2, nl2, &mgr->layer2, list) {
1162 if (test_bit(MGR_OPT_USER, &mgr->options)) {
1163 if (list_empty(&mgr->layer2))
1164 test_and_clear_bit(MGR_OPT_USER, &mgr->options);
1166 mgr->ch.st->dev->D.ctrl(&mgr->ch.st->dev->D, CLOSE_CHANNEL, NULL);
1171 ctrl_teimanager(struct manager *mgr, void *arg)
1179 test_and_set_bit(OPTION_L2_CLEANUP, &mgr->options);
1181 test_and_clear_bit(OPTION_L2_CLEANUP, &mgr->options);
1185 test_and_set_bit(OPTION_L1_HOLD, &mgr->options);
1187 test_and_clear_bit(OPTION_L1_HOLD, &mgr->options);
1197 check_data(struct manager *mgr, struct sk_buff *skb)
1206 if (test_bit(MGR_OPT_USER, &mgr->options))
1226 l2 = create_new_tei(mgr, tei, sapi);
1240 struct manager *mgr;
1243 mgr = container_of(ch, struct manager, ch);
1245 list_for_each_entry_safe(l2, nl2, &mgr->layer2, list) {
1246 mutex_lock(&mgr->ch.st->lmutex);
1248 mutex_unlock(&mgr->ch.st->lmutex);
1251 list_del(&mgr->ch.list);
1252 list_del(&mgr->bcast.list);
1253 skb_queue_purge(&mgr->sendq);
1254 kfree(mgr);
1260 struct manager *mgr;
1263 mgr = container_of(ch, struct manager, ch);
1268 ret = create_teimgr(mgr, arg);
1271 ret = free_teimanager(mgr);
1274 ret = ctrl_teimanager(mgr, arg);
1277 ret = check_data(mgr, arg);
1286 struct manager *mgr = container_of(ch, struct manager, bcast);
1293 read_lock_irqsave(&mgr->lock, flags);
1294 list_for_each_entry(l2, &mgr->layer2, list) {
1297 if (list_is_last(&l2->list, &mgr->layer2)) {
1330 read_unlock_irqrestore(&mgr->lock, flags);
1346 struct manager *mgr;
1348 mgr = kzalloc(sizeof(struct manager), GFP_KERNEL);
1349 if (!mgr)
1351 INIT_LIST_HEAD(&mgr->layer2);
1352 rwlock_init(&mgr->lock);
1353 skb_queue_head_init(&mgr->sendq);
1354 mgr->nextid = 1;
1355 mgr->lastid = MISDN_ID_NONE;
1356 mgr->ch.send = mgr_send;
1357 mgr->ch.ctrl = mgr_ctrl;
1358 mgr->ch.st = dev->D.st;
1359 set_channel_address(&mgr->ch, TEI_SAPI, GROUP_TEI);
1360 add_layer2(&mgr->ch, dev->D.st);
1361 mgr->bcast.send = mgr_bcast;
1362 mgr->bcast.ctrl = mgr_bcast_ctrl;
1363 mgr->bcast.st = dev->D.st;
1364 set_channel_address(&mgr->bcast, 0, GROUP_TEI);
1365 add_layer2(&mgr->bcast, dev->D.st);
1366 mgr->deact.debug = *debug & DEBUG_MANAGER;
1367 mgr->deact.userdata = mgr;
1368 mgr->deact.printdebug = da_debug;
1369 mgr->deact.fsm = &deactfsm;
1370 mgr->deact.state = ST_L1_DEACT;
1371 mISDN_FsmInitTimer(&mgr->deact, &mgr->datimer);
1372 dev->teimgr = &mgr->ch;