Lines Matching refs:mp

141 static int capiminor_add_ack(struct capiminor *mp, u16 datahandle)  in capiminor_add_ack()  argument
152 spin_lock_bh(&mp->ackqlock); in capiminor_add_ack()
153 list_add_tail(&n->list, &mp->ackqueue); in capiminor_add_ack()
154 mp->nack++; in capiminor_add_ack()
155 spin_unlock_bh(&mp->ackqlock); in capiminor_add_ack()
159 static int capiminor_del_ack(struct capiminor *mp, u16 datahandle) in capiminor_del_ack() argument
163 spin_lock_bh(&mp->ackqlock); in capiminor_del_ack()
164 list_for_each_entry_safe(p, tmp, &mp->ackqueue, list) { in capiminor_del_ack()
167 mp->nack--; in capiminor_del_ack()
168 spin_unlock_bh(&mp->ackqlock); in capiminor_del_ack()
173 spin_unlock_bh(&mp->ackqlock); in capiminor_del_ack()
177 static void capiminor_del_all_ack(struct capiminor *mp) in capiminor_del_all_ack() argument
181 list_for_each_entry_safe(p, tmp, &mp->ackqueue, list) { in capiminor_del_all_ack()
184 mp->nack--; in capiminor_del_all_ack()
193 struct capiminor *mp = container_of(port, struct capiminor, port); in capiminor_destroy() local
195 kfree_skb(mp->outskb); in capiminor_destroy()
196 skb_queue_purge(&mp->inqueue); in capiminor_destroy()
197 skb_queue_purge(&mp->outqueue); in capiminor_destroy()
198 capiminor_del_all_ack(mp); in capiminor_destroy()
199 kfree(mp); in capiminor_destroy()
208 struct capiminor *mp; in capiminor_alloc() local
212 mp = kzalloc(sizeof(*mp), GFP_KERNEL); in capiminor_alloc()
213 if (!mp) { in capiminor_alloc()
218 mp->ap = ap; in capiminor_alloc()
219 mp->ncci = ncci; in capiminor_alloc()
220 INIT_LIST_HEAD(&mp->ackqueue); in capiminor_alloc()
221 spin_lock_init(&mp->ackqlock); in capiminor_alloc()
223 skb_queue_head_init(&mp->inqueue); in capiminor_alloc()
224 skb_queue_head_init(&mp->outqueue); in capiminor_alloc()
225 spin_lock_init(&mp->outlock); in capiminor_alloc()
227 tty_port_init(&mp->port); in capiminor_alloc()
228 mp->port.ops = &capiminor_port_ops; in capiminor_alloc()
234 capiminors[minor] = mp; in capiminor_alloc()
244 mp->minor = minor; in capiminor_alloc()
246 dev = tty_port_register_device(&mp->port, capinc_tty_driver, minor, in capiminor_alloc()
251 return mp; in capiminor_alloc()
259 tty_port_put(&mp->port); in capiminor_alloc()
265 struct capiminor *mp; in capiminor_get() local
268 mp = capiminors[minor]; in capiminor_get()
269 if (mp) in capiminor_get()
270 tty_port_get(&mp->port); in capiminor_get()
273 return mp; in capiminor_get()
276 static inline void capiminor_put(struct capiminor *mp) in capiminor_put() argument
278 tty_port_put(&mp->port); in capiminor_put()
281 static void capiminor_free(struct capiminor *mp) in capiminor_free() argument
283 tty_unregister_device(capinc_tty_driver, mp->minor); in capiminor_free()
286 capiminors[mp->minor] = NULL; in capiminor_free()
289 capiminor_put(mp); in capiminor_free()
302 struct capiminor *mp = np->minorp; in capincci_free_minor() local
305 if (mp) { in capincci_free_minor()
306 tty = tty_port_tty_get(&mp->port); in capincci_free_minor()
312 capiminor_free(mp); in capincci_free_minor()
318 struct capiminor *mp = np->minorp; in capincci_minor_opencount() local
322 if (mp) { in capincci_minor_opencount()
323 tty = tty_port_tty_get(&mp->port); in capincci_minor_opencount()
383 gen_data_b3_resp_for(struct capiminor *mp, struct sk_buff *skb) in gen_data_b3_resp_for() argument
391 capimsg_setu16(s, 2, mp->ap->applid); in gen_data_b3_resp_for()
394 capimsg_setu16(s, 6, atomic_inc_return(&mp->msgid)); in gen_data_b3_resp_for()
395 capimsg_setu32(s, 8, mp->ncci); in gen_data_b3_resp_for()
401 static int handle_recv_skb(struct capiminor *mp, struct sk_buff *skb) in handle_recv_skb() argument
410 tty = tty_port_tty_get(&mp->port); in handle_recv_skb()
429 if (mp->ttyinstop) { in handle_recv_skb()
439 nskb = gen_data_b3_resp_for(mp, skb); in handle_recv_skb()
447 errcode = capi20_put_message(mp->ap, nskb); in handle_recv_skb()
475 static void handle_minor_recv(struct capiminor *mp) in handle_minor_recv() argument
479 while ((skb = skb_dequeue(&mp->inqueue)) != NULL) in handle_minor_recv()
480 if (handle_recv_skb(mp, skb) < 0) { in handle_minor_recv()
481 skb_queue_head(&mp->inqueue, skb); in handle_minor_recv()
486 static void handle_minor_send(struct capiminor *mp) in handle_minor_send() argument
494 tty = tty_port_tty_get(&mp->port); in handle_minor_send()
498 if (mp->ttyoutstop) { in handle_minor_send()
505 spin_lock_bh(&mp->outlock); in handle_minor_send()
506 skb = __skb_dequeue(&mp->outqueue); in handle_minor_send()
508 spin_unlock_bh(&mp->outlock); in handle_minor_send()
512 mp->outbytes -= len; in handle_minor_send()
513 spin_unlock_bh(&mp->outlock); in handle_minor_send()
515 datahandle = atomic_inc_return(&mp->datahandle); in handle_minor_send()
519 capimsg_setu16(skb->data, 2, mp->ap->applid); in handle_minor_send()
522 capimsg_setu16(skb->data, 6, atomic_inc_return(&mp->msgid)); in handle_minor_send()
523 capimsg_setu32(skb->data, 8, mp->ncci); /* NCCI */ in handle_minor_send()
529 if (capiminor_add_ack(mp, datahandle) < 0) { in handle_minor_send()
532 spin_lock_bh(&mp->outlock); in handle_minor_send()
533 __skb_queue_head(&mp->outqueue, skb); in handle_minor_send()
534 mp->outbytes += len; in handle_minor_send()
535 spin_unlock_bh(&mp->outlock); in handle_minor_send()
539 errcode = capi20_put_message(mp->ap, skb); in handle_minor_send()
545 capiminor_del_ack(mp, datahandle); in handle_minor_send()
550 spin_lock_bh(&mp->outlock); in handle_minor_send()
551 __skb_queue_head(&mp->outqueue, skb); in handle_minor_send()
552 mp->outbytes += len; in handle_minor_send()
553 spin_unlock_bh(&mp->outlock); in handle_minor_send()
572 struct capiminor *mp; in capi_recv_message() local
607 mp = np->minorp; in capi_recv_message()
608 if (!mp) { in capi_recv_message()
617 skb_queue_tail(&mp->inqueue, skb); in capi_recv_message()
619 handle_minor_recv(mp); in capi_recv_message()
628 capiminor_del_ack(mp, datahandle); in capi_recv_message()
629 tty_port_tty_wakeup(&mp->port); in capi_recv_message()
630 handle_minor_send(mp); in capi_recv_message()
908 struct capiminor *mp; in capi_ioctl() local
918 mp = nccip->minorp; in capi_ioctl()
919 if (mp) in capi_ioctl()
920 unit = mp->minor; in capi_ioctl()
1000 struct capiminor *mp = capiminor_get(tty->index); in capinc_tty_install() local
1004 tty->driver_data = mp; in capinc_tty_install()
1006 capiminor_put(mp); in capinc_tty_install()
1012 struct capiminor *mp = tty->driver_data; in capinc_tty_cleanup() local
1014 capiminor_put(mp); in capinc_tty_cleanup()
1019 struct capiminor *mp = tty->driver_data; in capinc_tty_open() local
1022 err = tty_port_open(&mp->port, tty, filp); in capinc_tty_open()
1026 handle_minor_recv(mp); in capinc_tty_open()
1032 struct capiminor *mp = tty->driver_data; in capinc_tty_close() local
1034 tty_port_close(&mp->port, tty, filp); in capinc_tty_close()
1040 struct capiminor *mp = tty->driver_data; in capinc_tty_write() local
1045 spin_lock_bh(&mp->outlock); in capinc_tty_write()
1046 skb = mp->outskb; in capinc_tty_write()
1048 mp->outskb = NULL; in capinc_tty_write()
1049 __skb_queue_tail(&mp->outqueue, skb); in capinc_tty_write()
1050 mp->outbytes += skb->len; in capinc_tty_write()
1056 spin_unlock_bh(&mp->outlock); in capinc_tty_write()
1063 __skb_queue_tail(&mp->outqueue, skb); in capinc_tty_write()
1064 mp->outbytes += skb->len; in capinc_tty_write()
1065 spin_unlock_bh(&mp->outlock); in capinc_tty_write()
1067 handle_minor_send(mp); in capinc_tty_write()
1074 struct capiminor *mp = tty->driver_data; in capinc_tty_put_char() local
1081 spin_lock_bh(&mp->outlock); in capinc_tty_put_char()
1082 skb = mp->outskb; in capinc_tty_put_char()
1088 mp->outskb = NULL; in capinc_tty_put_char()
1089 __skb_queue_tail(&mp->outqueue, skb); in capinc_tty_put_char()
1090 mp->outbytes += skb->len; in capinc_tty_put_char()
1098 mp->outskb = skb; in capinc_tty_put_char()
1105 spin_unlock_bh(&mp->outlock); in capinc_tty_put_char()
1108 handle_minor_send(mp); in capinc_tty_put_char()
1115 struct capiminor *mp = tty->driver_data; in capinc_tty_flush_chars() local
1120 spin_lock_bh(&mp->outlock); in capinc_tty_flush_chars()
1121 skb = mp->outskb; in capinc_tty_flush_chars()
1123 mp->outskb = NULL; in capinc_tty_flush_chars()
1124 __skb_queue_tail(&mp->outqueue, skb); in capinc_tty_flush_chars()
1125 mp->outbytes += skb->len; in capinc_tty_flush_chars()
1126 spin_unlock_bh(&mp->outlock); in capinc_tty_flush_chars()
1128 handle_minor_send(mp); in capinc_tty_flush_chars()
1130 spin_unlock_bh(&mp->outlock); in capinc_tty_flush_chars()
1132 handle_minor_recv(mp); in capinc_tty_flush_chars()
1137 struct capiminor *mp = tty->driver_data; in capinc_tty_write_room() local
1140 room = CAPINC_MAX_SENDQUEUE-skb_queue_len(&mp->outqueue); in capinc_tty_write_room()
1148 struct capiminor *mp = tty->driver_data; in capinc_tty_chars_in_buffer() local
1151 mp->outbytes, mp->nack, in capinc_tty_chars_in_buffer()
1152 skb_queue_len(&mp->outqueue), in capinc_tty_chars_in_buffer()
1153 skb_queue_len(&mp->inqueue)); in capinc_tty_chars_in_buffer()
1154 return mp->outbytes; in capinc_tty_chars_in_buffer()
1170 struct capiminor *mp = tty->driver_data; in capinc_tty_throttle() local
1172 mp->ttyinstop = 1; in capinc_tty_throttle()
1177 struct capiminor *mp = tty->driver_data; in capinc_tty_unthrottle() local
1180 mp->ttyinstop = 0; in capinc_tty_unthrottle()
1181 handle_minor_recv(mp); in capinc_tty_unthrottle()
1186 struct capiminor *mp = tty->driver_data; in capinc_tty_stop() local
1189 mp->ttyoutstop = 1; in capinc_tty_stop()
1194 struct capiminor *mp = tty->driver_data; in capinc_tty_start() local
1197 mp->ttyoutstop = 0; in capinc_tty_start()
1198 handle_minor_send(mp); in capinc_tty_start()
1203 struct capiminor *mp = tty->driver_data; in capinc_tty_hangup() local
1206 tty_port_hangup(&mp->port); in capinc_tty_hangup()