Searched refs:session (Results 1 - 200 of 449) sorted by relevance

123

/linux-4.1.27/net/bluetooth/hidp/
H A Dcore.c71 static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo *ci) hidp_copy_session() argument
75 bacpy(&ci->bdaddr, &session->bdaddr); hidp_copy_session()
77 ci->flags = session->flags & valid_flags; hidp_copy_session()
80 if (session->input) { hidp_copy_session()
81 ci->vendor = session->input->id.vendor; hidp_copy_session()
82 ci->product = session->input->id.product; hidp_copy_session()
83 ci->version = session->input->id.version; hidp_copy_session()
84 if (session->input->name) hidp_copy_session()
85 strlcpy(ci->name, session->input->name, 128); hidp_copy_session()
88 } else if (session->hid) { hidp_copy_session()
89 ci->vendor = session->hid->vendor; hidp_copy_session()
90 ci->product = session->hid->product; hidp_copy_session()
91 ci->version = session->hid->version; hidp_copy_session()
92 strlcpy(ci->name, session->hid->name, 128); hidp_copy_session()
96 /* assemble skb, queue message on @transmit and wake up the session thread */ hidp_send_message()
97 static int hidp_send_message(struct hidp_session *session, struct socket *sock, hidp_send_message() argument
104 BT_DBG("session %p data %p size %d", session, data, size); hidp_send_message()
106 if (atomic_read(&session->terminate)) hidp_send_message()
125 static int hidp_send_ctrl_message(struct hidp_session *session, hidp_send_ctrl_message() argument
129 return hidp_send_message(session, session->ctrl_sock, hidp_send_ctrl_message()
130 &session->ctrl_transmit, hdr, data, size); hidp_send_ctrl_message()
133 static int hidp_send_intr_message(struct hidp_session *session, hidp_send_intr_message() argument
137 return hidp_send_message(session, session->intr_sock, hidp_send_intr_message()
138 &session->intr_transmit, hdr, data, size); hidp_send_intr_message()
144 struct hidp_session *session = input_get_drvdata(dev); hidp_input_event() local
148 BT_DBG("session %p type %d code %d value %d", hidp_input_event()
149 session, type, code, value); hidp_input_event()
160 if (session->leds == newleds) hidp_input_event()
163 session->leds = newleds; hidp_input_event()
169 return hidp_send_intr_message(session, hdr, data, 2); hidp_input_event()
172 static void hidp_input_report(struct hidp_session *session, struct sk_buff *skb) hidp_input_report() argument
174 struct input_dev *dev = session->input; hidp_input_report()
175 unsigned char *keys = session->keys; hidp_input_report()
232 struct hidp_session *session = hid->driver_data; hidp_get_raw_report() local
238 if (atomic_read(&session->terminate)) hidp_get_raw_report()
255 if (mutex_lock_interruptible(&session->report_mutex)) hidp_get_raw_report()
259 session->waiting_report_type = report_type & HIDP_DATA_RTYPE_MASK; hidp_get_raw_report()
260 session->waiting_report_number = numbered_reports ? report_number : -1; hidp_get_raw_report()
261 set_bit(HIDP_WAITING_FOR_RETURN, &session->flags); hidp_get_raw_report()
263 ret = hidp_send_ctrl_message(session, report_type, data, 1); hidp_get_raw_report()
268 gets put in session->report_return. */ hidp_get_raw_report()
269 while (test_bit(HIDP_WAITING_FOR_RETURN, &session->flags) && hidp_get_raw_report()
270 !atomic_read(&session->terminate)) { hidp_get_raw_report()
273 res = wait_event_interruptible_timeout(session->report_queue, hidp_get_raw_report()
274 !test_bit(HIDP_WAITING_FOR_RETURN, &session->flags) hidp_get_raw_report()
275 || atomic_read(&session->terminate), hidp_get_raw_report()
289 skb = session->report_return; hidp_get_raw_report()
295 session->report_return = NULL; hidp_get_raw_report()
301 clear_bit(HIDP_WAITING_FOR_RETURN, &session->flags); hidp_get_raw_report()
302 mutex_unlock(&session->report_mutex); hidp_get_raw_report()
307 clear_bit(HIDP_WAITING_FOR_RETURN, &session->flags); hidp_get_raw_report()
308 mutex_unlock(&session->report_mutex); hidp_get_raw_report()
316 struct hidp_session *session = hid->driver_data; hidp_set_raw_report() local
333 if (mutex_lock_interruptible(&session->report_mutex)) hidp_set_raw_report()
338 set_bit(HIDP_WAITING_FOR_SEND_ACK, &session->flags); hidp_set_raw_report()
339 ret = hidp_send_ctrl_message(session, report_type, data, count); hidp_set_raw_report()
344 while (test_bit(HIDP_WAITING_FOR_SEND_ACK, &session->flags) && hidp_set_raw_report()
345 !atomic_read(&session->terminate)) { hidp_set_raw_report()
348 res = wait_event_interruptible_timeout(session->report_queue, hidp_set_raw_report()
349 !test_bit(HIDP_WAITING_FOR_SEND_ACK, &session->flags) hidp_set_raw_report()
350 || atomic_read(&session->terminate), hidp_set_raw_report()
364 if (!session->output_report_success) { hidp_set_raw_report()
372 clear_bit(HIDP_WAITING_FOR_SEND_ACK, &session->flags); hidp_set_raw_report()
373 mutex_unlock(&session->report_mutex); hidp_set_raw_report()
379 struct hidp_session *session = hid->driver_data; hidp_output_report() local
381 return hidp_send_intr_message(session, hidp_output_report()
402 struct hidp_session *session = (struct hidp_session *) arg; hidp_idle_timeout() local
413 session->intr_sock->sk->sk_err = EUNATCH; hidp_idle_timeout()
414 session->ctrl_sock->sk->sk_err = EUNATCH; hidp_idle_timeout()
415 wake_up_interruptible(sk_sleep(session->intr_sock->sk)); hidp_idle_timeout()
416 wake_up_interruptible(sk_sleep(session->ctrl_sock->sk)); hidp_idle_timeout()
418 hidp_session_terminate(session); hidp_idle_timeout()
421 static void hidp_set_timer(struct hidp_session *session) hidp_set_timer() argument
423 if (session->idle_to > 0) hidp_set_timer()
424 mod_timer(&session->timer, jiffies + HZ * session->idle_to); hidp_set_timer()
427 static void hidp_del_timer(struct hidp_session *session) hidp_del_timer() argument
429 if (session->idle_to > 0) hidp_del_timer()
430 del_timer(&session->timer); hidp_del_timer()
433 static void hidp_process_report(struct hidp_session *session, hidp_process_report() argument
439 memcpy(session->input_buf, data, len); hidp_process_report()
440 hid_input_report(session->hid, type, session->input_buf, len, intr); hidp_process_report()
443 static void hidp_process_handshake(struct hidp_session *session, hidp_process_handshake() argument
446 BT_DBG("session %p param 0x%02x", session, param); hidp_process_handshake()
447 session->output_report_success = 0; /* default condition */ hidp_process_handshake()
452 session->output_report_success = 1; hidp_process_handshake()
459 if (test_and_clear_bit(HIDP_WAITING_FOR_RETURN, &session->flags)) hidp_process_handshake()
460 wake_up_interruptible(&session->report_queue); hidp_process_handshake()
471 hidp_send_ctrl_message(session, hidp_process_handshake()
476 hidp_send_ctrl_message(session, hidp_process_handshake()
482 if (test_and_clear_bit(HIDP_WAITING_FOR_SEND_ACK, &session->flags)) hidp_process_handshake()
483 wake_up_interruptible(&session->report_queue); hidp_process_handshake()
486 static void hidp_process_hid_control(struct hidp_session *session, hidp_process_hid_control() argument
489 BT_DBG("session %p param 0x%02x", session, param); hidp_process_hid_control()
493 skb_queue_purge(&session->ctrl_transmit); hidp_process_hid_control()
494 skb_queue_purge(&session->intr_transmit); hidp_process_hid_control()
496 hidp_session_terminate(session); hidp_process_hid_control()
501 static int hidp_process_data(struct hidp_session *session, struct sk_buff *skb, hidp_process_data() argument
505 BT_DBG("session %p skb %p len %d param 0x%02x", session, skb, skb->len, param); hidp_process_data()
509 hidp_set_timer(session); hidp_process_data()
511 if (session->input) hidp_process_data()
512 hidp_input_report(session, skb); hidp_process_data()
514 if (session->hid) hidp_process_data()
515 hidp_process_report(session, HID_INPUT_REPORT, hidp_process_data()
525 hidp_send_ctrl_message(session, hidp_process_data()
529 if (test_bit(HIDP_WAITING_FOR_RETURN, &session->flags) && hidp_process_data()
530 param == session->waiting_report_type) { hidp_process_data()
531 if (session->waiting_report_number < 0 || hidp_process_data()
532 session->waiting_report_number == skb->data[0]) { hidp_process_data()
534 session->report_return = skb; hidp_process_data()
536 clear_bit(HIDP_WAITING_FOR_RETURN, &session->flags); hidp_process_data()
537 wake_up_interruptible(&session->report_queue); hidp_process_data()
544 static void hidp_recv_ctrl_frame(struct hidp_session *session, hidp_recv_ctrl_frame() argument
550 BT_DBG("session %p skb %p len %d", session, skb, skb->len); hidp_recv_ctrl_frame()
560 hidp_process_handshake(session, param); hidp_recv_ctrl_frame()
564 hidp_process_hid_control(session, param); hidp_recv_ctrl_frame()
568 free_skb = hidp_process_data(session, skb, param); hidp_recv_ctrl_frame()
572 hidp_send_ctrl_message(session, hidp_recv_ctrl_frame()
581 static void hidp_recv_intr_frame(struct hidp_session *session, hidp_recv_intr_frame() argument
586 BT_DBG("session %p skb %p len %d", session, skb, skb->len); hidp_recv_intr_frame()
592 hidp_set_timer(session); hidp_recv_intr_frame()
594 if (session->input) hidp_recv_intr_frame()
595 hidp_input_report(session, skb); hidp_recv_intr_frame()
597 if (session->hid) { hidp_recv_intr_frame()
598 hidp_process_report(session, HID_INPUT_REPORT, hidp_recv_intr_frame()
625 static void hidp_process_transmit(struct hidp_session *session, hidp_process_transmit() argument
632 BT_DBG("session %p", session); hidp_process_transmit()
640 hidp_session_terminate(session); hidp_process_transmit()
645 hidp_set_timer(session); hidp_process_transmit()
650 static int hidp_setup_input(struct hidp_session *session, hidp_setup_input() argument
660 session->input = input; hidp_setup_input()
662 input_set_drvdata(input, session); hidp_setup_input()
697 input->dev.parent = &session->conn->hcon->dev; hidp_setup_input()
715 struct hidp_session *session = hid->driver_data; hidp_parse() local
717 return hid_parse_report(session->hid, session->rd_data, hidp_parse()
718 session->rd_size); hidp_parse()
728 struct hidp_session *session = hid->driver_data; hidp_stop() local
730 skb_queue_purge(&session->ctrl_transmit); hidp_stop()
731 skb_queue_purge(&session->intr_transmit); hidp_stop()
748 static int hidp_setup_hid(struct hidp_session *session, hidp_setup_hid() argument
754 session->rd_data = memdup_user(req->rd_data, req->rd_size); hidp_setup_hid()
755 if (IS_ERR(session->rd_data)) hidp_setup_hid()
756 return PTR_ERR(session->rd_data); hidp_setup_hid()
758 session->rd_size = req->rd_size; hidp_setup_hid()
766 session->hid = hid; hidp_setup_hid()
768 hid->driver_data = session; hidp_setup_hid()
779 &l2cap_pi(session->ctrl_sock->sk)->chan->src); hidp_setup_hid()
785 &l2cap_pi(session->ctrl_sock->sk)->chan->dst); hidp_setup_hid()
787 hid->dev.parent = &session->conn->hcon->dev; hidp_setup_hid()
792 hid_destroy_device(session->hid); hidp_setup_hid()
793 session->hid = NULL; hidp_setup_hid()
800 kfree(session->rd_data); hidp_setup_hid()
801 session->rd_data = NULL; hidp_setup_hid()
806 /* initialize session devices */ hidp_session_dev_init()
807 static int hidp_session_dev_init(struct hidp_session *session, hidp_session_dev_init() argument
813 ret = hidp_setup_hid(session, req); hidp_session_dev_init()
818 if (!session->hid) { hidp_session_dev_init()
819 ret = hidp_setup_input(session, req); hidp_session_dev_init()
827 /* destroy session devices */ hidp_session_dev_destroy()
828 static void hidp_session_dev_destroy(struct hidp_session *session) hidp_session_dev_destroy() argument
830 if (session->hid) hidp_session_dev_destroy()
831 put_device(&session->hid->dev); hidp_session_dev_destroy()
832 else if (session->input) hidp_session_dev_destroy()
833 input_put_device(session->input); hidp_session_dev_destroy()
835 kfree(session->rd_data); hidp_session_dev_destroy()
836 session->rd_data = NULL; hidp_session_dev_destroy()
840 static int hidp_session_dev_add(struct hidp_session *session) hidp_session_dev_add() argument
849 if (session->hid) { hidp_session_dev_add()
850 ret = hid_add_device(session->hid); hidp_session_dev_add()
853 get_device(&session->hid->dev); hidp_session_dev_add()
854 } else if (session->input) { hidp_session_dev_add()
855 ret = input_register_device(session->input); hidp_session_dev_add()
858 input_get_device(session->input); hidp_session_dev_add()
865 static void hidp_session_dev_del(struct hidp_session *session) hidp_session_dev_del() argument
867 if (session->hid) hidp_session_dev_del()
868 hid_destroy_device(session->hid); hidp_session_dev_del()
869 else if (session->input) hidp_session_dev_del()
870 input_unregister_device(session->input); hidp_session_dev_del()
879 * successfully. This will then add the devices and increase session state
880 * on success, otherwise it will terminate the session thread.
884 struct hidp_session *session = container_of(work, hidp_session_dev_work() local
889 ret = hidp_session_dev_add(session); hidp_session_dev_work()
891 atomic_inc(&session->state); hidp_session_dev_work()
893 hidp_session_terminate(session); hidp_session_dev_work()
897 * Create new session object
898 * Allocate session object, initialize static fields, copy input data into the
900 * This returns 0 on success and puts a pointer to the new session object in
902 * The new session object has an initial ref-count of 1.
910 struct hidp_session *session; hidp_session_new() local
917 session = kzalloc(sizeof(*session), GFP_KERNEL); hidp_session_new()
918 if (!session) hidp_session_new()
922 kref_init(&session->ref); hidp_session_new()
923 atomic_set(&session->state, HIDP_SESSION_IDLING); hidp_session_new()
924 init_waitqueue_head(&session->state_queue); hidp_session_new()
925 session->flags = req->flags & BIT(HIDP_BLUETOOTH_VENDOR_ID); hidp_session_new()
928 bacpy(&session->bdaddr, bdaddr); hidp_session_new()
929 session->conn = l2cap_conn_get(conn); hidp_session_new()
930 session->user.probe = hidp_session_probe; hidp_session_new()
931 session->user.remove = hidp_session_remove; hidp_session_new()
932 session->ctrl_sock = ctrl_sock; hidp_session_new()
933 session->intr_sock = intr_sock; hidp_session_new()
934 skb_queue_head_init(&session->ctrl_transmit); hidp_session_new()
935 skb_queue_head_init(&session->intr_transmit); hidp_session_new()
936 session->ctrl_mtu = min_t(uint, l2cap_pi(ctrl)->chan->omtu, hidp_session_new()
938 session->intr_mtu = min_t(uint, l2cap_pi(intr)->chan->omtu, hidp_session_new()
940 session->idle_to = req->idle_to; hidp_session_new()
943 INIT_WORK(&session->dev_init, hidp_session_dev_work); hidp_session_new()
944 setup_timer(&session->timer, hidp_idle_timeout, hidp_session_new()
945 (unsigned long)session); hidp_session_new()
947 /* session data */ hidp_session_new()
948 mutex_init(&session->report_mutex); hidp_session_new()
949 init_waitqueue_head(&session->report_queue); hidp_session_new()
951 ret = hidp_session_dev_init(session, req); hidp_session_new()
955 get_file(session->intr_sock->file); hidp_session_new()
956 get_file(session->ctrl_sock->file); hidp_session_new()
957 *out = session; hidp_session_new()
961 l2cap_conn_put(session->conn); hidp_session_new()
962 kfree(session); hidp_session_new()
966 /* increase ref-count of the given session by one */ hidp_session_get()
967 static void hidp_session_get(struct hidp_session *session) hidp_session_get() argument
969 kref_get(&session->ref); hidp_session_get()
975 struct hidp_session *session = container_of(ref, struct hidp_session, session_free() local
978 hidp_session_dev_destroy(session); session_free()
979 skb_queue_purge(&session->ctrl_transmit); session_free()
980 skb_queue_purge(&session->intr_transmit); session_free()
981 fput(session->intr_sock->file); session_free()
982 fput(session->ctrl_sock->file); session_free()
983 l2cap_conn_put(session->conn); session_free()
984 kfree(session); session_free()
987 /* decrease ref-count of the given session by one */ hidp_session_put()
988 static void hidp_session_put(struct hidp_session *session) hidp_session_put() argument
990 kref_put(&session->ref, session_free); hidp_session_put()
994 * Search the list of active sessions for a session with target address
996 * you do not release this lock, the session objects cannot vanish and you can
997 * safely take a reference to the session yourself.
1001 struct hidp_session *session; __hidp_session_find() local
1003 list_for_each_entry(session, &hidp_session_list, list) { __hidp_session_find()
1004 if (!bacmp(bdaddr, &session->bdaddr)) __hidp_session_find()
1005 return session; __hidp_session_find()
1013 * reference of the returned session (if non-NULL) so you must drop this
1018 struct hidp_session *session; hidp_session_find() local
1022 session = __hidp_session_find(bdaddr); hidp_session_find()
1023 if (session) hidp_session_find()
1024 hidp_session_get(session); hidp_session_find()
1028 return session; hidp_session_find()
1032 * Start session synchronously
1033 * This starts a session thread and waits until initialization
1035 * If this returns 0 the session thread is up and running. You must call
1038 static int hidp_session_start_sync(struct hidp_session *session) hidp_session_start_sync() argument
1042 if (session->hid) { hidp_session_start_sync()
1043 vendor = session->hid->vendor; hidp_session_start_sync()
1044 product = session->hid->product; hidp_session_start_sync()
1045 } else if (session->input) { hidp_session_start_sync()
1046 vendor = session->input->id.vendor; hidp_session_start_sync()
1047 product = session->input->id.product; hidp_session_start_sync()
1053 session->task = kthread_run(hidp_session_thread, session, hidp_session_start_sync()
1055 if (IS_ERR(session->task)) hidp_session_start_sync()
1056 return PTR_ERR(session->task); hidp_session_start_sync()
1058 while (atomic_read(&session->state) <= HIDP_SESSION_IDLING) hidp_session_start_sync()
1059 wait_event(session->state_queue, hidp_session_start_sync()
1060 atomic_read(&session->state) > HIDP_SESSION_IDLING); hidp_session_start_sync()
1066 * Terminate session thread
1067 * Wake up session thread and notify it to stop. This is asynchronous and
1069 * the session to stop.
1072 static void hidp_session_terminate(struct hidp_session *session) hidp_session_terminate() argument
1074 atomic_inc(&session->terminate); hidp_session_terminate()
1075 wake_up_process(session->task); hidp_session_terminate()
1079 * Probe HIDP session
1081 * to the hci-connection. We get the session via the \user object and can now
1082 * start the session thread, link it into the global session list and
1084 * The global session-list owns its own reference to the session object so you
1090 struct hidp_session *session = container_of(user, hidp_session_probe() local
1098 /* check that no other session for this device exists */ hidp_session_probe()
1099 s = __hidp_session_find(&session->bdaddr); hidp_session_probe()
1105 if (session->input) { hidp_session_probe()
1106 ret = hidp_session_dev_add(session); hidp_session_probe()
1111 ret = hidp_session_start_sync(session); hidp_session_probe()
1116 if (session->input) hidp_session_probe()
1117 atomic_inc(&session->state); hidp_session_probe()
1119 schedule_work(&session->dev_init); hidp_session_probe()
1121 hidp_session_get(session); hidp_session_probe()
1122 list_add(&session->list, &hidp_session_list); hidp_session_probe()
1127 if (session->input) hidp_session_probe()
1128 hidp_session_dev_del(session); hidp_session_probe()
1135 * Remove HIDP session
1138 * We signal the hidp-session thread to shut down, unregister the HID/input
1139 * devices and unlink the session from the global list.
1140 * This drops the reference to the session that is owned by the global
1141 * session-list.
1142 * Note: We _must_ not synchronosly wait for the session-thread to shut down.
1143 * This is, because the session-thread might be waiting for an HCI lock that is
1145 * notify the session-thread to terminate. The thread itself owns a reference
1146 * to the session object so it can safely shut down.
1151 struct hidp_session *session = container_of(user, hidp_session_remove() local
1157 hidp_session_terminate(session); hidp_session_remove()
1159 cancel_work_sync(&session->dev_init); hidp_session_remove()
1160 if (session->input || hidp_session_remove()
1161 atomic_read(&session->state) > HIDP_SESSION_PREPARING) hidp_session_remove()
1162 hidp_session_dev_del(session); hidp_session_remove()
1164 list_del(&session->list); hidp_session_remove()
1168 hidp_session_put(session); hidp_session_remove()
1177 static void hidp_session_run(struct hidp_session *session) hidp_session_run() argument
1179 struct sock *ctrl_sk = session->ctrl_sock->sk; hidp_session_run()
1180 struct sock *intr_sk = session->intr_sock->sk; hidp_session_run()
1187 * session->terminate flag and wakes this thread up. hidp_session_run()
1196 if (atomic_read(&session->terminate)) hidp_session_run()
1207 hidp_recv_intr_frame(session, skb); hidp_session_run()
1213 hidp_process_transmit(session, &session->intr_transmit, hidp_session_run()
1214 session->intr_sock); hidp_session_run()
1220 hidp_recv_ctrl_frame(session, skb); hidp_session_run()
1226 hidp_process_transmit(session, &session->ctrl_transmit, hidp_session_run()
1227 session->ctrl_sock); hidp_session_run()
1232 atomic_inc(&session->terminate); hidp_session_run()
1237 * HIDP session thread
1238 * This thread runs the I/O for a single HIDP session. Startup is synchronous
1245 struct hidp_session *session = arg; hidp_session_thread() local
1248 BT_DBG("session %p", session); hidp_session_thread()
1251 hidp_session_get(session); hidp_session_thread()
1254 hidp_set_timer(session); hidp_session_thread()
1258 add_wait_queue(sk_sleep(session->ctrl_sock->sk), &ctrl_wait); hidp_session_thread()
1259 add_wait_queue(sk_sleep(session->intr_sock->sk), &intr_wait); hidp_session_thread()
1265 atomic_inc(&session->state); hidp_session_thread()
1266 wake_up(&session->state_queue); hidp_session_thread()
1268 /* run session */ hidp_session_thread()
1269 hidp_session_run(session); hidp_session_thread()
1272 remove_wait_queue(sk_sleep(session->intr_sock->sk), &intr_wait); hidp_session_thread()
1273 remove_wait_queue(sk_sleep(session->intr_sock->sk), &ctrl_wait); hidp_session_thread()
1274 wake_up_interruptible(&session->report_queue); hidp_session_thread()
1275 hidp_del_timer(session); hidp_session_thread()
1279 * unregister our own session here to avoid having it linger until the hidp_session_thread()
1283 * delete the session. hidp_session_thread()
1285 l2cap_unregister_user(session->conn, &session->user); hidp_session_thread()
1286 hidp_session_put(session); hidp_session_thread()
1297 struct hidp_session *session; hidp_verify_sockets() local
1316 /* early session check, we check again during session registration */ hidp_verify_sockets()
1317 session = hidp_session_find(&ctrl_chan->dst); hidp_verify_sockets()
1318 if (session) { hidp_verify_sockets()
1319 hidp_session_put(session); hidp_verify_sockets()
1332 struct hidp_session *session; hidp_connection_add() local
1354 ret = hidp_session_new(&session, &chan->dst, ctrl_sock, hidp_connection_add()
1359 ret = l2cap_register_user(conn, &session->user); hidp_connection_add()
1366 hidp_session_put(session); hidp_connection_add()
1375 struct hidp_session *session; hidp_connection_del() local
1380 session = hidp_session_find(&req->bdaddr); hidp_connection_del()
1381 if (!session) hidp_connection_del()
1385 hidp_send_ctrl_message(session, hidp_connection_del()
1390 l2cap_unregister_user(session->conn, &session->user); hidp_connection_del()
1392 hidp_session_put(session); hidp_connection_del()
1399 struct hidp_session *session; hidp_get_connlist() local
1406 list_for_each_entry(session, &hidp_session_list, list) { hidp_get_connlist()
1409 hidp_copy_session(session, &ci); hidp_get_connlist()
1429 struct hidp_session *session; hidp_get_conninfo() local
1431 session = hidp_session_find(&ci->bdaddr); hidp_get_conninfo()
1432 if (session) { hidp_get_conninfo()
1433 hidp_copy_session(session, ci); hidp_get_conninfo()
1434 hidp_session_put(session); hidp_get_conninfo()
1437 return session ? 0 : -ENOENT; hidp_get_conninfo()
H A Dhidp.h136 /* HIDP session defines */
170 /* session data */
/linux-4.1.27/net/bluetooth/cmtp/
H A Dcore.c55 struct cmtp_session *session; __cmtp_get_session() local
59 list_for_each_entry(session, &cmtp_session_list, list) __cmtp_get_session()
60 if (!bacmp(bdaddr, &session->bdaddr)) __cmtp_get_session()
61 return session; __cmtp_get_session()
66 static void __cmtp_link_session(struct cmtp_session *session) __cmtp_link_session() argument
68 list_add(&session->list, &cmtp_session_list); __cmtp_link_session()
71 static void __cmtp_unlink_session(struct cmtp_session *session) __cmtp_unlink_session() argument
73 list_del(&session->list); __cmtp_unlink_session()
76 static void __cmtp_copy_session(struct cmtp_session *session, struct cmtp_conninfo *ci) __cmtp_copy_session() argument
80 bacpy(&ci->bdaddr, &session->bdaddr); __cmtp_copy_session()
82 ci->flags = session->flags & valid_flags; __cmtp_copy_session()
83 ci->state = session->state; __cmtp_copy_session()
85 ci->num = session->num; __cmtp_copy_session()
89 static inline int cmtp_alloc_block_id(struct cmtp_session *session) cmtp_alloc_block_id() argument
94 if (!test_and_set_bit(i, &session->blockids)) { cmtp_alloc_block_id()
102 static inline void cmtp_free_block_id(struct cmtp_session *session, int id) cmtp_free_block_id() argument
104 clear_bit(id, &session->blockids); cmtp_free_block_id()
107 static inline void cmtp_add_msgpart(struct cmtp_session *session, int id, const unsigned char *buf, int count) cmtp_add_msgpart() argument
109 struct sk_buff *skb = session->reassembly[id], *nskb; cmtp_add_msgpart()
112 BT_DBG("session %p buf %p count %d", session, buf, count); cmtp_add_msgpart()
127 session->reassembly[id] = nskb; cmtp_add_msgpart()
132 static inline int cmtp_recv_frame(struct cmtp_session *session, struct sk_buff *skb) cmtp_recv_frame() argument
137 BT_DBG("session %p skb %p len %d", session, skb, skb->len); cmtp_recv_frame()
173 cmtp_add_msgpart(session, id, skb->data + hdrlen, len); cmtp_recv_frame()
174 cmtp_recv_capimsg(session, session->reassembly[id]); cmtp_recv_frame()
175 session->reassembly[id] = NULL; cmtp_recv_frame()
178 cmtp_add_msgpart(session, id, skb->data + hdrlen, len); cmtp_recv_frame()
181 if (session->reassembly[id] != NULL) cmtp_recv_frame()
182 kfree_skb(session->reassembly[id]); cmtp_recv_frame()
183 session->reassembly[id] = NULL; cmtp_recv_frame()
194 static int cmtp_send_frame(struct cmtp_session *session, unsigned char *data, int len) cmtp_send_frame() argument
196 struct socket *sock = session->sock; cmtp_send_frame()
200 BT_DBG("session %p data %p len %d", session, data, len); cmtp_send_frame()
210 static void cmtp_process_transmit(struct cmtp_session *session) cmtp_process_transmit() argument
216 BT_DBG("session %p", session); cmtp_process_transmit()
218 nskb = alloc_skb(session->mtu, GFP_ATOMIC); cmtp_process_transmit()
224 while ((skb = skb_dequeue(&session->transmit))) { cmtp_process_transmit()
227 tail = session->mtu - nskb->len; cmtp_process_transmit()
229 cmtp_send_frame(session, nskb->data, nskb->len); cmtp_process_transmit()
231 tail = session->mtu; cmtp_process_transmit()
237 scb->id = cmtp_alloc_block_id(session); cmtp_process_transmit()
239 skb_queue_head(&session->transmit, skb); cmtp_process_transmit()
263 skb_queue_head(&session->transmit, skb); cmtp_process_transmit()
265 cmtp_free_block_id(session, scb->id); cmtp_process_transmit()
267 cmtp_send_frame(session, nskb->data, nskb->len); cmtp_process_transmit()
274 cmtp_send_frame(session, nskb->data, nskb->len); cmtp_process_transmit()
281 struct cmtp_session *session = arg; cmtp_session() local
282 struct sock *sk = session->sock->sk; cmtp_session()
286 BT_DBG("session %p", session); cmtp_session()
295 if (atomic_read(&session->terminate)) cmtp_session()
303 cmtp_recv_frame(session, skb); cmtp_session()
308 cmtp_process_transmit(session); cmtp_session()
317 if (!(session->flags & BIT(CMTP_LOOPBACK))) cmtp_session()
318 cmtp_detach_device(session); cmtp_session()
320 fput(session->sock->file); cmtp_session()
322 __cmtp_unlink_session(session); cmtp_session()
326 kfree(session); cmtp_session()
334 struct cmtp_session *session, *s; cmtp_add_connection() local
345 session = kzalloc(sizeof(struct cmtp_session), GFP_KERNEL); cmtp_add_connection()
346 if (!session) cmtp_add_connection()
357 bacpy(&session->bdaddr, &l2cap_pi(sock->sk)->chan->dst); cmtp_add_connection()
359 session->mtu = min_t(uint, l2cap_pi(sock->sk)->chan->omtu, cmtp_add_connection()
362 BT_DBG("mtu %d", session->mtu); cmtp_add_connection()
364 sprintf(session->name, "%pMR", &session->bdaddr); cmtp_add_connection()
366 session->sock = sock; cmtp_add_connection()
367 session->state = BT_CONFIG; cmtp_add_connection()
369 init_waitqueue_head(&session->wait); cmtp_add_connection()
371 session->msgnum = CMTP_INITIAL_MSGNUM; cmtp_add_connection()
373 INIT_LIST_HEAD(&session->applications); cmtp_add_connection()
375 skb_queue_head_init(&session->transmit); cmtp_add_connection()
378 session->reassembly[i] = NULL; cmtp_add_connection()
380 session->flags = req->flags; cmtp_add_connection()
382 __cmtp_link_session(session); cmtp_add_connection()
385 session->task = kthread_run(cmtp_session, session, "kcmtpd_ctr_%d", cmtp_add_connection()
386 session->num); cmtp_add_connection()
387 if (IS_ERR(session->task)) { cmtp_add_connection()
389 err = PTR_ERR(session->task); cmtp_add_connection()
393 if (!(session->flags & BIT(CMTP_LOOPBACK))) { cmtp_add_connection()
394 err = cmtp_attach_device(session); cmtp_add_connection()
396 atomic_inc(&session->terminate); cmtp_add_connection()
397 wake_up_process(session->task); cmtp_add_connection()
407 __cmtp_unlink_session(session); cmtp_add_connection()
411 kfree(session); cmtp_add_connection()
418 struct cmtp_session *session; cmtp_del_connection() local
428 session = __cmtp_get_session(&req->bdaddr); cmtp_del_connection()
429 if (session) { cmtp_del_connection()
431 skb_queue_purge(&session->transmit); cmtp_del_connection()
433 /* Stop session thread */ cmtp_del_connection()
434 atomic_inc(&session->terminate); cmtp_del_connection()
435 wake_up_process(session->task); cmtp_del_connection()
445 struct cmtp_session *session; cmtp_get_connlist() local
452 list_for_each_entry(session, &cmtp_session_list, list) { cmtp_get_connlist()
455 __cmtp_copy_session(session, &ci); cmtp_get_connlist()
475 struct cmtp_session *session; cmtp_get_conninfo() local
480 session = __cmtp_get_session(&ci->bdaddr); cmtp_get_conninfo()
481 if (session) cmtp_get_conninfo()
482 __cmtp_copy_session(session, ci); cmtp_get_conninfo()
H A Dcapi.c73 static struct cmtp_application *cmtp_application_add(struct cmtp_session *session, __u16 appl) cmtp_application_add() argument
77 BT_DBG("session %p application %p appl %d", session, app, appl); cmtp_application_add()
85 list_add_tail(&app->list, &session->applications); cmtp_application_add()
90 static void cmtp_application_del(struct cmtp_session *session, struct cmtp_application *app) cmtp_application_del() argument
92 BT_DBG("session %p application %p", session, app); cmtp_application_del()
100 static struct cmtp_application *cmtp_application_get(struct cmtp_session *session, int pattern, __u16 value) cmtp_application_get() argument
105 list_for_each_safe(p, n, &session->applications) { cmtp_application_get()
126 static int cmtp_msgnum_get(struct cmtp_session *session) cmtp_msgnum_get() argument
128 session->msgnum++; cmtp_msgnum_get()
130 if ((session->msgnum & 0xff) > 200) cmtp_msgnum_get()
131 session->msgnum = CMTP_INITIAL_MSGNUM + 1; cmtp_msgnum_get()
133 return session->msgnum; cmtp_msgnum_get()
136 static void cmtp_send_capimsg(struct cmtp_session *session, struct sk_buff *skb) cmtp_send_capimsg() argument
140 BT_DBG("session %p skb %p len %d", session, skb, skb->len); cmtp_send_capimsg()
145 skb_queue_tail(&session->transmit, skb); cmtp_send_capimsg()
147 wake_up_interruptible(sk_sleep(session->sock->sk)); cmtp_send_capimsg()
150 static void cmtp_send_interopmsg(struct cmtp_session *session, cmtp_send_interopmsg() argument
157 BT_DBG("session %p subcmd 0x%02x appl %d msgnum %d", session, subcmd, appl, msgnum); cmtp_send_interopmsg()
183 cmtp_send_capimsg(session, skb); cmtp_send_interopmsg()
186 static void cmtp_recv_interopmsg(struct cmtp_session *session, struct sk_buff *skb) cmtp_recv_interopmsg() argument
188 struct capi_ctr *ctrl = &session->ctrl; cmtp_recv_interopmsg()
193 BT_DBG("session %p skb %p len %d", session, skb, skb->len); cmtp_recv_interopmsg()
207 application = cmtp_application_get(session, CMTP_MSGNUM, msgnum); cmtp_recv_interopmsg()
212 wake_up_interruptible(&session->wait); cmtp_recv_interopmsg()
220 application = cmtp_application_get(session, CMTP_MAPPING, appl); cmtp_recv_interopmsg()
224 wake_up_interruptible(&session->wait); cmtp_recv_interopmsg()
237 session->ncontroller = controller; cmtp_recv_interopmsg()
238 wake_up_interruptible(&session->wait); cmtp_recv_interopmsg()
246 session->state = BT_CONNECTED; cmtp_recv_interopmsg()
309 cmtp_send_interopmsg(session, CAPI_RESP, appl, msgnum, func, cmtp_recv_interopmsg()
319 void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb) cmtp_recv_capimsg() argument
321 struct capi_ctr *ctrl = &session->ctrl; cmtp_recv_capimsg()
326 BT_DBG("session %p skb %p len %d", session, skb, skb->len); cmtp_recv_capimsg()
332 cmtp_recv_interopmsg(session, skb); cmtp_recv_capimsg()
336 if (session->flags & BIT(CMTP_LOOPBACK)) { cmtp_recv_capimsg()
344 application = cmtp_application_get(session, CMTP_MAPPING, appl); cmtp_recv_capimsg()
355 contr = (contr & 0xffffff80) | session->num; cmtp_recv_capimsg()
371 struct cmtp_session *session = ctrl->driverdata; cmtp_reset_ctr() local
377 atomic_inc(&session->terminate); cmtp_reset_ctr()
378 wake_up_process(session->task); cmtp_reset_ctr()
384 struct cmtp_session *session = ctrl->driverdata; cmtp_register_appl() local
393 application = cmtp_application_add(session, appl); cmtp_register_appl()
412 application->msgnum = cmtp_msgnum_get(session); cmtp_register_appl()
414 cmtp_send_interopmsg(session, CAPI_REQ, 0x0000, application->msgnum, cmtp_register_appl()
417 add_wait_queue(&session->wait, &wait); cmtp_register_appl()
442 remove_wait_queue(&session->wait, &wait); cmtp_register_appl()
445 cmtp_application_del(session, application); cmtp_register_appl()
452 struct cmtp_session *session = ctrl->driverdata; cmtp_release_appl() local
457 application = cmtp_application_get(session, CMTP_APPLID, appl); cmtp_release_appl()
463 application->msgnum = cmtp_msgnum_get(session); cmtp_release_appl()
465 cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum, cmtp_release_appl()
468 wait_event_interruptible_timeout(session->wait, cmtp_release_appl()
471 cmtp_application_del(session, application); cmtp_release_appl()
476 struct cmtp_session *session = ctrl->driverdata; cmtp_send_message() local
486 application = cmtp_application_get(session, CMTP_APPLID, appl); cmtp_send_message()
494 if ((contr & 0x7f) == session->num) { cmtp_send_message()
499 cmtp_send_capimsg(session, skb); cmtp_send_message()
512 struct cmtp_session *session = ctrl->driverdata; cmtp_proc_show() local
517 seq_printf(m, "addr %s\n", session->name); cmtp_proc_show()
518 seq_printf(m, "ctrl %d\n", session->num); cmtp_proc_show()
520 list_for_each_safe(p, n, &session->applications) { cmtp_proc_show()
541 int cmtp_attach_device(struct cmtp_session *session) cmtp_attach_device() argument
546 BT_DBG("session %p", session); cmtp_attach_device()
550 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM, cmtp_attach_device()
553 ret = wait_event_interruptible_timeout(session->wait, cmtp_attach_device()
554 session->ncontroller, CMTP_INTEROP_TIMEOUT); cmtp_attach_device()
556 BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name); cmtp_attach_device()
561 if (!session->ncontroller) cmtp_attach_device()
564 if (session->ncontroller > 1) cmtp_attach_device()
567 session->ctrl.owner = THIS_MODULE; cmtp_attach_device()
568 session->ctrl.driverdata = session; cmtp_attach_device()
569 strcpy(session->ctrl.name, session->name); cmtp_attach_device()
571 session->ctrl.driver_name = "cmtp"; cmtp_attach_device()
572 session->ctrl.load_firmware = cmtp_load_firmware; cmtp_attach_device()
573 session->ctrl.reset_ctr = cmtp_reset_ctr; cmtp_attach_device()
574 session->ctrl.register_appl = cmtp_register_appl; cmtp_attach_device()
575 session->ctrl.release_appl = cmtp_release_appl; cmtp_attach_device()
576 session->ctrl.send_message = cmtp_send_message; cmtp_attach_device()
578 session->ctrl.procinfo = cmtp_procinfo; cmtp_attach_device()
579 session->ctrl.proc_fops = &cmtp_proc_fops; cmtp_attach_device()
581 if (attach_capi_ctr(&session->ctrl) < 0) { cmtp_attach_device()
586 session->num = session->ctrl.cnr; cmtp_attach_device()
588 BT_DBG("session %p num %d", session, session->num); cmtp_attach_device()
592 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), cmtp_attach_device()
595 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), cmtp_attach_device()
598 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), cmtp_attach_device()
601 cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, cmtp_msgnum_get(session), cmtp_attach_device()
607 void cmtp_detach_device(struct cmtp_session *session) cmtp_detach_device() argument
609 BT_DBG("session %p", session); cmtp_detach_device()
611 detach_capi_ctr(&session->ctrl); cmtp_detach_device()
H A Dcmtp.h66 /* CMTP session defines */
120 int cmtp_attach_device(struct cmtp_session *session);
121 void cmtp_detach_device(struct cmtp_session *session);
123 void cmtp_recv_capimsg(struct cmtp_session *session, struct sk_buff *skb);
/linux-4.1.27/drivers/s390/char/
H A Dvmcp.c31 struct vmcp_session *session; vmcp_open() local
36 session = kmalloc(sizeof(*session), GFP_KERNEL); vmcp_open()
37 if (!session) vmcp_open()
40 session->bufsize = PAGE_SIZE; vmcp_open()
41 session->response = NULL; vmcp_open()
42 session->resp_size = 0; vmcp_open()
43 mutex_init(&session->mutex); vmcp_open()
44 file->private_data = session; vmcp_open()
50 struct vmcp_session *session; vmcp_release() local
52 session = file->private_data; vmcp_release()
54 free_pages((unsigned long)session->response, get_order(session->bufsize)); vmcp_release()
55 kfree(session); vmcp_release()
64 struct vmcp_session *session; vmcp_read() local
66 session = file->private_data; vmcp_read()
67 if (mutex_lock_interruptible(&session->mutex)) vmcp_read()
69 if (!session->response) { vmcp_read()
70 mutex_unlock(&session->mutex); vmcp_read()
73 size = min_t(size_t, session->resp_size, session->bufsize); vmcp_read()
75 session->response, size); vmcp_read()
77 mutex_unlock(&session->mutex); vmcp_read()
87 struct vmcp_session *session; vmcp_write() local
99 session = file->private_data; vmcp_write()
100 if (mutex_lock_interruptible(&session->mutex)) { vmcp_write()
104 if (!session->response) vmcp_write()
105 session->response = (char *)__get_free_pages(GFP_KERNEL vmcp_write()
107 get_order(session->bufsize)); vmcp_write()
108 if (!session->response) { vmcp_write()
109 mutex_unlock(&session->mutex); vmcp_write()
114 session->resp_size = cpcmd(cmd, session->response, session->bufsize, vmcp_write()
115 &session->resp_code); vmcp_write()
116 mutex_unlock(&session->mutex); vmcp_write()
137 struct vmcp_session *session; vmcp_ioctl() local
141 session = file->private_data; vmcp_ioctl()
146 if (mutex_lock_interruptible(&session->mutex)) vmcp_ioctl()
150 temp = session->resp_code; vmcp_ioctl()
151 mutex_unlock(&session->mutex); vmcp_ioctl()
154 free_pages((unsigned long)session->response, vmcp_ioctl()
155 get_order(session->bufsize)); vmcp_ioctl()
156 session->response=NULL; vmcp_ioctl()
157 temp = get_user(session->bufsize, argp); vmcp_ioctl()
158 if (get_order(session->bufsize) > 8) { vmcp_ioctl()
159 session->bufsize = PAGE_SIZE; vmcp_ioctl()
162 mutex_unlock(&session->mutex); vmcp_ioctl()
165 temp = session->resp_size; vmcp_ioctl()
166 mutex_unlock(&session->mutex); vmcp_ioctl()
169 mutex_unlock(&session->mutex); vmcp_ioctl()
/linux-4.1.27/net/l2tp/
H A Dl2tp_debugfs.c43 int session_idx; /* index of session within current tunnel */
45 struct l2tp_session *session; /* NULL means get next tunnel */ member in struct:l2tp_dfs_seq_data
56 pd->session = l2tp_session_find_nth(pd->tunnel, pd->session_idx); l2tp_dfs_next_session()
59 if (pd->session == NULL) { l2tp_dfs_next_session()
82 /* NULL tunnel and session indicates end of list */ l2tp_dfs_seq_start()
83 if ((pd->tunnel == NULL) && (pd->session == NULL)) l2tp_dfs_seq_start()
113 struct l2tp_session *session; l2tp_dfs_seq_tunnel_show() local
115 session = hlist_entry(walk, struct l2tp_session, hlist); l2tp_dfs_seq_tunnel_show()
116 if (session->session_id == 0) l2tp_dfs_seq_tunnel_show()
165 struct l2tp_session *session = v; l2tp_dfs_seq_session_show() local
167 seq_printf(m, " SESSION %u, peer %u, %s\n", session->session_id, l2tp_dfs_seq_session_show()
168 session->peer_session_id, l2tp_dfs_seq_session_show()
169 session->pwtype == L2TP_PWTYPE_ETH ? "ETH" : l2tp_dfs_seq_session_show()
170 session->pwtype == L2TP_PWTYPE_PPP ? "PPP" : l2tp_dfs_seq_session_show()
172 if (session->send_seq || session->recv_seq) l2tp_dfs_seq_session_show()
173 seq_printf(m, " nr %hu, ns %hu\n", session->nr, session->ns); l2tp_dfs_seq_session_show()
174 seq_printf(m, " refcnt %d\n", atomic_read(&session->ref_count)); l2tp_dfs_seq_session_show()
176 session->mtu, session->mru, l2tp_dfs_seq_session_show()
177 session->recv_seq ? 'R' : '-', l2tp_dfs_seq_session_show()
178 session->send_seq ? 'S' : '-', l2tp_dfs_seq_session_show()
179 session->data_seq == 1 ? "IPSEQ" : l2tp_dfs_seq_session_show()
180 session->data_seq == 2 ? "DATASEQ" : "-", l2tp_dfs_seq_session_show()
181 session->lns_mode ? "LNS" : "LAC", l2tp_dfs_seq_session_show()
182 session->debug, l2tp_dfs_seq_session_show()
183 jiffies_to_msecs(session->reorder_timeout)); l2tp_dfs_seq_session_show()
185 session->offset, session->l2specific_type, session->l2specific_len); l2tp_dfs_seq_session_show()
186 if (session->cookie_len) { l2tp_dfs_seq_session_show()
188 session->cookie[0], session->cookie[1], l2tp_dfs_seq_session_show()
189 session->cookie[2], session->cookie[3]); l2tp_dfs_seq_session_show()
190 if (session->cookie_len == 8) l2tp_dfs_seq_session_show()
192 session->cookie[4], session->cookie[5], l2tp_dfs_seq_session_show()
193 session->cookie[6], session->cookie[7]); l2tp_dfs_seq_session_show()
196 if (session->peer_cookie_len) { l2tp_dfs_seq_session_show()
198 session->peer_cookie[0], session->peer_cookie[1], l2tp_dfs_seq_session_show()
199 session->peer_cookie[2], session->peer_cookie[3]); l2tp_dfs_seq_session_show()
200 if (session->peer_cookie_len == 8) l2tp_dfs_seq_session_show()
202 session->peer_cookie[4], session->peer_cookie[5], l2tp_dfs_seq_session_show()
203 session->peer_cookie[6], session->peer_cookie[7]); l2tp_dfs_seq_session_show()
208 session->nr, session->ns, l2tp_dfs_seq_session_show()
209 atomic_long_read(&session->stats.tx_packets), l2tp_dfs_seq_session_show()
210 atomic_long_read(&session->stats.tx_bytes), l2tp_dfs_seq_session_show()
211 atomic_long_read(&session->stats.tx_errors), l2tp_dfs_seq_session_show()
212 atomic_long_read(&session->stats.rx_packets), l2tp_dfs_seq_session_show()
213 atomic_long_read(&session->stats.rx_bytes), l2tp_dfs_seq_session_show()
214 atomic_long_read(&session->stats.rx_errors)); l2tp_dfs_seq_session_show()
216 if (session->show != NULL) l2tp_dfs_seq_session_show()
217 session->show(m, session); l2tp_dfs_seq_session_show()
228 seq_puts(m, " sessions session-count, refcnt refcnt/sk->refcnt\n"); l2tp_dfs_seq_show()
240 /* Show the tunnel or session context */ l2tp_dfs_seq_show()
241 if (pd->session == NULL) l2tp_dfs_seq_show()
244 l2tp_dfs_seq_session_show(m, pd->session); l2tp_dfs_seq_show()
H A Dl2tp_core.c130 /* Tunnel reference counts. Incremented per session that is added to
220 /* Lookup a session by id in the global session list
227 struct l2tp_session *session; l2tp_session_find_2() local
230 hlist_for_each_entry_rcu(session, session_list, global_hlist) { hlist_for_each_entry_rcu()
231 if (session->session_id == session_id) { hlist_for_each_entry_rcu()
233 return session; hlist_for_each_entry_rcu()
253 /* Lookup a session by id
258 struct l2tp_session *session; l2tp_session_find() local
269 hlist_for_each_entry(session, session_list, hlist) { hlist_for_each_entry()
270 if (session->session_id == session_id) { hlist_for_each_entry()
272 return session; hlist_for_each_entry()
284 struct l2tp_session *session; l2tp_session_find_nth() local
289 hlist_for_each_entry(session, &tunnel->session_hlist[hash], hlist) { l2tp_session_find_nth()
292 return session; l2tp_session_find_nth()
303 /* Lookup a session by interface name.
310 struct l2tp_session *session; l2tp_session_find_by_ifname() local
314 hlist_for_each_entry_rcu(session, &pn->l2tp_session_hlist[hash], global_hlist) { l2tp_session_find_by_ifname()
315 if (!strcmp(session->ifname, ifname)) { l2tp_session_find_by_ifname()
317 return session; l2tp_session_find_by_ifname()
375 static void l2tp_recv_queue_skb(struct l2tp_session *session, struct sk_buff *skb) l2tp_recv_queue_skb() argument
381 spin_lock_bh(&session->reorder_q.lock); l2tp_recv_queue_skb()
382 skb_queue_walk_safe(&session->reorder_q, skbp, tmp) { l2tp_recv_queue_skb()
384 __skb_queue_before(&session->reorder_q, skbp, skb); l2tp_recv_queue_skb()
385 l2tp_dbg(session, L2TP_MSG_SEQ, l2tp_recv_queue_skb()
387 session->name, ns, L2TP_SKB_CB(skbp)->ns, l2tp_recv_queue_skb()
388 skb_queue_len(&session->reorder_q)); l2tp_recv_queue_skb()
389 atomic_long_inc(&session->stats.rx_oos_packets); l2tp_recv_queue_skb()
394 __skb_queue_tail(&session->reorder_q, skb); l2tp_recv_queue_skb()
397 spin_unlock_bh(&session->reorder_q.lock); l2tp_recv_queue_skb()
402 static void l2tp_recv_dequeue_skb(struct l2tp_session *session, struct sk_buff *skb) l2tp_recv_dequeue_skb() argument
404 struct l2tp_tunnel *tunnel = session->tunnel; l2tp_recv_dequeue_skb()
414 atomic_long_inc(&session->stats.rx_packets); l2tp_recv_dequeue_skb()
415 atomic_long_add(length, &session->stats.rx_bytes); l2tp_recv_dequeue_skb()
419 session->nr++; l2tp_recv_dequeue_skb()
420 session->nr &= session->nr_max; l2tp_recv_dequeue_skb()
422 l2tp_dbg(session, L2TP_MSG_SEQ, "%s: updated nr to %hu\n", l2tp_recv_dequeue_skb()
423 session->name, session->nr); l2tp_recv_dequeue_skb()
427 if (session->recv_skb != NULL) l2tp_recv_dequeue_skb()
428 (*session->recv_skb)(session, skb, L2TP_SKB_CB(skb)->length); l2tp_recv_dequeue_skb()
432 if (session->deref) l2tp_recv_dequeue_skb()
433 (*session->deref)(session); l2tp_recv_dequeue_skb()
436 /* Dequeue skbs from the session's reorder_q, subject to packet order.
439 static void l2tp_recv_dequeue(struct l2tp_session *session) l2tp_recv_dequeue() argument
449 spin_lock_bh(&session->reorder_q.lock); l2tp_recv_dequeue()
450 skb_queue_walk_safe(&session->reorder_q, skb, tmp) { l2tp_recv_dequeue()
452 atomic_long_inc(&session->stats.rx_seq_discards); l2tp_recv_dequeue()
453 atomic_long_inc(&session->stats.rx_errors); l2tp_recv_dequeue()
454 l2tp_dbg(session, L2TP_MSG_SEQ, l2tp_recv_dequeue()
456 session->name, L2TP_SKB_CB(skb)->ns, l2tp_recv_dequeue()
457 L2TP_SKB_CB(skb)->length, session->nr, l2tp_recv_dequeue()
458 skb_queue_len(&session->reorder_q)); l2tp_recv_dequeue()
459 session->reorder_skip = 1; l2tp_recv_dequeue()
460 __skb_unlink(skb, &session->reorder_q); l2tp_recv_dequeue()
462 if (session->deref) l2tp_recv_dequeue()
463 (*session->deref)(session); l2tp_recv_dequeue()
468 if (session->reorder_skip) { l2tp_recv_dequeue()
469 l2tp_dbg(session, L2TP_MSG_SEQ, l2tp_recv_dequeue()
471 session->name, session->nr, l2tp_recv_dequeue()
473 session->reorder_skip = 0; l2tp_recv_dequeue()
474 session->nr = L2TP_SKB_CB(skb)->ns; l2tp_recv_dequeue()
476 if (L2TP_SKB_CB(skb)->ns != session->nr) { l2tp_recv_dequeue()
477 l2tp_dbg(session, L2TP_MSG_SEQ, l2tp_recv_dequeue()
479 session->name, L2TP_SKB_CB(skb)->ns, l2tp_recv_dequeue()
480 L2TP_SKB_CB(skb)->length, session->nr, l2tp_recv_dequeue()
481 skb_queue_len(&session->reorder_q)); l2tp_recv_dequeue()
485 __skb_unlink(skb, &session->reorder_q); l2tp_recv_dequeue()
490 spin_unlock_bh(&session->reorder_q.lock); l2tp_recv_dequeue()
491 l2tp_recv_dequeue_skb(session, skb); l2tp_recv_dequeue()
496 spin_unlock_bh(&session->reorder_q.lock); l2tp_recv_dequeue()
499 static int l2tp_seq_check_rx_window(struct l2tp_session *session, u32 nr) l2tp_seq_check_rx_window() argument
503 if (nr >= session->nr) l2tp_seq_check_rx_window()
504 nws = nr - session->nr; l2tp_seq_check_rx_window()
506 nws = (session->nr_max + 1) - (session->nr - nr); l2tp_seq_check_rx_window()
508 return nws < session->nr_window_size; l2tp_seq_check_rx_window()
514 static int l2tp_recv_data_seq(struct l2tp_session *session, struct sk_buff *skb) l2tp_recv_data_seq() argument
516 if (!l2tp_seq_check_rx_window(session, L2TP_SKB_CB(skb)->ns)) { l2tp_recv_data_seq()
520 l2tp_dbg(session, L2TP_MSG_SEQ, l2tp_recv_data_seq()
522 session->name, L2TP_SKB_CB(skb)->ns, l2tp_recv_data_seq()
523 L2TP_SKB_CB(skb)->length, session->nr); l2tp_recv_data_seq()
527 if (session->reorder_timeout != 0) { l2tp_recv_data_seq()
528 /* Packet reordering enabled. Add skb to session's l2tp_recv_data_seq()
531 l2tp_recv_queue_skb(session, skb); l2tp_recv_data_seq()
540 if (L2TP_SKB_CB(skb)->ns == session->nr) { l2tp_recv_data_seq()
541 skb_queue_tail(&session->reorder_q, skb); l2tp_recv_data_seq()
544 u32 nr_next = (session->nr_oos + 1) & session->nr_max; l2tp_recv_data_seq()
547 session->nr_oos_count++; l2tp_recv_data_seq()
549 session->nr_oos_count = 0; l2tp_recv_data_seq()
551 session->nr_oos = nr_oos; l2tp_recv_data_seq()
552 if (session->nr_oos_count > session->nr_oos_count_max) { l2tp_recv_data_seq()
553 session->reorder_skip = 1; l2tp_recv_data_seq()
554 l2tp_dbg(session, L2TP_MSG_SEQ, l2tp_recv_data_seq()
556 session->name, session->nr_oos_count); l2tp_recv_data_seq()
558 if (!session->reorder_skip) { l2tp_recv_data_seq()
559 atomic_long_inc(&session->stats.rx_seq_discards); l2tp_recv_data_seq()
560 l2tp_dbg(session, L2TP_MSG_SEQ, l2tp_recv_data_seq()
562 session->name, L2TP_SKB_CB(skb)->ns, l2tp_recv_data_seq()
563 L2TP_SKB_CB(skb)->length, session->nr, l2tp_recv_data_seq()
564 skb_queue_len(&session->reorder_q)); l2tp_recv_data_seq()
567 skb_queue_tail(&session->reorder_q, skb); l2tp_recv_data_seq()
628 * the peer when the session is set up. Unlike L2TPv2, we do not need
634 * session-id have already been parsed and ptr points to the data
635 * after the session-id.
637 void l2tp_recv_common(struct l2tp_session *session, struct sk_buff *skb, l2tp_recv_common() argument
641 struct l2tp_tunnel *tunnel = session->tunnel; l2tp_recv_common()
646 * the session. Take care to decrement the refcnt when exiting l2tp_recv_common()
649 l2tp_session_inc_refcount(session); l2tp_recv_common()
650 if (session->ref) l2tp_recv_common()
651 (*session->ref)(session); l2tp_recv_common()
654 if (session->peer_cookie_len > 0) { l2tp_recv_common()
655 if (memcmp(ptr, &session->peer_cookie[0], session->peer_cookie_len)) { l2tp_recv_common()
659 session->session_id); l2tp_recv_common()
660 atomic_long_inc(&session->stats.rx_cookie_discards); l2tp_recv_common()
663 ptr += session->peer_cookie_len; l2tp_recv_common()
686 l2tp_dbg(session, L2TP_MSG_SEQ, l2tp_recv_common()
687 "%s: recv data ns=%u, nr=%u, session nr=%u\n", l2tp_recv_common()
688 session->name, ns, nr, session->nr); l2tp_recv_common()
690 } else if (session->l2specific_type == L2TP_L2SPECTYPE_DEFAULT) { l2tp_recv_common()
700 l2tp_dbg(session, L2TP_MSG_SEQ, l2tp_recv_common()
701 "%s: recv data ns=%u, session nr=%u\n", l2tp_recv_common()
702 session->name, ns, session->nr); l2tp_recv_common()
707 ptr += session->l2specific_len; l2tp_recv_common()
714 if ((!session->lns_mode) && (!session->send_seq)) { l2tp_recv_common()
715 l2tp_info(session, L2TP_MSG_SEQ, l2tp_recv_common()
717 session->name); l2tp_recv_common()
718 session->send_seq = -1; l2tp_recv_common()
719 l2tp_session_set_header_len(session, tunnel->version); l2tp_recv_common()
725 if (session->recv_seq) { l2tp_recv_common()
726 l2tp_warn(session, L2TP_MSG_SEQ, l2tp_recv_common()
728 session->name); l2tp_recv_common()
729 atomic_long_inc(&session->stats.rx_seq_discards); l2tp_recv_common()
738 if ((!session->lns_mode) && (session->send_seq)) { l2tp_recv_common()
739 l2tp_info(session, L2TP_MSG_SEQ, l2tp_recv_common()
741 session->name); l2tp_recv_common()
742 session->send_seq = 0; l2tp_recv_common()
743 l2tp_session_set_header_len(session, tunnel->version); l2tp_recv_common()
744 } else if (session->send_seq) { l2tp_recv_common()
745 l2tp_warn(session, L2TP_MSG_SEQ, l2tp_recv_common()
747 session->name); l2tp_recv_common()
748 atomic_long_inc(&session->stats.rx_seq_discards); l2tp_recv_common()
756 * in the session setup control protocol. l2tp_recv_common()
765 ptr += session->offset; l2tp_recv_common()
780 /* Prepare skb for adding to the session's reorder_q. Hold l2tp_recv_common()
786 (session->reorder_timeout ? session->reorder_timeout : HZ); l2tp_recv_common()
788 /* Add packet to the session's receive queue. Reordering is done here, if l2tp_recv_common()
792 if (l2tp_recv_data_seq(session, skb)) l2tp_recv_common()
799 skb_queue_tail(&session->reorder_q, skb); l2tp_recv_common()
803 l2tp_recv_dequeue(session); l2tp_recv_common()
805 l2tp_session_dec_refcount(session); l2tp_recv_common()
810 atomic_long_inc(&session->stats.rx_errors); l2tp_recv_common()
813 if (session->deref) l2tp_recv_common()
814 (*session->deref)(session); l2tp_recv_common()
816 l2tp_session_dec_refcount(session); l2tp_recv_common()
820 /* Drop skbs from the session's reorder_q
822 int l2tp_session_queue_purge(struct l2tp_session *session) l2tp_session_queue_purge() argument
825 BUG_ON(!session); l2tp_session_queue_purge()
826 BUG_ON(session->magic != L2TP_SESSION_MAGIC); l2tp_session_queue_purge()
827 while ((skb = skb_dequeue(&session->reorder_q))) { l2tp_session_queue_purge()
828 atomic_long_inc(&session->stats.rx_errors); l2tp_session_queue_purge()
830 if (session->deref) l2tp_session_queue_purge()
831 (*session->deref)(session); l2tp_session_queue_purge()
846 struct l2tp_session *session = NULL; l2tp_udp_recv_core() local
910 /* Extract tunnel and session ID */ l2tp_udp_recv_core()
922 /* Find the session context */ l2tp_udp_recv_core()
923 session = l2tp_session_find(tunnel->l2tp_net, tunnel, session_id); l2tp_udp_recv_core()
924 if (!session || !session->recv_skb) { l2tp_udp_recv_core()
927 "%s: no session found (%u/%u). Passing up.\n", l2tp_udp_recv_core()
932 l2tp_recv_common(session, skb, ptr, optr, hdrflags, length, payload_hook); l2tp_udp_recv_core()
977 /* Build an L2TP header for the session into the buffer provided.
979 static int l2tp_build_l2tpv2_header(struct l2tp_session *session, void *buf) l2tp_build_l2tpv2_header() argument
981 struct l2tp_tunnel *tunnel = session->tunnel; l2tp_build_l2tpv2_header()
986 u32 session_id = session->peer_session_id; l2tp_build_l2tpv2_header()
988 if (session->send_seq) l2tp_build_l2tpv2_header()
995 if (session->send_seq) { l2tp_build_l2tpv2_header()
996 *bufp++ = htons(session->ns); l2tp_build_l2tpv2_header()
998 session->ns++; l2tp_build_l2tpv2_header()
999 session->ns &= 0xffff; l2tp_build_l2tpv2_header()
1000 l2tp_dbg(session, L2TP_MSG_SEQ, "%s: updated ns to %u\n", l2tp_build_l2tpv2_header()
1001 session->name, session->ns); l2tp_build_l2tpv2_header()
1007 static int l2tp_build_l2tpv3_header(struct l2tp_session *session, void *buf) l2tp_build_l2tpv3_header() argument
1009 struct l2tp_tunnel *tunnel = session->tunnel; l2tp_build_l2tpv3_header()
1024 *((__be32 *) bufp) = htonl(session->peer_session_id); l2tp_build_l2tpv3_header()
1026 if (session->cookie_len) { l2tp_build_l2tpv3_header()
1027 memcpy(bufp, &session->cookie[0], session->cookie_len); l2tp_build_l2tpv3_header()
1028 bufp += session->cookie_len; l2tp_build_l2tpv3_header()
1030 if (session->l2specific_len) { l2tp_build_l2tpv3_header()
1031 if (session->l2specific_type == L2TP_L2SPECTYPE_DEFAULT) { l2tp_build_l2tpv3_header()
1033 if (session->send_seq) { l2tp_build_l2tpv3_header()
1034 l2h = 0x40000000 | session->ns; l2tp_build_l2tpv3_header()
1035 session->ns++; l2tp_build_l2tpv3_header()
1036 session->ns &= 0xffffff; l2tp_build_l2tpv3_header()
1037 l2tp_dbg(session, L2TP_MSG_SEQ, l2tp_build_l2tpv3_header()
1039 session->name, session->ns); l2tp_build_l2tpv3_header()
1044 bufp += session->l2specific_len; l2tp_build_l2tpv3_header()
1046 if (session->offset) l2tp_build_l2tpv3_header()
1047 bufp += session->offset; l2tp_build_l2tpv3_header()
1052 static int l2tp_xmit_core(struct l2tp_session *session, struct sk_buff *skb, l2tp_xmit_core() argument
1055 struct l2tp_tunnel *tunnel = session->tunnel; l2tp_xmit_core()
1060 if (session->send_seq) l2tp_xmit_core()
1061 l2tp_dbg(session, L2TP_MSG_DATA, "%s: send %Zd bytes, ns=%u\n", l2tp_xmit_core()
1062 session->name, data_len, session->ns - 1); l2tp_xmit_core()
1064 l2tp_dbg(session, L2TP_MSG_DATA, "%s: send %Zd bytes\n", l2tp_xmit_core()
1065 session->name, data_len); l2tp_xmit_core()
1067 if (session->debug & L2TP_MSG_DATA) { l2tp_xmit_core()
1071 pr_debug("%s: xmit\n", session->name); l2tp_xmit_core()
1089 atomic_long_inc(&session->stats.tx_packets); l2tp_xmit_core()
1090 atomic_long_add(len, &session->stats.tx_bytes); l2tp_xmit_core()
1093 atomic_long_inc(&session->stats.tx_errors); l2tp_xmit_core()
1102 int l2tp_xmit_skb(struct l2tp_session *session, struct sk_buff *skb, int hdr_len) l2tp_xmit_skb() argument
1105 struct l2tp_tunnel *tunnel = session->tunnel; l2tp_xmit_skb()
1127 session->build_header(session, __skb_push(skb, hdr_len)); l2tp_xmit_skb()
1175 l2tp_xmit_core(session, skb, fl, data_len); l2tp_xmit_skb()
1184 * Tinnel and session create/destroy.
1188 * The tunnel context is deleted only when all session sockets have been
1243 struct l2tp_session *session; l2tp_tunnel_closeall() local
1254 session = hlist_entry(walk, struct l2tp_session, hlist); l2tp_tunnel_closeall()
1256 l2tp_info(session, L2TP_MSG_CONTROL, l2tp_tunnel_closeall()
1257 "%s: closing session\n", session->name); l2tp_tunnel_closeall()
1259 hlist_del_init(&session->hlist); l2tp_tunnel_closeall()
1261 if (session->ref != NULL) l2tp_tunnel_closeall()
1262 (*session->ref)(session); l2tp_tunnel_closeall()
1266 __l2tp_session_unhash(session); l2tp_tunnel_closeall()
1267 l2tp_session_queue_purge(session); l2tp_tunnel_closeall()
1269 if (session->session_close != NULL) l2tp_tunnel_closeall()
1270 (*session->session_close)(session); l2tp_tunnel_closeall()
1272 if (session->deref != NULL) l2tp_tunnel_closeall()
1273 (*session->deref)(session); l2tp_tunnel_closeall()
1275 l2tp_session_dec_refcount(session); l2tp_tunnel_closeall()
1280 * chain. We always remove a session from the l2tp_tunnel_closeall()
1654 /* Really kill the session.
1656 void l2tp_session_free(struct l2tp_session *session) l2tp_session_free() argument
1658 struct l2tp_tunnel *tunnel = session->tunnel; l2tp_session_free()
1660 BUG_ON(atomic_read(&session->ref_count) != 0); l2tp_session_free()
1664 if (session->session_id != 0) l2tp_session_free()
1667 session->tunnel = NULL; l2tp_session_free()
1671 kfree(session); l2tp_session_free()
1675 /* Remove an l2tp session from l2tp_core's hash lists.
1680 void __l2tp_session_unhash(struct l2tp_session *session) __l2tp_session_unhash() argument
1682 struct l2tp_tunnel *tunnel = session->tunnel; __l2tp_session_unhash()
1684 /* Remove the session from core hashes */ __l2tp_session_unhash()
1688 hlist_del_init(&session->hlist); __l2tp_session_unhash()
1695 hlist_del_init_rcu(&session->global_hlist); __l2tp_session_unhash()
1706 int l2tp_session_delete(struct l2tp_session *session) l2tp_session_delete() argument
1708 if (session->ref) l2tp_session_delete()
1709 (*session->ref)(session); l2tp_session_delete()
1710 __l2tp_session_unhash(session); l2tp_session_delete()
1711 l2tp_session_queue_purge(session); l2tp_session_delete()
1712 if (session->session_close != NULL) l2tp_session_delete()
1713 (*session->session_close)(session); l2tp_session_delete()
1714 if (session->deref) l2tp_session_delete()
1715 (*session->deref)(session); l2tp_session_delete()
1716 l2tp_session_dec_refcount(session); l2tp_session_delete()
1721 /* We come here whenever a session's send_seq, cookie_len or
1724 void l2tp_session_set_header_len(struct l2tp_session *session, int version) l2tp_session_set_header_len() argument
1727 session->hdr_len = 6; l2tp_session_set_header_len()
1728 if (session->send_seq) l2tp_session_set_header_len()
1729 session->hdr_len += 4; l2tp_session_set_header_len()
1731 session->hdr_len = 4 + session->cookie_len + session->l2specific_len + session->offset; l2tp_session_set_header_len()
1732 if (session->tunnel->encap == L2TP_ENCAPTYPE_UDP) l2tp_session_set_header_len()
1733 session->hdr_len += 4; l2tp_session_set_header_len()
1741 struct l2tp_session *session; l2tp_session_create() local
1743 session = kzalloc(sizeof(struct l2tp_session) + priv_size, GFP_KERNEL); l2tp_session_create()
1744 if (session != NULL) { l2tp_session_create()
1745 session->magic = L2TP_SESSION_MAGIC; l2tp_session_create()
1746 session->tunnel = tunnel; l2tp_session_create()
1748 session->session_id = session_id; l2tp_session_create()
1749 session->peer_session_id = peer_session_id; l2tp_session_create()
1750 session->nr = 0; l2tp_session_create()
1752 session->nr_max = 0xffff; l2tp_session_create()
1754 session->nr_max = 0xffffff; l2tp_session_create()
1755 session->nr_window_size = session->nr_max / 2; l2tp_session_create()
1756 session->nr_oos_count_max = 4; l2tp_session_create()
1759 session->reorder_skip = 1; l2tp_session_create()
1761 sprintf(&session->name[0], "sess %u/%u", l2tp_session_create()
1762 tunnel->tunnel_id, session->session_id); l2tp_session_create()
1764 skb_queue_head_init(&session->reorder_q); l2tp_session_create()
1766 INIT_HLIST_NODE(&session->hlist); l2tp_session_create()
1767 INIT_HLIST_NODE(&session->global_hlist); l2tp_session_create()
1770 session->debug = tunnel->debug; l2tp_session_create()
1773 session->pwtype = cfg->pw_type; l2tp_session_create()
1774 session->debug = cfg->debug; l2tp_session_create()
1775 session->mtu = cfg->mtu; l2tp_session_create()
1776 session->mru = cfg->mru; l2tp_session_create()
1777 session->send_seq = cfg->send_seq; l2tp_session_create()
1778 session->recv_seq = cfg->recv_seq; l2tp_session_create()
1779 session->lns_mode = cfg->lns_mode; l2tp_session_create()
1780 session->reorder_timeout = cfg->reorder_timeout; l2tp_session_create()
1781 session->offset = cfg->offset; l2tp_session_create()
1782 session->l2specific_type = cfg->l2specific_type; l2tp_session_create()
1783 session->l2specific_len = cfg->l2specific_len; l2tp_session_create()
1784 session->cookie_len = cfg->cookie_len; l2tp_session_create()
1785 memcpy(&session->cookie[0], &cfg->cookie[0], cfg->cookie_len); l2tp_session_create()
1786 session->peer_cookie_len = cfg->peer_cookie_len; l2tp_session_create()
1787 memcpy(&session->peer_cookie[0], &cfg->peer_cookie[0], cfg->peer_cookie_len); l2tp_session_create()
1791 session->build_header = l2tp_build_l2tpv2_header; l2tp_session_create()
1793 session->build_header = l2tp_build_l2tpv3_header; l2tp_session_create()
1795 l2tp_session_set_header_len(session, tunnel->version); l2tp_session_create()
1797 /* Bump the reference count. The session context is deleted l2tp_session_create()
1800 l2tp_session_inc_refcount(session); l2tp_session_create()
1806 /* Add session to the tunnel's hash list */ l2tp_session_create()
1808 hlist_add_head(&session->hlist, l2tp_session_create()
1812 /* And to the global session list if L2TPv3 */ l2tp_session_create()
1817 hlist_add_head_rcu(&session->global_hlist, l2tp_session_create()
1822 /* Ignore management session in session count value */ l2tp_session_create()
1823 if (session->session_id != 0) l2tp_session_create()
1827 return session; l2tp_session_create()
H A Dl2tp_ppp.c24 * To send data in an L2TP session, userspace opens a PPPoL2TP socket and
34 * over an L2TP session:-
119 /* Private data of each session. This data lives at the end of struct
120 * l2tp_session, referenced via session->priv[].
125 struct sock *sock; /* Pointer to the session
141 /* Helpers to obtain tunnel/session contexts from sockets.
145 struct l2tp_session *session; pppol2tp_sock_to_session() local
151 session = (struct l2tp_session *)(sk->sk_user_data); pppol2tp_sock_to_session()
152 if (session == NULL) { pppol2tp_sock_to_session()
157 BUG_ON(session->magic != L2TP_SESSION_MAGIC); pppol2tp_sock_to_session()
160 return session; pppol2tp_sock_to_session()
219 static void pppol2tp_recv(struct l2tp_session *session, struct sk_buff *skb, int data_len) pppol2tp_recv() argument
221 struct pppol2tp_session *ps = l2tp_session_priv(session); pppol2tp_recv()
225 * queue it on the session socket. pppol2tp_recv()
233 l2tp_dbg(session, PPPOL2TP_MSG_DATA, pppol2tp_recv()
235 session->name, data_len); pppol2tp_recv()
256 l2tp_dbg(session, PPPOL2TP_MSG_DATA, pppol2tp_recv()
258 session->name, data_len); pppol2tp_recv()
261 atomic_long_inc(&session->stats.rx_errors); pppol2tp_recv()
269 l2tp_info(session, PPPOL2TP_MSG_DATA, "%s: no socket\n", session->name); pppol2tp_recv()
273 static void pppol2tp_session_sock_hold(struct l2tp_session *session) pppol2tp_session_sock_hold() argument
275 struct pppol2tp_session *ps = l2tp_session_priv(session); pppol2tp_session_sock_hold()
281 static void pppol2tp_session_sock_put(struct l2tp_session *session) pppol2tp_session_sock_put() argument
283 struct pppol2tp_session *ps = l2tp_session_priv(session); pppol2tp_session_sock_put()
294 * when a user application does a sendmsg() on the session socket. L2TP and
304 struct l2tp_session *session; pppol2tp_sendmsg() local
313 /* Get session and tunnel contexts */ pppol2tp_sendmsg()
315 session = pppol2tp_sock_to_session(sk); pppol2tp_sendmsg()
316 if (session == NULL) pppol2tp_sendmsg()
319 ps = l2tp_session_priv(session); pppol2tp_sendmsg()
329 uhlen + session->hdr_len + pppol2tp_sendmsg()
355 l2tp_xmit_skb(session, skb, session->hdr_len); pppol2tp_sendmsg()
390 struct l2tp_session *session; pppol2tp_xmit() local
398 /* Get session and tunnel contexts from the socket */ pppol2tp_xmit()
399 session = pppol2tp_sock_to_session(sk); pppol2tp_xmit()
400 if (session == NULL) pppol2tp_xmit()
403 ps = l2tp_session_priv(session); pppol2tp_xmit()
415 session->hdr_len + /* L2TP header */ pppol2tp_xmit()
426 l2tp_xmit_skb(session, skb, session->hdr_len); pppol2tp_xmit()
447 /* Called by l2tp_core when a session socket is being closed.
449 static void pppol2tp_session_close(struct l2tp_session *session) pppol2tp_session_close() argument
451 struct pppol2tp_session *ps = l2tp_session_priv(session); pppol2tp_session_close()
455 BUG_ON(session->magic != L2TP_SESSION_MAGIC); pppol2tp_session_close()
459 /* Don't let the session go away before our socket does */ pppol2tp_session_close()
460 l2tp_session_inc_refcount(session); pppol2tp_session_close()
464 /* Really kill the session socket. (Called from sock_put() if
469 struct l2tp_session *session = sk->sk_user_data; pppol2tp_session_destruct() local
470 if (session) { pppol2tp_session_destruct()
472 BUG_ON(session->magic != L2TP_SESSION_MAGIC); pppol2tp_session_destruct()
473 l2tp_session_dec_refcount(session); pppol2tp_session_destruct()
477 /* Called when the PPPoX socket (session) is closed.
482 struct l2tp_session *session; pppol2tp_release() local
500 session = pppol2tp_sock_to_session(sk); pppol2tp_release()
503 if (session != NULL) { pppol2tp_release()
504 __l2tp_session_unhash(session); pppol2tp_release()
505 l2tp_session_queue_purge(session); pppol2tp_release()
513 /* This will delete the session context via pppol2tp_release()
575 struct l2tp_session *session = arg; pppol2tp_show() local
576 struct pppol2tp_session *ps = l2tp_session_priv(session); pppol2tp_show()
594 struct l2tp_session *session = NULL; pppol2tp_connect() local
703 /* Create session if it doesn't already exist. We handle the pppol2tp_connect()
704 * case where a session was previously created by the netlink pppol2tp_connect()
705 * interface by checking that the session doesn't already have pppol2tp_connect()
709 session = l2tp_session_find(sock_net(sk), tunnel, session_id); pppol2tp_connect()
710 if (session == NULL) { pppol2tp_connect()
716 /* Allocate and initialize a new session context. */ pppol2tp_connect()
717 session = l2tp_session_create(sizeof(struct pppol2tp_session), pppol2tp_connect()
720 if (session == NULL) { pppol2tp_connect()
725 ps = l2tp_session_priv(session); pppol2tp_connect()
735 /* Associate session with its PPPoL2TP socket */ pppol2tp_connect()
736 ps = l2tp_session_priv(session); pppol2tp_connect()
741 session->recv_skb = pppol2tp_recv; pppol2tp_connect()
742 session->session_close = pppol2tp_session_close; pppol2tp_connect()
744 session->show = pppol2tp_show; pppol2tp_connect()
750 session->ref = pppol2tp_session_sock_hold; pppol2tp_connect()
751 session->deref = pppol2tp_session_sock_put; pppol2tp_connect()
759 session->mtu = session->mru = pmtu - pppol2tp_connect()
769 if ((session->session_id == 0) && pppol2tp_connect()
770 (session->peer_session_id == 0)) { pppol2tp_connect()
783 po->chan.mtu = session->mtu; pppol2tp_connect()
790 /* This is how we get the session context from the socket. */ pppol2tp_connect()
791 sk->sk_user_data = session; pppol2tp_connect()
793 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: created\n", pppol2tp_connect()
794 session->name); pppol2tp_connect()
810 struct l2tp_session *session; pppol2tp_session_create() local
824 /* Check that this session doesn't already exist */ pppol2tp_session_create()
826 session = l2tp_session_find(net, tunnel, session_id); pppol2tp_session_create()
827 if (session != NULL) pppol2tp_session_create()
836 /* Allocate and initialize a new session context. */ pppol2tp_session_create()
838 session = l2tp_session_create(sizeof(struct pppol2tp_session), pppol2tp_session_create()
841 if (session == NULL) pppol2tp_session_create()
844 ps = l2tp_session_priv(session); pppol2tp_session_create()
847 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: created\n", pppol2tp_session_create()
848 session->name); pppol2tp_session_create()
865 struct l2tp_session *session; pppol2tp_getname() local
878 session = pppol2tp_sock_to_session(sk); pppol2tp_getname()
879 if (session == NULL) pppol2tp_getname()
882 pls = l2tp_session_priv(session); pppol2tp_getname()
900 sp.pppol2tp.s_session = session->session_id; pppol2tp_getname()
901 sp.pppol2tp.d_session = session->peer_session_id; pppol2tp_getname()
919 sp.pppol2tp.s_session = session->session_id; pppol2tp_getname()
920 sp.pppol2tp.d_session = session->peer_session_id; pppol2tp_getname()
938 sp.pppol2tp.s_session = session->session_id; pppol2tp_getname()
939 sp.pppol2tp.d_session = session->peer_session_id; pppol2tp_getname()
956 sp.pppol2tp.s_session = session->session_id; pppol2tp_getname()
957 sp.pppol2tp.d_session = session->peer_session_id; pppol2tp_getname()
1001 static int pppol2tp_session_ioctl(struct l2tp_session *session, pppol2tp_session_ioctl() argument
1008 struct pppol2tp_session *ps = l2tp_session_priv(session); pppol2tp_session_ioctl()
1009 struct l2tp_tunnel *tunnel = session->tunnel; pppol2tp_session_ioctl()
1012 l2tp_dbg(session, PPPOL2TP_MSG_CONTROL, pppol2tp_session_ioctl()
1014 session->name, cmd, arg); pppol2tp_session_ioctl()
1028 ifr.ifr_mtu = session->mtu; pppol2tp_session_ioctl()
1032 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: get mtu=%d\n", pppol2tp_session_ioctl()
1033 session->name, session->mtu); pppol2tp_session_ioctl()
1046 session->mtu = ifr.ifr_mtu; pppol2tp_session_ioctl()
1048 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: set mtu=%d\n", pppol2tp_session_ioctl()
1049 session->name, session->mtu); pppol2tp_session_ioctl()
1059 if (put_user(session->mru, (int __user *) arg)) pppol2tp_session_ioctl()
1062 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: get mru=%d\n", pppol2tp_session_ioctl()
1063 session->name, session->mru); pppol2tp_session_ioctl()
1076 session->mru = val; pppol2tp_session_ioctl()
1077 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: set mru=%d\n", pppol2tp_session_ioctl()
1078 session->name, session->mru); pppol2tp_session_ioctl()
1087 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: get flags=%d\n", pppol2tp_session_ioctl()
1088 session->name, ps->flags); pppol2tp_session_ioctl()
1097 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: set flags=%d\n", pppol2tp_session_ioctl()
1098 session->name, ps->flags); pppol2tp_session_ioctl()
1109 stats.session_id = session->session_id; pppol2tp_session_ioctl()
1110 pppol2tp_copy_stats(&stats, &session->stats); pppol2tp_session_ioctl()
1114 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: get L2TP stats\n", pppol2tp_session_ioctl()
1115 session->name); pppol2tp_session_ioctl()
1132 * specifies a session_id, the session ioctl handler is called. This allows an
1133 * application to retrieve session stats via a tunnel socket.
1161 /* resend to session ioctl handler */ pppol2tp_tunnel_ioctl()
1162 struct l2tp_session *session = pppol2tp_tunnel_ioctl() local
1164 if (session != NULL) pppol2tp_tunnel_ioctl()
1165 err = pppol2tp_session_ioctl(session, cmd, arg); pppol2tp_tunnel_ioctl()
1194 * Dispatch to tunnel or session helpers depending on the socket.
1200 struct l2tp_session *session; pppol2tp_ioctl() local
1217 /* Get session context from the socket */ pppol2tp_ioctl()
1219 session = pppol2tp_sock_to_session(sk); pppol2tp_ioctl()
1220 if (session == NULL) pppol2tp_ioctl()
1223 /* Special case: if session's session_id is zero, treat ioctl as a pppol2tp_ioctl()
1226 ps = l2tp_session_priv(session); pppol2tp_ioctl()
1227 if ((session->session_id == 0) && pppol2tp_ioctl()
1228 (session->peer_session_id == 0)) { pppol2tp_ioctl()
1239 err = pppol2tp_session_ioctl(session, cmd, arg); pppol2tp_ioctl()
1283 struct l2tp_session *session, pppol2tp_session_setsockopt()
1287 struct pppol2tp_session *ps = l2tp_session_priv(session); pppol2tp_session_setsockopt()
1295 session->recv_seq = val ? -1 : 0; pppol2tp_session_setsockopt()
1296 l2tp_info(session, PPPOL2TP_MSG_CONTROL, pppol2tp_session_setsockopt()
1298 session->name, session->recv_seq); pppol2tp_session_setsockopt()
1306 session->send_seq = val ? -1 : 0; pppol2tp_session_setsockopt()
1313 l2tp_session_set_header_len(session, session->tunnel->version); pppol2tp_session_setsockopt()
1314 l2tp_info(session, PPPOL2TP_MSG_CONTROL, pppol2tp_session_setsockopt()
1316 session->name, session->send_seq); pppol2tp_session_setsockopt()
1324 session->lns_mode = val ? -1 : 0; pppol2tp_session_setsockopt()
1325 l2tp_info(session, PPPOL2TP_MSG_CONTROL, pppol2tp_session_setsockopt()
1327 session->name, session->lns_mode); pppol2tp_session_setsockopt()
1331 session->debug = val; pppol2tp_session_setsockopt()
1332 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: set debug=%x\n", pppol2tp_session_setsockopt()
1333 session->name, session->debug); pppol2tp_session_setsockopt()
1337 session->reorder_timeout = msecs_to_jiffies(val); pppol2tp_session_setsockopt()
1338 l2tp_info(session, PPPOL2TP_MSG_CONTROL, pppol2tp_session_setsockopt()
1340 session->name, session->reorder_timeout); pppol2tp_session_setsockopt()
1352 * Does API checks, then calls either the tunnel or session setsockopt
1354 * session or the special tunnel type.
1360 struct l2tp_session *session; pppol2tp_setsockopt() local
1379 /* Get session context from the socket */ pppol2tp_setsockopt()
1381 session = pppol2tp_sock_to_session(sk); pppol2tp_setsockopt()
1382 if (session == NULL) pppol2tp_setsockopt()
1387 ps = l2tp_session_priv(session); pppol2tp_setsockopt()
1388 if ((session->session_id == 0) && pppol2tp_setsockopt()
1389 (session->peer_session_id == 0)) { pppol2tp_setsockopt()
1398 err = pppol2tp_session_setsockopt(sk, session, optname, val); pppol2tp_setsockopt()
1434 struct l2tp_session *session, pppol2tp_session_getsockopt()
1441 *val = session->recv_seq; pppol2tp_session_getsockopt()
1442 l2tp_info(session, PPPOL2TP_MSG_CONTROL, pppol2tp_session_getsockopt()
1443 "%s: get recv_seq=%d\n", session->name, *val); pppol2tp_session_getsockopt()
1447 *val = session->send_seq; pppol2tp_session_getsockopt()
1448 l2tp_info(session, PPPOL2TP_MSG_CONTROL, pppol2tp_session_getsockopt()
1449 "%s: get send_seq=%d\n", session->name, *val); pppol2tp_session_getsockopt()
1453 *val = session->lns_mode; pppol2tp_session_getsockopt()
1454 l2tp_info(session, PPPOL2TP_MSG_CONTROL, pppol2tp_session_getsockopt()
1455 "%s: get lns_mode=%d\n", session->name, *val); pppol2tp_session_getsockopt()
1459 *val = session->debug; pppol2tp_session_getsockopt()
1460 l2tp_info(session, PPPOL2TP_MSG_CONTROL, "%s: get debug=%d\n", pppol2tp_session_getsockopt()
1461 session->name, *val); pppol2tp_session_getsockopt()
1465 *val = (int) jiffies_to_msecs(session->reorder_timeout); pppol2tp_session_getsockopt()
1466 l2tp_info(session, PPPOL2TP_MSG_CONTROL, pppol2tp_session_getsockopt()
1467 "%s: get reorder_timeout=%d\n", session->name, *val); pppol2tp_session_getsockopt()
1478 * Does API checks, then calls either the tunnel or session getsockopt
1479 * handler, according to whether the PPPoX socket is a for a regular session
1486 struct l2tp_session *session; pppol2tp_getsockopt() local
1507 /* Get the session context */ pppol2tp_getsockopt()
1509 session = pppol2tp_sock_to_session(sk); pppol2tp_getsockopt()
1510 if (session == NULL) pppol2tp_getsockopt()
1514 ps = l2tp_session_priv(session); pppol2tp_getsockopt()
1515 if ((session->session_id == 0) && pppol2tp_getsockopt()
1516 (session->peer_session_id == 0)) { pppol2tp_getsockopt()
1525 err = pppol2tp_session_getsockopt(sk, session, optname, &val); pppol2tp_getsockopt()
1555 int session_idx; /* index of session within current tunnel */
1557 struct l2tp_session *session; /* NULL means get next tunnel */ member in struct:pppol2tp_seq_data
1577 pd->session = l2tp_session_find_nth(pd->tunnel, pd->session_idx); pppol2tp_next_session()
1580 if (pd->session == NULL) { pppol2tp_next_session()
1604 /* NULL tunnel and session indicates end of list */ pppol2tp_seq_start()
1605 if ((pd->tunnel == NULL) && (pd->session == NULL)) pppol2tp_seq_start()
1643 struct l2tp_session *session = v; pppol2tp_seq_session_show() local
1644 struct l2tp_tunnel *tunnel = session->tunnel; pppol2tp_seq_session_show()
1645 struct pppol2tp_session *ps = l2tp_session_priv(session); pppol2tp_seq_session_show()
1658 session->name, ip, port, pppol2tp_seq_session_show()
1660 session->session_id, pppol2tp_seq_session_show()
1662 session->peer_session_id, pppol2tp_seq_session_show()
1664 (session == ps->sock->sk_user_data) ? pppol2tp_seq_session_show()
1667 session->mtu, session->mru, pppol2tp_seq_session_show()
1668 session->recv_seq ? 'R' : '-', pppol2tp_seq_session_show()
1669 session->send_seq ? 'S' : '-', pppol2tp_seq_session_show()
1670 session->lns_mode ? "LNS" : "LAC", pppol2tp_seq_session_show()
1671 session->debug, pppol2tp_seq_session_show()
1672 jiffies_to_msecs(session->reorder_timeout)); pppol2tp_seq_session_show()
1674 session->nr, session->ns, pppol2tp_seq_session_show()
1675 atomic_long_read(&session->stats.tx_packets), pppol2tp_seq_session_show()
1676 atomic_long_read(&session->stats.tx_bytes), pppol2tp_seq_session_show()
1677 atomic_long_read(&session->stats.tx_errors), pppol2tp_seq_session_show()
1678 atomic_long_read(&session->stats.rx_packets), pppol2tp_seq_session_show()
1679 atomic_long_read(&session->stats.rx_bytes), pppol2tp_seq_session_show()
1680 atomic_long_read(&session->stats.rx_errors)); pppol2tp_seq_session_show()
1693 seq_puts(m, "TUNNEL name, user-data-ok session-count\n"); pppol2tp_seq_show()
1702 /* Show the tunnel or session context. pppol2tp_seq_show()
1704 if (pd->session == NULL) pppol2tp_seq_show()
1707 pppol2tp_seq_session_show(m, pd->session); pppol2tp_seq_show()
1721 * iterating our tunnel / session contexts and store it in the private
1282 pppol2tp_session_setsockopt(struct sock *sk, struct l2tp_session *session, int optname, int val) pppol2tp_session_setsockopt() argument
1433 pppol2tp_session_getsockopt(struct sock *sk, struct l2tp_session *session, int optname, int *val) pppol2tp_session_getsockopt() argument
H A Dl2tp_eth.c43 struct l2tp_session *session; member in struct:l2tp_eth
96 struct l2tp_session *session = priv->session; l2tp_eth_dev_xmit() local
98 int ret = l2tp_xmit_skb(session, skb, session->hdr_len); l2tp_eth_dev_xmit()
141 static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb, int data_len) l2tp_eth_dev_recv() argument
143 struct l2tp_eth_sess *spriv = l2tp_session_priv(session); l2tp_eth_dev_recv()
147 if (session->debug & L2TP_MSG_DATA) { l2tp_eth_dev_recv()
154 pr_debug("%s: eth recv\n", session->name); l2tp_eth_dev_recv()
182 static void l2tp_eth_delete(struct l2tp_session *session) l2tp_eth_delete() argument
187 if (session) { l2tp_eth_delete()
188 spriv = l2tp_session_priv(session); l2tp_eth_delete()
201 struct l2tp_session *session = arg; l2tp_eth_show() local
202 struct l2tp_eth_sess *spriv = l2tp_session_priv(session); l2tp_eth_show()
214 struct l2tp_session *session; l2tp_eth_create() local
226 session = l2tp_session_find(net, tunnel, session_id); l2tp_eth_create()
227 if (session) { l2tp_eth_create()
243 session = l2tp_session_create(sizeof(*spriv), tunnel, session_id, l2tp_eth_create()
245 if (!session) { l2tp_eth_create()
258 if (session->mtu == 0) l2tp_eth_create()
259 session->mtu = dev->mtu - session->hdr_len; l2tp_eth_create()
260 dev->mtu = session->mtu; l2tp_eth_create()
261 dev->needed_headroom += session->hdr_len; l2tp_eth_create()
265 priv->session = session; l2tp_eth_create()
269 session->recv_skb = l2tp_eth_dev_recv; l2tp_eth_create()
270 session->session_close = l2tp_eth_delete; l2tp_eth_create()
272 session->show = l2tp_eth_show; l2tp_eth_create()
275 spriv = l2tp_session_priv(session); l2tp_eth_create()
284 strlcpy(session->ifname, dev->name, IFNAMSIZ); l2tp_eth_create()
298 l2tp_session_delete(session); l2tp_eth_create()
H A Dl2tp_netlink.c52 int flags, struct l2tp_session *session,
64 struct l2tp_session *session = NULL; l2tp_nl_session_find() local
69 session = l2tp_session_find_by_ifname(net, ifname); l2tp_nl_session_find()
76 session = l2tp_session_find(net, tunnel, session_id); l2tp_nl_session_find()
79 return session; l2tp_nl_session_find()
142 struct l2tp_session *session, l2tp_session_notify()
153 NLM_F_ACK, session, cmd); l2tp_session_notify()
486 struct l2tp_session *session; l2tp_nl_cmd_session_create() local
506 session = l2tp_session_find(net, tunnel, session_id); l2tp_nl_cmd_session_create()
507 if (session) { l2tp_nl_cmd_session_create()
622 session = l2tp_session_find(net, tunnel, session_id); l2tp_nl_cmd_session_create()
623 if (session) l2tp_nl_cmd_session_create()
624 ret = l2tp_session_notify(&l2tp_nl_family, info, session, l2tp_nl_cmd_session_create()
635 struct l2tp_session *session; l2tp_nl_cmd_session_delete() local
638 session = l2tp_nl_session_find(info); l2tp_nl_cmd_session_delete()
639 if (session == NULL) { l2tp_nl_cmd_session_delete()
645 session, L2TP_CMD_SESSION_DELETE); l2tp_nl_cmd_session_delete()
647 pw_type = session->pwtype; l2tp_nl_cmd_session_delete()
650 ret = (*l2tp_nl_cmd_ops[pw_type]->session_delete)(session); l2tp_nl_cmd_session_delete()
659 struct l2tp_session *session; l2tp_nl_cmd_session_modify() local
661 session = l2tp_nl_session_find(info); l2tp_nl_cmd_session_modify()
662 if (session == NULL) { l2tp_nl_cmd_session_modify()
668 session->debug = nla_get_u32(info->attrs[L2TP_ATTR_DEBUG]); l2tp_nl_cmd_session_modify()
671 session->data_seq = nla_get_u8(info->attrs[L2TP_ATTR_DATA_SEQ]); l2tp_nl_cmd_session_modify()
674 session->recv_seq = nla_get_u8(info->attrs[L2TP_ATTR_RECV_SEQ]); l2tp_nl_cmd_session_modify()
677 session->send_seq = nla_get_u8(info->attrs[L2TP_ATTR_SEND_SEQ]); l2tp_nl_cmd_session_modify()
678 l2tp_session_set_header_len(session, session->tunnel->version); l2tp_nl_cmd_session_modify()
682 session->lns_mode = nla_get_u8(info->attrs[L2TP_ATTR_LNS_MODE]); l2tp_nl_cmd_session_modify()
685 session->reorder_timeout = nla_get_msecs(info->attrs[L2TP_ATTR_RECV_TIMEOUT]); l2tp_nl_cmd_session_modify()
688 session->mtu = nla_get_u16(info->attrs[L2TP_ATTR_MTU]); l2tp_nl_cmd_session_modify()
691 session->mru = nla_get_u16(info->attrs[L2TP_ATTR_MRU]); l2tp_nl_cmd_session_modify()
694 session, L2TP_CMD_SESSION_MODIFY); l2tp_nl_cmd_session_modify()
701 struct l2tp_session *session, u8 cmd) l2tp_nl_session_send()
705 struct l2tp_tunnel *tunnel = session->tunnel; l2tp_nl_session_send()
715 nla_put_u32(skb, L2TP_ATTR_SESSION_ID, session->session_id) || l2tp_nl_session_send()
718 session->peer_session_id) || l2tp_nl_session_send()
719 nla_put_u32(skb, L2TP_ATTR_DEBUG, session->debug) || l2tp_nl_session_send()
720 nla_put_u16(skb, L2TP_ATTR_PW_TYPE, session->pwtype) || l2tp_nl_session_send()
721 nla_put_u16(skb, L2TP_ATTR_MTU, session->mtu) || l2tp_nl_session_send()
722 (session->mru && l2tp_nl_session_send()
723 nla_put_u16(skb, L2TP_ATTR_MRU, session->mru))) l2tp_nl_session_send()
726 if ((session->ifname[0] && l2tp_nl_session_send()
727 nla_put_string(skb, L2TP_ATTR_IFNAME, session->ifname)) || l2tp_nl_session_send()
728 (session->cookie_len && l2tp_nl_session_send()
729 nla_put(skb, L2TP_ATTR_COOKIE, session->cookie_len, l2tp_nl_session_send()
730 &session->cookie[0])) || l2tp_nl_session_send()
731 (session->peer_cookie_len && l2tp_nl_session_send()
732 nla_put(skb, L2TP_ATTR_PEER_COOKIE, session->peer_cookie_len, l2tp_nl_session_send()
733 &session->peer_cookie[0])) || l2tp_nl_session_send()
734 nla_put_u8(skb, L2TP_ATTR_RECV_SEQ, session->recv_seq) || l2tp_nl_session_send()
735 nla_put_u8(skb, L2TP_ATTR_SEND_SEQ, session->send_seq) || l2tp_nl_session_send()
736 nla_put_u8(skb, L2TP_ATTR_LNS_MODE, session->lns_mode) || l2tp_nl_session_send()
741 (session->reorder_timeout && l2tp_nl_session_send()
742 nla_put_msecs(skb, L2TP_ATTR_RECV_TIMEOUT, session->reorder_timeout))) l2tp_nl_session_send()
750 atomic_long_read(&session->stats.tx_packets)) || l2tp_nl_session_send()
752 atomic_long_read(&session->stats.tx_bytes)) || l2tp_nl_session_send()
754 atomic_long_read(&session->stats.tx_errors)) || l2tp_nl_session_send()
756 atomic_long_read(&session->stats.rx_packets)) || l2tp_nl_session_send()
758 atomic_long_read(&session->stats.rx_bytes)) || l2tp_nl_session_send()
760 atomic_long_read(&session->stats.rx_seq_discards)) || l2tp_nl_session_send()
762 atomic_long_read(&session->stats.rx_oos_packets)) || l2tp_nl_session_send()
764 atomic_long_read(&session->stats.rx_errors))) l2tp_nl_session_send()
778 struct l2tp_session *session; l2tp_nl_cmd_session_get() local
782 session = l2tp_nl_session_find(info); l2tp_nl_cmd_session_get()
783 if (session == NULL) { l2tp_nl_cmd_session_get()
795 0, session, L2TP_CMD_SESSION_GET); l2tp_nl_cmd_session_get()
811 struct l2tp_session *session; l2tp_nl_cmd_session_dump() local
823 session = l2tp_session_find_nth(tunnel, si); l2tp_nl_cmd_session_dump()
824 if (session == NULL) { l2tp_nl_cmd_session_dump()
833 session, L2TP_CMD_SESSION_GET) < 0) l2tp_nl_cmd_session_dump()
140 l2tp_session_notify(struct genl_family *family, struct genl_info *info, struct l2tp_session *session, u8 cmd) l2tp_session_notify() argument
700 l2tp_nl_session_send(struct sk_buff *skb, u32 portid, u32 seq, int flags, struct l2tp_session *session, u8 cmd) l2tp_nl_session_send() argument
H A Dl2tp_core.h18 /* Per tunnel, session hash table size */
22 /* System-wide, session hash table size */
52 /* Describes a session. Contains information to determine incoming
102 u32 nr; /* session NR state (receive) */
103 u32 ns; /* session NR state (send) */
137 int (*build_header)(struct l2tp_session *session, void *buf);
138 void (*recv_skb)(struct l2tp_session *session, struct sk_buff *skb, int data_len);
139 void (*session_close)(struct l2tp_session *session);
140 void (*ref)(struct l2tp_session *session);
141 void (*deref)(struct l2tp_session *session);
210 int (*session_delete)(struct l2tp_session *session);
218 static inline void *l2tp_session_priv(struct l2tp_session *session) l2tp_session_priv() argument
220 return &session->priv[0]; l2tp_session_priv()
260 void __l2tp_session_unhash(struct l2tp_session *session);
261 int l2tp_session_delete(struct l2tp_session *session);
262 void l2tp_session_free(struct l2tp_session *session);
263 void l2tp_recv_common(struct l2tp_session *session, struct sk_buff *skb,
266 int l2tp_session_queue_purge(struct l2tp_session *session);
268 void l2tp_session_set_header_len(struct l2tp_session *session, int version);
270 int l2tp_xmit_skb(struct l2tp_session *session, struct sk_buff *skb,
278 * to a session.
280 static inline void l2tp_session_inc_refcount_1(struct l2tp_session *session) l2tp_session_inc_refcount_1() argument
282 atomic_inc(&session->ref_count); l2tp_session_inc_refcount_1()
285 static inline void l2tp_session_dec_refcount_1(struct l2tp_session *session) l2tp_session_dec_refcount_1() argument
287 if (atomic_dec_and_test(&session->ref_count)) l2tp_session_dec_refcount_1()
288 l2tp_session_free(session); l2tp_session_dec_refcount_1()
H A Dl2tp_ip.c83 * consider. Data frames consist of a non-zero session-id and an
122 struct l2tp_session *session; l2tp_ip_recv() local
144 /* Ok, this is a data packet. Lookup the session. */ l2tp_ip_recv()
145 session = l2tp_session_find(net, NULL, session_id); l2tp_ip_recv()
146 if (session == NULL) l2tp_ip_recv()
149 tunnel = session->tunnel; l2tp_ip_recv()
163 l2tp_recv_common(session, skb, ptr, optr, 0, skb->len, tunnel->recv_payload_hook); l2tp_ip_recv()
H A Dl2tp_ip6.c96 * consider. Data frames consist of a non-zero session-id and an
134 struct l2tp_session *session; l2tp_ip6_recv() local
156 /* Ok, this is a data packet. Lookup the session. */ l2tp_ip6_recv()
157 session = l2tp_session_find(&init_net, NULL, session_id); l2tp_ip6_recv()
158 if (session == NULL) l2tp_ip6_recv()
161 tunnel = session->tunnel; l2tp_ip6_recv()
175 l2tp_recv_common(session, skb, ptr, optr, 0, skb->len, l2tp_ip6_recv()
498 int transhdrlen = 4; /* zero session-id */ l2tp_ip6_sendmsg()
/linux-4.1.27/kernel/trace/
H A Dtrace_stat.c30 /* A stat session is the stats output in one file */
39 /* All of the sessions currently in use. Each stat file embed one session */
46 static void __reset_stat_session(struct stat_session *session) __reset_stat_session() argument
50 rbtree_postorder_for_each_entry_safe(snode, n, &session->stat_root, node) { __reset_stat_session()
51 if (session->ts->stat_release) __reset_stat_session()
52 session->ts->stat_release(snode->stat); __reset_stat_session()
56 session->stat_root = RB_ROOT; __reset_stat_session()
59 static void reset_stat_session(struct stat_session *session) reset_stat_session() argument
61 mutex_lock(&session->stat_mutex); reset_stat_session()
62 __reset_stat_session(session); reset_stat_session()
63 mutex_unlock(&session->stat_mutex); reset_stat_session()
66 static void destroy_session(struct stat_session *session) destroy_session() argument
68 tracefs_remove(session->file); destroy_session()
69 __reset_stat_session(session); destroy_session()
70 mutex_destroy(&session->stat_mutex); destroy_session()
71 kfree(session); destroy_session()
124 static int stat_seq_init(struct stat_session *session) stat_seq_init() argument
126 struct tracer_stat *ts = session->ts; stat_seq_init()
127 struct rb_root *root = &session->stat_root; stat_seq_init()
132 mutex_lock(&session->stat_mutex); stat_seq_init()
133 __reset_stat_session(session); stat_seq_init()
162 mutex_unlock(&session->stat_mutex); stat_seq_init()
166 __reset_stat_session(session); stat_seq_init()
167 mutex_unlock(&session->stat_mutex); stat_seq_init()
174 struct stat_session *session = s->private; stat_seq_start() local
180 mutex_lock(&session->stat_mutex); stat_seq_start()
183 if (session->ts->stat_headers) { stat_seq_start()
189 node = rb_first(&session->stat_root); stat_seq_start()
198 struct stat_session *session = s->private; stat_seq_next() local
204 return rb_first(&session->stat_root); stat_seq_next()
211 struct stat_session *session = s->private; stat_seq_stop() local
212 mutex_unlock(&session->stat_mutex); stat_seq_stop()
217 struct stat_session *session = s->private; stat_seq_show() local
221 return session->ts->stat_headers(s); stat_seq_show()
223 return session->ts->stat_show(s, l->stat); stat_seq_show()
233 /* The session stat is refilled and resorted at each stat file opening */ tracing_stat_open()
238 struct stat_session *session = inode->i_private; tracing_stat_open() local
240 ret = stat_seq_init(session); tracing_stat_open()
246 reset_stat_session(session); tracing_stat_open()
251 m->private = session; tracing_stat_open()
260 struct stat_session *session = i->i_private; tracing_stat_release() local
262 reset_stat_session(session); tracing_stat_release()
289 static int init_stat_file(struct stat_session *session) init_stat_file() argument
294 session->file = tracefs_create_file(session->ts->name, 0644, init_stat_file()
296 session, &tracing_stat_fops); init_stat_file()
297 if (!session->file) init_stat_file()
304 struct stat_session *session, *node; register_stat_tracer() local
323 /* Init the session */ register_stat_tracer()
324 session = kzalloc(sizeof(*session), GFP_KERNEL); register_stat_tracer()
325 if (!session) register_stat_tracer()
328 session->ts = trace; register_stat_tracer()
329 INIT_LIST_HEAD(&session->session_list); register_stat_tracer()
330 mutex_init(&session->stat_mutex); register_stat_tracer()
332 ret = init_stat_file(session); register_stat_tracer()
334 destroy_session(session); register_stat_tracer()
340 list_add_tail(&session->session_list, &all_stat_sessions); register_stat_tracer()
/linux-4.1.27/drivers/scsi/
H A Dlibiscsi.c90 struct Scsi_Host *shost = conn->session->host; iscsi_conn_queue_work()
98 static void __iscsi_update_cmdsn(struct iscsi_session *session, __iscsi_update_cmdsn() argument
108 if (exp_cmdsn != session->exp_cmdsn && __iscsi_update_cmdsn()
109 !iscsi_sna_lt(exp_cmdsn, session->exp_cmdsn)) __iscsi_update_cmdsn()
110 session->exp_cmdsn = exp_cmdsn; __iscsi_update_cmdsn()
112 if (max_cmdsn != session->max_cmdsn && __iscsi_update_cmdsn()
113 !iscsi_sna_lt(max_cmdsn, session->max_cmdsn)) __iscsi_update_cmdsn()
114 session->max_cmdsn = max_cmdsn; __iscsi_update_cmdsn()
117 void iscsi_update_cmdsn(struct iscsi_session *session, struct iscsi_nopin *hdr) iscsi_update_cmdsn() argument
119 __iscsi_update_cmdsn(session, be32_to_cpu(hdr->exp_cmdsn), iscsi_update_cmdsn()
212 ISCSI_DBG_SESSION(task->conn->session, iscsi_prep_ecdb_ahs()
238 ISCSI_DBG_SESSION(task->conn->session, iscsi_prep_bidi_ahs()
297 if (conn->session->fast_abort) { iscsi_check_tmf_restrictions()
315 ISCSI_DBG_SESSION(conn->session, iscsi_check_tmf_restrictions()
338 struct iscsi_session *session = conn->session; iscsi_prep_scsi_cmd_pdu() local
349 if (conn->session->tt->alloc_pdu) { iscsi_prep_scsi_cmd_pdu()
350 rc = conn->session->tt->alloc_pdu(task, ISCSI_OP_SCSI_CMD); iscsi_prep_scsi_cmd_pdu()
358 if (session->tt->parse_pdu_itt) iscsi_prep_scsi_cmd_pdu()
362 task->conn->session->age); iscsi_prep_scsi_cmd_pdu()
416 if (session->imm_data_en) { iscsi_prep_scsi_cmd_pdu()
417 if (transfer_length >= session->first_burst) iscsi_prep_scsi_cmd_pdu()
418 task->imm_count = min(session->first_burst, iscsi_prep_scsi_cmd_pdu()
427 if (!session->initial_r2t_en) { iscsi_prep_scsi_cmd_pdu()
428 r2t->data_length = min(session->first_burst, iscsi_prep_scsi_cmd_pdu()
455 hdr->cmdsn = task->cmdsn = cpu_to_be32(session->cmdsn); iscsi_prep_scsi_cmd_pdu()
457 if (session->tt->init_task && session->tt->init_task(task)) iscsi_prep_scsi_cmd_pdu()
461 session->cmdsn++; iscsi_prep_scsi_cmd_pdu()
464 ISCSI_DBG_SESSION(session, "iscsi prep [%s cid %d sc %p cdb 0x%x " iscsi_prep_scsi_cmd_pdu()
471 session->cmdsn, iscsi_prep_scsi_cmd_pdu()
472 session->max_cmdsn - session->exp_cmdsn + 1); iscsi_prep_scsi_cmd_pdu()
480 * Must be called with session back_lock.
487 struct iscsi_session *session = conn->session; iscsi_free_task() local
491 ISCSI_DBG_SESSION(session, "freeing task itt 0x%x state %d sc %p\n", iscsi_free_task()
494 session->tt->cleanup_task(task); iscsi_free_task()
503 kfifo_in(&session->cmdpool.queue, (void*)&task, sizeof(void*)); iscsi_free_task()
532 struct iscsi_session *session = task->conn->session; iscsi_put_task() local
535 spin_lock_bh(&session->back_lock); iscsi_put_task()
537 spin_unlock_bh(&session->back_lock); iscsi_put_task()
546 * Must be called with session back_lock.
552 ISCSI_DBG_SESSION(conn->session, iscsi_complete_task()
585 * Called with session back_lock
592 ISCSI_DBG_SESSION(conn->session, "[itt 0x%x]\n", task->itt); iscsi_complete_scsi_task()
595 __iscsi_update_cmdsn(conn->session, exp_cmdsn, max_cmdsn); iscsi_complete_scsi_task()
602 * session back_lock must be held and if not called for a task that is
626 conn->session->queued_cmdsn--; fail_scsi_task()
643 spin_lock_bh(&conn->session->back_lock); fail_scsi_task()
645 spin_unlock_bh(&conn->session->back_lock); fail_scsi_task()
651 struct iscsi_session *session = conn->session; iscsi_prep_mgmt_task() local
656 if (conn->session->state == ISCSI_STATE_LOGGING_OUT) iscsi_prep_mgmt_task()
664 nop->cmdsn = cpu_to_be32(session->cmdsn); iscsi_prep_mgmt_task()
667 * TODO: We always use immediate for normal session pdus. iscsi_prep_mgmt_task()
676 session->queued_cmdsn++; iscsi_prep_mgmt_task()
677 session->cmdsn++; iscsi_prep_mgmt_task()
681 if (session->tt->init_task && session->tt->init_task(task)) iscsi_prep_mgmt_task()
685 session->state = ISCSI_STATE_LOGGING_OUT; iscsi_prep_mgmt_task()
688 ISCSI_DBG_SESSION(session, "mgmtpdu [op 0x%x hdr->itt 0x%x " iscsi_prep_mgmt_task()
698 struct iscsi_session *session = conn->session; __iscsi_conn_send_pdu() local
699 struct iscsi_host *ihost = shost_priv(session->host); __iscsi_conn_send_pdu()
704 if (session->state == ISCSI_STATE_TERMINATE) __iscsi_conn_send_pdu()
727 if (session->state != ISCSI_STATE_LOGGED_IN) __iscsi_conn_send_pdu()
738 if (!kfifo_out(&session->cmdpool.queue, __iscsi_conn_send_pdu()
759 if (conn->session->tt->alloc_pdu) { __iscsi_conn_send_pdu()
760 if (conn->session->tt->alloc_pdu(task, hdr->opcode)) { __iscsi_conn_send_pdu()
772 if (session->tt->parse_pdu_itt) __iscsi_conn_send_pdu()
776 task->conn->session->age); __iscsi_conn_send_pdu()
783 if (session->tt->xmit_task(task)) __iscsi_conn_send_pdu()
794 spin_lock_bh(&session->back_lock); __iscsi_conn_send_pdu()
796 spin_unlock_bh(&session->back_lock); __iscsi_conn_send_pdu()
804 struct iscsi_session *session = conn->session; iscsi_conn_send_pdu() local
807 spin_lock_bh(&session->frwd_lock); iscsi_conn_send_pdu()
810 spin_unlock_bh(&session->frwd_lock); iscsi_conn_send_pdu()
831 struct iscsi_session *session = conn->session; iscsi_scsi_cmd_rsp() local
834 iscsi_update_cmdsn(session, (struct iscsi_nopin*)rhdr); iscsi_scsi_cmd_rsp()
848 BUG_ON(!session->tt->check_protection); iscsi_scsi_cmd_rsp()
850 ascq = session->tt->check_protection(task, &sector); iscsi_scsi_cmd_rsp()
889 ISCSI_DBG_SESSION(session, "copied %d bytes of sense\n", iscsi_scsi_cmd_rsp()
919 ISCSI_DBG_SESSION(session, "cmd rsp done [sc %p res %d itt 0x%x]\n", iscsi_scsi_cmd_rsp()
941 iscsi_update_cmdsn(conn->session, (struct iscsi_nopin *)hdr); iscsi_data_in_rsp()
956 ISCSI_DBG_SESSION(conn->session, "data in with status done " iscsi_data_in_rsp()
1080 spin_unlock(&conn->session->back_lock); iscsi_handle_reject()
1081 spin_lock(&conn->session->frwd_lock); iscsi_handle_reject()
1084 spin_unlock(&conn->session->frwd_lock); iscsi_handle_reject()
1085 spin_lock(&conn->session->back_lock); iscsi_handle_reject()
1120 * the LDD's itt space does not include the session age.
1122 * The session back_lock must be held.
1126 struct iscsi_session *session = conn->session; iscsi_itt_to_task() local
1132 if (session->tt->parse_pdu_itt) iscsi_itt_to_task()
1133 session->tt->parse_pdu_itt(conn, itt, &i, NULL); iscsi_itt_to_task()
1136 if (i >= session->cmds_max) iscsi_itt_to_task()
1139 return session->cmds[i]; iscsi_itt_to_task()
1151 * queuecommand or send generic. session back_lock must be held and verify
1157 struct iscsi_session *session = conn->session; __iscsi_complete_pdu() local
1172 ISCSI_DBG_SESSION(session, "[op 0x%x cid %d itt 0x%x len %d]\n", __iscsi_complete_pdu()
1176 iscsi_update_cmdsn(session, (struct iscsi_nopin*)hdr); __iscsi_complete_pdu()
1189 spin_unlock(&session->back_lock); __iscsi_complete_pdu()
1190 spin_lock(&session->frwd_lock); __iscsi_complete_pdu()
1192 spin_unlock(&session->frwd_lock); __iscsi_complete_pdu()
1193 spin_lock(&session->back_lock); __iscsi_complete_pdu()
1244 iscsi_update_cmdsn(session, (struct iscsi_nopin*)hdr); __iscsi_complete_pdu()
1253 iscsi_update_cmdsn(session, (struct iscsi_nopin*)hdr); __iscsi_complete_pdu()
1260 iscsi_update_cmdsn(session, (struct iscsi_nopin*)hdr); __iscsi_complete_pdu()
1270 iscsi_update_cmdsn(session, (struct iscsi_nopin*)hdr); __iscsi_complete_pdu()
1300 spin_lock(&conn->session->back_lock); iscsi_complete_pdu()
1302 spin_unlock(&conn->session->back_lock); iscsi_complete_pdu()
1309 struct iscsi_session *session = conn->session; iscsi_verify_itt() local
1315 if (session->tt->parse_pdu_itt) iscsi_verify_itt()
1316 session->tt->parse_pdu_itt(conn, itt, &i, &age); iscsi_verify_itt()
1322 if (age != session->age) { iscsi_verify_itt()
1324 "received itt %x expected session age (%x)\n", iscsi_verify_itt()
1325 (__force u32)itt, session->age); iscsi_verify_itt()
1329 if (i >= session->cmds_max) { iscsi_verify_itt()
1332 "%u.\n", i, session->cmds_max); iscsi_verify_itt()
1346 * The session back_lock must be held.
1359 if (task->sc->SCp.phase != conn->session->age) { iscsi_itt_to_ctask()
1360 iscsi_session_printk(KERN_ERR, conn->session, iscsi_itt_to_ctask()
1361 "task's session age %d, expected %d\n", iscsi_itt_to_ctask()
1362 task->sc->SCp.phase, conn->session->age); iscsi_itt_to_ctask()
1370 void iscsi_session_failure(struct iscsi_session *session, iscsi_session_failure() argument
1376 spin_lock_bh(&session->frwd_lock); iscsi_session_failure()
1377 conn = session->leadconn; iscsi_session_failure()
1378 if (session->state == ISCSI_STATE_TERMINATE || !conn) { iscsi_session_failure()
1379 spin_unlock_bh(&session->frwd_lock); iscsi_session_failure()
1384 spin_unlock_bh(&session->frwd_lock); iscsi_session_failure()
1390 * the session. iscsi_session_failure()
1402 struct iscsi_session *session = conn->session; iscsi_conn_failure() local
1404 spin_lock_bh(&session->frwd_lock); iscsi_conn_failure()
1405 if (session->state == ISCSI_STATE_FAILED) { iscsi_conn_failure()
1406 spin_unlock_bh(&session->frwd_lock); iscsi_conn_failure()
1411 session->state = ISCSI_STATE_FAILED; iscsi_conn_failure()
1412 spin_unlock_bh(&session->frwd_lock); iscsi_conn_failure()
1422 struct iscsi_session *session = conn->session; iscsi_check_cmdsn_window_closed() local
1427 if (!iscsi_sna_lte(session->queued_cmdsn, session->max_cmdsn)) { iscsi_check_cmdsn_window_closed()
1428 ISCSI_DBG_SESSION(session, "iSCSI CmdSN closed. ExpCmdSn " iscsi_check_cmdsn_window_closed()
1430 session->exp_cmdsn, session->max_cmdsn, iscsi_check_cmdsn_window_closed()
1431 session->cmdsn, session->queued_cmdsn); iscsi_check_cmdsn_window_closed()
1446 spin_unlock_bh(&conn->session->frwd_lock); iscsi_xmit_task()
1447 rc = conn->session->tt->xmit_task(task); iscsi_xmit_task()
1448 spin_lock_bh(&conn->session->frwd_lock); iscsi_xmit_task()
1455 spin_lock(&conn->session->back_lock); iscsi_xmit_task()
1457 spin_unlock(&conn->session->back_lock); iscsi_xmit_task()
1462 * iscsi_requeue_task - requeue task to run from session workqueue
1465 * LLDs that need to run a task from the session workqueue should call
1466 * this. The session frwd_lock must be held. This should only be called
1497 spin_lock_bh(&conn->session->frwd_lock); iscsi_data_xmit()
1499 ISCSI_DBG_SESSION(conn->session, "Tx suspended!\n"); iscsi_data_xmit()
1500 spin_unlock_bh(&conn->session->frwd_lock); iscsi_data_xmit()
1522 spin_lock_bh(&conn->session->back_lock); iscsi_data_xmit()
1524 spin_unlock_bh(&conn->session->back_lock); iscsi_data_xmit()
1538 if (conn->session->state == ISCSI_STATE_LOGGING_OUT) { iscsi_data_xmit()
1569 if (conn->session->state == ISCSI_STATE_LOGGING_OUT) iscsi_data_xmit()
1586 spin_unlock_bh(&conn->session->frwd_lock); iscsi_data_xmit()
1590 spin_unlock_bh(&conn->session->frwd_lock); iscsi_data_xmit()
1612 if (!kfifo_out(&conn->session->cmdpool.queue, iscsi_alloc_task()
1616 sc->SCp.phase = conn->session->age; iscsi_alloc_task()
1649 struct iscsi_session *session; iscsi_queuecommand() local
1659 session = cls_session->dd_data; iscsi_queuecommand()
1660 spin_lock_bh(&session->frwd_lock); iscsi_queuecommand()
1668 if (session->state != ISCSI_STATE_LOGGED_IN) { iscsi_queuecommand()
1671 * and block the session we requeue here (commands could iscsi_queuecommand()
1675 switch (session->state) { iscsi_queuecommand()
1700 conn = session->leadconn; iscsi_queuecommand()
1735 if (session->tt->xmit_task(task)) { iscsi_queuecommand()
1736 session->cmdsn--; iscsi_queuecommand()
1745 session->queued_cmdsn++; iscsi_queuecommand()
1746 spin_unlock_bh(&session->frwd_lock); iscsi_queuecommand()
1752 spin_unlock_bh(&session->frwd_lock); iscsi_queuecommand()
1753 ISCSI_DBG_SESSION(session, "cmd 0x%x rejected (%d)\n", iscsi_queuecommand()
1760 spin_unlock_bh(&session->frwd_lock); iscsi_queuecommand()
1761 ISCSI_DBG_SESSION(session, "iscsi: cmd 0x%x is not queued (%d)\n", iscsi_queuecommand()
1777 struct iscsi_session *session = cls_session->dd_data; iscsi_target_alloc() local
1779 starget->can_queue = session->scsi_cmds_max; iscsi_target_alloc()
1787 struct iscsi_session *session = conn->session; iscsi_tmf_timedout() local
1789 spin_lock(&session->frwd_lock); iscsi_tmf_timedout()
1792 ISCSI_DBG_EH(session, "tmf timedout\n"); iscsi_tmf_timedout()
1796 spin_unlock(&session->frwd_lock); iscsi_tmf_timedout()
1803 struct iscsi_session *session = conn->session; iscsi_exec_task_mgmt_fn() local
1809 spin_unlock_bh(&session->frwd_lock); iscsi_exec_task_mgmt_fn()
1812 spin_lock_bh(&session->frwd_lock); iscsi_exec_task_mgmt_fn()
1820 ISCSI_DBG_EH(session, "tmf set timeout\n"); iscsi_exec_task_mgmt_fn()
1822 spin_unlock_bh(&session->frwd_lock); iscsi_exec_task_mgmt_fn()
1823 mutex_unlock(&session->eh_mutex); iscsi_exec_task_mgmt_fn()
1830 * 3) session is terminated or restarted or userspace has iscsi_exec_task_mgmt_fn()
1833 wait_event_interruptible(conn->ehwait, age != session->age || iscsi_exec_task_mgmt_fn()
1834 session->state != ISCSI_STATE_LOGGED_IN || iscsi_exec_task_mgmt_fn()
1840 mutex_lock(&session->eh_mutex); iscsi_exec_task_mgmt_fn()
1841 spin_lock_bh(&session->frwd_lock); iscsi_exec_task_mgmt_fn()
1842 /* if the session drops it will clean up the task */ iscsi_exec_task_mgmt_fn()
1843 if (age != session->age || iscsi_exec_task_mgmt_fn()
1844 session->state != ISCSI_STATE_LOGGED_IN) iscsi_exec_task_mgmt_fn()
1850 * Fail commands. session lock held and recv side suspended and xmit
1858 for (i = 0; i < conn->session->cmds_max; i++) { fail_scsi_tasks()
1859 task = conn->session->cmds[i]; fail_scsi_tasks()
1866 ISCSI_DBG_SESSION(conn->session, fail_scsi_tasks()
1877 * This grabs the session frwd_lock to make sure no one is in
1886 spin_lock_bh(&conn->session->frwd_lock); iscsi_suspend_queue()
1888 spin_unlock_bh(&conn->session->frwd_lock); iscsi_suspend_queue()
1902 struct Scsi_Host *shost = conn->session->host; iscsi_suspend_tx()
1938 struct iscsi_session *session; iscsi_eh_cmd_timed_out() local
1943 session = cls_session->dd_data; iscsi_eh_cmd_timed_out()
1945 ISCSI_DBG_EH(session, "scsi cmd %p timedout\n", sc); iscsi_eh_cmd_timed_out()
1947 spin_lock(&session->frwd_lock); iscsi_eh_cmd_timed_out()
1958 if (session->state != ISCSI_STATE_LOGGED_IN) { iscsi_eh_cmd_timed_out()
1967 conn = session->leadconn; iscsi_eh_cmd_timed_out()
1982 ISCSI_DBG_EH(session, "Command making progress. Asking " iscsi_eh_cmd_timed_out()
2002 for (i = 0; i < conn->session->cmds_max; i++) { iscsi_eh_cmd_timed_out()
2003 running_task = conn->session->cmds[i]; iscsi_eh_cmd_timed_out()
2027 ISCSI_DBG_EH(session, "Command has not made progress " iscsi_eh_cmd_timed_out()
2061 spin_unlock(&session->frwd_lock); iscsi_eh_cmd_timed_out()
2062 ISCSI_DBG_EH(session, "return %s\n", rc == BLK_EH_RESET_TIMER ? iscsi_eh_cmd_timed_out()
2070 struct iscsi_session *session = conn->session; iscsi_check_transport_timeouts() local
2073 spin_lock(&session->frwd_lock); iscsi_check_transport_timeouts()
2074 if (session->state != ISCSI_STATE_LOGGED_IN) iscsi_check_transport_timeouts()
2090 spin_unlock(&session->frwd_lock); iscsi_check_transport_timeouts()
2106 spin_unlock(&session->frwd_lock); iscsi_check_transport_timeouts()
2124 struct iscsi_session *session; iscsi_eh_abort() local
2131 session = cls_session->dd_data; iscsi_eh_abort()
2133 ISCSI_DBG_EH(session, "aborting sc %p\n", sc); iscsi_eh_abort()
2135 mutex_lock(&session->eh_mutex); iscsi_eh_abort()
2136 spin_lock_bh(&session->frwd_lock); iscsi_eh_abort()
2138 * if session was ISCSI_STATE_IN_RECOVERY then we may not have iscsi_eh_abort()
2142 ISCSI_DBG_EH(session, "sc never reached iscsi layer or " iscsi_eh_abort()
2144 spin_unlock_bh(&session->frwd_lock); iscsi_eh_abort()
2145 mutex_unlock(&session->eh_mutex); iscsi_eh_abort()
2150 * If we are not logged in or we have started a new session iscsi_eh_abort()
2153 if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN || iscsi_eh_abort()
2154 sc->SCp.phase != session->age) { iscsi_eh_abort()
2155 spin_unlock_bh(&session->frwd_lock); iscsi_eh_abort()
2156 mutex_unlock(&session->eh_mutex); iscsi_eh_abort()
2157 ISCSI_DBG_EH(session, "failing abort due to dropped " iscsi_eh_abort()
2158 "session.\n"); iscsi_eh_abort()
2162 conn = session->leadconn; iscsi_eh_abort()
2164 age = session->age; iscsi_eh_abort()
2167 ISCSI_DBG_EH(session, "aborting [sc %p itt 0x%x]\n", iscsi_eh_abort()
2172 ISCSI_DBG_EH(session, "sc completed while abort in progress\n"); iscsi_eh_abort()
2189 if (iscsi_exec_task_mgmt_fn(conn, hdr, age, session->abort_timeout)) { iscsi_eh_abort()
2196 spin_unlock_bh(&session->frwd_lock); iscsi_eh_abort()
2207 spin_lock_bh(&session->frwd_lock); iscsi_eh_abort()
2211 spin_unlock_bh(&session->frwd_lock); iscsi_eh_abort()
2215 spin_unlock_bh(&session->frwd_lock); iscsi_eh_abort()
2223 ISCSI_DBG_EH(session, "sc completed while abort in " iscsi_eh_abort()
2234 spin_unlock_bh(&session->frwd_lock); iscsi_eh_abort()
2236 ISCSI_DBG_EH(session, "abort success [sc %p itt 0x%x]\n", iscsi_eh_abort()
2238 mutex_unlock(&session->eh_mutex); iscsi_eh_abort()
2242 spin_unlock_bh(&session->frwd_lock); iscsi_eh_abort()
2244 ISCSI_DBG_EH(session, "abort failed [sc %p itt 0x%x]\n", sc, iscsi_eh_abort()
2246 mutex_unlock(&session->eh_mutex); iscsi_eh_abort()
2264 struct iscsi_session *session; iscsi_eh_device_reset() local
2270 session = cls_session->dd_data; iscsi_eh_device_reset()
2272 ISCSI_DBG_EH(session, "LU Reset [sc %p lun %llu]\n", sc, iscsi_eh_device_reset()
2275 mutex_lock(&session->eh_mutex); iscsi_eh_device_reset()
2276 spin_lock_bh(&session->frwd_lock); iscsi_eh_device_reset()
2281 if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN) iscsi_eh_device_reset()
2283 conn = session->leadconn; iscsi_eh_device_reset()
2293 if (iscsi_exec_task_mgmt_fn(conn, hdr, session->age, iscsi_eh_device_reset()
2294 session->lu_reset_timeout)) { iscsi_eh_device_reset()
2303 spin_unlock_bh(&session->frwd_lock); iscsi_eh_device_reset()
2312 spin_unlock_bh(&session->frwd_lock); iscsi_eh_device_reset()
2316 spin_lock_bh(&session->frwd_lock); iscsi_eh_device_reset()
2320 spin_unlock_bh(&session->frwd_lock); iscsi_eh_device_reset()
2326 spin_unlock_bh(&session->frwd_lock); iscsi_eh_device_reset()
2328 ISCSI_DBG_EH(session, "dev reset result = %s\n", iscsi_eh_device_reset()
2330 mutex_unlock(&session->eh_mutex); iscsi_eh_device_reset()
2337 struct iscsi_session *session = cls_session->dd_data; iscsi_session_recovery_timedout() local
2339 spin_lock_bh(&session->frwd_lock); iscsi_session_recovery_timedout()
2340 if (session->state != ISCSI_STATE_LOGGED_IN) { iscsi_session_recovery_timedout()
2341 session->state = ISCSI_STATE_RECOVERY_FAILED; iscsi_session_recovery_timedout()
2342 if (session->leadconn) iscsi_session_recovery_timedout()
2343 wake_up(&session->leadconn->ehwait); iscsi_session_recovery_timedout()
2345 spin_unlock_bh(&session->frwd_lock); iscsi_session_recovery_timedout()
2350 * iscsi_eh_session_reset - drop session and attempt relogin
2353 * This function will wait for a relogin, session termination from
2359 struct iscsi_session *session; iscsi_eh_session_reset() local
2363 session = cls_session->dd_data; iscsi_eh_session_reset()
2364 conn = session->leadconn; iscsi_eh_session_reset()
2366 mutex_lock(&session->eh_mutex); iscsi_eh_session_reset()
2367 spin_lock_bh(&session->frwd_lock); iscsi_eh_session_reset()
2368 if (session->state == ISCSI_STATE_TERMINATE) { iscsi_eh_session_reset()
2370 ISCSI_DBG_EH(session, iscsi_eh_session_reset()
2371 "failing session reset: Could not log back into " iscsi_eh_session_reset()
2372 "%s, %s [age %d]\n", session->targetname, iscsi_eh_session_reset()
2373 conn->persistent_address, session->age); iscsi_eh_session_reset()
2374 spin_unlock_bh(&session->frwd_lock); iscsi_eh_session_reset()
2375 mutex_unlock(&session->eh_mutex); iscsi_eh_session_reset()
2379 spin_unlock_bh(&session->frwd_lock); iscsi_eh_session_reset()
2380 mutex_unlock(&session->eh_mutex); iscsi_eh_session_reset()
2387 ISCSI_DBG_EH(session, "wait for relogin\n"); iscsi_eh_session_reset()
2389 session->state == ISCSI_STATE_TERMINATE || iscsi_eh_session_reset()
2390 session->state == ISCSI_STATE_LOGGED_IN || iscsi_eh_session_reset()
2391 session->state == ISCSI_STATE_RECOVERY_FAILED); iscsi_eh_session_reset()
2395 mutex_lock(&session->eh_mutex); iscsi_eh_session_reset()
2396 spin_lock_bh(&session->frwd_lock); iscsi_eh_session_reset()
2397 if (session->state == ISCSI_STATE_LOGGED_IN) { iscsi_eh_session_reset()
2398 ISCSI_DBG_EH(session, iscsi_eh_session_reset()
2399 "session reset succeeded for %s,%s\n", iscsi_eh_session_reset()
2400 session->targetname, conn->persistent_address); iscsi_eh_session_reset()
2403 spin_unlock_bh(&session->frwd_lock); iscsi_eh_session_reset()
2404 mutex_unlock(&session->eh_mutex); iscsi_eh_session_reset()
2427 struct iscsi_session *session; iscsi_eh_target_reset() local
2433 session = cls_session->dd_data; iscsi_eh_target_reset()
2435 ISCSI_DBG_EH(session, "tgt Reset [sc %p tgt %s]\n", sc, iscsi_eh_target_reset()
2436 session->targetname); iscsi_eh_target_reset()
2438 mutex_lock(&session->eh_mutex); iscsi_eh_target_reset()
2439 spin_lock_bh(&session->frwd_lock); iscsi_eh_target_reset()
2444 if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN) iscsi_eh_target_reset()
2446 conn = session->leadconn; iscsi_eh_target_reset()
2456 if (iscsi_exec_task_mgmt_fn(conn, hdr, session->age, iscsi_eh_target_reset()
2457 session->tgt_reset_timeout)) { iscsi_eh_target_reset()
2466 spin_unlock_bh(&session->frwd_lock); iscsi_eh_target_reset()
2475 spin_unlock_bh(&session->frwd_lock); iscsi_eh_target_reset()
2479 spin_lock_bh(&session->frwd_lock); iscsi_eh_target_reset()
2483 spin_unlock_bh(&session->frwd_lock); iscsi_eh_target_reset()
2489 spin_unlock_bh(&session->frwd_lock); iscsi_eh_target_reset()
2491 ISCSI_DBG_EH(session, "tgt %s reset result = %s\n", session->targetname, iscsi_eh_target_reset()
2493 mutex_unlock(&session->eh_mutex); iscsi_eh_target_reset()
2499 * iscsi_eh_recover_target - reset target and possibly the session
2503 * we will escalate to ERL0 session recovery.
2687 "of session teardown event because host already " iscsi_host_dec_session_cnt()
2701 * iscsi_session_setup - create iscsi cls session and host and session
2704 * @cmds_max: session can queue
2709 * a session per scsi host.
2721 struct iscsi_session *session; iscsi_session_setup() local
2771 session = cls_session->dd_data; iscsi_session_setup()
2772 session->cls_session = cls_session; iscsi_session_setup()
2773 session->host = shost; iscsi_session_setup()
2774 session->state = ISCSI_STATE_FREE; iscsi_session_setup()
2775 session->fast_abort = 1; iscsi_session_setup()
2776 session->tgt_reset_timeout = 30; iscsi_session_setup()
2777 session->lu_reset_timeout = 15; iscsi_session_setup()
2778 session->abort_timeout = 10; iscsi_session_setup()
2779 session->scsi_cmds_max = scsi_cmds; iscsi_session_setup()
2780 session->cmds_max = total_cmds; iscsi_session_setup()
2781 session->queued_cmdsn = session->cmdsn = initial_cmdsn; iscsi_session_setup()
2782 session->exp_cmdsn = initial_cmdsn + 1; iscsi_session_setup()
2783 session->max_cmdsn = initial_cmdsn + 1; iscsi_session_setup()
2784 session->max_r2t = 1; iscsi_session_setup()
2785 session->tt = iscsit; iscsi_session_setup()
2786 session->dd_data = cls_session->dd_data + sizeof(*session); iscsi_session_setup()
2788 mutex_init(&session->eh_mutex); iscsi_session_setup()
2789 spin_lock_init(&session->frwd_lock); iscsi_session_setup()
2790 spin_lock_init(&session->back_lock); iscsi_session_setup()
2793 if (iscsi_pool_init(&session->cmdpool, session->cmds_max, iscsi_session_setup()
2794 (void***)&session->cmds, iscsi_session_setup()
2799 for (cmd_i = 0; cmd_i < session->cmds_max; cmd_i++) { iscsi_session_setup()
2800 struct iscsi_task *task = session->cmds[cmd_i]; iscsi_session_setup()
2820 iscsi_pool_free(&session->cmdpool); iscsi_session_setup()
2830 * iscsi_session_teardown - destroy session, host, and cls_session
2831 * @cls_session: iscsi session
2838 struct iscsi_session *session = cls_session->dd_data; iscsi_session_teardown() local
2840 struct Scsi_Host *shost = session->host; iscsi_session_teardown()
2842 iscsi_pool_free(&session->cmdpool); iscsi_session_teardown()
2844 kfree(session->password); iscsi_session_teardown()
2845 kfree(session->password_in); iscsi_session_teardown()
2846 kfree(session->username); iscsi_session_teardown()
2847 kfree(session->username_in); iscsi_session_teardown()
2848 kfree(session->targetname); iscsi_session_teardown()
2849 kfree(session->targetalias); iscsi_session_teardown()
2850 kfree(session->initiatorname); iscsi_session_teardown()
2851 kfree(session->boot_root); iscsi_session_teardown()
2852 kfree(session->boot_nic); iscsi_session_teardown()
2853 kfree(session->boot_target); iscsi_session_teardown()
2854 kfree(session->ifacename); iscsi_session_teardown()
2855 kfree(session->portal_type); iscsi_session_teardown()
2856 kfree(session->discovery_parent_type); iscsi_session_teardown()
2874 struct iscsi_session *session = cls_session->dd_data; iscsi_conn_setup() local
2887 conn->session = session; iscsi_conn_setup()
2904 spin_lock_bh(&session->frwd_lock); iscsi_conn_setup()
2905 if (!kfifo_out(&session->cmdpool.queue, iscsi_conn_setup()
2908 spin_unlock_bh(&session->frwd_lock); iscsi_conn_setup()
2911 spin_unlock_bh(&session->frwd_lock); iscsi_conn_setup()
2925 kfifo_in(&session->cmdpool.queue, (void*)&conn->login_task, iscsi_conn_setup()
2943 struct iscsi_session *session = conn->session; iscsi_conn_teardown() local
2947 mutex_lock(&session->eh_mutex); iscsi_conn_teardown()
2948 spin_lock_bh(&session->frwd_lock); iscsi_conn_teardown()
2950 if (session->leadconn == conn) { iscsi_conn_teardown()
2954 session->state = ISCSI_STATE_TERMINATE; iscsi_conn_teardown()
2957 spin_unlock_bh(&session->frwd_lock); iscsi_conn_teardown()
2962 spin_lock_bh(&session->frwd_lock); iscsi_conn_teardown()
2968 spin_lock_bh(&session->back_lock); iscsi_conn_teardown()
2969 kfifo_in(&session->cmdpool.queue, (void*)&conn->login_task, iscsi_conn_teardown()
2971 spin_unlock_bh(&session->back_lock); iscsi_conn_teardown()
2972 if (session->leadconn == conn) iscsi_conn_teardown()
2973 session->leadconn = NULL; iscsi_conn_teardown()
2974 spin_unlock_bh(&session->frwd_lock); iscsi_conn_teardown()
2975 mutex_unlock(&session->eh_mutex); iscsi_conn_teardown()
2984 struct iscsi_session *session = conn->session; iscsi_conn_start() local
2986 if (!session) { iscsi_conn_start()
2992 if ((session->imm_data_en || !session->initial_r2t_en) && iscsi_conn_start()
2993 session->first_burst > session->max_burst) { iscsi_conn_start()
2996 session->first_burst, session->max_burst); iscsi_conn_start()
3012 spin_lock_bh(&session->frwd_lock); iscsi_conn_start()
3014 session->state = ISCSI_STATE_LOGGED_IN; iscsi_conn_start()
3015 session->queued_cmdsn = session->cmdsn; iscsi_conn_start()
3031 session->age++; iscsi_conn_start()
3032 if (session->age == 16) iscsi_conn_start()
3033 session->age = 0; iscsi_conn_start()
3041 spin_unlock_bh(&session->frwd_lock); iscsi_conn_start()
3043 iscsi_unblock_session(session->cls_session); iscsi_conn_start()
3050 fail_mgmt_tasks(struct iscsi_session *session, struct iscsi_conn *conn) fail_mgmt_tasks() argument
3055 for (i = 0; i < conn->session->cmds_max; i++) { fail_mgmt_tasks()
3056 task = conn->session->cmds[i]; fail_mgmt_tasks()
3063 ISCSI_DBG_SESSION(conn->session, fail_mgmt_tasks()
3074 static void iscsi_start_session_recovery(struct iscsi_session *session, iscsi_start_session_recovery() argument
3079 mutex_lock(&session->eh_mutex); iscsi_start_session_recovery()
3080 spin_lock_bh(&session->frwd_lock); iscsi_start_session_recovery()
3082 spin_unlock_bh(&session->frwd_lock); iscsi_start_session_recovery()
3083 mutex_unlock(&session->eh_mutex); iscsi_start_session_recovery()
3093 session->state = ISCSI_STATE_TERMINATE; iscsi_start_session_recovery()
3095 session->state = ISCSI_STATE_IN_RECOVERY; iscsi_start_session_recovery()
3099 spin_unlock_bh(&session->frwd_lock); iscsi_start_session_recovery()
3104 spin_lock_bh(&session->frwd_lock); iscsi_start_session_recovery()
3106 spin_unlock_bh(&session->frwd_lock); iscsi_start_session_recovery()
3117 if (session->state == ISCSI_STATE_IN_RECOVERY && iscsi_start_session_recovery()
3119 ISCSI_DBG_SESSION(session, "blocking session\n"); iscsi_start_session_recovery()
3120 iscsi_block_session(session->cls_session); iscsi_start_session_recovery()
3127 spin_lock_bh(&session->frwd_lock); iscsi_start_session_recovery()
3129 fail_mgmt_tasks(session, conn); iscsi_start_session_recovery()
3131 spin_unlock_bh(&session->frwd_lock); iscsi_start_session_recovery()
3132 mutex_unlock(&session->eh_mutex); iscsi_start_session_recovery()
3138 struct iscsi_session *session = conn->session; iscsi_conn_stop() local
3143 iscsi_start_session_recovery(session, conn, flag); iscsi_conn_stop()
3155 struct iscsi_session *session = cls_session->dd_data; iscsi_conn_bind() local
3158 spin_lock_bh(&session->frwd_lock); iscsi_conn_bind()
3160 session->leadconn = conn; iscsi_conn_bind()
3161 spin_unlock_bh(&session->frwd_lock); iscsi_conn_bind()
3195 struct iscsi_session *session = conn->session; iscsi_set_param() local
3200 sscanf(buf, "%d", &session->fast_abort); iscsi_set_param()
3203 sscanf(buf, "%d", &session->abort_timeout); iscsi_set_param()
3206 sscanf(buf, "%d", &session->lu_reset_timeout); iscsi_set_param()
3209 sscanf(buf, "%d", &session->tgt_reset_timeout); iscsi_set_param()
3230 sscanf(buf, "%d", &session->initial_r2t_en); iscsi_set_param()
3233 sscanf(buf, "%hu", &session->max_r2t); iscsi_set_param()
3236 sscanf(buf, "%d", &session->imm_data_en); iscsi_set_param()
3239 sscanf(buf, "%d", &session->first_burst); iscsi_set_param()
3242 sscanf(buf, "%d", &session->max_burst); iscsi_set_param()
3245 sscanf(buf, "%d", &session->pdu_inorder_en); iscsi_set_param()
3248 sscanf(buf, "%d", &session->dataseq_inorder_en); iscsi_set_param()
3251 sscanf(buf, "%d", &session->erl); iscsi_set_param()
3257 return iscsi_switch_str_param(&session->username, buf); iscsi_set_param()
3259 return iscsi_switch_str_param(&session->username_in, buf); iscsi_set_param()
3261 return iscsi_switch_str_param(&session->password, buf); iscsi_set_param()
3263 return iscsi_switch_str_param(&session->password_in, buf); iscsi_set_param()
3265 return iscsi_switch_str_param(&session->targetname, buf); iscsi_set_param()
3267 return iscsi_switch_str_param(&session->targetalias, buf); iscsi_set_param()
3269 sscanf(buf, "%d", &session->tpgt); iscsi_set_param()
3277 return iscsi_switch_str_param(&session->ifacename, buf); iscsi_set_param()
3279 return iscsi_switch_str_param(&session->initiatorname, buf); iscsi_set_param()
3281 return iscsi_switch_str_param(&session->boot_root, buf); iscsi_set_param()
3283 return iscsi_switch_str_param(&session->boot_nic, buf); iscsi_set_param()
3285 return iscsi_switch_str_param(&session->boot_target, buf); iscsi_set_param()
3287 return iscsi_switch_str_param(&session->portal_type, buf); iscsi_set_param()
3289 return iscsi_switch_str_param(&session->discovery_parent_type, iscsi_set_param()
3293 session->discovery_sess = !!val; iscsi_set_param()
3308 struct iscsi_session *session = cls_session->dd_data; iscsi_session_get_param() local
3313 len = sprintf(buf, "%d\n", session->fast_abort); iscsi_session_get_param()
3316 len = sprintf(buf, "%d\n", session->abort_timeout); iscsi_session_get_param()
3319 len = sprintf(buf, "%d\n", session->lu_reset_timeout); iscsi_session_get_param()
3322 len = sprintf(buf, "%d\n", session->tgt_reset_timeout); iscsi_session_get_param()
3325 len = sprintf(buf, "%d\n", session->initial_r2t_en); iscsi_session_get_param()
3328 len = sprintf(buf, "%hu\n", session->max_r2t); iscsi_session_get_param()
3331 len = sprintf(buf, "%d\n", session->imm_data_en); iscsi_session_get_param()
3334 len = sprintf(buf, "%u\n", session->first_burst); iscsi_session_get_param()
3337 len = sprintf(buf, "%u\n", session->max_burst); iscsi_session_get_param()
3340 len = sprintf(buf, "%d\n", session->pdu_inorder_en); iscsi_session_get_param()
3343 len = sprintf(buf, "%d\n", session->dataseq_inorder_en); iscsi_session_get_param()
3346 len = sprintf(buf, "%d\n", session->def_taskmgmt_tmo); iscsi_session_get_param()
3349 len = sprintf(buf, "%d\n", session->erl); iscsi_session_get_param()
3352 len = sprintf(buf, "%s\n", session->targetname); iscsi_session_get_param()
3355 len = sprintf(buf, "%s\n", session->targetalias); iscsi_session_get_param()
3358 len = sprintf(buf, "%d\n", session->tpgt); iscsi_session_get_param()
3361 len = sprintf(buf, "%s\n", session->username); iscsi_session_get_param()
3364 len = sprintf(buf, "%s\n", session->username_in); iscsi_session_get_param()
3367 len = sprintf(buf, "%s\n", session->password); iscsi_session_get_param()
3370 len = sprintf(buf, "%s\n", session->password_in); iscsi_session_get_param()
3373 len = sprintf(buf, "%s\n", session->ifacename); iscsi_session_get_param()
3376 len = sprintf(buf, "%s\n", session->initiatorname); iscsi_session_get_param()
3379 len = sprintf(buf, "%s\n", session->boot_root); iscsi_session_get_param()
3382 len = sprintf(buf, "%s\n", session->boot_nic); iscsi_session_get_param()
3385 len = sprintf(buf, "%s\n", session->boot_target); iscsi_session_get_param()
3388 len = sprintf(buf, "%u\n", session->auto_snd_tgt_disable); iscsi_session_get_param()
3391 len = sprintf(buf, "%u\n", session->discovery_sess); iscsi_session_get_param()
3394 len = sprintf(buf, "%s\n", session->portal_type); iscsi_session_get_param()
3397 len = sprintf(buf, "%u\n", session->chap_auth_en); iscsi_session_get_param()
3400 len = sprintf(buf, "%u\n", session->discovery_logout_en); iscsi_session_get_param()
3403 len = sprintf(buf, "%u\n", session->bidi_chap_en); iscsi_session_get_param()
3406 len = sprintf(buf, "%u\n", session->discovery_auth_optional); iscsi_session_get_param()
3409 len = sprintf(buf, "%d\n", session->time2wait); iscsi_session_get_param()
3412 len = sprintf(buf, "%d\n", session->time2retain); iscsi_session_get_param()
3415 len = sprintf(buf, "%u\n", session->tsid); iscsi_session_get_param()
3419 session->isid[0], session->isid[1], iscsi_session_get_param()
3420 session->isid[2], session->isid[3], iscsi_session_get_param()
3421 session->isid[4], session->isid[5]); iscsi_session_get_param()
3424 len = sprintf(buf, "%u\n", session->discovery_parent_idx); iscsi_session_get_param()
3427 if (session->discovery_parent_type) iscsi_session_get_param()
3429 session->discovery_parent_type); iscsi_session_get_param()
H A Dscsi_transport_iscsi.c82 static atomic_t iscsi_session_nr; /* sysfs session id for next new session */
804 /* flash node session attrs show */
822 /* Flash node session attributes */
982 WARN_ONCE(1, "Invalid flashnode session attr"); iscsi_flashnode_sess_attr_is_visible()
1219 * iscsi_create_flashnode_sess - Add flashnode session entry in sysfs
1225 * Adds a sysfs entry for the flashnode session attributes
1269 * @fnode_sess: pointer to the parent flashnode session entry
1353 * iscsi_get_flashnode_by_index -finds flashnode session entry by index
1357 * Finds the flashnode session object for the passed index
1360 * pointer to found flashnode session object on success
1378 * iscsi_find_flashnode_sess - finds flashnode session entry
1383 * Finds the flashnode session object comparing the data passed using logic
1387 * pointer to found flashnode session device object on success
1400 * @fnode_sess: pointer to parent flashnode session entry
1426 * iscsi_destroy_flashnode_sess - destroy flashnode session entry
1427 * @fnode_sess: pointer to flashnode session entry to be destroyed
1429 * Deletes the flashnode session entry and all children flashnode connection
1456 * iscsi_destroy_all_flashnode - destroy all flashnode session entries
1459 * Destroys all the flashnode session entries and all corresponding children
1624 * Returns the matching session to a given sid
1688 int iscsi_session_chkready(struct iscsi_cls_session *session) iscsi_session_chkready() argument
1693 spin_lock_irqsave(&session->lock, flags); iscsi_session_chkready()
1694 switch (session->state) { iscsi_session_chkready()
1708 spin_unlock_irqrestore(&session->lock, flags); iscsi_session_chkready()
1713 int iscsi_is_session_online(struct iscsi_cls_session *session) iscsi_is_session_online() argument
1718 spin_lock_irqsave(&session->lock, flags); iscsi_is_session_online()
1719 if (session->state == ISCSI_SESSION_LOGGED_IN) iscsi_is_session_online()
1721 spin_unlock_irqrestore(&session->lock, flags); iscsi_is_session_online()
1728 struct iscsi_cls_session *session = iscsi_dev_to_session(dev); iscsi_session_release() local
1731 shost = iscsi_session_to_shost(session); iscsi_session_release()
1733 ISCSI_DBG_TRANS_SESSION(session, "Completing session release\n"); iscsi_session_release()
1734 kfree(session); iscsi_session_release()
1773 * qla4xxx will have kicked off some session unblocks before calling iscsi_scan_finished()
1789 struct iscsi_cls_session *session; iscsi_user_scan_session() local
1798 session = iscsi_dev_to_session(dev); iscsi_user_scan_session()
1800 ISCSI_DBG_TRANS_SESSION(session, "Scanning session\n"); iscsi_user_scan_session()
1802 shost = iscsi_session_to_shost(session); iscsi_user_scan_session()
1806 spin_lock_irqsave(&session->lock, flags); iscsi_user_scan_session()
1807 if (session->state != ISCSI_SESSION_LOGGED_IN) { iscsi_user_scan_session()
1808 spin_unlock_irqrestore(&session->lock, flags); iscsi_user_scan_session()
1811 id = session->target_id; iscsi_user_scan_session()
1812 spin_unlock_irqrestore(&session->lock, flags); iscsi_user_scan_session()
1819 scsi_scan_target(&session->dev, 0, id, iscsi_user_scan_session()
1825 ISCSI_DBG_TRANS_SESSION(session, "Completed session scan\n"); iscsi_user_scan_session()
1844 struct iscsi_cls_session *session = iscsi_scan_session() local
1846 struct Scsi_Host *shost = iscsi_session_to_shost(session); iscsi_scan_session()
1854 iscsi_user_scan_session(&session->dev, &scan_data); iscsi_scan_session()
1859 * iscsi_block_scsi_eh - block scsi eh until session state has transistioned
1862 * If the session is down this function will wait for the recovery
1863 * timer to fire or for the session to be logged back in. If the
1869 struct iscsi_cls_session *session = iscsi_block_scsi_eh() local
1874 spin_lock_irqsave(&session->lock, flags); iscsi_block_scsi_eh()
1875 while (session->state != ISCSI_SESSION_LOGGED_IN) { iscsi_block_scsi_eh()
1876 if (session->state == ISCSI_SESSION_FREE) { iscsi_block_scsi_eh()
1880 spin_unlock_irqrestore(&session->lock, flags); iscsi_block_scsi_eh()
1882 spin_lock_irqsave(&session->lock, flags); iscsi_block_scsi_eh()
1884 spin_unlock_irqrestore(&session->lock, flags); iscsi_block_scsi_eh()
1891 struct iscsi_cls_session *session = session_recovery_timedout() local
1896 iscsi_cls_session_printk(KERN_INFO, session, session_recovery_timedout()
1897 "session recovery timed out after %d secs\n", session_recovery_timedout()
1898 session->recovery_tmo); session_recovery_timedout()
1900 spin_lock_irqsave(&session->lock, flags); session_recovery_timedout()
1901 switch (session->state) { session_recovery_timedout()
1903 session->state = ISCSI_SESSION_FREE; session_recovery_timedout()
1908 spin_unlock_irqrestore(&session->lock, flags); session_recovery_timedout()
1911 spin_unlock_irqrestore(&session->lock, flags); session_recovery_timedout()
1913 if (session->transport->session_recovery_timedout) session_recovery_timedout()
1914 session->transport->session_recovery_timedout(session); session_recovery_timedout()
1916 ISCSI_DBG_TRANS_SESSION(session, "Unblocking SCSI target\n"); session_recovery_timedout()
1917 scsi_target_unblock(&session->dev, SDEV_TRANSPORT_OFFLINE); session_recovery_timedout()
1918 ISCSI_DBG_TRANS_SESSION(session, "Completed unblocking SCSI target\n"); session_recovery_timedout()
1923 struct iscsi_cls_session *session = __iscsi_unblock_session() local
1926 struct Scsi_Host *shost = iscsi_session_to_shost(session); __iscsi_unblock_session()
1930 ISCSI_DBG_TRANS_SESSION(session, "Unblocking session\n"); __iscsi_unblock_session()
1935 cancel_delayed_work(&session->recovery_work); __iscsi_unblock_session()
1936 spin_lock_irqsave(&session->lock, flags); __iscsi_unblock_session()
1937 session->state = ISCSI_SESSION_LOGGED_IN; __iscsi_unblock_session()
1938 spin_unlock_irqrestore(&session->lock, flags); __iscsi_unblock_session()
1940 scsi_target_unblock(&session->dev, SDEV_RUNNING); __iscsi_unblock_session()
1947 if (scsi_queue_work(shost, &session->scan_work)) __iscsi_unblock_session()
1950 ISCSI_DBG_TRANS_SESSION(session, "Completed unblocking session\n"); __iscsi_unblock_session()
1954 * iscsi_unblock_session - set a session as logged in and start IO.
1955 * @session: iscsi session
1957 * Mark a session as ready to accept IO.
1959 void iscsi_unblock_session(struct iscsi_cls_session *session) iscsi_unblock_session() argument
1961 queue_work(iscsi_eh_timer_workq, &session->unblock_work); iscsi_unblock_session()
1972 struct iscsi_cls_session *session = __iscsi_block_session() local
1977 ISCSI_DBG_TRANS_SESSION(session, "Blocking session\n"); __iscsi_block_session()
1978 spin_lock_irqsave(&session->lock, flags); __iscsi_block_session()
1979 session->state = ISCSI_SESSION_FAILED; __iscsi_block_session()
1980 spin_unlock_irqrestore(&session->lock, flags); __iscsi_block_session()
1981 scsi_target_block(&session->dev); __iscsi_block_session()
1982 ISCSI_DBG_TRANS_SESSION(session, "Completed SCSI target blocking\n"); __iscsi_block_session()
1983 if (session->recovery_tmo >= 0) __iscsi_block_session()
1985 &session->recovery_work, __iscsi_block_session()
1986 session->recovery_tmo * HZ); __iscsi_block_session()
1989 void iscsi_block_session(struct iscsi_cls_session *session) iscsi_block_session() argument
1991 queue_work(iscsi_eh_timer_workq, &session->block_work); iscsi_block_session()
1997 struct iscsi_cls_session *session = __iscsi_unbind_session() local
2000 struct Scsi_Host *shost = iscsi_session_to_shost(session); __iscsi_unbind_session()
2005 ISCSI_DBG_TRANS_SESSION(session, "Unbinding session\n"); __iscsi_unbind_session()
2009 spin_lock_irqsave(&session->lock, flags); __iscsi_unbind_session()
2010 if (session->target_id == ISCSI_MAX_TARGET) { __iscsi_unbind_session()
2011 spin_unlock_irqrestore(&session->lock, flags); __iscsi_unbind_session()
2016 target_id = session->target_id; __iscsi_unbind_session()
2017 session->target_id = ISCSI_MAX_TARGET; __iscsi_unbind_session()
2018 spin_unlock_irqrestore(&session->lock, flags); __iscsi_unbind_session()
2021 if (session->ida_used) __iscsi_unbind_session()
2024 scsi_remove_target(&session->dev); __iscsi_unbind_session()
2025 iscsi_session_event(session, ISCSI_KEVENT_UNBIND_SESSION); __iscsi_unbind_session()
2026 ISCSI_DBG_TRANS_SESSION(session, "Completed target removal\n"); __iscsi_unbind_session()
2033 struct iscsi_cls_session *session; iscsi_alloc_session() local
2035 session = kzalloc(sizeof(*session) + dd_size, iscsi_alloc_session()
2037 if (!session) iscsi_alloc_session()
2040 session->transport = transport; iscsi_alloc_session()
2041 session->creator = -1; iscsi_alloc_session()
2042 session->recovery_tmo = 120; iscsi_alloc_session()
2043 session->state = ISCSI_SESSION_FREE; iscsi_alloc_session()
2044 INIT_DELAYED_WORK(&session->recovery_work, session_recovery_timedout); iscsi_alloc_session()
2045 INIT_LIST_HEAD(&session->sess_list); iscsi_alloc_session()
2046 INIT_WORK(&session->unblock_work, __iscsi_unblock_session); iscsi_alloc_session()
2047 INIT_WORK(&session->block_work, __iscsi_block_session); iscsi_alloc_session()
2048 INIT_WORK(&session->unbind_work, __iscsi_unbind_session); iscsi_alloc_session()
2049 INIT_WORK(&session->scan_work, iscsi_scan_session); iscsi_alloc_session()
2050 spin_lock_init(&session->lock); iscsi_alloc_session()
2054 session->dev.parent = &shost->shost_gendev; iscsi_alloc_session()
2055 session->dev.release = iscsi_session_release; iscsi_alloc_session()
2056 device_initialize(&session->dev); iscsi_alloc_session()
2058 session->dd_data = &session[1]; iscsi_alloc_session()
2060 ISCSI_DBG_TRANS_SESSION(session, "Completed session allocation\n"); iscsi_alloc_session()
2061 return session; iscsi_alloc_session()
2065 int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id) iscsi_add_session() argument
2067 struct Scsi_Host *shost = iscsi_session_to_shost(session); iscsi_add_session()
2074 session->sid = atomic_add_return(1, &iscsi_session_nr); iscsi_add_session()
2080 iscsi_cls_session_printk(KERN_ERR, session, iscsi_add_session()
2084 session->target_id = (unsigned int)id; iscsi_add_session()
2085 session->ida_used = true; iscsi_add_session()
2087 session->target_id = target_id; iscsi_add_session()
2089 dev_set_name(&session->dev, "session%u", session->sid); iscsi_add_session()
2090 err = device_add(&session->dev); iscsi_add_session()
2092 iscsi_cls_session_printk(KERN_ERR, session, iscsi_add_session()
2093 "could not register session's dev\n"); iscsi_add_session()
2096 transport_register_device(&session->dev); iscsi_add_session()
2099 list_add(&session->sess_list, &sesslist); iscsi_add_session()
2102 iscsi_session_event(session, ISCSI_KEVENT_CREATE_SESSION); iscsi_add_session()
2103 ISCSI_DBG_TRANS_SESSION(session, "Completed session adding\n"); iscsi_add_session()
2107 if (session->ida_used) iscsi_add_session()
2108 ida_simple_remove(&iscsi_sess_ida, session->target_id); iscsi_add_session()
2115 * iscsi_create_session - create iscsi class session
2127 struct iscsi_cls_session *session; iscsi_create_session() local
2129 session = iscsi_alloc_session(shost, transport, dd_size); iscsi_create_session()
2130 if (!session) iscsi_create_session()
2133 if (iscsi_add_session(session, target_id)) { iscsi_create_session()
2134 iscsi_free_session(session); iscsi_create_session()
2137 return session; iscsi_create_session()
2163 void iscsi_remove_session(struct iscsi_cls_session *session) iscsi_remove_session() argument
2165 struct Scsi_Host *shost = iscsi_session_to_shost(session); iscsi_remove_session()
2169 ISCSI_DBG_TRANS_SESSION(session, "Removing session\n"); iscsi_remove_session()
2172 list_del(&session->sess_list); iscsi_remove_session()
2178 if (!cancel_delayed_work(&session->recovery_work)) iscsi_remove_session()
2184 * removing the session. iscsi_remove_session()
2186 spin_lock_irqsave(&session->lock, flags); iscsi_remove_session()
2187 session->state = ISCSI_SESSION_FREE; iscsi_remove_session()
2188 spin_unlock_irqrestore(&session->lock, flags); iscsi_remove_session()
2190 scsi_target_unblock(&session->dev, SDEV_TRANSPORT_OFFLINE); iscsi_remove_session()
2193 __iscsi_unbind_session(&session->unbind_work); iscsi_remove_session()
2195 /* hw iscsi may not have removed all connections from session */ iscsi_remove_session()
2196 err = device_for_each_child(&session->dev, NULL, iscsi_remove_session()
2199 iscsi_cls_session_printk(KERN_ERR, session, iscsi_remove_session()
2201 "for session. Error %d.\n", err); iscsi_remove_session()
2203 transport_unregister_device(&session->dev); iscsi_remove_session()
2205 ISCSI_DBG_TRANS_SESSION(session, "Completing session removal\n"); iscsi_remove_session()
2206 device_del(&session->dev); iscsi_remove_session()
2210 void iscsi_free_session(struct iscsi_cls_session *session) iscsi_free_session() argument
2212 ISCSI_DBG_TRANS_SESSION(session, "Freeing session\n"); iscsi_free_session()
2213 iscsi_session_event(session, ISCSI_KEVENT_DESTROY_SESSION); iscsi_free_session()
2214 put_device(&session->dev); iscsi_free_session()
2219 * iscsi_destroy_session - destroy iscsi session
2220 * @session: iscsi_session
2225 int iscsi_destroy_session(struct iscsi_cls_session *session) iscsi_destroy_session() argument
2227 iscsi_remove_session(session); iscsi_destroy_session()
2228 ISCSI_DBG_TRANS_SESSION(session, "Completing session destruction\n"); iscsi_destroy_session()
2229 iscsi_free_session(session); iscsi_destroy_session()
2236 * @session: iscsi cls session
2241 * is child of the session so cid must be unique for all connections
2242 * on the session.
2250 iscsi_create_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid) iscsi_create_conn() argument
2252 struct iscsi_transport *transport = session->transport; iscsi_create_conn()
2269 if (!get_device(&session->dev)) iscsi_create_conn()
2272 dev_set_name(&conn->dev, "connection%d:%u", session->sid, cid); iscsi_create_conn()
2273 conn->dev.parent = &session->dev; iscsi_create_conn()
2277 iscsi_cls_session_printk(KERN_ERR, session, "could not " iscsi_create_conn()
2291 put_device(&session->dev); iscsi_create_conn()
2301 * @conn: iscsi cls session
2635 * iscsi_session_event - send session destr. completion event
2636 * @session: iscsi class session
2639 int iscsi_session_event(struct iscsi_cls_session *session, iscsi_session_event() argument
2649 priv = iscsi_if_transport_lookup(session->transport); iscsi_session_event()
2652 shost = iscsi_session_to_shost(session); iscsi_session_event()
2656 iscsi_cls_session_printk(KERN_ERR, session, iscsi_session_event()
2657 "Cannot notify userspace of session " iscsi_session_event()
2664 ev->transport_handle = iscsi_handle(session->transport); iscsi_session_event()
2670 ev->r.d_session.sid = session->sid; iscsi_session_event()
2674 ev->r.c_session_ret.sid = session->sid; iscsi_session_event()
2678 ev->r.unbind_session.sid = session->sid; iscsi_session_event()
2681 iscsi_cls_session_printk(KERN_ERR, session, "Invalid event " iscsi_session_event()
2693 iscsi_cls_session_printk(KERN_ERR, session, iscsi_session_event()
2694 "Cannot notify userspace of session " iscsi_session_event()
2698 ISCSI_DBG_TRANS_SESSION(session, "Completed handling event %d rc %d\n", iscsi_session_event()
2711 struct iscsi_cls_session *session; iscsi_if_create_session() local
2714 session = transport->create_session(ep, cmds_max, queue_depth, iscsi_if_create_session()
2716 if (!session) iscsi_if_create_session()
2719 session->creator = pid; iscsi_if_create_session()
2720 shost = iscsi_session_to_shost(session); iscsi_if_create_session()
2722 ev->r.c_session_ret.sid = session->sid; iscsi_if_create_session()
2723 ISCSI_DBG_TRANS_SESSION(session, iscsi_if_create_session()
2724 "Completed creating transport session\n"); iscsi_if_create_session()
2732 struct iscsi_cls_session *session; iscsi_if_create_conn() local
2734 session = iscsi_session_lookup(ev->u.c_conn.sid); iscsi_if_create_conn()
2735 if (!session) { iscsi_if_create_conn()
2736 printk(KERN_ERR "iscsi: invalid session %d.\n", iscsi_if_create_conn()
2741 conn = transport->create_conn(session, ev->u.c_conn.cid); iscsi_if_create_conn()
2743 iscsi_cls_session_printk(KERN_ERR, session, iscsi_if_create_conn()
2748 ev->r.c_conn_ret.sid = session->sid; iscsi_if_create_conn()
2776 struct iscsi_cls_session *session; iscsi_set_param() local
2779 session = iscsi_session_lookup(ev->u.set_param.sid); iscsi_set_param()
2781 if (!conn || !session) iscsi_set_param()
2787 session->recovery_tmo = value; iscsi_set_param()
3385 struct iscsi_cls_session *session; iscsi_logout_flashnode_sid() local
3401 session = iscsi_session_lookup(ev->u.logout_flashnode_sid.sid); iscsi_logout_flashnode_sid()
3402 if (!session) { iscsi_logout_flashnode_sid()
3403 pr_err("%s could not find session id %u\n", iscsi_logout_flashnode_sid()
3409 err = transport->logout_flashnode_sid(session); iscsi_logout_flashnode_sid()
3496 struct iscsi_cls_session *session; iscsi_if_recv_msg() local
3535 session = iscsi_session_lookup(ev->u.d_session.sid); iscsi_if_recv_msg()
3536 if (session) iscsi_if_recv_msg()
3537 transport->destroy_session(session); iscsi_if_recv_msg()
3542 session = iscsi_session_lookup(ev->u.d_session.sid); iscsi_if_recv_msg()
3543 if (session) iscsi_if_recv_msg()
3544 scsi_queue_work(iscsi_session_to_shost(session), iscsi_if_recv_msg()
3545 &session->unbind_work); iscsi_if_recv_msg()
3556 session = iscsi_session_lookup(ev->u.b_conn.sid); iscsi_if_recv_msg()
3562 if (!session || !conn) { iscsi_if_recv_msg()
3567 ev->r.retcode = transport->bind_conn(session, conn, iscsi_if_recv_msg()
3935 * iSCSI session attrs
3942 struct iscsi_cls_session *session = \
3944 struct iscsi_transport *t = session->transport; \
3948 return t->get_session_param(session, param, buf); \
4001 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); show_priv_session_state() local
4002 return sprintf(buf, "%s\n", iscsi_session_state_name(session->state)); show_priv_session_state()
4010 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); show_priv_session_creator() local
4011 return sprintf(buf, "%d\n", session->creator); show_priv_session_creator()
4019 struct iscsi_cls_session *session = iscsi_dev_to_session(dev->parent); show_priv_session_target_id() local
4020 return sprintf(buf, "%d\n", session->target_id); show_priv_session_target_id()
4030 struct iscsi_cls_session *session = \
4032 if (session->field == -1) \
4034 return sprintf(buf, format"\n", session->field); \
4045 struct iscsi_cls_session *session = \
4047 if ((session->state == ISCSI_SESSION_FREE) || \
4048 (session->state == ISCSI_SESSION_FAILED)) \
4051 session->field = -1; \
4056 session->field = val; \
4121 struct iscsi_cls_session *session = transport_class_to_session(cdev); iscsi_session_attr_is_visible() local
4122 struct iscsi_transport *t = session->transport; iscsi_session_attr_is_visible()
4214 WARN_ONCE(1, "Invalid session attr"); iscsi_session_attr_is_visible()
4352 struct iscsi_cls_session *session; iscsi_session_match() local
4359 session = iscsi_dev_to_session(dev); iscsi_session_match()
4360 shost = iscsi_session_to_shost(session); iscsi_session_match()
4374 struct iscsi_cls_session *session; iscsi_conn_match() local
4383 session = iscsi_dev_to_session(conn->dev.parent); iscsi_conn_match()
4384 shost = iscsi_session_to_shost(session); iscsi_conn_match()
4458 /* session parameters */ iscsi_register_transport()
H A Dlibiscsi_tcp.c246 if (!(tcp_conn->iscsi_conn->session->tt->caps & CAP_PADDING_OFFLOAD)) { iscsi_tcp_segment_done()
437 !(conn->session->tt->caps & CAP_DIGEST_OFFLOAD)) iscsi_tcp_data_recv_prep()
449 * must be called with session back_lock
496 iscsi_update_cmdsn(conn->session, (struct iscsi_nopin*)rhdr); iscsi_tcp_data_in()
528 struct iscsi_session *session = conn->session; iscsi_tcp_r2t_rsp() local
552 iscsi_update_cmdsn(session, (struct iscsi_nopin*)rhdr); iscsi_tcp_r2t_rsp()
554 if (!task->sc || session->state != ISCSI_STATE_LOGGED_IN) { iscsi_tcp_r2t_rsp()
568 if (data_length > session->max_burst) iscsi_tcp_r2t_rsp()
571 data_length, session->max_burst); iscsi_tcp_r2t_rsp()
676 spin_lock(&conn->session->back_lock); iscsi_tcp_hdr_dissect()
683 spin_unlock(&conn->session->back_lock); iscsi_tcp_hdr_dissect()
701 !(conn->session->tt->caps & CAP_DIGEST_OFFLOAD)) iscsi_tcp_hdr_dissect()
716 spin_unlock(&conn->session->back_lock); iscsi_tcp_hdr_dissect()
720 spin_unlock(&conn->session->back_lock); iscsi_tcp_hdr_dissect()
730 spin_lock(&conn->session->back_lock); iscsi_tcp_hdr_dissect()
732 spin_unlock(&conn->session->back_lock); iscsi_tcp_hdr_dissect()
739 spin_lock(&conn->session->frwd_lock); iscsi_tcp_hdr_dissect()
741 spin_unlock(&conn->session->frwd_lock); iscsi_tcp_hdr_dissect()
832 !(conn->session->tt->caps & CAP_DIGEST_OFFLOAD)) { iscsi_tcp_hdr_recv_done()
971 return conn->session->tt->init_pdu(task, 0, task->data_count); iscsi_tcp_task_init()
981 err = conn->session->tt->init_pdu(task, 0, task->imm_count); iscsi_tcp_task_init()
1036 struct iscsi_session *session = conn->session; iscsi_tcp_task_xmit() local
1042 rc = session->tt->xmit_pdu(task); iscsi_tcp_task_xmit()
1064 rc = conn->session->tt->alloc_pdu(task, ISCSI_OP_SCSI_DATA_OUT); iscsi_tcp_task_xmit()
1073 rc = conn->session->tt->init_pdu(task, r2t->data_offset + r2t->sent, iscsi_tcp_task_xmit()
1118 int iscsi_tcp_r2tpool_alloc(struct iscsi_session *session) iscsi_tcp_r2tpool_alloc() argument
1126 for (cmd_i = 0; cmd_i < session->cmds_max; cmd_i++) { iscsi_tcp_r2tpool_alloc()
1127 struct iscsi_task *task = session->cmds[cmd_i]; iscsi_tcp_r2tpool_alloc()
1138 session->max_r2t * 2, NULL, iscsi_tcp_r2tpool_alloc()
1145 session->max_r2t * 4 * sizeof(void*), GFP_KERNEL)) { iscsi_tcp_r2tpool_alloc()
1157 struct iscsi_task *task = session->cmds[i]; iscsi_tcp_r2tpool_alloc()
1167 void iscsi_tcp_r2tpool_free(struct iscsi_session *session) iscsi_tcp_r2tpool_free() argument
1171 for (i = 0; i < session->cmds_max; i++) { iscsi_tcp_r2tpool_free()
1172 struct iscsi_task *task = session->cmds[i]; iscsi_tcp_r2tpool_free()
1183 struct iscsi_session *session = conn->session; iscsi_tcp_set_max_r2t() local
1187 if (session->max_r2t == r2ts) iscsi_tcp_set_max_r2t()
1193 session->max_r2t = r2ts; iscsi_tcp_set_max_r2t()
1194 iscsi_tcp_r2tpool_free(session); iscsi_tcp_set_max_r2t()
1195 return iscsi_tcp_r2tpool_alloc(session); iscsi_tcp_set_max_r2t()
H A Discsi_tcp.c119 (conn->session->state != ISCSI_STATE_LOGGING_OUT) && iscsi_sw_sk_state_check()
165 struct iscsi_session *session; iscsi_sw_tcp_state_change() local
174 session = conn->session; iscsi_sw_tcp_state_change()
584 struct iscsi_session *session = conn->session; iscsi_sw_tcp_release_conn() local
596 spin_lock_bh(&session->frwd_lock); iscsi_sw_tcp_release_conn()
598 spin_unlock_bh(&session->frwd_lock); iscsi_sw_tcp_release_conn()
646 struct iscsi_session *session = cls_session->dd_data; iscsi_sw_tcp_conn_bind() local
666 spin_lock_bh(&session->frwd_lock); iscsi_sw_tcp_conn_bind()
669 spin_unlock_bh(&session->frwd_lock); iscsi_sw_tcp_conn_bind()
730 spin_lock_bh(&conn->session->frwd_lock); iscsi_sw_tcp_conn_get_param()
732 spin_unlock_bh(&conn->session->frwd_lock); iscsi_sw_tcp_conn_get_param()
741 spin_unlock_bh(&conn->session->frwd_lock); iscsi_sw_tcp_conn_get_param()
758 struct iscsi_session *session = tcp_sw_host->session; iscsi_sw_tcp_host_get_param() local
767 if (!session) iscsi_sw_tcp_host_get_param()
770 spin_lock_bh(&session->frwd_lock); iscsi_sw_tcp_host_get_param()
771 conn = session->leadconn; iscsi_sw_tcp_host_get_param()
773 spin_unlock_bh(&session->frwd_lock); iscsi_sw_tcp_host_get_param()
780 spin_unlock_bh(&session->frwd_lock); iscsi_sw_tcp_host_get_param()
786 spin_unlock_bh(&session->frwd_lock); iscsi_sw_tcp_host_get_param()
823 struct iscsi_session *session; iscsi_sw_tcp_session_create() local
853 session = cls_session->dd_data; iscsi_sw_tcp_session_create()
855 tcp_sw_host->session = session; iscsi_sw_tcp_session_create()
857 shost->can_queue = session->scsi_cmds_max; iscsi_sw_tcp_session_create()
858 if (iscsi_tcp_r2tpool_alloc(session)) iscsi_sw_tcp_session_create()
977 /* session management */
H A Discsi_tcp.h59 struct iscsi_session *session; member in struct:iscsi_sw_tcp_host
H A Dsr_vendor.c239 * where starts the last session ?) */ sr_cd_check()
281 "No finished session\n"); sr_cd_check()
285 cgc.cmd[6] = rc & 0x7f; /* number of last session */ sr_cd_check()
/linux-4.1.27/tools/perf/util/
H A Dsession.h43 void perf_session__delete(struct perf_session *session);
47 int perf_session__peek_event(struct perf_session *session, off_t file_offset,
52 int perf_session__process_events(struct perf_session *session);
59 int perf_session__resolve_callchain(struct perf_session *session,
65 bool perf_session__has_traces(struct perf_session *session, const char *msg);
69 int perf_session__create_kernel_maps(struct perf_session *session);
71 void perf_session__set_id_hdr_size(struct perf_session *session);
74 struct machine *perf_session__find_machine(struct perf_session *session, pid_t pid) perf_session__find_machine() argument
76 return machines__find(&session->machines, pid); perf_session__find_machine()
80 struct machine *perf_session__findnew_machine(struct perf_session *session, pid_t pid) perf_session__findnew_machine() argument
82 return machines__findnew(&session->machines, pid); perf_session__findnew_machine()
85 struct thread *perf_session__findnew(struct perf_session *session, pid_t pid);
86 size_t perf_session__fprintf(struct perf_session *session, FILE *fp);
88 size_t perf_session__fprintf_dsos(struct perf_session *session, FILE *fp);
90 size_t perf_session__fprintf_dsos_buildid(struct perf_session *session, FILE *fp,
93 size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp);
95 struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session,
102 int perf_session__cpu_bitmap(struct perf_session *session,
109 int __perf_session__set_tracepoints_handlers(struct perf_session *session,
113 #define perf_session__set_tracepoints_handlers(session, array) \
114 __perf_session__set_tracepoints_handlers(session, array, ARRAY_SIZE(array))
120 int perf_session__deliver_synth_event(struct perf_session *session,
126 struct perf_session *session);
H A Dbuild-id.h20 int dsos__hit_all(struct perf_session *session);
22 bool perf_session__read_build_ids(struct perf_session *session, bool with_hits);
23 int perf_session__write_buildid_table(struct perf_session *session, int fd);
24 int perf_session__cache_build_ids(struct perf_session *session);
H A Dsession.c11 #include "session.h"
25 static int perf_session__open(struct perf_session *session) perf_session__open() argument
27 struct perf_data_file *file = session->file; perf_session__open()
29 if (perf_session__read_header(session) < 0) { perf_session__open()
37 if (!perf_evlist__valid_sample_type(session->evlist)) { perf_session__open()
42 if (!perf_evlist__valid_sample_id_all(session->evlist)) { perf_session__open()
47 if (!perf_evlist__valid_read_format(session->evlist)) { perf_session__open()
55 void perf_session__set_id_hdr_size(struct perf_session *session) perf_session__set_id_hdr_size() argument
57 u16 id_hdr_size = perf_evlist__id_hdr_size(session->evlist); perf_session__set_id_hdr_size()
59 machines__set_id_hdr_size(&session->machines, id_hdr_size); perf_session__set_id_hdr_size()
62 int perf_session__create_kernel_maps(struct perf_session *session) perf_session__create_kernel_maps() argument
64 int ret = machine__create_kernel_maps(&session->machines.host); perf_session__create_kernel_maps()
67 ret = machines__create_guest_kernel_maps(&session->machines); perf_session__create_kernel_maps()
71 static void perf_session__destroy_kernel_maps(struct perf_session *session) perf_session__destroy_kernel_maps() argument
73 machines__destroy_kernel_maps(&session->machines); perf_session__destroy_kernel_maps()
76 static bool perf_session__has_comm_exec(struct perf_session *session) perf_session__has_comm_exec() argument
80 evlist__for_each(session->evlist, evsel) { perf_session__has_comm_exec()
88 static void perf_session__set_comm_exec(struct perf_session *session) perf_session__set_comm_exec() argument
90 bool comm_exec = perf_session__has_comm_exec(session); perf_session__set_comm_exec()
92 machines__set_comm_exec(&session->machines, comm_exec); perf_session__set_comm_exec()
99 struct perf_session *session = container_of(oe, struct perf_session, ordered_events__deliver_event() local
101 int ret = perf_evlist__parse_sample(session->evlist, event->event, &sample); ordered_events__deliver_event()
108 return machines__deliver_event(&session->machines, session->evlist, event->event, ordered_events__deliver_event()
109 &sample, session->tool, event->file_offset); ordered_events__deliver_event()
115 struct perf_session *session = zalloc(sizeof(*session)); perf_session__new() local
117 if (!session) perf_session__new()
120 session->repipe = repipe; perf_session__new()
121 session->tool = tool; perf_session__new()
122 machines__init(&session->machines); perf_session__new()
123 ordered_events__init(&session->ordered_events, ordered_events__deliver_event); perf_session__new()
129 session->file = file; perf_session__new()
132 if (perf_session__open(session) < 0) perf_session__new()
135 perf_session__set_id_hdr_size(session); perf_session__new()
136 perf_session__set_comm_exec(session); perf_session__new()
145 if (perf_session__create_kernel_maps(session) < 0) perf_session__new()
150 tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) { perf_session__new()
155 return session; perf_session__new()
160 perf_session__delete(session); perf_session__new()
165 static void perf_session__delete_threads(struct perf_session *session) perf_session__delete_threads() argument
167 machine__delete_threads(&session->machines.host); perf_session__delete_threads()
186 void perf_session__delete(struct perf_session *session) perf_session__delete() argument
188 perf_session__destroy_kernel_maps(session); perf_session__delete()
189 perf_session__delete_threads(session); perf_session__delete()
190 perf_session_env__delete(&session->header.env); perf_session__delete()
191 machines__exit(&session->machines); perf_session__delete()
192 if (session->file) perf_session__delete()
193 perf_data_file__close(session->file); perf_session__delete()
194 free(session); perf_session__delete()
201 struct perf_session *session process_event_synth_tracing_data_stub()
238 struct perf_session *session __maybe_unused) process_build_id_stub()
947 static s64 perf_session__process_user_event(struct perf_session *session, perf_session__process_user_event() argument
951 struct ordered_events *oe = &session->ordered_events; perf_session__process_user_event()
952 struct perf_tool *tool = session->tool; perf_session__process_user_event()
953 int fd = perf_data_file__fd(session->file); perf_session__process_user_event()
956 dump_event(session->evlist, event, file_offset, NULL); perf_session__process_user_event()
961 err = tool->attr(tool, event, &session->evlist); perf_session__process_user_event()
963 perf_session__set_id_hdr_size(session); perf_session__process_user_event()
964 perf_session__set_comm_exec(session); perf_session__process_user_event()
976 return tool->tracing_data(tool, event, session); perf_session__process_user_event()
978 return tool->build_id(tool, event, session); perf_session__process_user_event()
982 return tool->id_index(tool, event, session); perf_session__process_user_event()
988 int perf_session__deliver_synth_event(struct perf_session *session, perf_session__deliver_synth_event() argument
992 struct perf_evlist *evlist = session->evlist; perf_session__deliver_synth_event()
993 struct perf_tool *tool = session->tool; perf_session__deliver_synth_event()
998 return perf_session__process_user_event(session, event, 0); perf_session__deliver_synth_event()
1000 return machines__deliver_event(&session->machines, evlist, event, sample, tool, 0); perf_session__deliver_synth_event()
1012 int perf_session__peek_event(struct perf_session *session, off_t file_offset, perf_session__peek_event() argument
1021 if (session->one_mmap && !session->header.needs_swap) { perf_session__peek_event()
1022 event = file_offset - session->one_mmap_offset + perf_session__peek_event()
1023 session->one_mmap_addr; perf_session__peek_event()
1027 if (perf_data_file__is_pipe(session->file)) perf_session__peek_event()
1030 fd = perf_data_file__fd(session->file); perf_session__peek_event()
1042 if (session->header.needs_swap) perf_session__peek_event()
1053 if (session->header.needs_swap) perf_session__peek_event()
1054 event_swap(event, perf_evlist__sample_id_all(session->evlist)); perf_session__peek_event()
1059 perf_evlist__parse_sample(session->evlist, event, sample)) perf_session__peek_event()
1067 static s64 perf_session__process_event(struct perf_session *session, perf_session__process_event() argument
1070 struct perf_evlist *evlist = session->evlist; perf_session__process_event()
1071 struct perf_tool *tool = session->tool; perf_session__process_event()
1075 if (session->header.needs_swap) perf_session__process_event()
1084 return perf_session__process_user_event(session, event, file_offset); perf_session__process_event()
1094 ret = perf_session__queue_event(session, event, &sample, file_offset); perf_session__process_event()
1099 return machines__deliver_event(&session->machines, evlist, event, perf_session__process_event()
1110 struct thread *perf_session__findnew(struct perf_session *session, pid_t pid) perf_session__findnew() argument
1112 return machine__findnew_thread(&session->machines.host, -1, pid); perf_session__findnew()
1115 static struct thread *perf_session__register_idle_thread(struct perf_session *session) perf_session__register_idle_thread() argument
1119 thread = machine__findnew_thread(&session->machines.host, 0, 0); perf_session__register_idle_thread()
1128 static void perf_session__warn_about_errors(const struct perf_session *session) perf_session__warn_about_errors() argument
1130 const struct events_stats *stats = &session->evlist->stats; perf_session__warn_about_errors()
1131 const struct ordered_events *oe = &session->ordered_events; perf_session__warn_about_errors()
1133 if (session->tool->lost == perf_event__process_lost && perf_session__warn_about_errors()
1175 static int __perf_session__process_pipe_events(struct perf_session *session) __perf_session__process_pipe_events() argument
1177 struct ordered_events *oe = &session->ordered_events; __perf_session__process_pipe_events()
1178 struct perf_tool *tool = session->tool; __perf_session__process_pipe_events()
1179 int fd = perf_data_file__fd(session->file); __perf_session__process_pipe_events()
1207 if (session->header.needs_swap) __perf_session__process_pipe_events()
1242 if ((skip = perf_session__process_event(session, event, head)) < 0) { __perf_session__process_pipe_events()
1261 perf_session__warn_about_errors(session); __perf_session__process_pipe_events()
1262 ordered_events__free(&session->ordered_events); __perf_session__process_pipe_events()
1267 fetch_mmaped_event(struct perf_session *session, fetch_mmaped_event() argument
1281 if (session->header.needs_swap) fetch_mmaped_event()
1286 if (session->header.needs_swap) fetch_mmaped_event()
1306 static int __perf_session__process_events(struct perf_session *session, __perf_session__process_events() argument
1310 struct ordered_events *oe = &session->ordered_events; __perf_session__process_events()
1311 struct perf_tool *tool = session->tool; __perf_session__process_events()
1312 int fd = perf_data_file__fd(session->file); __perf_session__process_events()
1335 session->one_mmap = true; __perf_session__process_events()
1343 if (session->header.needs_swap) { __perf_session__process_events()
1358 if (session->one_mmap) { __perf_session__process_events()
1359 session->one_mmap_addr = buf; __perf_session__process_events()
1360 session->one_mmap_offset = file_offset; __perf_session__process_events()
1364 event = fetch_mmaped_event(session, head, mmap_size, buf); __perf_session__process_events()
1380 (skip = perf_session__process_event(session, event, file_pos)) < 0) { __perf_session__process_events()
1407 perf_session__warn_about_errors(session); __perf_session__process_events()
1408 ordered_events__free(&session->ordered_events); __perf_session__process_events()
1409 session->one_mmap = false; __perf_session__process_events()
1413 int perf_session__process_events(struct perf_session *session) perf_session__process_events() argument
1415 u64 size = perf_data_file__size(session->file); perf_session__process_events()
1418 if (perf_session__register_idle_thread(session) == NULL) perf_session__process_events()
1421 if (!perf_data_file__is_pipe(session->file)) perf_session__process_events()
1422 err = __perf_session__process_events(session, perf_session__process_events()
1423 session->header.data_offset, perf_session__process_events()
1424 session->header.data_size, size); perf_session__process_events()
1426 err = __perf_session__process_pipe_events(session); perf_session__process_events()
1431 bool perf_session__has_traces(struct perf_session *session, const char *msg) perf_session__has_traces() argument
1435 evlist__for_each(session->evlist, evsel) { perf_session__has_traces()
1478 size_t perf_session__fprintf_dsos(struct perf_session *session, FILE *fp) perf_session__fprintf_dsos() argument
1480 return machines__fprintf_dsos(&session->machines, fp); perf_session__fprintf_dsos()
1483 size_t perf_session__fprintf_dsos_buildid(struct perf_session *session, FILE *fp, perf_session__fprintf_dsos_buildid() argument
1486 return machines__fprintf_dsos_buildid(&session->machines, fp, skip, parm); perf_session__fprintf_dsos_buildid()
1489 size_t perf_session__fprintf_nr_events(struct perf_session *session, FILE *fp) perf_session__fprintf_nr_events() argument
1493 ret += events_stats__fprintf(&session->evlist->stats, fp); perf_session__fprintf_nr_events()
1497 size_t perf_session__fprintf(struct perf_session *session, FILE *fp) perf_session__fprintf() argument
1501 * session, not just the host... perf_session__fprintf()
1503 return machine__fprintf(&session->machines.host, fp); perf_session__fprintf()
1506 struct perf_evsel *perf_session__find_first_evtype(struct perf_session *session, perf_session__find_first_evtype() argument
1511 evlist__for_each(session->evlist, pos) { perf_session__find_first_evtype()
1617 int perf_session__cpu_bitmap(struct perf_session *session, perf_session__cpu_bitmap() argument
1626 evsel = perf_session__find_first_evtype(session, i); perf_session__cpu_bitmap()
1662 void perf_session__fprintf_info(struct perf_session *session, FILE *fp, perf_session__fprintf_info() argument
1668 if (session == NULL || fp == NULL) perf_session__fprintf_info()
1671 fd = perf_data_file__fd(session->file); perf_session__fprintf_info()
1679 perf_header__fprintf_info(session, fp, full); perf_session__fprintf_info()
1684 int __perf_session__set_tracepoints_handlers(struct perf_session *session, __perf_session__set_tracepoints_handlers() argument
1694 * Adding a handler for an event not in the session, __perf_session__set_tracepoints_handlers()
1697 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, assocs[i].name); __perf_session__set_tracepoints_handlers()
1714 struct perf_session *session) perf_event__process_id_index()
1716 struct perf_evlist *evlist = session->evlist; perf_event__process_id_index()
1712 perf_event__process_id_index(struct perf_tool *tool __maybe_unused, union perf_event *event, struct perf_session *session) perf_event__process_id_index() argument
H A Dheader.h105 int perf_session__read_header(struct perf_session *session);
106 int perf_session__write_header(struct perf_session *session,
129 struct perf_session *session,
139 struct perf_session *session);
147 struct perf_session *session);
H A Dbuild-id.c16 #include "session.h"
218 int perf_session__write_buildid_table(struct perf_session *session, int fd) perf_session__write_buildid_table() argument
221 int err = machine__write_buildid_table(&session->machines.host, fd); perf_session__write_buildid_table()
226 for (nd = rb_first(&session->machines.guests); nd; nd = rb_next(nd)) { perf_session__write_buildid_table()
256 int dsos__hit_all(struct perf_session *session) dsos__hit_all() argument
261 err = machine__hit_all_dsos(&session->machines.host); dsos__hit_all()
265 for (nd = rb_first(&session->machines.guests); nd; nd = rb_next(nd)) { dsos__hit_all()
498 int perf_session__cache_build_ids(struct perf_session *session) perf_session__cache_build_ids() argument
509 ret = machine__cache_build_ids(&session->machines.host); perf_session__cache_build_ids()
511 for (nd = rb_first(&session->machines.guests); nd; nd = rb_next(nd)) { perf_session__cache_build_ids()
527 bool perf_session__read_build_ids(struct perf_session *session, bool with_hits) perf_session__read_build_ids() argument
530 bool ret = machine__read_build_ids(&session->machines.host, with_hits); perf_session__read_build_ids()
532 for (nd = rb_first(&session->machines.guests); nd; nd = rb_next(nd)) { perf_session__read_build_ids()
H A Dtop.h35 struct perf_session *session; member in struct:perf_top
H A Dheader.c17 #include "session.h"
179 struct perf_session *session; write_build_id() local
182 session = container_of(h, struct perf_session, header); write_build_id()
184 if (!perf_session__read_build_ids(session, true)) write_build_id()
187 err = perf_session__write_buildid_table(session, fd); write_build_id()
192 perf_session__cache_build_ids(session); write_build_id()
1194 struct perf_session *session; print_group_desc() local
1198 session = container_of(ph, struct perf_session, header); print_group_desc()
1200 evlist__for_each(session->evlist, evsel) { print_group_desc()
1218 struct perf_session *session) __event_process_build_id()
1227 machine = perf_session__findnew_machine(session, bev->pid); __event_process_build_id()
1274 struct perf_session *session = container_of(header, struct perf_session, header); perf_header__read_build_ids_abi_quirk() local
1309 __event_process_build_id(&bev, filename, session); perf_header__read_build_ids_abi_quirk()
1320 struct perf_session *session = container_of(header, struct perf_session, header); perf_header__read_build_ids() local
1357 __event_process_build_id(&bev, filename, session); perf_header__read_build_ids()
1513 struct perf_session *session; process_event_desc() local
1519 session = container_of(header, struct perf_session, header); process_event_desc()
1521 perf_evlist__set_event_name(session->evlist, evsel); process_event_desc()
1736 struct perf_session *session; process_group_desc() local
1780 session = container_of(ph, struct perf_session, header); process_group_desc()
1781 session->evlist->nr_groups = nr_groups; process_group_desc()
1784 evlist__for_each(session->evlist, evsel) { process_group_desc()
1898 int perf_header__fprintf_info(struct perf_session *session, FILE *fp, bool full) perf_header__fprintf_info() argument
1901 struct perf_header *header = &session->header; perf_header__fprintf_info()
1902 int fd = perf_data_file__fd(session->file); perf_header__fprintf_info()
1998 int perf_session__write_header(struct perf_session *session, perf_session__write_header() argument
2004 struct perf_header *header = &session->header; perf_session__write_header()
2011 evlist__for_each(session->evlist, evsel) { perf_session__write_header()
2360 static int perf_header__read_pipe(struct perf_session *session) perf_header__read_pipe() argument
2362 struct perf_header *header = &session->header; perf_header__read_pipe()
2366 perf_data_file__fd(session->file), perf_header__read_pipe()
2367 session->repipe) < 0) { perf_header__read_pipe()
2465 int perf_session__read_header(struct perf_session *session) perf_session__read_header() argument
2467 struct perf_data_file *file = session->file; perf_session__read_header()
2468 struct perf_header *header = &session->header; perf_session__read_header()
2475 session->evlist = perf_evlist__new(); perf_session__read_header()
2476 if (session->evlist == NULL) perf_session__read_header()
2480 return perf_header__read_pipe(session); perf_session__read_header()
2524 perf_evlist__add(session->evlist, evsel); perf_session__read_header()
2541 perf_evlist__id_add(session->evlist, evsel, 0, j, f_id); perf_session__read_header()
2549 perf_header__process_sections(header, fd, &session->tevent, perf_session__read_header()
2552 if (perf_evlist__prepare_tracepoint_events(session->evlist, perf_session__read_header()
2553 session->tevent.pevent)) perf_session__read_header()
2561 perf_evlist__delete(session->evlist); perf_session__read_header()
2562 session->evlist = NULL; perf_session__read_header()
2601 struct perf_session *session, perf_event__synthesize_attrs()
2607 evlist__for_each(session->evlist, evsel) { perf_event__synthesize_attrs()
2707 struct perf_session *session) perf_event__process_tracing_data()
2710 int fd = perf_data_file__fd(session->file); perf_event__process_tracing_data()
2718 size_read = trace_report(fd, &session->tevent, perf_event__process_tracing_data()
2719 session->repipe); perf_event__process_tracing_data()
2726 if (session->repipe) { perf_event__process_tracing_data()
2739 perf_evlist__prepare_tracepoint_events(session->evlist, perf_event__process_tracing_data()
2740 session->tevent.pevent); perf_event__process_tracing_data()
2775 struct perf_session *session) perf_event__process_build_id()
2779 session); perf_event__process_build_id()
1216 __event_process_build_id(struct build_id_event *bev, char *filename, struct perf_session *session) __event_process_build_id() argument
2600 perf_event__synthesize_attrs(struct perf_tool *tool, struct perf_session *session, perf_event__handler_t process) perf_event__synthesize_attrs() argument
2705 perf_event__process_tracing_data(struct perf_tool *tool __maybe_unused, union perf_event *event, struct perf_session *session) perf_event__process_tracing_data() argument
2773 perf_event__process_build_id(struct perf_tool *tool __maybe_unused, union perf_event *event, struct perf_session *session) perf_event__process_build_id() argument
H A Dtool.h27 struct perf_session *session);
H A Dkvm-stat.h7 #include "session.h"
76 struct perf_session *session; member in struct:perf_kvm_stat
H A Ddata-convert-bt.c21 #include "session.h"
593 static int setup_events(struct ctf_writer *cw, struct perf_session *session) setup_events() argument
595 struct perf_evlist *evlist = session->evlist; setup_events()
608 struct perf_session *session) ctf_writer__setup_env()
610 struct perf_header *header = &session->header; ctf_writer__setup_env()
796 struct perf_session *session; bt_convert__perf2ctf() local
824 /* perf.data session */ bt_convert__perf2ctf()
825 session = perf_session__new(&file, 0, &c.tool); bt_convert__perf2ctf()
826 if (!session) bt_convert__perf2ctf()
830 if (ctf_writer__setup_env(cw, session)) bt_convert__perf2ctf()
834 if (setup_events(cw, session)) bt_convert__perf2ctf()
837 err = perf_session__process_events(session); bt_convert__perf2ctf()
852 perf_session__delete(session); bt_convert__perf2ctf()
607 ctf_writer__setup_env(struct ctf_writer *cw, struct perf_session *session) ctf_writer__setup_env() argument
H A Dcallchain.h139 /* Close a cursor writing session. Initialize for the reader */ callchain_cursor_commit()
H A Dthread.c5 #include "session.h"
/linux-4.1.27/tools/perf/arch/
H A Dcommon.h4 #include "../util/session.h"
/linux-4.1.27/fs/ceph/
H A Dmds_client.c40 * We maintain a stateful "session" with each MDS we interact with.
41 * Within each session, we sent periodic heartbeat messages to ensure
43 * the session times out and goes stale, our leases and capabilities
393 struct ceph_mds_session *session; __ceph_lookup_mds_session() local
397 session = mdsc->sessions[mds]; __ceph_lookup_mds_session()
398 dout("lookup_mds_session %p %d\n", session, __ceph_lookup_mds_session()
399 atomic_read(&session->s_ref)); __ceph_lookup_mds_session()
400 get_session(session); __ceph_lookup_mds_session()
401 return session; __ceph_lookup_mds_session()
421 * create+register a new session for given mds.
511 * drop session refs in request.
565 * lookup session, bump ref if found.
700 * no session and the mds is not up (active or recovering). __choose_mds()
798 mds = cap->session->s_mds; __choose_mds()
813 * session messages
834 * session message, specialization for CEPH_SESSION_REQUEST_OPEN
905 * send session open request.
910 struct ceph_mds_session *session) __open_session()
914 int mds = session->s_mds; __open_session()
920 session->s_state = CEPH_MDS_SESSION_OPENING; __open_session()
921 session->s_renew_requested = jiffies; __open_session()
924 msg = create_session_open_msg(mdsc, session->s_seq); __open_session()
927 ceph_con_send(&session->s_con, msg); __open_session()
939 struct ceph_mds_session *session; __open_export_target_session() local
941 session = __ceph_lookup_mds_session(mdsc, target); __open_export_target_session()
942 if (!session) { __open_export_target_session()
943 session = register_session(mdsc, target); __open_export_target_session()
944 if (IS_ERR(session)) __open_export_target_session()
945 return session; __open_export_target_session()
947 if (session->s_state == CEPH_MDS_SESSION_NEW || __open_export_target_session()
948 session->s_state == CEPH_MDS_SESSION_CLOSING) __open_export_target_session()
949 __open_session(mdsc, session); __open_export_target_session()
951 return session; __open_export_target_session()
957 struct ceph_mds_session *session; ceph_mdsc_open_export_target_session() local
962 session = __open_export_target_session(mdsc, target); ceph_mdsc_open_export_target_session()
965 return session; ceph_mdsc_open_export_target_session()
969 struct ceph_mds_session *session) __open_export_target_sessions()
973 int i, mds = session->s_mds; __open_export_target_sessions()
980 session->s_mds, mi->num_export_targets); __open_export_target_sessions()
990 struct ceph_mds_session *session) ceph_mdsc_open_export_target_sessions()
993 __open_export_target_sessions(mdsc, session); ceph_mdsc_open_export_target_sessions()
998 * session caps
1002 * Free preallocated cap messages assigned to this session
1004 static void cleanup_cap_releases(struct ceph_mds_session *session) cleanup_cap_releases() argument
1008 spin_lock(&session->s_cap_lock); cleanup_cap_releases()
1009 while (!list_empty(&session->s_cap_releases)) { cleanup_cap_releases()
1010 msg = list_first_entry(&session->s_cap_releases, cleanup_cap_releases()
1015 while (!list_empty(&session->s_cap_releases_done)) { cleanup_cap_releases()
1016 msg = list_first_entry(&session->s_cap_releases_done, cleanup_cap_releases()
1021 spin_unlock(&session->s_cap_lock); cleanup_cap_releases()
1025 struct ceph_mds_session *session) cleanup_session_requests()
1030 dout("cleanup_session_requests mds%d\n", session->s_mds); cleanup_session_requests()
1032 while (!list_empty(&session->s_unsafe)) { cleanup_session_requests()
1033 req = list_first_entry(&session->s_unsafe, cleanup_session_requests()
1045 req->r_session->s_mds == session->s_mds) cleanup_session_requests()
1052 * Helper to safely iterate over all caps associated with a session, with
1055 * Caller must hold session s_mutex.
1057 static int iterate_session_caps(struct ceph_mds_session *session, iterate_session_caps() argument
1067 dout("iterate_session_caps %p mds%d\n", session, session->s_mds); iterate_session_caps()
1068 spin_lock(&session->s_cap_lock); iterate_session_caps()
1069 p = session->s_caps.next; iterate_session_caps()
1070 while (p != &session->s_caps) { iterate_session_caps()
1077 session->s_cap_iterator = cap; iterate_session_caps()
1078 spin_unlock(&session->s_cap_lock); iterate_session_caps()
1085 ceph_put_cap(session->s_mdsc, old_cap); iterate_session_caps()
1092 spin_lock(&session->s_cap_lock); iterate_session_caps()
1097 BUG_ON(cap->session != session); iterate_session_caps()
1099 session->s_nr_caps--; iterate_session_caps()
1100 cap->session = NULL; iterate_session_caps()
1108 session->s_cap_iterator = NULL; iterate_session_caps()
1109 spin_unlock(&session->s_cap_lock); iterate_session_caps()
1113 ceph_put_cap(session->s_mdsc, old_cap); iterate_session_caps()
1159 * caller must hold session s_mutex
1161 static void remove_session_caps(struct ceph_mds_session *session) remove_session_caps() argument
1163 dout("remove_session_caps on %p\n", session); remove_session_caps()
1164 iterate_session_caps(session, remove_session_caps_cb, NULL); remove_session_caps()
1166 spin_lock(&session->s_cap_lock); remove_session_caps()
1167 if (session->s_nr_caps > 0) { remove_session_caps()
1168 struct super_block *sb = session->s_mdsc->fsc->sb; remove_session_caps()
1179 while (!list_empty(&session->s_caps)) { remove_session_caps()
1180 cap = list_entry(session->s_caps.next, remove_session_caps()
1186 spin_unlock(&session->s_cap_lock); remove_session_caps()
1191 spin_lock(&session->s_cap_lock); remove_session_caps()
1194 spin_unlock(&session->s_cap_lock); remove_session_caps()
1196 BUG_ON(session->s_nr_caps > 0); remove_session_caps()
1197 BUG_ON(!list_empty(&session->s_cap_flushing)); remove_session_caps()
1198 cleanup_cap_releases(session); remove_session_caps()
1202 * wake up any threads waiting on this session's caps. if the cap is
1222 static void wake_up_session_caps(struct ceph_mds_session *session, wake_up_session_caps() argument
1225 dout("wake_up_session_caps %p mds%d\n", session, session->s_mds); wake_up_session_caps()
1226 iterate_session_caps(session, wake_up_session_cb, wake_up_session_caps()
1232 * ack will reset the expiration for all caps from this session.
1237 struct ceph_mds_session *session) send_renew_caps()
1242 if (time_after_eq(jiffies, session->s_cap_ttl) && send_renew_caps()
1243 time_after_eq(session->s_cap_ttl, session->s_renew_requested)) send_renew_caps()
1244 pr_info("mds%d caps stale\n", session->s_mds); send_renew_caps()
1245 session->s_renew_requested = jiffies; send_renew_caps()
1249 state = ceph_mdsmap_get_state(mdsc->mdsmap, session->s_mds); send_renew_caps()
1252 session->s_mds, ceph_mds_state_name(state)); send_renew_caps()
1256 dout("send_renew_caps to mds%d (%s)\n", session->s_mds, send_renew_caps()
1259 ++session->s_renew_seq); send_renew_caps()
1262 ceph_con_send(&session->s_con, msg); send_renew_caps()
1267 struct ceph_mds_session *session, u64 seq) send_flushmsg_ack()
1272 session->s_mds, ceph_session_state_name(session->s_state), seq); send_flushmsg_ack()
1276 ceph_con_send(&session->s_con, msg); send_flushmsg_ack()
1284 * Called under session->s_mutex
1287 struct ceph_mds_session *session, int is_renew) renewed_caps()
1292 spin_lock(&session->s_cap_lock); renewed_caps()
1293 was_stale = is_renew && time_after_eq(jiffies, session->s_cap_ttl); renewed_caps()
1295 session->s_cap_ttl = session->s_renew_requested + renewed_caps()
1299 if (time_before(jiffies, session->s_cap_ttl)) { renewed_caps()
1300 pr_info("mds%d caps renewed\n", session->s_mds); renewed_caps()
1303 pr_info("mds%d caps still stale\n", session->s_mds); renewed_caps()
1307 session->s_mds, session->s_cap_ttl, was_stale ? "stale" : "fresh", renewed_caps()
1308 time_before(jiffies, session->s_cap_ttl) ? "stale" : "fresh"); renewed_caps()
1309 spin_unlock(&session->s_cap_lock); renewed_caps()
1312 wake_up_session_caps(session, 0); renewed_caps()
1316 * send a session close request
1319 struct ceph_mds_session *session) request_close_session()
1324 session->s_mds, ceph_session_state_name(session->s_state), request_close_session()
1325 session->s_seq); request_close_session()
1326 msg = create_session_msg(CEPH_SESSION_REQUEST_CLOSE, session->s_seq); request_close_session()
1329 ceph_con_send(&session->s_con, msg); request_close_session()
1337 struct ceph_mds_session *session) __close_session()
1339 if (session->s_state >= CEPH_MDS_SESSION_CLOSING) __close_session()
1341 session->s_state = CEPH_MDS_SESSION_CLOSING; __close_session()
1342 return request_close_session(mdsc, session); __close_session()
1357 struct ceph_mds_session *session = arg; trim_caps_cb() local
1361 if (session->s_trim_caps <= 0) trim_caps_cb()
1382 session->s_trim_caps--; trim_caps_cb()
1401 * Trim session cap count down to some max number.
1404 struct ceph_mds_session *session, trim_caps()
1407 int trim_caps = session->s_nr_caps - max_caps; trim_caps()
1410 session->s_mds, session->s_nr_caps, max_caps, trim_caps); trim_caps()
1412 session->s_trim_caps = trim_caps; trim_caps()
1413 iterate_session_caps(session, trim_caps_cb, session); trim_caps()
1415 session->s_mds, session->s_nr_caps, max_caps, trim_caps()
1416 trim_caps - session->s_trim_caps); trim_caps()
1417 session->s_trim_caps = 0; trim_caps()
1420 ceph_add_cap_releases(mdsc, session); trim_caps()
1421 ceph_send_cap_releases(mdsc, session); trim_caps()
1433 struct ceph_mds_session *session) ceph_add_cap_releases()
1441 dout("add_cap_releases %p mds%d extra %d\n", session, session->s_mds, ceph_add_cap_releases()
1444 spin_lock(&session->s_cap_lock); ceph_add_cap_releases()
1446 if (!list_empty(&session->s_cap_releases)) { ceph_add_cap_releases()
1447 msg = list_first_entry(&session->s_cap_releases, ceph_add_cap_releases()
1459 while (session->s_num_cap_releases < session->s_nr_caps + extra) { ceph_add_cap_releases()
1460 spin_unlock(&session->s_cap_lock); ceph_add_cap_releases()
1465 dout("add_cap_releases %p msg %p now %d\n", session, msg, ceph_add_cap_releases()
1470 spin_lock(&session->s_cap_lock); ceph_add_cap_releases()
1471 list_add(&msg->list_head, &session->s_cap_releases); ceph_add_cap_releases()
1472 session->s_num_cap_releases += CEPH_CAPS_PER_RELEASE; ceph_add_cap_releases()
1481 &session->s_cap_releases_done); ceph_add_cap_releases()
1482 session->s_num_cap_releases -= CEPH_CAPS_PER_RELEASE - num; ceph_add_cap_releases()
1485 spin_unlock(&session->s_cap_lock); ceph_add_cap_releases()
1515 struct ceph_mds_session *session = mdsc->sessions[mds]; wait_caps_flush() local
1518 if (!session) wait_caps_flush()
1520 get_session(session); wait_caps_flush()
1523 mutex_lock(&session->s_mutex); wait_caps_flush()
1524 if (!list_empty(&session->s_cap_flushing)) { wait_caps_flush()
1526 list_entry(session->s_cap_flushing.next, wait_caps_flush()
1534 want_flush_seq, session->s_mds); wait_caps_flush()
1538 mutex_unlock(&session->s_mutex); wait_caps_flush()
1539 ceph_put_mds_session(session); wait_caps_flush()
1558 struct ceph_mds_session *session) ceph_send_cap_releases()
1562 dout("send_cap_releases mds%d\n", session->s_mds); ceph_send_cap_releases()
1563 spin_lock(&session->s_cap_lock); ceph_send_cap_releases()
1564 while (!list_empty(&session->s_cap_releases_done)) { ceph_send_cap_releases()
1565 msg = list_first_entry(&session->s_cap_releases_done, ceph_send_cap_releases()
1568 spin_unlock(&session->s_cap_lock); ceph_send_cap_releases()
1570 dout("send_cap_releases mds%d %p\n", session->s_mds, msg); ceph_send_cap_releases()
1571 ceph_con_send(&session->s_con, msg); ceph_send_cap_releases()
1572 spin_lock(&session->s_cap_lock); ceph_send_cap_releases()
1574 spin_unlock(&session->s_cap_lock); ceph_send_cap_releases()
1578 struct ceph_mds_session *session) discard_cap_releases()
1584 dout("discard_cap_releases mds%d\n", session->s_mds); discard_cap_releases()
1586 if (!list_empty(&session->s_cap_releases)) { discard_cap_releases()
1588 msg = list_first_entry(&session->s_cap_releases, discard_cap_releases()
1593 session->s_mds, msg, num); discard_cap_releases()
1596 session->s_num_cap_releases += num; discard_cap_releases()
1600 while (!list_empty(&session->s_cap_releases_done)) { discard_cap_releases()
1601 msg = list_first_entry(&session->s_cap_releases_done, discard_cap_releases()
1607 dout("discard_cap_releases mds%d %p %u\n", session->s_mds, msg, discard_cap_releases()
1609 session->s_num_cap_releases += num; discard_cap_releases()
1612 list_add(&msg->list_head, &session->s_cap_releases); discard_cap_releases()
2106 struct ceph_mds_session *session = NULL; __do_request() local
2133 /* get, open session */ __do_request()
2134 session = __ceph_lookup_mds_session(mdsc, mds); __do_request()
2135 if (!session) { __do_request()
2136 session = register_session(mdsc, mds); __do_request()
2137 if (IS_ERR(session)) { __do_request()
2138 err = PTR_ERR(session); __do_request()
2142 req->r_session = get_session(session); __do_request()
2144 dout("do_request mds%d session %p state %s\n", mds, session, __do_request()
2145 ceph_session_state_name(session->s_state)); __do_request()
2146 if (session->s_state != CEPH_MDS_SESSION_OPEN && __do_request()
2147 session->s_state != CEPH_MDS_SESSION_HUNG) { __do_request()
2148 if (session->s_state == CEPH_MDS_SESSION_NEW || __do_request()
2149 session->s_state == CEPH_MDS_SESSION_CLOSING) __do_request()
2150 __open_session(mdsc, session); __do_request()
2151 list_add(&req->r_wait, &session->s_waiting); __do_request()
2164 ceph_con_send(&session->s_con, req->r_request); __do_request()
2168 ceph_put_mds_session(session); __do_request()
2236 * session setup, forwarding, retry details.
2332 * We take the session mutex and parse and process the reply immediately.
2336 static void handle_reply(struct ceph_mds_session *session, struct ceph_msg *msg) handle_reply() argument
2338 struct ceph_mds_client *mdsc = session->s_mdsc; handle_reply()
2345 int mds = session->s_mds; handle_reply()
2353 /* get request, session */ handle_reply()
2364 /* correct session? */ handle_reply()
2365 if (req->r_session != session) { handle_reply()
2366 pr_err("mdsc_handle_reply got %llu on session mds%d" handle_reply()
2367 " not mds%d\n", tid, session->s_mds, handle_reply()
2447 err = parse_reply_info(msg, rinfo, session->s_con.peer_features); handle_reply()
2450 mutex_lock(&session->s_mutex); handle_reply()
2500 mutex_unlock(&session->s_mutex); handle_reply()
2515 struct ceph_mds_session *session, handle_forward()
2564 * handle a mds session control message
2566 static void handle_session(struct ceph_mds_session *session, handle_session() argument
2569 struct ceph_mds_client *mdsc = session->s_mdsc; handle_session()
2572 int mds = session->s_mds; handle_session()
2584 __unregister_session(mdsc, session); handle_session()
2586 session->s_ttl = jiffies + HZ*mdsc->mdsmap->m_session_autoclose; handle_session()
2589 mutex_lock(&session->s_mutex); handle_session()
2592 mds, ceph_session_op_name(op), session, handle_session()
2593 ceph_session_state_name(session->s_state), seq); handle_session()
2595 if (session->s_state == CEPH_MDS_SESSION_HUNG) { handle_session()
2596 session->s_state = CEPH_MDS_SESSION_OPEN; handle_session()
2597 pr_info("mds%d came back\n", session->s_mds); handle_session()
2602 if (session->s_state == CEPH_MDS_SESSION_RECONNECTING) handle_session()
2603 pr_info("mds%d reconnect success\n", session->s_mds); handle_session()
2604 session->s_state = CEPH_MDS_SESSION_OPEN; handle_session()
2605 renewed_caps(mdsc, session, 0); handle_session()
2608 __close_session(mdsc, session); handle_session()
2612 if (session->s_renew_seq == seq) handle_session()
2613 renewed_caps(mdsc, session, 1); handle_session()
2617 if (session->s_state == CEPH_MDS_SESSION_RECONNECTING) handle_session()
2618 pr_info("mds%d reconnect denied\n", session->s_mds); handle_session()
2619 cleanup_session_requests(mdsc, session); handle_session()
2620 remove_session_caps(session); handle_session()
2627 session->s_mds); handle_session()
2628 spin_lock(&session->s_gen_ttl_lock); handle_session()
2629 session->s_cap_gen++; handle_session()
2630 session->s_cap_ttl = jiffies - 1; handle_session()
2631 spin_unlock(&session->s_gen_ttl_lock); handle_session()
2632 send_renew_caps(mdsc, session); handle_session()
2636 trim_caps(mdsc, session, le32_to_cpu(h->max_caps)); handle_session()
2640 send_flushmsg_ack(mdsc, session, seq); handle_session()
2644 dout("force_session_readonly %p\n", session); handle_session()
2645 spin_lock(&session->s_cap_lock); handle_session()
2646 session->s_readonly = true; handle_session()
2647 spin_unlock(&session->s_cap_lock); handle_session()
2648 wake_up_session_caps(session, 0); handle_session()
2656 mutex_unlock(&session->s_mutex); handle_session()
2659 __wake_requests(mdsc, &session->s_waiting); handle_session()
2675 * called under session->mutex.
2678 struct ceph_mds_session *session) replay_unsafe_requests()
2684 dout("replay_unsafe_requests mds%d\n", session->s_mds); replay_unsafe_requests()
2687 list_for_each_entry_safe(req, nreq, &session->s_unsafe, r_unsafe_item) { replay_unsafe_requests()
2688 err = __prepare_send_request(mdsc, req, session->s_mds, true); replay_unsafe_requests()
2691 ceph_con_send(&session->s_con, req->r_request); replay_unsafe_requests()
2708 req->r_session->s_mds == session->s_mds) { replay_unsafe_requests()
2710 session->s_mds, true); replay_unsafe_requests()
2713 ceph_con_send(&session->s_con, req->r_request); replay_unsafe_requests()
2767 cap->cap_gen = cap->session->s_cap_gen; encode_caps_cb()
2839 * this session _and_ the snap_realm hierarchy. Because it's not
2849 struct ceph_mds_session *session) send_mds_reconnect()
2853 int mds = session->s_mds; send_mds_reconnect()
2870 mutex_lock(&session->s_mutex); send_mds_reconnect()
2871 session->s_state = CEPH_MDS_SESSION_RECONNECTING; send_mds_reconnect()
2872 session->s_seq = 0; send_mds_reconnect()
2874 dout("session %p state %s\n", session, send_mds_reconnect()
2875 ceph_session_state_name(session->s_state)); send_mds_reconnect()
2877 spin_lock(&session->s_gen_ttl_lock); send_mds_reconnect()
2878 session->s_cap_gen++; send_mds_reconnect()
2879 spin_unlock(&session->s_gen_ttl_lock); send_mds_reconnect()
2881 spin_lock(&session->s_cap_lock); send_mds_reconnect()
2882 /* don't know if session is readonly */ send_mds_reconnect()
2883 session->s_readonly = 0; send_mds_reconnect()
2889 session->s_cap_reconnect = 1; send_mds_reconnect()
2891 discard_cap_releases(mdsc, session); send_mds_reconnect()
2892 spin_unlock(&session->s_cap_lock); send_mds_reconnect()
2898 ceph_con_close(&session->s_con); send_mds_reconnect()
2899 ceph_con_open(&session->s_con, send_mds_reconnect()
2904 replay_unsafe_requests(mdsc, session); send_mds_reconnect()
2908 /* traverse this session's caps */ send_mds_reconnect()
2909 s_nr_caps = session->s_nr_caps; send_mds_reconnect()
2916 recon_state.flock = session->s_con.peer_features & CEPH_FEATURE_FLOCK; send_mds_reconnect()
2917 err = iterate_session_caps(session, encode_caps_cb, &recon_state); send_mds_reconnect()
2921 spin_lock(&session->s_cap_lock); send_mds_reconnect()
2922 session->s_cap_reconnect = 0; send_mds_reconnect()
2923 spin_unlock(&session->s_cap_lock); send_mds_reconnect()
2959 ceph_con_send(&session->s_con, reply); send_mds_reconnect()
2961 mutex_unlock(&session->s_mutex); send_mds_reconnect()
2964 __wake_requests(mdsc, &session->s_waiting); send_mds_reconnect()
2973 mutex_unlock(&session->s_mutex); send_mds_reconnect()
3006 dout("check_new_map mds%d state %s%s -> %s%s (session %s)\n", check_new_map()
3018 /* the session never opened, just close it check_new_map()
3082 * caller must hold session s_mutex, dentry->d_lock
3093 struct ceph_mds_session *session, handle_lease()
3100 int mds = session->s_mds; handle_lease()
3126 mutex_lock(&session->s_mutex); handle_lease()
3127 session->s_seq++; handle_lease()
3151 if (di->lease_session == session) { handle_lease()
3160 if (di->lease_session == session && handle_lease()
3161 di->lease_gen == session->s_cap_gen && handle_lease()
3185 ceph_con_send(&session->s_con, msg); handle_lease()
3189 mutex_unlock(&session->s_mutex); handle_lease()
3197 void ceph_mdsc_lease_send_msg(struct ceph_mds_session *session, ceph_mdsc_lease_send_msg() argument
3208 inode, dentry, ceph_lease_op_name(action), session->s_mds); ceph_mdsc_lease_send_msg()
3230 ceph_con_send(&session->s_con, msg); ceph_mdsc_lease_send_msg()
3241 struct ceph_mds_session *session; ceph_mdsc_lease_release() local
3262 session = ceph_get_mds_session(di->lease_session); ceph_mdsc_lease_release()
3268 inode, dentry, session->s_mds); ceph_mdsc_lease_release()
3269 ceph_mdsc_lease_send_msg(session, inode, dentry, ceph_mdsc_lease_release()
3271 ceph_put_mds_session(session); ceph_mdsc_lease_release()
3331 dout("resending session close request for mds%d\n", delayed_work()
3552 struct ceph_mds_session *session; ceph_mdsc_close_sessions() local
3562 session = __ceph_lookup_mds_session(mdsc, i); ceph_mdsc_close_sessions()
3563 if (!session) ceph_mdsc_close_sessions()
3566 mutex_lock(&session->s_mutex); ceph_mdsc_close_sessions()
3567 __close_session(mdsc, session); ceph_mdsc_close_sessions()
3568 mutex_unlock(&session->s_mutex); ceph_mdsc_close_sessions()
3569 ceph_put_mds_session(session); ceph_mdsc_close_sessions()
3582 session = get_session(mdsc->sessions[i]); ceph_mdsc_close_sessions()
3583 __unregister_session(mdsc, session); ceph_mdsc_close_sessions()
3585 mutex_lock(&session->s_mutex); ceph_mdsc_close_sessions()
3586 remove_session_caps(session); ceph_mdsc_close_sessions()
3587 mutex_unlock(&session->s_mutex); ceph_mdsc_close_sessions()
3588 ceph_put_mds_session(session); ceph_mdsc_close_sessions()
3711 * the session entirely.
3718 pr_warn("mds%d closed our session\n", s->s_mds); peer_reset()
909 __open_session(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) __open_session() argument
968 __open_export_target_sessions(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) __open_export_target_sessions() argument
989 ceph_mdsc_open_export_target_sessions(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) ceph_mdsc_open_export_target_sessions() argument
1024 cleanup_session_requests(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) cleanup_session_requests() argument
1236 send_renew_caps(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) send_renew_caps() argument
1266 send_flushmsg_ack(struct ceph_mds_client *mdsc, struct ceph_mds_session *session, u64 seq) send_flushmsg_ack() argument
1286 renewed_caps(struct ceph_mds_client *mdsc, struct ceph_mds_session *session, int is_renew) renewed_caps() argument
1318 request_close_session(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) request_close_session() argument
1336 __close_session(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) __close_session() argument
1403 trim_caps(struct ceph_mds_client *mdsc, struct ceph_mds_session *session, int max_caps) trim_caps() argument
1432 ceph_add_cap_releases(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) ceph_add_cap_releases() argument
1557 ceph_send_cap_releases(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) ceph_send_cap_releases() argument
1577 discard_cap_releases(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) discard_cap_releases() argument
2514 handle_forward(struct ceph_mds_client *mdsc, struct ceph_mds_session *session, struct ceph_msg *msg) handle_forward() argument
2677 replay_unsafe_requests(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) replay_unsafe_requests() argument
2848 send_mds_reconnect(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) send_mds_reconnect() argument
3092 handle_lease(struct ceph_mds_client *mdsc, struct ceph_mds_session *session, struct ceph_msg *msg) handle_lease() argument
H A Dcaps.c503 * Add a capability under the given MDS session.
505 * Caller should hold session snap_rwsem (read) and s_mutex.
512 struct ceph_mds_session *session, u64 cap_id, ceph_add_cap()
520 int mds = session->s_mds; ceph_add_cap()
524 session->s_mds, cap_id, ceph_cap_string(issued), seq); ceph_add_cap()
547 /* add to session cap list */ ceph_add_cap()
548 cap->session = session; ceph_add_cap()
549 spin_lock(&session->s_cap_lock); ceph_add_cap()
550 list_add_tail(&cap->session_caps, &session->s_caps); ceph_add_cap()
551 session->s_nr_caps++; ceph_add_cap()
552 spin_unlock(&session->s_cap_lock); ceph_add_cap()
631 cap->cap_gen = session->s_cap_gen; ceph_add_cap()
639 * generation of the MDS session (i.e. has not gone 'stale' due to
647 spin_lock(&cap->session->s_gen_ttl_lock); __cap_is_valid()
648 gen = cap->session->s_cap_gen; __cap_is_valid()
649 ttl = cap->session->s_cap_ttl; __cap_is_valid()
650 spin_unlock(&cap->session->s_gen_ttl_lock); __cap_is_valid()
664 * out, and may be invalidated in bulk if the client session times out
665 * and session->s_cap_gen is bumped.
723 struct ceph_mds_session *s = cap->session; __touch_cap()
915 * caller will not hold session s_mutex if called from destroy_inode.
919 struct ceph_mds_session *session = cap->session; __ceph_remove_cap() local
927 /* remove from session list */ __ceph_remove_cap()
928 spin_lock(&session->s_cap_lock); __ceph_remove_cap()
931 * s_cap_gen while session is in the reconnect state. __ceph_remove_cap()
934 (!session->s_cap_reconnect || __ceph_remove_cap()
935 cap->cap_gen == session->s_cap_gen)) __ceph_remove_cap()
936 __queue_cap_release(session, ci->i_vino.ino, cap->cap_id, __ceph_remove_cap()
939 if (session->s_cap_iterator == cap) { __ceph_remove_cap()
941 dout("__ceph_remove_cap delaying %p removal from session %p\n", __ceph_remove_cap()
942 cap, cap->session); __ceph_remove_cap()
945 session->s_nr_caps--; __ceph_remove_cap()
946 cap->session = NULL; __ceph_remove_cap()
951 spin_unlock(&session->s_cap_lock); __ceph_remove_cap()
961 /* when reconnect denied, we remove session caps forcibly, __ceph_remove_cap()
977 static int send_cap_msg(struct ceph_mds_session *session, send_cap_msg() argument
1052 ceph_con_send(&session->s_con, msg); send_cap_msg()
1056 void __queue_cap_release(struct ceph_mds_session *session, __queue_cap_release() argument
1064 BUG_ON(!session->s_num_cap_releases); __queue_cap_release()
1065 msg = list_first_entry(&session->s_cap_releases, __queue_cap_release()
1069 ino, session->s_mds, msg, session->s_num_cap_releases); __queue_cap_release()
1080 session->s_num_cap_releases--; __queue_cap_release()
1085 list_move_tail(&msg->list_head, &session->s_cap_releases_done); __queue_cap_release()
1144 struct ceph_mds_session *session; variable in typeref:struct:ceph_mds_session
1158 dout("__send_cap %p cap %p session %p %s -> %s (revoking %s)\n",
1159 inode, cap, cap->session,
1164 session = cap->session;
1239 ret = send_cap_msg(session, ceph_vino(inode).ino, cap_id,
1263 * the MDS (i.e., during this session).
1278 struct ceph_mds_session *session = NULL; /* if session != NULL, we hold variable in typeref:struct:ceph_mds_session
1279 session->s_mutex */
1285 session = *psession;
1318 mds = ci->i_auth_cap->session->s_mds;
1321 if (session && session->s_mds != mds) {
1322 dout("oops, wrong session %p mutex\n", session);
1323 mutex_unlock(&session->s_mutex);
1324 ceph_put_mds_session(session); variable
1325 session = NULL;
1327 if (!session) {
1330 session = __ceph_lookup_mds_session(mdsc, mds);
1332 if (session) {
1333 dout("inverting session/ino locks on %p\n",
1334 session);
1335 mutex_lock(&session->s_mutex);
1338 * if session == NULL, we raced against a cap
1351 &session->s_cap_snaps_flushing);
1356 send_cap_msg(session, ceph_vino(inode).ino, 0,
1380 *psession = session;
1381 else if (session) {
1382 mutex_unlock(&session->s_mutex);
1383 ceph_put_mds_session(session); variable
1409 "but no auth cap (session was closed?)\n", __ceph_mark_dirty_caps()
1448 struct ceph_mds_session *session) __mark_caps_flushing()
1471 list_add_tail(&ci->i_flushing_item, &session->s_cap_flushing); __mark_caps_flushing()
1476 list_move_tail(&ci->i_flushing_item, &session->s_cap_flushing); __mark_caps_flushing()
1521 struct ceph_mds_session *session) ceph_check_caps()
1549 __ceph_flush_snaps(ci, &session, 0); ceph_check_caps()
1713 if (session && session != cap->session) { ceph_check_caps()
1714 dout("oops, wrong session %p mutex\n", session); ceph_check_caps()
1715 mutex_unlock(&session->s_mutex); ceph_check_caps()
1716 session = NULL; ceph_check_caps()
1718 if (!session) { ceph_check_caps()
1719 session = cap->session; ceph_check_caps()
1720 if (mutex_trylock(&session->s_mutex) == 0) { ceph_check_caps()
1721 dout("inverting session/ino locks on %p\n", ceph_check_caps()
1722 session); ceph_check_caps()
1728 mutex_lock(&session->s_mutex); ceph_check_caps()
1732 /* take snap_rwsem after session mutex */ ceph_check_caps()
1746 flushing = __mark_caps_flushing(inode, session); ceph_check_caps()
1775 if (session) ceph_check_caps()
1776 mutex_unlock(&session->s_mutex); ceph_check_caps()
1789 struct ceph_mds_session *session = NULL; try_flush_caps() local
1803 if (!session || session != cap->session) { try_flush_caps()
1805 if (session) try_flush_caps()
1806 mutex_unlock(&session->s_mutex); try_flush_caps()
1807 session = cap->session; try_flush_caps()
1808 mutex_lock(&session->s_mutex); try_flush_caps()
1811 if (cap->session->s_state < CEPH_MDS_SESSION_OPEN) try_flush_caps()
1814 flushing = __mark_caps_flushing(inode, session); try_flush_caps()
1829 if (session) try_flush_caps()
1830 mutex_unlock(&session->s_mutex); try_flush_caps()
1969 * Caller holds session->s_mutex.
1972 struct ceph_mds_session *session) kick_flushing_capsnaps()
1976 dout("kick_flushing_capsnaps mds%d\n", session->s_mds); kick_flushing_capsnaps()
1977 list_for_each_entry(capsnap, &session->s_cap_snaps_flushing, kick_flushing_capsnaps()
1985 if (cap && cap->session == session) { kick_flushing_capsnaps()
1988 __ceph_flush_snaps(ci, &session, 1); kick_flushing_capsnaps()
1991 cap, session->s_mds); kick_flushing_capsnaps()
1998 struct ceph_mds_session *session) ceph_kick_flushing_caps()
2002 kick_flushing_capsnaps(mdsc, session); ceph_kick_flushing_caps()
2004 dout("kick_flushing_caps mds%d\n", session->s_mds); ceph_kick_flushing_caps()
2005 list_for_each_entry(ci, &session->s_cap_flushing, i_flushing_item) { ceph_kick_flushing_caps()
2012 if (cap && cap->session == session) { ceph_kick_flushing_caps()
2027 cap, session->s_mds); ceph_kick_flushing_caps()
2034 struct ceph_mds_session *session, kick_flushing_inode_caps()
2046 __ceph_flush_snaps(ci, &session, 1); kick_flushing_inode_caps()
2051 &cap->session->s_cap_flushing); kick_flushing_inode_caps()
2174 struct ceph_mds_session *s = ci->i_auth_cap->session; try_get_cap_refs()
2481 struct ceph_mds_session *session,
2487 int mds = session->s_mds;
2545 cap->cap_gen = session->s_cap_gen;
2685 kick_flushing_inode_caps(mdsc, session, inode);
2716 session);
2718 ceph_check_caps(ci, CHECK_CAPS_NODELAY, session);
2720 mutex_unlock(&session->s_mutex);
2729 struct ceph_mds_session *session,
2748 inode, session->s_mds, seq, ceph_cap_string(dirty),
2760 if (!list_empty(&session->s_cap_flushing))
2762 session->s_mds,
2763 &list_entry(session->s_cap_flushing.next,
2800 struct ceph_mds_session *session) handle_cap_flushsnap_ack()
2808 inode, ci, session->s_mds, follows); handle_cap_flushsnap_ack()
2845 struct ceph_mds_session *session)
2849 int mds = session->s_mds;
2883 struct ceph_mds_session *session) handle_cap_export()
2893 int mds = session->s_mds; handle_cap_export()
2943 &tcap->session->s_cap_flushing); handle_cap_export()
2960 mutex_unlock(&session->s_mutex); handle_cap_export()
2962 /* open target session */ handle_cap_export()
2966 mutex_lock(&session->s_mutex); handle_cap_export()
2971 mutex_lock_nested(&session->s_mutex, handle_cap_export()
2985 mutex_unlock(&session->s_mutex); handle_cap_export()
3002 struct ceph_mds_session *session,
3008 int mds = session->s_mds;
3050 ceph_add_cap(inode, session, cap_id, -1, caps, wanted, seq, mseq,
3081 * Identify the appropriate session, inode, and call the right handler
3084 void ceph_handle_caps(struct ceph_mds_session *session, ceph_handle_caps() argument
3087 struct ceph_mds_client *mdsc = session->s_mdsc; ceph_handle_caps()
3095 int mds = session->s_mds; ceph_handle_caps()
3165 mutex_lock(&session->s_mutex); ceph_handle_caps()
3166 session->s_seq++; ceph_handle_caps()
3167 dout(" mds%d seq %lld cap seq %u\n", session->s_mds, session->s_seq, ceph_handle_caps()
3171 ceph_add_cap_releases(mdsc, session); ceph_handle_caps()
3177 spin_lock(&session->s_cap_lock); ceph_handle_caps()
3178 __queue_cap_release(session, vino.ino, cap_id, ceph_handle_caps()
3180 spin_unlock(&session->s_cap_lock); ceph_handle_caps()
3188 handle_cap_flushsnap_ack(inode, tid, h, session); ceph_handle_caps()
3192 handle_cap_export(inode, h, peer, session); ceph_handle_caps()
3206 handle_cap_import(mdsc, inode, h, peer, session, ceph_handle_caps()
3210 msg->middle, session, cap, issued); ceph_handle_caps()
3234 msg->middle, session, cap, issued); ceph_handle_caps()
3238 handle_cap_flush_ack(inode, tid, h, session, cap); ceph_handle_caps()
3242 handle_cap_trunc(inode, h, session); ceph_handle_caps()
3259 ceph_add_cap_releases(mdsc, session); ceph_handle_caps()
3260 ceph_send_cap_releases(mdsc, session); ceph_handle_caps()
3263 mutex_unlock(&session->s_mutex); ceph_handle_caps()
511 ceph_add_cap(struct inode *inode, struct ceph_mds_session *session, u64 cap_id, int fmode, unsigned issued, unsigned wanted, unsigned seq, unsigned mseq, u64 realmino, int flags, struct ceph_cap **new_cap) ceph_add_cap() argument
1447 __mark_caps_flushing(struct inode *inode, struct ceph_mds_session *session) __mark_caps_flushing() argument
1520 ceph_check_caps(struct ceph_inode_info *ci, int flags, struct ceph_mds_session *session) ceph_check_caps() argument
1971 kick_flushing_capsnaps(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) kick_flushing_capsnaps() argument
1997 ceph_kick_flushing_caps(struct ceph_mds_client *mdsc, struct ceph_mds_session *session) ceph_kick_flushing_caps() argument
2033 kick_flushing_inode_caps(struct ceph_mds_client *mdsc, struct ceph_mds_session *session, struct inode *inode) kick_flushing_inode_caps() argument
2798 handle_cap_flushsnap_ack(struct inode *inode, u64 flush_tid, struct ceph_mds_caps *m, struct ceph_mds_session *session) handle_cap_flushsnap_ack() argument
2881 handle_cap_export(struct inode *inode, struct ceph_mds_caps *ex, struct ceph_mds_cap_peer *ph, struct ceph_mds_session *session) handle_cap_export() argument
H A Dmds_client.h19 * session->s_mutex
105 * state associated with each MDS<->client session
123 struct mutex s_mutex; /* serialize session messages */
132 unsigned long s_cap_ttl; /* when session caps expire */
136 struct list_head s_caps; /* all caps issued by this session */
253 struct list_head r_unsafe_item; /* per-session unsafe list item */
275 struct ceph_mds_session **sessions; /* NULL for mds if no session */
383 struct ceph_mds_session *session);
385 struct ceph_mds_session *session);
393 extern void ceph_mdsc_lease_send_msg(struct ceph_mds_session *session,
404 struct ceph_mds_session *session);
H A Ddebugfs.c69 seq_printf(s, "%lld\t(no session)\t", req->r_tid); mdsc_show()
175 /* The list of MDS session rank+state */ mds_sessions_show()
177 struct ceph_mds_session *session = mds_sessions_show() local
179 if (!session) { mds_sessions_show()
184 session->s_mds, mds_sessions_show()
185 ceph_session_state_name(session->s_state)); mds_sessions_show()
187 ceph_put_mds_session(session); mds_sessions_show()
H A Dsuper.h117 * session capability lists.
122 struct ceph_mds_session *session; member in struct:ceph_cap
123 struct list_head session_caps; /* per-session caplist */
280 /* capabilities. protected _both_ by i_ceph_lock and cap->session's
700 struct ceph_mds_session *session,
737 struct ceph_mds_session *session);
739 struct ceph_mds_session *session);
827 extern void ceph_handle_caps(struct ceph_mds_session *session,
832 struct ceph_mds_session *session, u64 cap_id,
841 extern void __queue_cap_release(struct ceph_mds_session *session, u64 ino,
848 struct ceph_mds_session *session);
860 struct ceph_mds_session *session);
H A Dinode.c665 struct ceph_mds_session *session, fill_inode()
845 ceph_add_cap(inode, session, fill_inode()
921 * caller should hold session s_mutex.
925 struct ceph_mds_session *session, update_dentry_lease()
949 if (di->lease_gen == session->s_cap_gen && update_dentry_lease()
953 if (di->lease_session && di->lease_session != session) update_dentry_lease()
959 di->lease_session = ceph_get_mds_session(session); update_dentry_lease()
960 di->lease_gen = session->s_cap_gen; update_dentry_lease()
1027 struct ceph_mds_session *session) ceph_fill_trace()
1056 session, req->r_request_started, -1); ceph_fill_trace()
1065 session, req->r_request_started, ceph_fill_trace()
1085 session, req->r_request_started, -1, ceph_fill_trace()
1155 session, req->r_request_started, ceph_fill_trace()
1248 session, ceph_fill_trace()
1272 update_dentry_lease(dn, rinfo->dlease, session, ceph_fill_trace()
1304 struct ceph_mds_session *session) readdir_prepopulate_inodes_only()
1323 rc = fill_inode(in, NULL, &rinfo->dir_in[i], NULL, session, readdir_prepopulate_inodes_only()
1337 struct ceph_mds_session *session) ceph_readdir_prepopulate()
1363 return readdir_prepopulate_inodes_only(req, session); ceph_readdir_prepopulate()
1439 if (fill_inode(in, NULL, &rinfo->dir_in[i], NULL, session, ceph_readdir_prepopulate()
662 fill_inode(struct inode *inode, struct page *locked_page, struct ceph_mds_reply_info_in *iinfo, struct ceph_mds_reply_dirfrag *dirinfo, struct ceph_mds_session *session, unsigned long ttl_from, int cap_fmode, struct ceph_cap_reservation *caps_reservation) fill_inode() argument
923 update_dentry_lease(struct dentry *dentry, struct ceph_mds_reply_lease *lease, struct ceph_mds_session *session, unsigned long from_time) update_dentry_lease() argument
1026 ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req, struct ceph_mds_session *session) ceph_fill_trace() argument
1303 readdir_prepopulate_inodes_only(struct ceph_mds_request *req, struct ceph_mds_session *session) readdir_prepopulate_inodes_only() argument
1336 ceph_readdir_prepopulate(struct ceph_mds_request *req, struct ceph_mds_session *session) ceph_readdir_prepopulate() argument
H A Dsnap.c768 struct ceph_mds_session *session = NULL; flush_snaps() local
779 __ceph_flush_snaps(ci, &session, 0); flush_snaps()
786 if (session) { flush_snaps()
787 mutex_unlock(&session->s_mutex); flush_snaps()
788 ceph_put_mds_session(session); flush_snaps()
806 struct ceph_mds_session *session, ceph_handle_snap()
810 int mds = session->s_mds; ceph_handle_snap()
838 mutex_lock(&session->s_mutex); ceph_handle_snap()
839 session->s_seq++; ceph_handle_snap()
840 mutex_unlock(&session->s_mutex); ceph_handle_snap()
805 ceph_handle_snap(struct ceph_mds_client *mdsc, struct ceph_mds_session *session, struct ceph_msg *msg) ceph_handle_snap() argument
/linux-4.1.27/include/uapi/linux/netfilter/
H A Dxt_l2tp.h14 __u32 sid; /* session id */
22 XT_L2TP_SID = (1 << 1), /* match L2TP session id */
/linux-4.1.27/tools/perf/
H A Dbuiltin-evlist.c16 #include "util/session.h"
22 struct perf_session *session; __cmd_evlist() local
30 session = perf_session__new(&file, 0, NULL); __cmd_evlist()
31 if (session == NULL) __cmd_evlist()
34 evlist__for_each(session->evlist, pos) __cmd_evlist()
37 perf_session__delete(session); __cmd_evlist()
H A Dbuiltin-buildid-list.c16 #include "util/session.h"
55 struct perf_session *session; perf_session__list_build_ids() local
69 session = perf_session__new(&file, false, &build_id__mark_dso_hit_ops); perf_session__list_build_ids()
70 if (session == NULL) perf_session__list_build_ids()
77 perf_session__process_events(session); perf_session__list_build_ids()
79 perf_session__fprintf_dsos_buildid(session, stdout, dso__skip_buildid, with_hits); perf_session__list_build_ids()
80 perf_session__delete(session); perf_session__list_build_ids()
H A Dbuiltin-report.c27 #include "util/session.h"
44 struct perf_session *session; member in struct:report
204 struct perf_session *session = rep->session; report__setup_sample_type() local
205 u64 sample_type = perf_evlist__combined_sample_type(session->evlist); report__setup_sample_type()
206 bool is_pipe = perf_data_file__is_pipe(session->file); report__setup_sample_type()
349 struct map *kernel_map = rep->session->machines.host.vmlinux_maps[MAP__FUNCTION]; report__warn_kptr_restrict()
388 return hist_browser(rep->session->evlist, help, NULL, rep->min_percent); report__gtk_browse_hists()
394 struct perf_session *session = rep->session; report__browse_hists() local
395 struct perf_evlist *evlist = session->evlist; report__browse_hists()
402 &session->header.env); report__browse_hists()
428 evlist__for_each(rep->session->evlist, pos) { report__collapse_hists()
456 evlist__for_each(rep->session->evlist, pos) report__output_resort()
465 struct perf_session *session = rep->session; __cmd_report() local
467 struct perf_data_file *file = session->file; __cmd_report()
472 ret = perf_session__cpu_bitmap(session, rep->cpu_list, __cmd_report()
485 ret = perf_session__process_events(session); __cmd_report()
491 evlist__for_each(session->evlist, pos) __cmd_report()
496 perf_session__fprintf(session, stdout); __cmd_report()
499 perf_session__fprintf_dsos(session, stdout); __cmd_report()
502 perf_session__fprintf_nr_events(session, stdout); __cmd_report()
503 perf_evlist__fprintf_nr_events(session->evlist, stdout); __cmd_report()
518 evlist__for_each(session->evlist, pos) __cmd_report()
587 struct perf_session *session; cmd_report() local
755 session = perf_session__new(&file, false, &report.tool); cmd_report()
756 if (session == NULL) cmd_report()
760 ordered_events__set_alloc_size(&session->ordered_events, cmd_report()
764 report.session = session; cmd_report()
766 has_br_stack = perf_header__has_feat(&session->header, cmd_report()
816 perf_session__fprintf_info(session, stdout, cmd_report()
832 machines__set_symbol_filter(&session->machines, cmd_report()
851 if (symbol__init(&session->header.env) < 0) cmd_report()
869 perf_session__delete(session); cmd_report()
875 perf_session__delete(session); cmd_report()
H A Dbuiltin-annotate.c29 #include "util/session.h"
39 struct perf_session *session; member in struct:perf_annotate
192 struct perf_session *session = ann->session; __cmd_annotate() local
196 machines__set_symbol_filter(&session->machines, symbol__annotate_init); __cmd_annotate()
199 ret = perf_session__cpu_bitmap(session, ann->cpu_list, __cmd_annotate()
206 ret = perf_session_env__lookup_objdump(&session->header.env); __cmd_annotate()
211 ret = perf_session__process_events(session); __cmd_annotate()
216 perf_session__fprintf_nr_events(session, stdout); __cmd_annotate()
217 perf_evlist__fprintf_nr_events(session->evlist, stdout); __cmd_annotate()
222 perf_session__fprintf(session, stdout); __cmd_annotate()
225 perf_session__fprintf_dsos(session, stdout); __cmd_annotate()
228 evlist__for_each(session->evlist, pos) { __cmd_annotate()
246 ui__error("The %s file has no samples!\n", session->file->path); __cmd_annotate()
345 annotate.session = perf_session__new(&file, false, &annotate.tool); cmd_annotate()
346 if (annotate.session == NULL) cmd_annotate()
352 ret = symbol__init(&annotate.session->header.env); cmd_annotate()
383 * perf_session__delete(session); cmd_annotate()
H A Dbuiltin-inject.c14 #include "util/session.h"
26 struct perf_session *session; member in struct:perf_inject
65 struct perf_session *session perf_event__repipe_op2_synth()
160 struct perf_session *session) perf_event__repipe_tracing_data()
165 err = perf_event__process_tracing_data(tool, event, session); perf_event__repipe_tracing_data()
351 struct perf_session *session = inject->session; __cmd_inject() local
369 evlist__for_each(session->evlist, evsel) { __cmd_inject()
385 lseek(fd, session->header.data_offset, SEEK_SET); __cmd_inject()
387 ret = perf_session__process_events(session); __cmd_inject()
391 perf_header__set_feat(&session->header, __cmd_inject()
393 session->header.data_size = inject->bytes_written; __cmd_inject()
394 perf_session__write_header(session, session->evlist, fd, true); __cmd_inject()
470 inject.session = perf_session__new(&file, true, &inject.tool); cmd_inject()
471 if (inject.session == NULL) cmd_inject()
474 if (symbol__init(&inject.session->header.env) < 0) cmd_inject()
479 perf_session__delete(inject.session); cmd_inject()
158 perf_event__repipe_tracing_data(struct perf_tool *tool, union perf_event *event, struct perf_session *session) perf_event__repipe_tracing_data() argument
H A Dbuiltin-buildid-cache.c22 #include "util/session.h"
270 static int build_id_cache__fprintf_missing(struct perf_session *session, FILE *fp) build_id_cache__fprintf_missing() argument
272 perf_session__fprintf_dsos_buildid(session, fp, dso__missing_buildid_cache, 0); build_id_cache__fprintf_missing()
319 struct perf_session *session = NULL; cmd_buildid_cache() local
355 session = perf_session__new(&file, false, NULL); cmd_buildid_cache()
356 if (session == NULL) cmd_buildid_cache()
360 if (symbol__init(session ? &session->header.env : NULL) < 0) cmd_buildid_cache()
420 ret = build_id_cache__fprintf_missing(session, stdout);
444 if (session)
445 perf_session__delete(session);
H A Dbuiltin-script.c9 #include "util/session.h"
179 struct perf_session *session) perf_evsel__check_attr()
184 !perf_session__has_traces(session, "record -R")) perf_evsel__check_attr()
269 static int perf_session__check_output_opt(struct perf_session *session) perf_session__check_output_opt() argument
275 evsel = perf_session__find_first_evtype(session, j); perf_session__check_output_opt()
289 perf_evsel__check_attr(evsel, session)) perf_session__check_output_opt()
301 evlist__for_each(session->evlist, evsel) { perf_session__check_output_opt()
320 evsel = perf_session__find_first_evtype(session, j); perf_session__check_output_opt()
583 struct perf_session *session; member in struct:perf_script
613 return perf_evsel__check_attr(evsel, scr->session);
623 struct perf_session *session = script->session; process_comm_event() local
624 struct perf_evsel *evsel = perf_evlist__first(session->evlist); process_comm_event()
657 struct perf_session *session = script->session; process_fork_event() local
658 struct perf_evsel *evsel = perf_evlist__first(session->evlist); process_fork_event()
687 struct perf_session *session = script->session; process_exit_event() local
688 struct perf_evsel *evsel = perf_evlist__first(session->evlist); process_exit_event()
718 struct perf_session *session = script->session; process_mmap_event() local
719 struct perf_evsel *evsel = perf_evlist__first(session->evlist); process_mmap_event()
749 struct perf_session *session = script->session; process_mmap2_event() local
750 struct perf_evsel *evsel = perf_evlist__first(session->evlist); process_mmap2_event()
795 ret = perf_session__process_events(script->session); __cmd_script()
1279 struct perf_session *session) check_ev_match()
1312 evlist__for_each(session->evlist, pos) { check_ev_match()
1342 struct perf_session *session; find_scripts() local
1350 session = perf_session__new(&file, false, NULL); find_scripts()
1351 if (!session) find_scripts()
1358 perf_session__delete(session); find_scripts()
1390 scripts_array[i], session)) for_each_script()
1399 perf_session__delete(session);
1499 struct perf_session *session; cmd_script() local
1753 session = perf_session__new(&file, false, &script.tool); cmd_script()
1754 if (session == NULL) cmd_script()
1758 perf_session__fprintf_info(session, stdout, show_full_info); cmd_script()
1763 if (symbol__init(&session->header.env) < 0) cmd_script()
1766 script.session = session; cmd_script()
1769 err = perf_session__cpu_bitmap(session, cpu_list, cpu_bitmap); cmd_script()
1815 err = scripting_ops->generate_script(session->tevent.pevent, cmd_script()
1829 err = perf_session__check_output_opt(session); cmd_script()
1838 perf_session__delete(session); cmd_script()
178 perf_evsel__check_attr(struct perf_evsel *evsel, struct perf_session *session) perf_evsel__check_attr() argument
1278 check_ev_match(char *dir_name, char *scriptname, struct perf_session *session) check_ev_match() argument
H A Dbuiltin-record.c24 #include "util/session.h"
42 struct perf_session *session; member in struct:record
52 if (perf_data_file__write(rec->session->file, bf, size) < 0) { record__write()
141 struct perf_session *session = rec->session; record__open() local
188 session->evlist = evlist;
189 perf_session__set_id_hdr_size(session);
210 struct perf_session *session = rec->session; process_buildids() local
229 return perf_session__process_events(session); process_buildids()
294 struct perf_session *session = rec->session; record__init_features() local
298 perf_header__set_feat(&session->header, feat); record__init_features()
301 perf_header__clear_feat(&session->header, HEADER_BUILD_ID); record__init_features()
304 perf_header__clear_feat(&session->header, HEADER_TRACING_DATA); record__init_features()
307 perf_header__clear_feat(&session->header, HEADER_BRANCH_STACK); record__init_features()
336 struct perf_session *session; __cmd_record() local
347 session = perf_session__new(file, false, tool); __cmd_record()
348 if (session == NULL) { __cmd_record()
349 pr_err("Perf session creation failed.\n"); __cmd_record()
354 rec->session = session; __cmd_record()
375 perf_header__clear_feat(&session->header, HEADER_GROUP_DESC); __cmd_record()
382 err = perf_session__write_header(session, rec->evlist, fd, false); __cmd_record()
388 && !perf_header__has_feat(&session->header, HEADER_BUILD_ID)) { __cmd_record()
395 machine = &session->machines.host; __cmd_record()
398 err = perf_event__synthesize_attrs(tool, session, __cmd_record()
439 machines__process_guests(&session->machines, __cmd_record()
546 rec->session->header.data_size += rec->bytes_written; __cmd_record()
550 perf_session__write_header(rec->session, rec->evlist, fd, true); __cmd_record()
568 perf_session__delete(session); __cmd_record()
H A Dbuiltin-mem.c7 #include "util/session.h"
128 struct perf_session *session = perf_session__new(&file, false, report_raw_events() local
131 if (session == NULL) report_raw_events()
135 ret = perf_session__cpu_bitmap(session, mem->cpu_list, report_raw_events()
141 if (symbol__init(&session->header.env) < 0) report_raw_events()
146 err = perf_session__process_events(session); report_raw_events()
153 perf_session__delete(session); report_raw_events()
H A Dbuiltin-kmem.c11 #include "util/session.h"
517 struct perf_session *session, __print_slab_result()
521 struct machine *machine = &session->machines.host; __print_slab_result()
580 struct perf_session *session __maybe_unused, __print_page_result()
674 static void print_slab_result(struct perf_session *session) print_slab_result() argument
677 __print_slab_result(&root_caller_sorted, session, caller_lines, 1); print_slab_result()
679 __print_slab_result(&root_alloc_sorted, session, alloc_lines, 0); print_slab_result()
683 static void print_page_result(struct perf_session *session) print_page_result() argument
686 __print_page_result(&page_alloc_sorted, session, alloc_lines); print_page_result()
690 static void print_result(struct perf_session *session) print_result() argument
693 print_slab_result(session); print_result()
695 print_page_result(session); print_result()
808 static int __cmd_kmem(struct perf_session *session) __cmd_kmem() argument
825 if (!perf_session__has_traces(session, "kmem record")) __cmd_kmem()
828 if (perf_session__set_tracepoints_handlers(session, kmem_tracepoints)) { __cmd_kmem()
829 pr_err("Initializing perf session tracepoint handlers failed\n"); __cmd_kmem()
833 evlist__for_each(session->evlist, evsel) { __cmd_kmem()
842 err = perf_session__process_events(session); __cmd_kmem()
848 print_result(session); __cmd_kmem()
1143 struct perf_session *session; cmd_kmem() local
1162 session = perf_session__new(&file, false, &perf_kmem); cmd_kmem()
1163 if (session == NULL) cmd_kmem()
1167 struct perf_evsel *evsel = perf_evlist__first(session->evlist); cmd_kmem()
1177 symbol__init(&session->header.env); cmd_kmem()
1190 ret = __cmd_kmem(session); cmd_kmem()
1195 perf_session__delete(session); cmd_kmem()
516 __print_slab_result(struct rb_root *root, struct perf_session *session, int n_lines, int is_caller) __print_slab_result() argument
H A Dbuiltin-kvm.c11 #include "util/session.h"
687 cpuid = kvm->session->header.env.cpuid; cpu_isa_config()
734 err = perf_session__queue_event(kvm->session, event, &sample, 0); perf_kvm__mmap_read_idx()
787 struct ordered_events *oe = &kvm->session->ordered_events; perf_kvm__mmap_read()
1054 kvm->session = perf_session__new(&file, false, &kvm->tool); read_events()
1055 if (!kvm->session) { read_events()
1056 pr_err("Initializing perf session failed\n"); read_events()
1060 symbol__init(&kvm->session->header.env); read_events()
1062 if (!perf_session__has_traces(kvm->session, "kvm record")) read_events()
1073 return perf_session__process_events(kvm->session); read_events()
1383 * perf session kvm_events_live()
1385 kvm->session = perf_session__new(&file, false, &kvm->tool); kvm_events_live()
1386 if (kvm->session == NULL) { kvm_events_live()
1390 kvm->session->evlist = kvm->evlist; kvm_events_live()
1391 perf_session__set_id_hdr_size(kvm->session); kvm_events_live()
1392 ordered_events__set_copy_on_queue(&kvm->session->ordered_events, true); kvm_events_live()
1393 machine__synthesize_threads(&kvm->session->machines.host, &kvm->opts.target, kvm_events_live()
1404 if (kvm->session) kvm_events_live()
1405 perf_session__delete(kvm->session); kvm_events_live()
1406 kvm->session = NULL; kvm_events_live()
H A Dbuiltin-top.c30 #include "util/session.h"
507 perf_session__fprintf_dsos(top->session, stderr); perf_top__handle_keypress()
583 &top->session->header.env); display_thread_tui()
719 top->session->evlist->stats.nr_unprocessable_samples++); perf_event__process_sample()
803 struct perf_session *session = top->session; perf_top__mmap_read_idx() local
816 evsel = perf_evlist__id2evsel(session->evlist, sample.id); perf_top__mmap_read_idx()
829 machine = &session->machines.host; perf_top__mmap_read_idx()
835 machine = &session->machines.host; perf_top__mmap_read_idx()
839 machine = perf_session__find_machine(session, perf_top__mmap_read_idx()
861 ++session->evlist->stats.nr_unknown_events; perf_top__mmap_read_idx()
936 top->session = perf_session__new(NULL, false, NULL); __cmd_top()
937 if (top->session == NULL) __cmd_top()
940 machines__set_symbol_filter(&top->session->machines, symbol_filter); __cmd_top()
943 ret = perf_session_env__lookup_objdump(&top->session->header.env); __cmd_top()
952 machine__synthesize_threads(&top->session->machines.host, &opts->target, __cmd_top()
958 top->session->evlist = top->evlist; __cmd_top()
959 perf_session__set_id_hdr_size(top->session); __cmd_top()
1007 perf_session__delete(top->session); __cmd_top()
1008 top->session = NULL; __cmd_top()
H A Dbuiltin-lock.c16 #include "util/session.h"
30 static struct perf_session *session; variable in typeref:struct:perf_session
769 t = perf_session__findnew(session, st->tid); dump_threads()
865 session = perf_session__new(&file, false, &eops); __cmd_report()
866 if (!session) { __cmd_report()
867 pr_err("Initializing perf session failed\n"); __cmd_report()
871 symbol__init(&session->header.env); __cmd_report()
873 if (!perf_session__has_traces(session, "lock record")) __cmd_report()
876 if (perf_session__set_tracepoints_handlers(session, lock_tracepoints)) { __cmd_report()
877 pr_err("Initializing perf session tracepoint handlers failed\n"); __cmd_report()
884 err = perf_session__process_events(session); __cmd_report()
897 perf_session__delete(session); __cmd_report()
H A Dbuiltin-diff.c14 #include "util/session.h"
45 struct perf_session *session; member in struct:data__file
687 struct perf_evlist *evlist_base = data__files[0].session->evlist; data_process()
697 struct perf_evlist *evlist = d->session->evlist; data__for_each_file_new()
743 d->session = perf_session__new(&d->file, false, &tool); data__for_each_file()
744 if (!d->session) { data__for_each_file()
750 ret = perf_session__process_events(d->session); data__for_each_file()
756 perf_evlist__collapse_resort(d->session->evlist); data__for_each_file()
763 if (d->session) data__for_each_file()
764 perf_session__delete(d->session); data__for_each_file()
H A Dbuiltin-sched.c11 #include "util/session.h"
1486 struct perf_session *session; perf_sched__read_events() local
1494 session = perf_session__new(&file, false, &sched->tool); perf_sched__read_events()
1495 if (session == NULL) { perf_sched__read_events()
1496 pr_debug("No Memory for session\n"); perf_sched__read_events()
1500 symbol__init(&session->header.env); perf_sched__read_events()
1502 if (perf_session__set_tracepoints_handlers(session, handlers)) perf_sched__read_events()
1505 if (perf_session__has_traces(session, "record -R")) { perf_sched__read_events()
1506 int err = perf_session__process_events(session); perf_sched__read_events()
1512 sched->nr_events = session->evlist->stats.nr_events[0]; perf_sched__read_events()
1513 sched->nr_lost_events = session->evlist->stats.total_lost; perf_sched__read_events()
1514 sched->nr_lost_chunks = session->evlist->stats.nr_events[PERF_RECORD_LOST]; perf_sched__read_events()
1519 perf_session__delete(session); perf_sched__read_events()
H A Dbuiltin-timechart.c36 #include "util/session.h"
1605 struct perf_session *session = perf_session__new(&file, false, __cmd_timechart() local
1609 if (session == NULL) __cmd_timechart()
1612 symbol__init(&session->header.env); __cmd_timechart()
1614 (void)perf_header__process_sections(&session->header, __cmd_timechart()
1615 perf_data_file__fd(session->file), __cmd_timechart()
1619 if (!perf_session__has_traces(session, "timechart record")) __cmd_timechart()
1622 if (perf_session__set_tracepoints_handlers(session, __cmd_timechart()
1624 pr_err("Initializing session tracepoint handlers failed\n"); __cmd_timechart()
1628 ret = perf_session__process_events(session); __cmd_timechart()
1641 perf_session__delete(session); __cmd_timechart()
H A Dbuiltin-trace.c7 #include "util/session.h"
2357 struct perf_session *session; trace__replay() local
2377 session = perf_session__new(&file, false, &trace->tool); trace__replay()
2378 if (session == NULL) trace__replay()
2381 if (symbol__init(&session->header.env) < 0) trace__replay()
2384 trace->host = &session->machines.host; trace__replay()
2386 err = perf_session__set_tracepoints_handlers(session, handlers); trace__replay()
2390 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, trace__replay()
2394 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, trace__replay()
2404 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, trace__replay()
2407 evsel = perf_evlist__find_tracepoint_by_name(session->evlist, trace__replay()
2416 evlist__for_each(session->evlist, evsel) { trace__replay()
2430 err = perf_session__process_events(session); trace__replay()
2438 perf_session__delete(session); trace__replay()
/linux-4.1.27/drivers/staging/lustre/include/linux/lnet/
H A Dlnetst.h57 #define LSTIO_SESSION_NEW 0xC01 /* create session */
58 #define LSTIO_SESSION_END 0xC02 /* end session */
59 #define LSTIO_SESSION_INFO 0xC03 /* query session */
61 #define LSTIO_GROUP_LIST 0xC11 /* list all groups in session */
70 #define LSTIO_BATCH_LIST 0xC24 /* show all batches in the session */
79 } lst_sid_t; /*** session id */
84 __u64 bat_id; /* unique id in session */
88 #define LST_NODE_ACTIVE 0x1 /* node in this session */
89 #define LST_NODE_BUSY 0x2 /* node is taken by other session */
91 #define LST_NODE_UNKNOWN 0x8 /* node not in session */
135 lst_sid_t rpe_sid; /* peer's session id */
239 /* create a session */
242 int lstio_ses_timeout; /* IN: session timeout */
244 /** IN: session features */
246 lst_sid_t *lstio_ses_idp; /* OUT: session id */
248 char *lstio_ses_namep; /* IN: session name */
251 /* query current session */
253 lst_sid_t *lstio_ses_idp; /* OUT: session id */
255 /** OUT: session features */
259 char *lstio_ses_namep; /* OUT: session name */
262 /* delete a session */
264 int lstio_ses_key; /* IN: session key */
274 int lstio_dbg_key; /* IN: session key */
287 int lstio_grp_key; /* IN: session key */
293 int lstio_grp_key; /* IN: session key */
303 int lstio_grp_key; /* IN: session key */
314 int lstio_grp_key; /* IN: session key */
318 /** OUT: session features */
325 int lstio_grp_key; /* IN: session key */
332 int lstio_grp_key; /* IN: session key */
345 int lstio_bat_key; /* IN: session key */
351 int lstio_bat_key; /* IN: session key */
357 int lstio_bat_key; /* IN: session key */
365 int lstio_bat_key; /* IN: session key */
373 int lstio_bat_key; /* IN: session key */
383 int lstio_bat_key; /* IN: session key */
390 int lstio_bat_key; /* IN: session key */
402 /* add stat in session */
404 int lstio_sta_key; /* IN: session key */
422 int lstio_tes_key; /* IN: session key */
483 /** milliseconds since current session started */
/linux-4.1.27/drivers/staging/lustre/lnet/selftest/
H A Drpc.h74 * session id if needed.
89 lst_sid_t mksn_sid; /* session id */
92 } WIRE_ATTR srpc_mksn_reqst_t; /* make session request */
95 __u32 mksn_status; /* session status */
96 lst_sid_t mksn_sid; /* session id */
97 __u32 mksn_timeout; /* session timeout */
99 } WIRE_ATTR srpc_mksn_reply_t; /* make session reply */
103 lst_sid_t rmsn_sid; /* session id */
104 } WIRE_ATTR srpc_rmsn_reqst_t; /* remove session request */
108 lst_sid_t rmsn_sid; /* session id */
109 } WIRE_ATTR srpc_rmsn_reply_t; /* remove session reply */
113 lst_sid_t join_sid; /* session id to join */
119 lst_sid_t join_sid; /* session id */
121 char join_session[LST_NAME_SIZE]; /* session name */
126 lst_sid_t dbg_sid; /* session id */
132 lst_sid_t dbg_sid; /* session id */
133 __u32 dbg_timeout; /* session timeout */
135 char dbg_name[LST_NAME_SIZE]; /* session name */
144 lst_sid_t bar_sid; /* session id */
153 lst_sid_t bar_sid; /* session id */
160 lst_sid_t str_sid; /* session id */
197 lst_sid_t tsr_sid; /* session id */
258 /** test session features */
H A Dconsole.h58 int nd_timeout; /* session timeout */
91 struct list_head bat_link; /* chain on session's batches list */
130 #define LST_SESSION_NONE 0x0 /* no session */
131 #define LST_SESSION_ACTIVE 0x1 /* working session */
136 struct mutex ses_mutex; /* only 1 thread in session */
137 lst_sid_t ses_id; /* global session id */
138 int ses_key; /* local session key */
139 int ses_state; /* state of session */
142 /** tests features of the session */
148 /** session is shutting down */
153 char ses_name[LST_NAME_SIZE]; /* session name */
154 lstcon_rpc_trans_t *ses_ping; /* session pinger */
167 } lstcon_session_t; /*** session descriptor */
H A Dframework.c50 MODULE_PARM_DESC(session_timeout, "test session timeout in seconds (100 by default, 0 == never)");
112 sfw_session_t *fw_session; /* _the_ session */
391 /* send over the msecs since the session was started sfw_get_stats()
449 * console's responsibility to make sure all nodes in a session have sfw_make_session()
1248 /* Remove timer to avoid racing with it or expiring active session */ sfw_handle_server_rpc()
1271 CNETERR("Features of framework RPC don't match features of current session: %x/%x\n", sfw_handle_server_rpc()
1280 * create new session anyway, so console should be able sfw_handle_server_rpc()
1412 if (rpc != NULL) /* "session" is concept in framework */ sfw_create_rpc()
1604 /* sv_name */ "make session",
1609 /* sv_name */ "remove session",
1750 "waiting for session timer to explode.\n"); sfw_shutdown()
H A Dconrpc.c330 !list_empty(&trans->tas_olink)) /* Not an end session RPC */ lstcon_rpc_trans_check()
932 CNETERR("session protocol error from %s: %u\n", lstcon_sesnew_stat_reply()
953 /* session timeout on remote node */ lstcon_sesnew_stat_reply()
984 /* ESRCH is not an error for end session */ lstcon_rpc_stat_reply()
1093 /* Creating session RPG for list of nodes */ lstcon_rpc_trans_ndlist()
1202 /* idle console, end session on all nodes */ lstcon_rpc_pinger()
1275 CDEBUG(D_NET, "Ping %d nodes in session\n", count); lstcon_rpc_pinger()
H A Dconsole.c132 /* remove from session */ lstcon_node_put()
164 /* find or create in session hash */ lstcon_ndlink_find()
481 /* End session and remove node from the group */ lstcon_group_nodes_remove()
613 /* -ref for session, it's destroyed, lstcon_group_del()
1711 /* session exists */ lstcon_session_new()
1726 CNETERR("Unknown session features %x\n", lstcon_session_new()
1887 CERROR("remote features %x do not match with session features %x of console\n", lstcon_session_feats_check()
1981 lstcon_acceptor_service.sv_name = "join session"; lstcon_init_acceptor_service()
/linux-4.1.27/include/scsi/
H A Dscsi_transport_iscsi.h50 * @create_session: create new iSCSI session object
51 * @destroy_session: destroy existing iSCSI session object
53 * @bind_conn: associate this connection with existing iSCSI session
68 * queuecommand with the session lock, or from the
69 * iscsi_conn_send_pdu context with the session lock.
71 * from the scsi work queue without the session lock.
75 * is called from queuecommand with the session lock, or
76 * from the iscsi_conn_send_pdu context with the session
78 * from the scsi work queue without the session lock.
79 * @cleanup_task: requests LLD to fail task. Called with session lock
95 void (*destroy_session) (struct iscsi_cls_session *session);
98 int (*bind_conn) (struct iscsi_cls_session *session,
110 int (*get_session_param) (struct iscsi_cls_session *session,
133 void (*session_recovery_timedout) (struct iscsi_cls_session *session);
224 /* iscsi class session state */
250 * pid of userspace process that created session or -1 if
255 int sid; /* session id */
360 /* iscsi session parameters */
383 /* index of iSCSI discovery session if the entry is
384 * discovered by iSCSI discovery session
396 /* enables firmware to auto logout the discovery session on discovery
401 /* makes authentication for discovery session optional */
414 * session and connection functions that can be used by HW iSCSI LLDs
422 extern int iscsi_session_chkready(struct iscsi_cls_session *session);
423 extern int iscsi_is_session_online(struct iscsi_cls_session *session);
426 extern int iscsi_add_session(struct iscsi_cls_session *session,
428 extern int iscsi_session_event(struct iscsi_cls_session *session,
434 extern void iscsi_remove_session(struct iscsi_cls_session *session);
435 extern void iscsi_free_session(struct iscsi_cls_session *session);
436 extern int iscsi_destroy_session(struct iscsi_cls_session *session);
440 extern void iscsi_unblock_session(struct iscsi_cls_session *session);
441 extern void iscsi_block_session(struct iscsi_cls_session *session);
H A Dlibiscsi.h93 ISCSI_TASK_ABRT_SESS_RECOV, /* aborted due to session recovery */
111 * and length to that storage. It must be setup at session
140 /* state set/tested under session->lock */
168 struct iscsi_session *session; /* parent session */ member in struct:iscsi_conn
277 * task management functions. This must be taken before the session
282 /* iSCSI session-wide sequencing */
339 spinlock_t frwd_lock; /* protects session state, *
341 * session resources: *
347 int state; /* session state */
348 int age; /* counts session re-opens */
407 * session management
433 extern void iscsi_session_failure(struct iscsi_session *session,
H A Dlibiscsi_tcp.h131 extern int iscsi_tcp_r2tpool_alloc(struct iscsi_session *session);
132 extern void iscsi_tcp_r2tpool_free(struct iscsi_session *session);
/linux-4.1.27/drivers/net/wireless/brcm80211/brcmsmac/
H A Dampdu.h21 * Data structure representing an in-progress session for accumulating
40 void brcms_c_ampdu_reset_session(struct brcms_ampdu_session *session,
42 int brcms_c_ampdu_add_frame(struct brcms_ampdu_session *session,
44 void brcms_c_ampdu_finalize(struct brcms_ampdu_session *session);
H A Dampdu.c501 void brcms_c_ampdu_reset_session(struct brcms_ampdu_session *session, brcms_c_ampdu_reset_session() argument
504 session->wlc = wlc; brcms_c_ampdu_reset_session()
505 skb_queue_head_init(&session->skb_list); brcms_c_ampdu_reset_session()
506 session->max_ampdu_len = 0; /* determined from first MPDU */ brcms_c_ampdu_reset_session()
507 session->max_ampdu_frames = 0; /* determined from first MPDU */ brcms_c_ampdu_reset_session()
508 session->ampdu_len = 0; brcms_c_ampdu_reset_session()
509 session->dma_len = 0; brcms_c_ampdu_reset_session()
513 * Preps the given packet for AMPDU based on the session data. If the
514 * frame cannot be accomodated in the current session, -ENOSPC is
517 int brcms_c_ampdu_add_frame(struct brcms_ampdu_session *session, brcms_c_ampdu_add_frame() argument
520 struct brcms_c_info *wlc = session->wlc; brcms_c_ampdu_add_frame()
542 ampdu_frames = skb_queue_len(&session->skb_list); brcms_c_ampdu_add_frame()
546 if (ampdu_frames + 1 > session->max_ampdu_frames || brcms_c_ampdu_add_frame()
547 session->ampdu_len + len > session->max_ampdu_len) brcms_c_ampdu_add_frame()
558 first = skb_peek(&session->skb_list); brcms_c_ampdu_add_frame()
565 * session information. brcms_c_ampdu_add_frame()
567 session->ampdu_len += len; brcms_c_ampdu_add_frame()
568 session->dma_len += p->len; brcms_c_ampdu_add_frame()
599 session->max_ampdu_len = min(scb_ampdu->max_rx_ampdu_bytes, brcms_c_ampdu_add_frame()
602 session->max_ampdu_frames = scb_ampdu->max_pdu; brcms_c_ampdu_add_frame()
604 session->max_ampdu_frames = brcms_c_ampdu_add_frame()
606 session->max_ampdu_frames); brcms_c_ampdu_add_frame()
621 skb_queue_tail(&session->skb_list, p); brcms_c_ampdu_add_frame()
626 void brcms_c_ampdu_finalize(struct brcms_ampdu_session *session) brcms_c_ampdu_finalize() argument
628 struct brcms_c_info *wlc = session->wlc; brcms_c_ampdu_finalize()
644 u16 dma_len = session->dma_len; brcms_c_ampdu_finalize()
655 if (skb_queue_empty(&session->skb_list)) brcms_c_ampdu_finalize()
658 first = skb_peek(&session->skb_list); brcms_c_ampdu_finalize()
659 last = skb_peek_tail(&session->skb_list); brcms_c_ampdu_finalize()
674 session->ampdu_len -= ndelim * AMPDU_DELIMITER_LEN; brcms_c_ampdu_finalize()
680 session->ampdu_len -= roundup(len, 4) - len; brcms_c_ampdu_finalize()
751 BRCMS_SET_MIMO_PLCP_LEN(plcp, session->ampdu_len); brcms_c_ampdu_finalize()
758 session->ampdu_len); brcms_c_ampdu_finalize()
764 session->ampdu_len); brcms_c_ampdu_finalize()
793 session->ampdu_len, true); brcms_c_ampdu_finalize()
800 session->ampdu_len, true); brcms_c_ampdu_finalize()
817 wlc->pub->unit, skb_queue_len(&session->skb_list), brcms_c_ampdu_finalize()
818 session->ampdu_len); brcms_c_ampdu_finalize()
H A Ddma.c215 /* session information for AMPDU */
698 /* Initialize AMPDU session */ dma_attach()
1317 struct brcms_ampdu_session *session = &di->ampdu_session; ampdu_finalize() local
1320 trace_brcms_ampdu_session(&session->wlc->hw->d11core->dev, ampdu_finalize()
1321 session->max_ampdu_len, ampdu_finalize()
1322 session->max_ampdu_frames, ampdu_finalize()
1323 session->ampdu_len, ampdu_finalize()
1324 skb_queue_len(&session->skb_list), ampdu_finalize()
1325 session->dma_len); ampdu_finalize()
1327 if (WARN_ON(skb_queue_empty(&session->skb_list))) ampdu_finalize()
1330 brcms_c_ampdu_finalize(session); ampdu_finalize()
1332 while (!skb_queue_empty(&session->skb_list)) { ampdu_finalize()
1333 p = skb_dequeue(&session->skb_list); ampdu_finalize()
1339 brcms_c_ampdu_reset_session(session, session->wlc); ampdu_finalize()
1344 struct brcms_ampdu_session *session = &di->ampdu_session; prep_ampdu_frame() local
1347 ret = brcms_c_ampdu_add_frame(session, p); prep_ampdu_frame()
1351 * progress AMPDU session and start a new one. prep_ampdu_frame()
1354 ret = brcms_c_ampdu_add_frame(session, p); prep_ampdu_frame()
1381 struct brcms_ampdu_session *session = &di->ampdu_session; dma_txfast() local
1410 if (skb_queue_len(&session->skb_list) == session->max_ampdu_frames || dma_txfast()
1431 struct brcms_ampdu_session *session = &di->ampdu_session; dma_txflush() local
1433 if (!skb_queue_empty(&session->skb_list)) dma_txflush()
1444 * If we have an active AMPDU session and are not transmitting,
1450 struct brcms_ampdu_session *session = &di->ampdu_session; dma_kick_tx() local
1452 if (!skb_queue_empty(&session->skb_list) && dma64_txidle(di)) dma_kick_tx()
H A Dbrcms_trace_brcmsmac_tx.h95 TP_printk("[%s] ampdu session max_len=%u max_frames=%u len=%u frames=%u dma_len=%u",
/linux-4.1.27/fs/nfs/
H A Dnfs4session.h34 struct nfs4_session *session; /* Parent session */ member in struct:nfs4_slot_table
101 extern void nfs4_destroy_session(struct nfs4_session *session);
130 * nfs_session_id_hash - calculate the crc32 hash for the session id
131 * @session - pointer to session
136 #define nfs_session_id_hash(session) (0)
H A Dnfs4session.c434 static void nfs4_release_session_slot_tables(struct nfs4_session *session) nfs4_release_session_slot_tables() argument
436 nfs4_release_slot_table(&session->fc_slot_table); nfs4_release_session_slot_tables()
437 nfs4_release_slot_table(&session->bc_slot_table); nfs4_release_session_slot_tables()
451 tbl->session = ses; nfs4_setup_session_slot_tables()
457 tbl->session = ses; nfs4_setup_session_slot_tables()
468 struct nfs4_session *session; nfs4_alloc_session() local
470 session = kzalloc(sizeof(struct nfs4_session), GFP_NOFS); nfs4_alloc_session()
471 if (!session) nfs4_alloc_session()
474 nfs4_init_slot_table(&session->fc_slot_table, "ForeChannel Slot table"); nfs4_alloc_session()
475 nfs4_init_slot_table(&session->bc_slot_table, "BackChannel Slot table"); nfs4_alloc_session()
476 session->session_state = 1<<NFS4_SESSION_INITING; nfs4_alloc_session()
478 session->clp = clp; nfs4_alloc_session()
479 return session; nfs4_alloc_session()
482 static void nfs4_destroy_session_slot_tables(struct nfs4_session *session) nfs4_destroy_session_slot_tables() argument
484 nfs4_shutdown_slot_table(&session->fc_slot_table); nfs4_destroy_session_slot_tables()
485 nfs4_shutdown_slot_table(&session->bc_slot_table); nfs4_destroy_session_slot_tables()
488 void nfs4_destroy_session(struct nfs4_session *session) nfs4_destroy_session() argument
493 cred = nfs4_get_clid_cred(session->clp); nfs4_destroy_session()
494 nfs4_proc_destroy_session(session, cred); nfs4_destroy_session()
499 xprt = rcu_dereference(session->clp->cl_rpcclient->cl_xprt); nfs4_destroy_session()
504 nfs4_destroy_session_slot_tables(session); nfs4_destroy_session()
505 kfree(session); nfs4_destroy_session()
541 struct nfs4_session *session = clp->cl_session; nfs4_init_ds_session() local
545 if (test_and_clear_bit(NFS4_SESSION_INITING, &session->session_state)) { nfs4_init_ds_session()
H A Dnfs4trace.h246 const struct nfs4_session *session,
249 TP_ARGS(session, args),
252 __field(unsigned int, session)
260 __entry->session = nfs_session_id_hash(&session->sess_id);
267 "session=0x%08x slot_nr=%u seq_nr=%u "
269 __entry->session,
301 const struct nfs4_session *session,
304 TP_ARGS(session, res),
307 __field(unsigned int, session)
318 __entry->session = nfs_session_id_hash(&session->sess_id);
327 "error=%d (%s) session=0x%08x slot_nr=%u seq_nr=%u "
332 __entry->session,
354 __field(unsigned int, session)
363 __entry->session = nfs_session_id_hash(&args->csa_sessionid);
372 "error=%d (%s) session=0x%08x slot_nr=%u seq_nr=%u "
376 __entry->session,
H A Dcallback_proc.c362 * For each referring call triple, check the session's slot table for
372 struct nfs4_session *session; referring_call_exists() local
379 * a session lookup from within the loop referring_call_exists()
381 session = clp->cl_session; referring_call_exists()
382 tbl = &session->fc_slot_table; referring_call_exists()
386 if (memcmp(session->sess_id.data, referring_call_exists()
435 /* state manager is resetting the session */ nfs4_callback_sequence()
439 /* Return NFS4ERR_BADSESSION if we're draining the session nfs4_callback_sequence()
H A Dnfs4client.c303 struct nfs4_session *session = NULL; nfs41_init_client() local
306 * Create the session and mark it expired. nfs41_init_client()
307 * When a SEQUENCE operation encounters the expired session nfs41_init_client()
308 * it will do session recovery to initialize it. nfs41_init_client()
310 session = nfs4_alloc_session(clp); nfs41_init_client()
311 if (!session) nfs41_init_client()
314 clp->cl_session = session; nfs41_init_client()
317 * The create session reply races with the server back nfs41_init_client()
657 * Note that session trunking is just a special subcase of nfs41_walk_client_list()
923 /* We must ensure the session is initialised first */ nfs4_server_common_setup()
1159 * Either its session is drained (NFSv4.1+), or its transport is
H A Dnfs4proc.c405 dprintk("%s ERROR: %d Reset session\n", __func__, nfs4_handle_exception()
565 struct nfs4_session *session; nfs41_sequence_free_slot() local
571 session = tbl->session; nfs41_sequence_free_slot()
592 nfs41_server_notify_highest_slotid_update(session->clp); nfs41_sequence_free_slot()
597 struct nfs4_session *session; nfs41_sequence_done() local
609 session = slot->table->session; nfs41_sequence_done()
616 trace_nfs4_sequence_done(session, res); nfs41_sequence_done()
622 clp = session->clp; nfs41_sequence_done()
680 /* The session may be reset by one of the error handlers. */ nfs41_sequence_done()
703 if (!res->sr_slot->table->session) nfs4_sequence_done()
709 int nfs41_setup_sequence(struct nfs4_session *session, nfs41_setup_sequence() argument
722 tbl = &session->fc_slot_table; nfs41_setup_sequence()
730 dprintk("%s session is draining\n", __func__); nfs41_setup_sequence()
757 trace_nfs4_setup_sequence(session, args); nfs41_setup_sequence()
778 struct nfs4_session *session = nfs4_get_session(server); nfs4_setup_sequence() local
781 if (!session) nfs4_setup_sequence()
785 dprintk("--> %s clp %p session %p sr_slot %u\n", nfs4_setup_sequence()
786 __func__, session->clp, session, res->sr_slot ? nfs4_setup_sequence()
789 ret = nfs41_setup_sequence(session, args, res, task); nfs4_setup_sequence()
798 struct nfs4_session *session = nfs4_get_session(data->seq_server); nfs41_call_sync_prepare() local
802 nfs41_setup_sequence(session, data->seq_args, data->seq_res, task); nfs41_call_sync_prepare()
1887 /* Set the create mode (note dependency on the session type) */ nfs4_open_prepare()
4919 dprintk("%s ERROR %d, Reset session\n", __func__, nfs4_async_handle_error()
6967 * be in some phase of session reset.
7063 /* just setup sequence, do not trigger session recovery nfs4_get_lease_time_prepare()
7073 * Called from nfs4_state_manager thread for session setup, so don't recover
7245 static void nfs4_update_session(struct nfs4_session *session, nfs4_update_session() argument
7248 nfs4_copy_sessionid(&session->sess_id, &res->sessionid); nfs4_update_session()
7249 /* Mark client id and session as being confirmed */ nfs4_update_session()
7250 session->clp->cl_exchange_flags |= EXCHGID4_FLAG_CONFIRMED_R; nfs4_update_session()
7251 set_bit(NFS4_SESSION_ESTABLISHED, &session->session_state); nfs4_update_session()
7252 session->flags = res->flags; nfs4_update_session()
7253 memcpy(&session->fc_attrs, &res->fc_attrs, sizeof(session->fc_attrs)); nfs4_update_session()
7255 memcpy(&session->bc_attrs, &res->bc_attrs, nfs4_update_session()
7256 sizeof(session->bc_attrs)); nfs4_update_session()
7262 struct nfs4_session *session = clp->cl_session; _nfs4_proc_create_session() local
7282 status = rpc_call_sync(session->clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT); _nfs4_proc_create_session()
7286 /* Verify the session's negotiated channel_attrs values */ _nfs4_proc_create_session()
7293 nfs4_update_session(session, &res); _nfs4_proc_create_session()
7301 * It is the responsibility of the caller to verify the session is
7308 struct nfs4_session *session = clp->cl_session; nfs4_proc_create_session() local
7310 dprintk("--> %s clp=%p session=%p\n", __func__, clp, session); nfs4_proc_create_session()
7316 /* Init or reset the session slot tables */ nfs4_proc_create_session()
7317 status = nfs4_setup_session_slot_tables(session); nfs4_proc_create_session()
7322 ptr = (unsigned *)&session->sess_id.data[0]; nfs4_proc_create_session()
7334 int nfs4_proc_destroy_session(struct nfs4_session *session, nfs4_proc_destroy_session() argument
7339 .rpc_argp = session, nfs4_proc_destroy_session()
7346 /* session is still being setup */ nfs4_proc_destroy_session()
7347 if (!test_and_clear_bit(NFS4_SESSION_ESTABLISHED, &session->session_state)) nfs4_proc_destroy_session()
7350 status = rpc_call_sync(session->clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT); nfs4_proc_destroy_session()
7351 trace_nfs4_destroy_session(session->clp, status); nfs4_proc_destroy_session()
7627 struct nfs4_session *session = nfs4_get_session(server); nfs4_layoutget_prepare() local
7635 if (nfs41_setup_sequence(session, &lgp->args.seq_args, nfs4_layoutget_prepare()
8004 struct nfs4_session *session = nfs4_get_session(server); nfs4_layoutcommit_prepare() local
8006 nfs41_setup_sequence(session, nfs4_layoutcommit_prepare()
/linux-4.1.27/include/target/iscsi/
H A Discsi_target_stat.h18 /* iSCSI session error types */
24 /* iSCSI session error stats */
H A Discsi_target_core.h282 * iSER specific session parameters
604 /* Pointer to parent session */
612 /* list_head for session connection list */
637 /* state session is currently in */
639 /* session wide counter: initiator assigned task tag */
641 /* session wide counter: target assigned task tag */
647 /* session wide counter: expected command sequence number */
649 /* session wide counter: maximum allowed command sequence number */
653 /* LIO specific session ID */
658 /* Used for session reference counting */
827 /* Per TPG LIO specific session ID. */
885 /* Used for iSCSI discovery session authentication */
890 static inline u32 session_get_next_ttt(struct iscsi_session *session) session_get_next_ttt() argument
894 spin_lock_bh(&session->ttt_lock); session_get_next_ttt()
895 ttt = session->targ_xfer_tag++; session_get_next_ttt()
897 ttt = session->targ_xfer_tag++; session_get_next_ttt()
898 spin_unlock_bh(&session->ttt_lock); session_get_next_ttt()
/linux-4.1.27/include/uapi/linux/
H A Dkeyctl.h18 #define KEY_SPEC_SESSION_KEYRING -3 /* - key ID for session-specific keyring */
20 #define KEY_SPEC_USER_SESSION_KEYRING -5 /* - key ID for UID-session keyring */
38 #define KEYCTL_JOIN_SESSION_KEYRING 1 /* join or start named session keyring */
55 #define KEYCTL_SESSION_TO_PARENT 18 /* apply session keyring to parent process */
H A Datmsvc.h36 unsigned int session; /* for p2pm */ member in struct:atmsvc_msg
H A Dpktcdvd.h80 * Last session/border status
H A Dif_pppol2tp.h49 /* The L2TPv3 protocol changes tunnel and session ids from 16 to 32
H A Dif_pppox.h87 /* The L2TPv3 protocol changes tunnel and session ids from 16 to 32
H A Dtty_flags.h23 #define ASYNCB_SESSION_LOCKOUT 8 /* [x] Lock out cua opens based on session */
H A Dtcp.h133 #define TCPI_OPT_ECN 8 /* ECN was negociated at TCP session init */
/linux-4.1.27/tools/perf/ui/browsers/
H A Dheader.c9 #include "util/session.h"
98 struct perf_session *session; tui__header_window() local
103 session = container_of(env, struct perf_session, header.env); tui__header_window()
104 perf_header__fprintf_info(session, fp, true); tui__header_window()
/linux-4.1.27/fs/hfsplus/
H A Doptions.c37 { opt_session, "session=%u" },
59 opts->session = -1; hfsplus_fill_defaults()
162 if (match_int(&args[0], &sbi->session)) { hfsplus_parse_options()
163 pr_err("session requires an argument\n"); hfsplus_parse_options()
229 if (sbi->session >= 0) hfsplus_show_options()
230 seq_printf(seq, ",session=%u", sbi->session); hfsplus_show_options()
H A Dwrapper.c135 if (HFSPLUS_SB(sb)->session >= 0) { hfsplus_get_last_session()
136 te.cdte_track = HFSPLUS_SB(sb)->session; hfsplus_get_last_session()
144 pr_err("invalid session number or type of track\n"); hfsplus_get_last_session()
/linux-4.1.27/fs/9p/
H A Dv9fs.h29 * enum p9_session_flags - option flags for each 9P session
62 * eventually support loose, tight, time, session, default always none
73 * struct v9fs_session_info - per-instance session information
74 * @flags: session options of type &p9_session_flags
79 * @cachetag: the tag of the cache associated with this session
80 * @fscache: session cookie associated with FS-Cache
87 * @clnt: reference to 9P network client instantiated for this session
90 * This structure holds state for each session instance established during
194 * @v9ses: session information
212 * @v9ses: session information
H A Dv9fs.c107 * v9fs_parse_options - parse mount options into session structure
108 * @v9ses: existing v9fs session information
313 * v9fs_session_init - initialize session
314 * @v9ses: session information structure
420 /* register the session for caching */ v9fs_session_init()
432 * v9fs_session_close - shutdown a session
433 * @v9ses: session information structure
461 * v9fs_session_cancel - terminate a session
462 * @v9ses: session to terminate
468 p9_debug(P9_DEBUG_ERROR, "cancel session %p\n", v9ses); v9fs_session_cancel()
473 * v9fs_session_begin_cancel - Begin terminate of a session
474 * @v9ses: session to terminate
481 p9_debug(P9_DEBUG_ERROR, "begin cancel session %p\n", v9ses); v9fs_session_begin_cancel()
491 * caches_show - list caches associated with a session
H A Dcache.c43 * with a new cache session.
65 p9_debug(P9_DEBUG_FSC, "session %p buf %p size %u\n", v9fs_cache_session_get_key()
75 p9_debug(P9_DEBUG_FSC, "cache session tag %s\n", v9ses->cachetag); v9fs_cache_session_get_key()
80 .name = "9P.session",
87 /* If no cache session tag was specified, we generate a random one. */ v9fs_cache_session_get_cookie()
94 p9_debug(P9_DEBUG_FSC, "session %p get cookie %p\n", v9fs_cache_session_get_cookie()
100 p9_debug(P9_DEBUG_FSC, "session %p put cookie %p\n", v9fs_cache_session_put_cookie()
/linux-4.1.27/include/linux/netfilter/
H A Dnf_conntrack_pptp.h9 /* state of the control session */
11 PPTP_SESSION_NONE, /* no session present */
12 PPTP_SESSION_ERROR, /* some session error */
15 PPTP_SESSION_CONFIRMED, /* session established */
18 /* state of the call inside the control session */
32 enum pptp_ctrlsess_state sstate; /* session state */
H A Dnf_conntrack_proto_gre.h61 __be16 call_id; /* peer's call_id for this session */
64 /* sender in this session */
/linux-4.1.27/drivers/net/wireless/iwlwifi/mvm/
H A Dtime-event.h122 * iwl_mvm_protect_session - start / extend the session protection.
124 * @vif: the virtual interface for which the session is issued
125 * @duration: the duration of the session in TU.
126 * @min_duration: will start a new session if the current session will end
132 * This function can be used to start a session protection which means that the
134 * can block (sleep) until the session starts. This function can also be used
135 * to extend a currently running session.
145 * iwl_mvm_stop_session_protection - cancel the session protection.
147 * @vif: the virtual interface for which the session is issued
149 * This functions cancels the session protection which is an act of good
173 * This function can be used to issue a remain on channel session,
188 * This function can be used to cancel an ongoing ROC session.
190 * session, but will not wait for the actual stopping of the session.
H A Dsta.h238 * @IWL_AGG_ON: aggregation session is up
239 * @IWL_EMPTYING_HW_QUEUE_ADDBA: establishing a BA session - waiting for the
241 * @IWL_EMPTYING_HW_QUEUE_DELBA: tearing down a BA session - waiting for the
262 * @txq_id: Tx queue used by the BA session
H A Dquota.c202 * The FW's scheduling session consists of iwl_mvm_update_quotas()
284 /* Give the remainder of the session to the first data binding */ iwl_mvm_update_quotas()
/linux-4.1.27/drivers/scsi/bnx2fc/
H A Dbnx2fc_debug.c2 * Handles operations such as session offload/upload etc, and manages
3 * session resources such as connection id and qp resources.
H A Dbnx2fc_debug.h2 * Handles operations such as session offload/upload etc, and manages
3 * session resources such as connection id and qp resources.
H A Dbnx2fc_tgt.c2 * Handles operations such as session offload/upload etc, and manages
3 * session resources such as connection id and qp resources.
52 * If the timer has expired, this session is dead bnx2fc_ofld_timer()
56 * port will be logged off, and conn_id, session bnx2fc_ofld_timer()
99 /* Allocate session resources */ bnx2fc_offload_session()
107 * Initialize FCoE session offload process. bnx2fc_offload_session()
120 * wait for the session is offloaded and enabled. 3 Secs bnx2fc_offload_session()
146 pr_err(PFX "enable session failed\n"); bnx2fc_offload_session()
155 /* couldn't offload the session. log off from this rport */ bnx2fc_offload_session()
158 /* Free session resources */ bnx2fc_offload_session()
345 /* Free session resources */ bnx2fc_upload_session()
436 * initiated target login. bnx2fc can proceed with initiating the session
499 * Offload the session. This is a blocking call, and will bnx2fc_rport_event_handler()
500 * wait until the session is offloaded. bnx2fc_rport_event_handler()
540 * Perform session upload. Note that rdata->peers is already bnx2fc_rport_event_handler()
666 *bnx2fc_alloc_session_resc - Allocate qp resources for the session
836 * bnx2i_free_session_resc - free qp resources for the session
848 BNX2FC_TGT_DBG(tgt, "Freeing up session resources\n"); bnx2fc_free_session_resc()
H A Dbnx2fc_constants.h2 * Handles operations such as session offload/upload etc, and manages
3 * session resources such as connection id and qp resources.
/linux-4.1.27/drivers/target/iscsi/
H A Discsi_target_device.c34 * This is a discovery session, the single queue slot was already iscsit_determine_maxcmdsn()
45 * This is a normal session, set the Session's CmdSN window to the iscsit_determine_maxcmdsn()
H A Discsi_target_login.c208 * If the Time2Retain handler has expired, the session is already gone. iscsi_check_for_session_reinstatement()
214 " preforming session reinstatement.\n", (sessiontype) ? iscsi_check_for_session_reinstatement()
275 * This is the leading connection of a new session,
276 * or session reinstatement.
290 pr_err("Could not allocate memory for session\n"); iscsi_login_zero_tsih_s1()
474 " T10-PI enabled ISER session\n"); iscsi_login_zero_tsih_s2()
545 * Add a new connection to an existing session.
578 * If the Time2Retain handler has expired, the session is already gone. iscsi_login_non_zero_tsih_s2()
582 " a non-existent session, rejecting iSCSI Login.\n"); iscsi_login_non_zero_tsih_s2()
589 * Stop the Time2Retain timer if this is a failed session, we restart iscsi_login_non_zero_tsih_s2()
673 * session. iscsi_login_post_auth_non_zero_tsih()
675 pr_debug("Adding CID %hu to existing session for %s.\n", iscsi_login_post_auth_non_zero_tsih()
679 pr_err("Adding additional connection to this session" iscsi_login_post_auth_non_zero_tsih()
850 pr_debug("Established iSCSI session from node: %s\n", iscsi_post_login_handler()
1385 * This is the leading connection of a new session. __iscsi_target_login_thread()
1387 * session reinstatement. __iscsi_target_login_thread()
1393 * Add a new connection to an existing session. __iscsi_target_login_thread()
1394 * We check for a non-existant session in __iscsi_target_login_thread()
H A Discsi_target_erl2.c339 * session pool and remove it from the connection's list. iscsit_prepare_cmds_for_realligance()
363 * the session's ExpCmdSN are attached to the connection iscsit_prepare_cmds_for_realligance()
/linux-4.1.27/drivers/scsi/bnx2i/
H A Dbnx2i_hwi.c669 if (conn->session->initial_r2t_en) bnx2i_update_iscsi_conn()
671 if (conn->session->imm_data_en) bnx2i_update_iscsi_conn()
676 update_wqe->first_burst_length = conn->session->first_burst; bnx2i_update_iscsi_conn()
677 update_wqe->max_burst_length = conn->session->max_burst; bnx2i_update_iscsi_conn()
679 update_wqe->max_outstanding_r2ts = conn->session->max_r2t; bnx2i_update_iscsi_conn()
680 update_wqe->session_error_recovery_level = conn->session->erl; bnx2i_update_iscsi_conn()
1347 * @session: iscsi session
1353 int bnx2i_process_scsi_cmd_resp(struct iscsi_session *session, bnx2i_process_scsi_cmd_resp() argument
1366 spin_lock_bh(&session->back_lock); bnx2i_process_scsi_cmd_resp()
1437 spin_unlock_bh(&session->back_lock); bnx2i_process_scsi_cmd_resp()
1444 * @session: iscsi session pointer
1450 static int bnx2i_process_login_resp(struct iscsi_session *session, bnx2i_process_login_resp() argument
1462 spin_lock(&session->back_lock); bnx2i_process_login_resp()
1505 spin_unlock(&session->back_lock); bnx2i_process_login_resp()
1512 * @session: iscsi session pointer
1518 static int bnx2i_process_text_resp(struct iscsi_session *session, bnx2i_process_text_resp() argument
1530 spin_lock(&session->back_lock); bnx2i_process_text_resp()
1566 spin_unlock(&session->back_lock); bnx2i_process_text_resp()
1573 * @session: iscsi session pointer
1579 static int bnx2i_process_tmf_resp(struct iscsi_session *session, bnx2i_process_tmf_resp() argument
1589 spin_lock(&session->back_lock); bnx2i_process_tmf_resp()
1605 spin_unlock(&session->back_lock); bnx2i_process_tmf_resp()
1611 * @session: iscsi session pointer
1618 static int bnx2i_process_logout_resp(struct iscsi_session *session, bnx2i_process_logout_resp() argument
1628 spin_lock(&session->back_lock); bnx2i_process_logout_resp()
1652 spin_unlock(&session->back_lock); bnx2i_process_logout_resp()
1658 * @session: iscsi session pointer
1664 static void bnx2i_process_nopin_local_cmpl(struct iscsi_session *session, bnx2i_process_nopin_local_cmpl() argument
1673 spin_lock(&session->back_lock); bnx2i_process_nopin_local_cmpl()
1678 spin_unlock(&session->back_lock); bnx2i_process_nopin_local_cmpl()
1699 * @session: iscsi session pointer
1705 static int bnx2i_process_nopin_mesg(struct iscsi_session *session, bnx2i_process_nopin_mesg() argument
1717 spin_lock(&session->back_lock); bnx2i_process_nopin_mesg()
1743 spin_unlock(&session->back_lock); bnx2i_process_nopin_mesg()
1751 * @session: iscsi session pointer
1757 static void bnx2i_process_async_mesg(struct iscsi_session *session, bnx2i_process_async_mesg() argument
1776 spin_lock(&session->back_lock); bnx2i_process_async_mesg()
1795 spin_unlock(&session->back_lock); bnx2i_process_async_mesg()
1801 * @session: iscsi session pointer
1807 static void bnx2i_process_reject_mesg(struct iscsi_session *session, bnx2i_process_reject_mesg() argument
1822 spin_lock(&session->back_lock); bnx2i_process_reject_mesg()
1833 spin_unlock(&session->back_lock); bnx2i_process_reject_mesg()
1838 * @session: iscsi session pointer
1844 static void bnx2i_process_cmd_cleanup_resp(struct iscsi_session *session, bnx2i_process_cmd_cleanup_resp() argument
1853 spin_lock(&session->back_lock); bnx2i_process_cmd_cleanup_resp()
1859 spin_unlock(&session->back_lock); bnx2i_process_cmd_cleanup_resp()
1886 bnx2i_process_scsi_cmd_resp(work->session, bnx2i_percpu_io_thread()
1915 static int bnx2i_queue_scsi_cmd_resp(struct iscsi_session *session, bnx2i_queue_scsi_cmd_resp() argument
1926 spin_lock(&session->back_lock); bnx2i_queue_scsi_cmd_resp()
1930 spin_unlock(&session->back_lock); bnx2i_queue_scsi_cmd_resp()
1940 spin_unlock(&session->back_lock); bnx2i_queue_scsi_cmd_resp()
1952 bnx2i_work->session = session; bnx2i_queue_scsi_cmd_resp()
1964 bnx2i_process_scsi_cmd_resp(session, bnx2i_conn, (struct cqe *)cqe); bnx2i_queue_scsi_cmd_resp()
1979 struct iscsi_session *session = conn->session; bnx2i_process_new_cqes() local
2020 bnx2i_queue_scsi_cmd_resp(session, bnx2i_conn, nopin); bnx2i_process_new_cqes()
2023 bnx2i_process_login_resp(session, bnx2i_conn, bnx2i_process_new_cqes()
2027 bnx2i_process_tmf_resp(session, bnx2i_conn, bnx2i_process_new_cqes()
2031 bnx2i_process_text_resp(session, bnx2i_conn, bnx2i_process_new_cqes()
2035 bnx2i_process_logout_resp(session, bnx2i_conn, bnx2i_process_new_cqes()
2039 if (bnx2i_process_nopin_mesg(session, bnx2i_conn, bnx2i_process_new_cqes()
2044 bnx2i_process_nopin_local_cmpl(session, bnx2i_conn, bnx2i_process_new_cqes()
2048 bnx2i_process_async_mesg(session, bnx2i_conn, bnx2i_process_new_cqes()
2053 bnx2i_process_reject_mesg(session, bnx2i_conn, bnx2i_process_new_cqes()
2057 bnx2i_process_cmd_cleanup_resp(session, bnx2i_conn, bnx2i_process_new_cqes()
2220 * will initiate session recovery for that connection/session. For
2223 * session, this is to avoid un-necessarily overloading the system)
H A Dbnx2i_iscsi.c114 if ((start_bd_offset > task->conn->session->first_burst) || bnx2i_setup_write_cmd_bd_info()
441 * @session: iscsi session pointer
444 static int bnx2i_alloc_bdt(struct bnx2i_hba *hba, struct iscsi_session *session, bnx2i_alloc_bdt() argument
454 iscsi_session_printk(KERN_ERR, session, "Could not " bnx2i_alloc_bdt()
465 * @session: iscsi session pointer
469 struct iscsi_session *session) bnx2i_destroy_cmd_pool()
473 for (i = 0; i < session->cmds_max; i++) { bnx2i_destroy_cmd_pool()
474 struct iscsi_task *task = session->cmds[i]; bnx2i_destroy_cmd_pool()
489 * bnx2i_setup_cmd_pool - sets up iscsi command pool for the session
491 * @session: iscsi session pointer
494 struct iscsi_session *session) bnx2i_setup_cmd_pool()
498 for (i = 0; i < session->cmds_max; i++) { bnx2i_setup_cmd_pool()
499 struct iscsi_task *task = session->cmds[i]; bnx2i_setup_cmd_pool()
505 if (bnx2i_alloc_bdt(hba, session, cmd)) bnx2i_setup_cmd_pool()
512 bnx2i_destroy_cmd_pool(hba, session); bnx2i_setup_cmd_pool()
586 * @session: iscsi session pointer
1175 spin_unlock_bh(&conn->session->back_lock); bnx2i_cleanup_task()
1178 spin_lock_bh(&conn->session->back_lock); bnx2i_cleanup_task()
1224 struct iscsi_session *session = conn->session; bnx2i_task_xmit() local
1225 struct Scsi_Host *shost = iscsi_session_to_shost(session->cls_session); bnx2i_task_xmit()
1277 * bnx2i_session_create - create a new iscsi session
1280 * @initial_cmdsn: initial iscsi CMDSN to be used for this session
1282 * Creates a new iSCSI session instance on given device.
1331 * bnx2i_session_destroy - destroys iscsi session
1332 * @cls_session: pointer to iscsi cls session
1334 * Destroys previously created iSCSI session instance and releases
1339 struct iscsi_session *session = cls_session->dd_data; bnx2i_session_destroy() local
1343 bnx2i_destroy_cmd_pool(hba, session); bnx2i_session_destroy()
1350 * @cls_session: pointer to iscsi cls session
1353 * Creates a new iSCSI connection instance for a given session
1395 * @cls_session: pointer to iscsi cls session
1398 * @is_leading: leading connection on this session?
1400 * Binds together iSCSI session instance, iSCSI connection instance
1494 if (work->session == conn->session && for_each_online_cpu()
2029 struct iscsi_session *session = NULL; bnx2i_hw_ep_disconnect() local
2051 session = conn->session; bnx2i_hw_ep_disconnect()
2063 if (session) { bnx2i_hw_ep_disconnect()
2064 spin_lock_bh(&session->frwd_lock); bnx2i_hw_ep_disconnect()
2066 if (session->state == ISCSI_STATE_LOGGING_OUT) { bnx2i_hw_ep_disconnect()
2080 spin_unlock_bh(&session->frwd_lock); bnx2i_hw_ep_disconnect()
468 bnx2i_destroy_cmd_pool(struct bnx2i_hba *hba, struct iscsi_session *session) bnx2i_destroy_cmd_pool() argument
493 bnx2i_setup_cmd_pool(struct bnx2i_hba *hba, struct iscsi_session *session) bnx2i_setup_cmd_pool() argument
/linux-4.1.27/net/bluetooth/rfcomm/
H A Dcore.c214 struct sock *sk = d->session->sock->sk; rfcomm_check_security()
240 BT_DBG("session %p state %ld", s, s->state); rfcomm_session_timeout()
248 BT_DBG("session %p state %ld timeout %ld", s, s->state, timeout); rfcomm_session_set_timer()
255 BT_DBG("session %p state %ld", s, s->state); rfcomm_session_clear_timer()
333 BT_DBG("dlc %p session %p", d, s); rfcomm_dlc_link()
338 d->session = s; rfcomm_dlc_link()
343 struct rfcomm_session *s = d->session; rfcomm_dlc_unlink()
345 BT_DBG("dlc %p refcnt %d session %p", d, atomic_read(&d->refcnt), s); rfcomm_dlc_unlink()
348 d->session = NULL; rfcomm_dlc_unlink()
439 struct rfcomm_session *s = d->session; __rfcomm_dlc_disconn()
453 struct rfcomm_session *s = d->session; __rfcomm_dlc_close()
457 BT_DBG("dlc %p state %ld dlci %d err %d session %p", __rfcomm_dlc_close()
483 /* if closing a dlc in a session that hasn't been started, __rfcomm_dlc_close()
512 s = d->session; rfcomm_dlc_close()
516 /* after waiting on the mutex check the session still exists rfcomm_dlc_close()
651 BT_DBG("session %p sock %p", s, sock); rfcomm_session_add()
679 BT_DBG("session %p state %ld", s, s->state); rfcomm_session_del()
717 BT_DBG("session %p state %ld err %d", s, s->state, err); rfcomm_session_close()
803 BT_DBG("session %p len %d", s, len); rfcomm_send_frame()
1172 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); rfcomm_recv_ua()
1226 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); rfcomm_recv_dm()
1256 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); rfcomm_recv_disc()
1288 struct sock *sk = d->session->sock->sk; rfcomm_dlc_accept()
1293 rfcomm_send_ua(d->session, d->dlci); rfcomm_dlc_accept()
1305 rfcomm_send_msc(d->session, 1, d->dlci, d->v24_sig); rfcomm_dlc_accept()
1332 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); rfcomm_recv_sabm()
1371 struct rfcomm_session *s = d->session; rfcomm_apply_pn()
1404 BT_DBG("session %p state %ld dlci %d", s, s->state, dlci); rfcomm_recv_pn()
1675 BT_DBG("session %p state %ld dlci %d pf %d", s, s->state, dlci, pf); rfcomm_recv_data()
1711 /* no session, so free socket data */ rfcomm_recv_frame()
1777 BT_DBG("session %p state %ld", s, s->state); rfcomm_process_connect()
1806 rfcomm_send_msc(d->session, 1, d->dlci, d->v24_sig); rfcomm_process_tx()
1813 rfcomm_send_credits(d->session, d->addr, d->cfc - d->rx_credits); rfcomm_process_tx()
1826 err = rfcomm_send_frame(d->session, skb->data, skb->len); rfcomm_process_tx()
1849 BT_DBG("session %p state %ld", s, s->state); rfcomm_process_dlcs()
1910 BT_DBG("session %p state %ld qlen %d", s, s->state, skb_queue_len(&sk->sk_receive_queue)); rfcomm_process_rx()
1940 BT_DBG("session %p", s); rfcomm_accept_connection()
2063 /* Add listening session */ rfcomm_add_listener()
/linux-4.1.27/drivers/usb/phy/
H A Dphy-omap-otg.c62 /* Set B-session valid. */ omap_otg_set_mode()
65 /* Set A-session valid. */ omap_otg_set_mode()
68 /* Set B-session end to indicate no VBUS. */ omap_otg_set_mode()
/linux-4.1.27/drivers/target/loopback/
H A Dtcm_loop.h31 * Pointer to TCM session for I_T Nexus
/linux-4.1.27/include/linux/usb/
H A Dphy_companion.h30 /* for B devices only: start session with A-Host */
H A Dotg.h36 /* for B devices only: start session with A-Host */
/linux-4.1.27/net/ceph/
H A Dauth_x_protocol.h60 * b - encrypted with session key
H A Dmon_client.c26 * We maintain an open, active session with a monitor at all times in order to
115 * Close monitor session, if any.
131 * Open a session with a (new) monitor.
250 pr_info("mon%d %s session established\n", handle_subscribe_ack()
910 dout("authenticated, starting session\n"); handle_auth_reply()
1084 pr_info("mon%d %s session lost, " mon_fault()
/linux-4.1.27/security/keys/
H A Dprocess_keys.c41 * Install the user and user session keyrings for the current process's UID.
71 * pinned by a session, but the user_struct pointing to it install_user_keyrings()
86 /* get a default session keyring (which might also exist install_user_keyrings()
101 /* we install a link from the user session keyring to install_user_keyrings()
217 * Install a session keyring directly to a credentials struct.
226 /* create an empty session keyring */ install_session_keyring_to_cred()
252 * Install a session keyring, discarding the old one. If a keyring is not
375 /* search the session keyring */ search_my_process_keyrings()
398 /* or search the user-session keyring */ search_my_process_keyrings()
572 /* always install a session keyring upon access if one lookup_user_key()
743 * Join the named keyring as the session keyring if possible else attempt to
747 * session keyring.
749 * Named session keyrings are joined with a semaphore held to prevent the
751 * to prevent a race in creating compatible session keyrings.
823 * Replace a process's session keyring on behalf of one of its children when
864 * Make sure that root's user and user-session keyrings exist.
H A Drequest_key.c50 * Initialise a usermode helper that is going to have a specific session
64 * Clean up a usermode helper with session keyring.
73 * Call a usermode helper with a specific session keyring.
101 *session; call_sbin_request_key() local
113 /* allocate a new session keyring */ call_sbin_request_key()
126 /* attach the auth key to the session keyring */ call_sbin_request_key()
148 session = rcu_dereference(cred->session_keyring); call_sbin_request_key()
149 if (!session) call_sbin_request_key()
150 session = cred->user->session_keyring; call_sbin_request_key()
151 sskey = session->serial; call_sbin_request_key()
H A Dkeyctl.c275 * Join a (named) session keyring.
277 * Create and join an anonymous session keyring or join a named session
278 * keyring, creating it if necessary. A named session keyring must have Search
282 * If successful, the ID of the joined session keyring will be returned.
299 /* join the session */ keyctl_join_session_keyring()
1454 * Attempt to install the calling process's session keyring on the process's
1508 /* the parent and the child must have different session keyrings or keyctl_session_to_parent()
1537 /* the replacement session keyring is applied just prior to userspace keyctl_session_to_parent()
/linux-4.1.27/include/linux/ceph/
H A Dmsgr.h100 __le32 connect_seq; /* count connections initiated in this session */
109 __le64 features; /* feature bits for this session */
124 __le64 seq; /* message seq# for this session */
142 __le64 seq; /* message seq# for this session */
H A Dmessenger.h38 /* a remote host as terminated a message exchange session, and messages
180 * We maintain a queue of outgoing messages, and some session state to
/linux-4.1.27/drivers/target/tcm_fc/
H A Dtfc_sess.c165 * Find session in local port.
196 * Allocate session and enter it in the hash for the local port.
236 * Unhash the session.
251 * Delete session from hash.
293 * Determine whether session is allowed to be shutdown in the current context.
294 * Returns non-zero if the session should be shutdown.
305 * Remove session and send PRLO.
377 * Create session (image pair) only if requested by ft_prli_locked()
H A Dtcm_fc.h25 #define TCM_FC_DEFAULT_TAGS 512 /* tags used for per-session preallocation */
80 * Node ACL for FC remote port session.
116 struct ft_sess *sess; /* session held for cmd */
/linux-4.1.27/drivers/scsi/be2iscsi/
H A Dbe_iscsi.c35 * beiscsi_session_create - creates a new iscsi session
74 "Max cmds per session supported is %d. Using %d." beiscsi_session_create()
106 * beiscsi_session_destroy - destroys iscsi session
107 * @cls_session: pointer to iscsi cls session
109 * Destroys iSCSI session instance and releases
188 * beiscsi_conn_bind - Binds iscsi session/connection with TCP connection
189 * @cls_session: pointer to iscsi cls session
672 struct iscsi_session *session = conn->session; beiscsi_set_param() local
690 if (session->first_burst > 8192) beiscsi_set_param()
691 session->first_burst = 8192; beiscsi_set_param()
698 if (session->max_burst > 262144) beiscsi_set_param()
699 session->max_burst = 262144; beiscsi_set_param()
931 struct iscsi_session *session = conn->session; beiscsi_set_params_for_offld() local
934 params, session->max_burst); beiscsi_set_params_for_offld()
939 params, session->first_burst); beiscsi_set_params_for_offld()
941 session->erl); beiscsi_set_params_for_offld()
947 session->initial_r2t_en); beiscsi_set_params_for_offld()
949 session->imm_data_en); beiscsi_set_params_for_offld()
952 session->dataseq_inorder_en); beiscsi_set_params_for_offld()
955 session->pdu_inorder_en); beiscsi_set_params_for_offld()
957 session->max_r2t); beiscsi_set_params_for_offld()
967 * beiscsi_conn_start - offload of session to chip
H A Dbe_main.c226 struct iscsi_session *session; beiscsi_eh_abort() local
233 session = cls_session->dd_data; beiscsi_eh_abort()
235 spin_lock_bh(&session->frwd_lock); beiscsi_eh_abort()
238 spin_unlock_bh(&session->frwd_lock); beiscsi_eh_abort()
245 spin_unlock_bh(&session->frwd_lock); beiscsi_eh_abort()
248 spin_unlock_bh(&session->frwd_lock); beiscsi_eh_abort()
303 struct iscsi_session *session; beiscsi_eh_device_reset() local
312 session = cls_session->dd_data; beiscsi_eh_device_reset()
313 spin_lock_bh(&session->frwd_lock); beiscsi_eh_device_reset()
314 if (!session->leadconn || session->state != ISCSI_STATE_LOGGED_IN) { beiscsi_eh_device_reset()
315 spin_unlock_bh(&session->frwd_lock); beiscsi_eh_device_reset()
318 conn = session->leadconn; beiscsi_eh_device_reset()
325 for (i = 0; i < conn->session->cmds_max; i++) { beiscsi_eh_device_reset()
326 abrt_task = conn->session->cmds[i]; beiscsi_eh_device_reset()
344 spin_unlock_bh(&session->frwd_lock); beiscsi_eh_device_reset()
1091 struct iscsi_session *session = conn->session; beiscsi_process_async_pdu() local
1128 spin_lock_bh(&session->back_lock); beiscsi_process_async_pdu()
1130 spin_unlock_bh(&session->back_lock); beiscsi_process_async_pdu()
1530 struct iscsi_session *session = conn->session; hwi_complete_cmd() local
1549 spin_lock_bh(&session->back_lock); hwi_complete_cmd()
1588 spin_unlock_bh(&session->back_lock); hwi_complete_cmd()
4308 * beiscsi_get_boot_info()- Get the boot session info
4325 /* Get the session handle of the boot target */ beiscsi_get_boot_info()
4330 "BM_%d : No boot session\n"); beiscsi_get_boot_info()
4648 struct iscsi_session *session = task->conn->session; beiscsi_offload_connection() local
4656 spin_lock_bh(&session->back_lock); beiscsi_offload_connection()
4658 spin_unlock_bh(&session->back_lock); beiscsi_offload_connection()
4685 *age = conn->session->age; beiscsi_parse_pdu()
4693 * This is called with the session lock held. It will allocate
H A Dbe_mgmt.c196 * mgmt_reopen_session()- Reopen a session based on reopen_type
199 * @sess_handle: Session Handle of the session to be re-opened
1301 * be_mgmt_get_boot_shandle()- Get the session handle
1303 * @s_handle: session handle returned for boot session.
1305 * Get the boot target session handle. In case of
1351 /* FW returns the session handle of the boot session */ be_mgmt_get_boot_shandle()
/linux-4.1.27/net/atm/
H A Dsignaling.c86 session_vcc = vcc->session ? vcc->session : vcc; sigd_send()
148 static unsigned int session = 0; sigd_enq2() local
171 msg->session = ++session; sigd_enq2()
172 /* every new pmp connect gets the next session number */ sigd_enq2()
/linux-4.1.27/net/rxrpc/
H A Dar-transport.c1 /* RxRPC point-to-point transport session management
32 * allocate a new transport session manager
76 * obtain a transport session for the nominated endpoints
184 * release a transport session
204 * clean up a transport session
271 * preemptively destroy all the transport session records rather than waiting
H A Dar-key.c192 rxrpc_free_krb5_tagged(&rxk5->session); rxrpc_rxk5_free()
461 /* extract the session key and the encoding type (the tag field -> rxrpc_preparse_xdr_rxk5()
463 ret = rxrpc_krb5_decode_tagged_data(&rxk5->session, AFSTOKEN_DATA_MAX, rxrpc_preparse_xdr_rxk5()
679 * 16 8 session key
1096 toksize += 8 + RND(token->k5->session.data_len); rxrpc_read()
1196 ENCODE(token->k5->session.tag); rxrpc_read()
1197 ENCODE_DATA(token->k5->session.data_len, rxrpc_read()
1198 token->k5->session.data); rxrpc_read()
/linux-4.1.27/fs/hfs/
H A Dsuper.c150 if (sbi->session >= 0) hfs_show_options()
151 seq_printf(seq, ",session=%u", sbi->session); hfs_show_options()
206 { opt_session, "session=%u" },
243 hsb->session = -1; parse_options()
305 if (match_int(&args[0], &hsb->session)) { parse_options()
306 pr_err("session requires an argument\n"); parse_options()
H A Dmdb.c43 if (HFS_SB(sb)->session >= 0) { hfs_get_last_session()
44 te.cdte_track = HFS_SB(sb)->session; hfs_get_last_session()
51 pr_err("invalid session number or type of track\n"); hfs_get_last_session()
/linux-4.1.27/fs/cifs/
H A Dsmb2transport.c148 cifs_dbg(VFS, "%s: Could not find session\n", __func__); smb2_calc_signature()
247 cifs_dbg(VFS, "%s: Could not set with session key\n", __func__); generate_smb3signingkey()
319 cifs_dbg(VFS, "%s: Could not find session\n", __func__); smb3_calc_signature()
431 * BB what if signatures are supposed to be on for session but smb2_verify_signature()
435 /* Do not need to verify session setups with signature "BSRSPYL " */ smb2_verify_signature()
484 cifs_dbg(VFS, "Null TCP session in smb2_mid_entry_alloc\n"); smb2_mid_entry_alloc()
520 cifs_dbg(FYI, "tcp session dead - return to caller to retry\n"); smb2_get_mid_entry()
528 /* else ok - we are setting up session */ smb2_get_mid_entry()
534 /* else ok - we are shutting down the session */ smb2_get_mid_entry()
H A Dntlmssp.h37 #define NTLMSSP_NEGOTIATE_LM_KEY 0x0080 /* Use LM session key */
131 * Size of the session key (crypto key encrypted with the password
H A Dcifsencrypt.c231 /* BB what if signatures are supposed to be on for session but cifs_verify_signature()
234 /* Do not need to verify session setups with signature "BSRSPYL " */ cifs_verify_signature()
264 /* first calculate 24 bytes ntlm response and then 16 byte session key */ setup_ntlm_response()
297 cifs_dbg(FYI, "%s Can't generate NTLM session key, error: %d\n", setup_ntlm_response()
321 /* calculate old style session key */ calc_lanman_hash()
344 * Allocate domain name which gets freed when session struct is deallocated.
392 * packet and we have plucked it and stored within smb session.
448 * packet and we have plucked it and stored within smb session.
754 /* now calculate the session key for NTLMv2 */ setup_ntlmv2_rsp()
821 cifs_dbg(VFS, "could not encrypt session key rc: %d\n", rc); calc_seckey()
826 /* make secondary_key/nonce as session key */ calc_seckey()
828 /* and make len as that of session key only */ calc_seckey()
H A Dtransport.c52 cifs_dbg(VFS, "Null TCP session in AllocMidQEntry\n"); AllocMidQEntry()
350 cifs_dbg(FYI, "partial send (wanted=%u sent=%zu): terminating session\n", smb_send_rqst()
468 cifs_dbg(FYI, "tcp session dead - return to caller to retry\n"); allocate_mid()
476 /* else ok - we are setting up session */ allocate_mid()
480 /* check if SMB session is bad because we are setting it up */ allocate_mid()
483 /* else ok - we are shutting down session */ allocate_mid()
677 /* FIXME: add code to kill session */ cifs_check_receive()
727 cifs_dbg(VFS, "Null session\n"); SendReceive2()
845 cifs_dbg(VFS, "Null smb session\n"); SendReceive()
849 cifs_dbg(VFS, "Null tcp session\n"); SendReceive()
982 cifs_dbg(VFS, "Null smb session\n"); SendReceiveBlockingLock()
988 cifs_dbg(VFS, "Null tcp session\n"); SendReceiveBlockingLock()
H A Dcifsglob.h86 /* associated with each tcp and smb session */
127 /* per smb session structure/fields */
129 bool sesskey_per_smbsess; /* whether session key is per smb session */
242 /* close smb session */
769 * Session structure. One of these for each uid session with a particular host
812 * session
818 struct cifs_ses *ses; /* pointer to session associated with */
1033 bool invalidHandle:1; /* file closed via session abend */
1404 #define MID_RETRY_NEEDED 8 /* session closed while this request out */
1429 /* Security Flags: indicate type of session setup needed */
1497 * list operations on tcp and SMB session lists and tCon lists
1503 * sesSem operations on smb session
1526 * tcp session, and the list of tcon's per smb session. It also protects
1527 * the reference counters for the server, smb session, and tcon. Finally,
1577 GLOBAL_EXTERN unsigned int global_secflags; /* if on, session setup sent
H A Drfc1002pdu.h26 /* RFC 1002 session packet types */
H A Dnetmisc.c253 during the session setup } */
268 during the session setup } */
339 during the session setup } */
349 during the session setup } */
401 NT_STATUS_INSUFF_SERVER_RESOURCES during the session setup } */
646 NT_STATUS_TRUSTED_RELATIONSHIP_FAILURE during the session setup } */
666 during the session setup } */
895 /* generic corrective action e.g. reconnect SMB session on map_smb_to_linux_error()
H A Dcifs_debug.c168 " session status: %d\t", cifs_debug_data_proc_show()
237 /* BB add code to dump additional info such as TCP session info now */ cifs_debug_data_proc_show()
324 "\n%d session %d share reconnects\n", cifs_stats_proc_show()
H A Dsess.c4 * SMB/CIFS session setup handling routines
344 /* BB is NTLMV2 session security format easier to use here? */ build_ntlmssp_negotiate_blob()
620 cifs_dbg(FYI, "CIFS session established successfully\n"); sess_establish_session()
790 /* calculate ntlm response and session key */ sess_auth_ntlm()
899 /* calculate nlmv2 response and session key */ sess_auth_ntlmv2()
1175 cifs_dbg(FYI, "rawntlmssp session setup negotiate phase\n"); sess_auth_rawntlmssp_negotiate()
1219 cifs_dbg(FYI, "rawntlmssp session setup challenge phase\n"); sess_auth_rawntlmssp_negotiate()
1272 cifs_dbg(FYI, "rawntlmssp session setup authenticate phase\n"); sess_auth_rawntlmssp_authenticate()
/linux-4.1.27/drivers/net/usb/
H A Dcdc_mbim.c27 /* alternative VLAN for IP session 0 if not untagged */
41 FLAG_IPS0_VLAN = 1 << 0, /* IP session 0 is tagged */
78 /* creation of this VLAN is a request to tag IP session 0 */ cdc_mbim_rx_add_vid()
82 if (vid >= 512) /* we don't map these to MBIM session */ cdc_mbim_rx_add_vid()
92 /* this is a request for an untagged IP session 0 */ cdc_mbim_rx_kill_vid()
253 /* Is IP session <0> tagged too? */ cdc_mbim_tx_fixup()
264 * no tag => IPS session <0> if !FLAG_IPS0_VLAN cdc_mbim_tx_fixup()
265 * 1 - 255 => IPS session <vlanid> cdc_mbim_tx_fixup()
266 * 256 - 511 => DSS session <vlanid - 256> cdc_mbim_tx_fixup()
268 * 4094 => IPS session <0> if FLAG_IPS0_VLAN cdc_mbim_tx_fixup()
371 if (tci < 256 || tci == MBIM_IPS0_VID) { /* IPS session? */ cdc_mbim_process_dgram()
403 /* map MBIM session to VLAN */ cdc_mbim_process_dgram()
/linux-4.1.27/arch/ia64/include/asm/
H A Dperfmon.h94 #define PFM_CPUINFO_SYST_WIDE 0x1 /* if set a system wide session exists */
95 #define PFM_CPUINFO_DCR_PP 0x2 /* if set the system wide session has started */
96 #define PFM_CPUINFO_EXCL_IDLE 0x4 /* the system wide session excludes the idle task */
/linux-4.1.27/include/keys/
H A Drxrpc-type.h34 u8 session_key[8]; /* DES session key */
78 struct krb5_tagged_data session; /* session data; tag is enctype */ member in struct:rxk5_key
/linux-4.1.27/drivers/net/fddi/skfp/h/
H A Dsba.h77 struct s_sba_sessions session[MAX_SESSIONS] ; member in struct:s_sba
80 /* free session */
/linux-4.1.27/fs/ecryptfs/
H A Ddebug.c71 ecryptfs_printk(KERN_DEBUG, " * Decrypted session key " ecryptfs_dump_auth_tok()
82 ecryptfs_printk(KERN_DEBUG, " * Encrypted session key " ecryptfs_dump_auth_tok()
H A Dkeystore.c1137 * decrypt_pki_encrypted_session_key - Decrypt the session key with the given auth_tok.
1138 * @auth_tok: The key authentication token used to decrypt the session key
1199 ecryptfs_printk(KERN_DEBUG, "Decrypted session key:\n"); decrypt_pki_encrypted_session_key()
1512 * decrypt the session key. */ parse_tag_3_packet()
1657 * decrypt_passphrase_encrypted_session_key - Decrypt the session key with the given auth_tok.
1750 * Get crypt_stat to have the file's session key if the requisite key
1751 * is available to decrypt the session key.
1927 "session key for authentication token with sig " ecryptfs_parse_packet_set()
2055 printk(KERN_ERR "Failed to encrypt session key via a key " write_tag_1_packet()
2250 "session key encryption key of size [%d]\n", write_tag_3_packet()
2257 "Cached session key encryption key:\n"); write_tag_3_packet()
2269 "for crypt_stat session key; expected rc = 1; " write_tag_3_packet()
2279 "for crypt_stat encrypted session key; " write_tag_3_packet()
/linux-4.1.27/security/keys/encrypted-keys/
H A Decryptfs_format.c71 /* The kernel code will encrypt the session key. */ ecryptfs_fill_auth_tok()
/linux-4.1.27/drivers/staging/lustre/lustre/llite/
H A Dvvp_dev.c100 struct vvp_session *session; vvp_session_key_init() local
102 OBD_SLAB_ALLOC_PTR_GFP(session, vvp_session_kmem, GFP_NOFS); vvp_session_key_init()
103 if (session == NULL) vvp_session_key_init()
104 session = ERR_PTR(-ENOMEM); vvp_session_key_init()
105 return session; vvp_session_key_init()
111 struct vvp_session *session = data; vvp_session_key_fini() local
113 OBD_SLAB_FREE_PTR(session, vvp_session_kmem); vvp_session_key_fini()
/linux-4.1.27/net/mac80211/
H A Dagg-rx.c29 * While the session is active, the device/driver are required
33 * When the aggregation session is stopped again by the peer or
76 "Rx BA session stop requested for %pM tid %u %s reason: %d\n", ___ieee80211_stop_rx_ba_session()
166 ht_dbg(sta->sdata, "RX session timer expired on %pM tid %d\n", sta_rx_agg_session_timer_expired()
243 "STA %pM erroneously requests BA session on tid %d w/o QoS\n", __ieee80211_start_rx_ba_session()
285 /* delete existing Rx BA session on the same tid */ __ieee80211_start_rx_ba_session()
370 /* extract session parameters from addba request frame */ ieee80211_process_addba_request()
H A Dagg-tx.c41 * start the aggregation session after the peer has also responded.
42 * If the peer responds negatively, the session will be stopped
44 * session to be stopped before the driver has indicated that it
53 * Similarly, when the aggregation session is stopped by the peer
351 ht_dbg(sta->sdata, "Tx BA session stop requested for %pM tid %u\n", ___ieee80211_stop_tx_ba_session()
374 * the aggregation session is no longer OPERATIONAL. ___ieee80211_stop_tx_ba_session()
453 * Start queuing up packets for this aggregation session. ieee80211_tx_ba_session_handle_start()
539 ht_dbg(sta->sdata, "tx session timer expired on %pM tid %d\n", sta_tx_agg_session_timer_expired()
557 "Requested to start BA session on reserved tid=%d", tid)) ieee80211_start_tx_ba_session()
571 ht_dbg(sdata, "Open BA session requested for %pM tid %u\n", ieee80211_start_tx_ba_session()
583 "BA sessions blocked - Denying BA session request %pM tid %d\n", ieee80211_start_tx_ba_session()
597 * but we only build up Block Ack session with HT STAs. This information ieee80211_start_tx_ba_session()
635 "BA request denied - session is not idle on %pM tid %u\n", ieee80211_start_tx_ba_session()
820 "Requested to stop BA session on reserved tid=%d", tid); ieee80211_stop_tx_ba_session()
853 ht_dbg(sdata, "Stopping Tx BA session for %pM tid %d\n", ra, tid); ieee80211_stop_tx_ba_cb()
H A Dsta_info.h124 * @dialog_token: dialog token for aggregation session
125 * @timeout: session timeout value to be filled in ADDBA requests
126 * @state: session state (see above)
128 * @stop_initiator: initiator of a session stop
174 * @dialog_token: dialog token for aggregation session
179 * @removed: this session is removed (but might have been found due to RCU)
215 * @dialog_token_allocator: dialog token enumerator for each new session;
/linux-4.1.27/drivers/target/
H A Dtarget_core_tpg.c492 * for active fabric session transport_deregister_session() callbacks. core_tpg_del_initiator_node_acl()
547 " Initiator Node: %s while session is" core_tpg_set_initiator_node_queue_depth()
549 " depth and force session reinstatement" core_tpg_set_initiator_node_queue_depth()
561 * Determine if the session needs to be closed by our context. core_tpg_set_initiator_node_queue_depth()
575 * Finally call tpg->se_tpg_tfo->close_session() to force session core_tpg_set_initiator_node_queue_depth()
576 * reinstatement to occur if there is an active session for the core_tpg_set_initiator_node_queue_depth()
584 * Force session reinstatement if core_tpg_set_initiator_node_queue_depth()
586 * the $FABRIC_MOD has already the set session reinstatement core_tpg_set_initiator_node_queue_depth()
600 * If the $FABRIC_MOD session for the Initiator Node ACL exists, core_tpg_set_initiator_node_queue_depth()
601 * forcefully shutdown the $FABRIC_MOD session/nexus. core_tpg_set_initiator_node_queue_depth()
H A Dtarget_core_fabric_lib.c275 * field shall contain the iSCSI initiator session identifier iscsi_get_pr_transport_id()
278 * session identifier value. The first ISCSI INITIATOR SESSION iscsi_get_pr_transport_id()
336 * If there is not an active iSCSI session, use format code: iscsi_get_pr_transport_id_len()
436 * for comparison against the running iSCSI session's ISID from iscsi_parse_pr_out_transport_id()
/linux-4.1.27/drivers/infiniband/ulp/iser/
H A Diser_initiator.c256 struct iscsi_session *session) iser_alloc_rx_descriptors()
265 iser_conn->qp_max_recv_dtos = session->cmds_max; iser_alloc_rx_descriptors()
266 iser_conn->qp_max_recv_dtos_mask = session->cmds_max - 1; /* cmds_max is 2^N */ iser_alloc_rx_descriptors()
269 if (device->iser_alloc_rdma_reg_res(ib_conn, session->scsi_cmds_max)) iser_alloc_rx_descriptors()
275 iser_conn->num_rx_descs = session->cmds_max; iser_alloc_rx_descriptors()
341 struct iscsi_session *session = conn->session; iser_post_rx_bufs() local
354 if (session->discovery_sess) { iser_post_rx_bufs()
355 iser_info("Discovery session, re-using login RX buffer\n"); iser_post_rx_bufs()
358 iser_info("Normal session, posting batch of RX %d buffers\n", iser_post_rx_bufs()
255 iser_alloc_rx_descriptors(struct iser_conn *iser_conn, struct iscsi_session *session) iser_alloc_rx_descriptors() argument
H A Discsi_iser.c416 * @conn_idx: connection index within the session (for MCS)
444 * @cls_session: iscsi class session
447 * @is_leading: indicate if this is the session leading connection (MCS)
486 error = iser_alloc_rx_descriptors(iser_conn, conn->session); iscsi_iser_conn_bind()
508 * from this point iscsi must call conn_stop in session/connection
563 * iscsi_iser_session_destroy() - destroy iscsi-iser session
564 * @cls_session: iscsi class session
591 * iscsi_iser_session_create() - create an iscsi-iser session
593 * @cmds_max: maximum commands in this session
594 * @qdepth: session command queue depth
598 * exists, and sets up an iscsi session.
606 struct iscsi_session *session; iscsi_iser_session_create() local
671 session = cls_session->dd_data; iscsi_iser_session_create()
673 shost->can_queue = session->scsi_cmds_max; iscsi_iser_session_create()
986 /* session management */
/linux-4.1.27/drivers/gpu/drm/radeon/
H A Dradeon_vce.c323 * @handle: VCE session handle to use
347 ib.ptr[ib.length_dw++] = 0x00000001; /* session cmd */ radeon_vce_get_create_msg()
390 * @handle: VCE session handle to use
414 ib.ptr[ib.length_dw++] = 0x00000001; /* session cmd */ radeon_vce_get_destroy_msg()
498 * Validates the handle and return the found session index or -EINVAL
499 * we we don't have another free session index.
564 case 0x00000001: // session radeon_vce_cs_parse()
642 DRM_ERROR("no session command at start of IB\n"); radeon_vce_cs_parse()
651 DRM_ERROR("New session without create command!\n"); radeon_vce_cs_parse()
/linux-4.1.27/drivers/tty/
H A Dtty_io.c508 * Only callable by the session leader and only if it does not already have
521 * The session and fg pgrp references will be non-NULL if __proc_set_tty()
524 put_pid(tty->session); __proc_set_tty()
528 tty->session = get_pid(task_session(current)); __proc_set_tty()
557 static void session_clear_tty(struct pid *session) session_clear_tty() argument
560 do_each_pid_task(session, PIDTYPE_SID, p) { do_each_pid_task()
562 } while_each_pid_task(session, PIDTYPE_SID, p);
592 * tty_signal_session_leader - sends SIGHUP to session leader
596 * Send SIGHUP and SIGCONT to the session leader and its process group.
599 * Returns the number of processes in the session with this tty
610 if (tty->session) { tty_signal_session_leader()
611 do_each_pid_task(tty->session, PIDTYPE_SID, p) { tty_signal_session_leader()
632 } while_each_pid_task(tty->session, PIDTYPE_SID, p); tty_signal_session_leader()
722 put_pid(tty->session); __tty_hangup()
724 tty->session = NULL; __tty_hangup()
821 * tty_vhangup_session - hangup session leader exit
824 * The session leader is exiting and hanging up its controlling terminal.
836 printk(KERN_DEBUG "%s vhangup session...\n", tty_name(tty, buf)); tty_vhangup_session()
858 * @on_exit: true if exiting so need to "hang up" the session
860 * This function is typically called only by the session leader, when
865 * (2) Clears the tty from being controlling the session
867 * session group.
925 put_pid(tty->session); disassociate_ctty()
927 tty->session = NULL; disassociate_ctty()
1648 put_pid(tty->session); release_one_tty()
1893 session_clear_tty(tty->session); tty_release()
1895 session_clear_tty(o_tty->session); tty_release()
2151 tty->session == NULL) { tty_open()
2448 * This ioctl is used to manage job control. It permits a session
2449 * leader to set this tty as the controlling tty for the session.
2464 if (current->signal->leader && (task_session(current) == tty->session)) tiocsctty()
2468 * The process must be a session leader and tiocsctty()
2476 if (tty->session) { tiocsctty()
2479 * tty for another session group! tiocsctty()
2485 session_clear_tty(tty->session); tiocsctty()
2581 * Set the process group of the tty to the session passed. Only
2582 * permitted where the tty session is our session.
2600 (real_tty->session != task_session(current))) tiocspgrp()
2625 * tiocgsid - get session id
2628 * @p: pointer to returned session id
2630 * Obtain the session id of the tty. If there is no session
2644 if (!real_tty->session) tiocgsid()
2646 return put_user(pid_vnr(real_tty->session), p); tiocgsid()
3056 struct pid *session; __do_SAK()
3061 session = tty->session; __do_SAK()
3068 /* Kill the entire session */ __do_SAK()
3069 do_each_pid_task(session, PIDTYPE_SID, p) { __do_SAK()
3071 " (%s): task_session(p)==tty->session\n", __do_SAK()
3074 } while_each_pid_task(session, PIDTYPE_SID, p); __do_SAK()
3081 " (%s): task_session(p)==tty->session\n", __do_SAK()
3155 tty->session = NULL; alloc_tty_struct()
/linux-4.1.27/drivers/scsi/qla2xxx/
H A Dtcm_qla2xxx.h8 * Number of pre-allocated per-session tags, based upon the worst-case
H A Dqla_target.c433 * Release the target session for FC Nexus from fabric module code. qlt_free_session_done()
511 #if 0 /* FIXME: do we need to choose a session here? */ qlt_reset()
548 "scsi(%ld): resetting (session %p from port %8phC mcmd %x, " qlt_reset()
589 "qla_target(%d): session for port %8phC (loop ID %d s_id %02x:%02x:%02x)" qlt_schedule_sess_for_deletion()
762 "qla_target(%u): session allocation failed, all commands " qlt_create_sess()
776 * session eventually ends and release corresponding nport handle. qlt_create_sess()
884 "qla_target(%u): local session for " qlt_fc_port_added()
894 * max_gen - specifies maximum session generation
1084 "qla_target(%d): Unable to create session " qlt_sched_sess_work()
1091 " to find session for param %p (size %d, tgt %p)\n", qlt_sched_sess_work()
1469 "qla_target(%d): task abort for non-existant session\n", qlt_24xx_handle_abts()
1781 * the session and, so, the command. qlt_24xx_build_ctio_pkt()
2363 * the session and, so, the command. qlt_build_ctio_crc2_pkt()
3602 * Drop extra session reference from qla_tgt_handle_cmd_for_atio*( __qlt_do_work()
3715 * Now obtain a pre-allocated session tag using the original op->atio qlt_create_sess_from_atio()
3779 * session deletion, but it's still in sess_del_work wq */ qlt_handle_cmd_for_atio()
3782 "New command while old session %p is being deleted\n", qlt_handle_cmd_for_atio()
3945 "non-existant session\n", vha->vp_idx, fn); qlt_handle_task_mgmt()
4010 "session\n", vha->vp_idx); qlt_abort_task()
4051 * deletion. Returns existing session with matching wwn if present.
4080 * session that has the same s_id/loop_id combo qlt_find_sess_invalidate_other()
4081 * might have cleared it when requested this session qlt_find_sess_invalidate_other()
4088 * combo - kill the session, but don't log out qlt_find_sess_invalidate_other()
4194 * without acking, new one will get acked when session qlt_24xx_handle_els()
4222 * Note: there is always a possibily of a race where session qlt_24xx_handle_els()
4227 * can proceed ACK'ing it as usual when session deletion qlt_24xx_handle_els()
4264 * since we have deleted the old session during PLOGI qlt_24xx_handle_els()
4280 /* Make session global (not used in fabric mode) */ qlt_24xx_handle_els()
5579 "qla_target(%d): global reset during session discovery " qlt_make_local_sess()
/linux-4.1.27/drivers/staging/fsl-mc/bus/
H A Ddpmcp.h42 * dpmcp_open() - Open a control session for the specified object.
47 * This function can be used to open a control session for an
63 * dpmcp_close() - Close the control session of the object
68 * allowed on the object without opening a new control session.
/linux-4.1.27/fs/isofs/
H A Dinode.c6 * 1994 Eberhard Mönkeberg - multi session handling.
169 s32 session; member in struct:iso9660_options
315 {Opt_session, "session=%u"},
361 popt->session=-1; parse_options()
415 popt->session = n + 1; parse_options()
478 * look if the driver can tell the multi session redirection value
486 * each track is #0), and a track is not a session.
495 static unsigned int isofs_get_last_session(struct super_block *sb, s32 session) isofs_get_last_session() argument
504 if(session >= 0 && session <= 99) { isofs_get_last_session()
506 Te.cdte_track=session; isofs_get_last_session()
511 session, Te.cdte_addr.lba, isofs_get_last_session()
517 printk(KERN_ERR "ISOFS: Invalid session number or type of track\n"); isofs_get_last_session()
520 if (session > 0) isofs_get_last_session()
521 printk(KERN_ERR "ISOFS: Invalid session number\n"); isofs_get_last_session()
612 opt.sbsector : isofs_get_last_session(s,opt.session); isofs_fill_super()
/linux-4.1.27/include/linux/
H A Decryptfs.h48 * For convenience, we may need to pass around the encrypted session
H A Datmdev.h63 ATM_VF_SESSION, /* VCC is p2mp session control descriptor */
116 struct atm_vcc *session; /* session VCC descriptor */ member in struct:atm_vcc
H A Dinet_lro.h45 * LRO descriptor for a tcp session
H A Dnfs4.h245 NFS4ERR_DEADSESSION = 10078, /* persistent session dead */
319 * New to NFSv4.1. If session is persistent,
H A Dnfs_fs_sb.h32 #define NFS_CS_SESSION_INITING 2 /* busy initialising session */
91 struct nfs4_session *cl_session; /* shared session */
/linux-4.1.27/fs/nfsd/
H A Dnfs4state.c1374 * We don't actually need to cache the rpc and session headers, so we
1391 * room for new connections. For now we just fail the create session.
1616 dprintk("%s: session not found\n", __func__); __find_in_sessionid_hashtbl()
1624 struct nfsd4_session *session; find_in_sessionid_hashtbl() local
1627 session = __find_in_sessionid_hashtbl(sessionid, net); find_in_sessionid_hashtbl()
1628 if (!session) find_in_sessionid_hashtbl()
1630 status = nfsd4_get_session_locked(session); find_in_sessionid_hashtbl()
1632 session = NULL; find_in_sessionid_hashtbl()
1635 return session; find_in_sessionid_hashtbl()
2258 * session values.
2466 * Cache the create session result into the create session single DRC
2468 * Do this for solo or embedded create session operations.
2710 struct nfsd4_session *session = cstate->session; nfsd4_backchannel_ctl() local
2718 session->se_cb_prog = bc->bc_cb_program; nfsd4_backchannel_ctl()
2719 session->se_cb_sec = bc->bc_cb_sec; nfsd4_backchannel_ctl()
2722 nfsd4_probe_callback(session->se_client); nfsd4_backchannel_ctl()
2733 struct nfsd4_session *session; nfsd4_bind_conn_to_session() local
2740 session = find_in_sessionid_hashtbl(&bcts->sessionid, net, &status); nfsd4_bind_conn_to_session()
2742 if (!session) nfsd4_bind_conn_to_session()
2745 if (!mach_creds_match(session->se_client, rqstp)) nfsd4_bind_conn_to_session()
2754 nfsd4_init_conn(rqstp, conn, session); nfsd4_bind_conn_to_session()
2757 nfsd4_put_session(session); nfsd4_bind_conn_to_session()
2762 static bool nfsd4_compound_in_session(struct nfsd4_session *session, struct nfs4_sessionid *sid) nfsd4_compound_in_session() argument
2764 if (!session) nfsd4_compound_in_session()
2766 return !memcmp(sid, &session->se_sessionid, sizeof(*sid)); nfsd4_compound_in_session()
2781 if (nfsd4_compound_in_session(cstate->session, &sessionid->sessionid)) { nfsd4_destroy_session()
2851 static bool nfsd4_session_too_many_ops(struct svc_rqst *rqstp, struct nfsd4_session *session) nfsd4_session_too_many_ops() argument
2855 return args->opcnt > session->se_fchannel.maxops; nfsd4_session_too_many_ops()
2859 struct nfsd4_session *session) nfsd4_request_too_big()
2863 return xb->len > session->se_fchannel.maxreq_sz; nfsd4_request_too_big()
2873 struct nfsd4_session *session; nfsd4_sequence() local
2894 session = find_in_sessionid_hashtbl(&seq->sessionid, net, &status); nfsd4_sequence()
2895 if (!session) nfsd4_sequence()
2897 clp = session->se_client; nfsd4_sequence()
2900 if (nfsd4_session_too_many_ops(rqstp, session)) nfsd4_sequence()
2904 if (nfsd4_request_too_big(rqstp, session)) nfsd4_sequence()
2908 if (seq->slotid >= session->se_fchannel.maxreqs) nfsd4_sequence()
2911 slot = session->se_slots[seq->slotid]; nfsd4_sequence()
2915 * maxslots to the session maxreqs which is used to encode nfsd4_sequence()
2917 seq->maxslots = session->se_fchannel.maxreqs; nfsd4_sequence()
2926 cstate->session = session; nfsd4_sequence()
2937 status = nfsd4_sequence_check_conn(conn, session); nfsd4_sequence()
2943 session->se_fchannel.maxresp_cached : nfsd4_sequence()
2944 session->se_fchannel.maxresp_sz; nfsd4_sequence()
2961 cstate->session = session; nfsd4_sequence()
2983 nfsd4_put_session_locked(session); nfsd4_sequence()
2997 /* Drop session reference that was taken in nfsd4_sequence() */ nfsd4_sequence_done()
2998 nfsd4_put_session(cs->session); nfsd4_sequence_done()
3061 &cstate->session->se_client->cl_flags)) nfsd4_reclaim_complete()
3065 if (is_client_expired(cstate->session->se_client)) nfsd4_reclaim_complete()
3076 nfsd4_client_record_create(cstate->session->se_client); nfsd4_reclaim_complete()
3687 WARN_ON_ONCE(cstate->session); lookup_clientid()
4665 if (cstate->session) nfsd4_lookup_stateid()
4774 struct nfs4_client *cl = cstate->session->se_client; nfsd4_test_stateid()
4791 struct nfs4_client *cl = cstate->session->se_client; nfsd4_free_stateid()
5471 &cstate->session->se_client->cl_clientid, nfsd4_lock()
2858 nfsd4_request_too_big(struct svc_rqst *rqstp, struct nfsd4_session *session) nfsd4_request_too_big() argument
H A Dstate.h147 per-session otherwise */
157 /* Maximum number of slots per session. 160 is useful for long haul TCP */
159 /* Maximum number of operations per session compound */
161 /* Maximum session per slot cache size */
163 /* Maximum number of NFSD_SLOT_CACHE_SIZE slots per session */
235 * Representation of a v4.1+ session. These are refcounted in a similar fashion
344 /* number of rpc's in progress over an associated session: */
H A Dnetns.h90 /* client_lock protects the client lru list and session hash table */
H A Dnfs4callback.c157 const struct nfsd4_session *session) encode_sessionid4()
162 xdr_encode_opaque_fixed(p, session->se_sessionid.data, encode_sessionid4()
355 struct nfsd4_session *session = cb->cb_clp->cl_cb_session; encode_cb_sequence4args() local
362 encode_sessionid4(xdr, session); encode_cb_sequence4args()
365 *p++ = cpu_to_be32(session->se_cb_seq_nr); /* csa_sequenceid */ encode_cb_sequence4args()
398 struct nfsd4_session *session = cb->cb_clp->cl_cb_session; decode_cb_sequence4resok() local
414 if (memcmp(id.data, session->se_sessionid.data, decode_cb_sequence4resok()
416 dprintk("NFS: %s Invalid session id\n", __func__); decode_cb_sequence4resok()
422 if (dummy != session->se_cb_seq_nr) { decode_cb_sequence4resok()
156 encode_sessionid4(struct xdr_stream *xdr, const struct nfsd4_session *session) encode_sessionid4() argument
/linux-4.1.27/net/netfilter/
H A Dnf_conntrack_pptp.c20 * - We can only support one single call within each session
284 /* server confirms new control session */ pptp_inbound_pkt()
294 /* server confirms end of control session */ pptp_inbound_pkt()
412 /* client requests for new control session */ pptp_outbound_pkt()
419 /* client requests end of control session */ pptp_outbound_pkt()
H A Dnf_conntrack_sip.c43 MODULE_PARM_DESC(sip_timeout, "timeout for the master SIP session");
679 /* SDP header parsing: a SDP session description contains an ordered set of
680 * headers, starting with a section containing general session parameters,
1004 /* Find beginning of session description */ process_sdp()
1011 /* The connection information is contained in the session description process_sdp()
1013 * the end of the session description. */ process_sdp()
1045 /* The media description overrides the session description. */ process_sdp()
1084 /* Update session connection and owner addresses */ process_sdp()
/linux-4.1.27/include/net/9p/
H A Dclient.h131 * @fidpool: fid handle accounting for session
133 * @tagpool - transaction id accounting for session
147 * a total of 64k concurrent requests per session.
/linux-4.1.27/net/sunrpc/
H A Dbackchannel_rqst.c77 * stack to enforce that the maximum number of session slots is not
254 * The last remaining session was destroyed while this xprt_free_bc_request()
259 dprintk("RPC: Last session removed req=%p\n", req); xprt_free_bc_request()
/linux-4.1.27/drivers/staging/fsl-mc/include/
H A Ddpbp.h42 * dpbp_open() - Open a control session for the specified object.
47 * This function can be used to open a control session for an
60 * dpbp_close() - Close the control session of the object
65 * allowed on the object without opening a new control session.
/linux-4.1.27/drivers/staging/ft1000/ft1000-usb/
H A Dft1000_ioctl.h75 unsigned long ConTm; /* Current session connection time
/linux-4.1.27/drivers/net/wireless/brcm80211/brcmfmac/
H A Dbtcoex.c204 * return: true if SCO/eSCO session is active
440 /* Stop any bt timer because DHCP session is done */ brcmf_btcoex_dhcp_end()
475 brcmf_dbg(INFO, "DHCP session starts\n"); brcmf_btcoex_set_mode()
487 brcmf_dbg(INFO, "DHCP session ends\n"); brcmf_btcoex_set_mode()
/linux-4.1.27/include/uapi/asm-generic/
H A Dioctls.h59 #define TIOCGSID 0x5429 /* Return the session ID of FD */
/linux-4.1.27/arch/parisc/include/uapi/asm/
H A Dioctls.h48 #define TIOCGSID _IOR('T', 20, int) /* Return the session ID of FD */
/linux-4.1.27/arch/powerpc/include/uapi/asm/
H A Dioctls.h92 #define TIOCGSID 0x5429 /* Return the session ID of FD */
/linux-4.1.27/arch/cris/include/arch-v32/arch/
H A Dcryptocop.h42 cryptocop_tfrm_id tid; /* Locally unique in session; assigned by user, checked by driver. */
/linux-4.1.27/arch/ia64/include/uapi/asm/
H A Dperfmon_default_smpl.h54 * on how the session was programmed.
/linux-4.1.27/net/bluetooth/bnep/
H A Dcore.c523 /* Cleanup session */ bnep_session()
545 static struct device *bnep_get_device(struct bnep_session *session) bnep_get_device() argument
547 struct l2cap_conn *conn = l2cap_pi(session->sock->sk)->chan->conn; bnep_get_device()
578 /* session struct allocated as private part of net_device */ bnep_add_connection()
H A Dnetdev.c188 * So we have to queue them and wake up session thread which is sleeping bnep_net_xmit()
/linux-4.1.27/net/mac802154/
H A Dtx.c33 /* IEEE 802.15.4 transceivers can sleep during the xmit session, so process
/linux-4.1.27/include/net/bluetooth/
H A Drfcomm.h170 struct rfcomm_session *session; member in struct:rfcomm_dlc
201 /* DLC and session flags */
/linux-4.1.27/drivers/net/wireless/iwlwifi/dvm/
H A Ddev.h133 * @IWL_AGG_ON: aggregation session is up
134 * @IWL_EMPTYING_HW_QUEUE_ADDBA: establishing a BA session - waiting for the
136 * @IWL_EMPTYING_HW_QUEUE_DELBA: tearing down a BA session - waiting for the
151 * down. It also holds the state during the BA session itself. This struct is
158 * @txq_id: Tx queue used by the BA session
/linux-4.1.27/arch/cris/arch-v32/drivers/
H A Dcryptocop.c802 DEBUG_API(printk("cryptocop_setup_dma_list: no session found for operation.\n")); cryptocop_setup_dma_list()
834 DEBUG_API(printk("cryptocop_setup_dma_list: no transform id %d in session.\n", tcfg->tid)); cryptocop_setup_dma_list()
1566 * OTOH 2^64 is a really large number of session. */ cryptocop_new_session()
1569 /* Prepend to session list. */ cryptocop_new_session()
1626 pj->oper->operation_status = -EAGAIN; /* EAGAIN is not ideal for job/session terminated but it's the best choice I know of. */ cryptocop_free_session()
2362 DEBUG_API(printk("cryptocop_ioctl_close_session: session %lld not found\n", sop.ses_id)); cryptocop_ioctl_close_session()
2534 DEBUG_API(printk("cryptocop_ioctl_process: session %lld not found\n", oper.ses_id)); cryptocop_ioctl_process()
2583 DEBUG_API(printk("cryptocop_ioctl_process: bad session id.\n")); cryptocop_ioctl_process()
2593 DEBUG_API(printk("cryptocop_ioctl_process: no cipher transform in session.\n")); cryptocop_ioctl_process()
2647 DEBUG_API(printk("cryptocop_ioctl_process: no digest transform in session.\n")); cryptocop_ioctl_process()
3013 DEBUG_API(printk("create session, bad cipher algorithm %d\n", sop.cipher)); cryptocop_ioctl_create_session()
3025 DEBUG_API(printk("create session, bad cipher mode %d\n", sop.cmode)); cryptocop_ioctl_create_session()
3041 DEBUG_API(printk("create session, bad 3DES mode %d\n", sop.des3_mode)); cryptocop_ioctl_create_session()
3058 DEBUG_API(printk("create session, bad digest algorithm %d\n", sop.digest)); cryptocop_ioctl_create_session()
3073 DEBUG_API(printk("create session, bad checksum algorithm %d\n", sop.csum)); cryptocop_ioctl_create_session()
3083 DEBUG_API(printk("create session, alloc dev\n")); cryptocop_ioctl_create_session()
3088 DEBUG({ if (err) printk("create session, cryptocop_new_session %d\n", err);}); cryptocop_ioctl_create_session()
3113 /* Access check of the argument. Some commands, e.g. create session and process op, cryptocop_ioctl_unlocked()
/linux-4.1.27/drivers/staging/lustre/lustre/lclient/
H A Dlcommon_cl.c136 struct ccc_session *session; ccc_session_key_init() local
138 OBD_SLAB_ALLOC_PTR_GFP(session, ccc_session_kmem, GFP_NOFS); ccc_session_key_init()
139 if (session == NULL) ccc_session_key_init()
140 session = ERR_PTR(-ENOMEM); ccc_session_key_init()
141 return session; ccc_session_key_init()
147 struct ccc_session *session = data; ccc_session_key_fini() local
149 OBD_SLAB_FREE_PTR(session, ccc_session_kmem); ccc_session_key_fini()
/linux-4.1.27/drivers/usb/musb/
H A Dda8xx.c221 * RTL seems to mis-handle session "start" otherwise (or in otg_timer()
240 * session flag every few seconds. If it works, ID was otg_timer()
243 * NOTE: setting the session flag is _supposed_ to trigger otg_timer()
/linux-4.1.27/fs/udf/
H A Dsuper.c32 * 10/16/98 attempting some multi-session support
215 unsigned int session; member in struct:udf_options
371 seq_printf(seq, ",session=%u", sbi->s_session); udf_show_options()
418 * session= Set the CDROM session (default= last session)
471 {Opt_session, "session=%u"},
493 uopt->session = 0xFFFFFFFF; udf_parse_options()
570 uopt->session = option; udf_parse_options()
2115 if (uopt.session == 0xFFFFFFFF) udf_fill_super()
2118 sbi->s_session = uopt.session; udf_fill_super()
2120 udf_debug("Multi-session=%d\n", sbi->s_session); udf_fill_super()
/linux-4.1.27/arch/xtensa/include/uapi/asm/
H A Dioctls.h93 #define TIOCGSID _IOR('T', 41, pid_t) /* Return the session ID of FD*/
/linux-4.1.27/drivers/cdrom/
H A Dgdrom.c274 * byte 1 = session
278 static int gdrom_readtoc_cmd(struct gdromtoc *toc, int session) gdrom_readtoc_cmd() argument
289 toc_command->cmd[1] = session; gdrom_readtoc_cmd()
363 pr_info("No data on the last session of the CD\n"); gdrom_get_last_session()
/linux-4.1.27/arch/sh/include/uapi/asm/
H A Dioctls.h81 #define TIOCGSID _IOR('T', 41, pid_t) /* 0x5429 */ /* Return the session ID of FD */
/linux-4.1.27/arch/mips/include/uapi/asm/
H A Dioctls.h79 #define TIOCGSID 0x7416 /* Return the session ID of FD */
/linux-4.1.27/arch/alpha/include/uapi/asm/
H A Dioctls.h92 #define TIOCGSID 0x5429 /* Return the session ID of FD */
/linux-4.1.27/net/ipv6/
H A Dxfrm6_state.c29 * to current session. */ __xfrm6_init_tempsel()
/linux-4.1.27/net/sched/
H A Dcls_rsvp.h52 matches a special session with "tunnelhdr" value not zero,
355 /* OK, session has no flows */ rsvp_delete()
569 /* OK, we found appropriate session */ rsvp_change()
595 /* No session found. Create new one. */ rsvp_change()
/linux-4.1.27/drivers/net/wireless/ti/wlcore/
H A Dcmd.c451 cmd->device.session = wl->session_ids[wlvif->dev_hlid]; wl12xx_cmd_role_start_dev()
453 wl1271_debug(DEBUG_CMD, "role start: roleid=%d, hlid=%d, session=%d", wl12xx_cmd_role_start_dev()
454 cmd->role_id, cmd->device.hlid, cmd->device.session); wl12xx_cmd_role_start_dev()
552 cmd->sta.session = wl->session_ids[wlvif->sta.hlid]; wl12xx_cmd_role_start_sta()
561 wl1271_debug(DEBUG_CMD, "role start: roleid=%d, hlid=%d, session=%d " wl12xx_cmd_role_start_sta()
563 wlvif->role_id, cmd->sta.hlid, cmd->sta.session, wl12xx_cmd_role_start_sta()
796 wl1271_debug(DEBUG_CMD, "role start: roleid=%d, hlid=%d, session=%d " wl12xx_cmd_role_start_ibss()
798 wlvif->role_id, cmd->sta.hlid, cmd->sta.session, wl12xx_cmd_role_start_ibss()
/linux-4.1.27/drivers/usb/dwc2/
H A Dhcd_ddma.c468 * is, do not disable and release the channel when ISOC session dwc2_recalc_initial_desc_idx()
748 * session. Then the transfer is started via enabling the channel.
751 * interrupt so remains assigned to the endpoint(QH) until session is done.
1150 * the session, i.e. QTD list is empty.
1165 /* Release the channel if halted or session completed */ dwc2_hcd_complete_xfer_ddma()
1168 /* Halt the channel if session completed */ dwc2_hcd_complete_xfer_ddma()
/linux-4.1.27/drivers/scsi/qla4xxx/
H A Dql4_os.c1833 struct iscsi_cls_session *session; qla4xxx_eh_cmd_timed_out() local
1838 session = starget_to_session(scsi_target(sc->device)); qla4xxx_eh_cmd_timed_out()
1839 sess = session->dd_data; qla4xxx_eh_cmd_timed_out()
1841 spin_lock_irqsave(&session->lock, flags); qla4xxx_eh_cmd_timed_out()
1842 if (session->state == ISCSI_SESSION_FAILED) qla4xxx_eh_cmd_timed_out()
1844 spin_unlock_irqrestore(&session->lock, flags); qla4xxx_eh_cmd_timed_out()
2845 /* First, populate session username and password for FLASH DDB, qla4xxx_session_get_param()
2846 * if not already done. This happens when session login fails qla4xxx_session_get_param()
3243 * active session. qla4xxx_conn_start()
3352 sess = task->conn->session; qla4xxx_alloc_pdu()
3419 sess = task->conn->session; qla4xxx_task_cleanup()
3442 struct iscsi_session *sess = task->conn->session; qla4xxx_task_xmit()
3980 * qla4xxx_mark_device_missing - blocks the session
3981 * @cls_session: Pointer to the session to be blocked
5030 " unblock session\n", ha->host_no, __func__, qla4xxx_relogin_devices()
5057 " unblock session\n", ha->host_no, __func__, qla4xxx_unblock_flash_ddb()
5083 " unblock user space session\n", ha->host_no, __func__, qla4xxx_unblock_ddb()
5092 "scsi%ld: %s: ddb[%d] session [%d] already logged in\n", qla4xxx_unblock_ddb()
6185 "and publish session for discovery .\n", __func__); qla4xxx_setup_boot_info()
6884 /* Create session object, with INVALID_ENTRY, qla4xxx_sess_conn_setup()
7023 "Adding DDB to session = 0x%x\n", idx)); qla4xxx_build_nt_list()
7120 "Adding DDB to session = 0x%x\n", idx)); qla4xxx_build_new_nt_list()
7158 * @data: pointer to flashnode session object
7187 * This create separate sysfs entries for session and connection attributes of
7204 "%s: Unable to create session sysfs entry for flashnode %d of host%lu\n", qla4xxx_sysfs_ddb_tgt_create()
7328 * @fnode_sess: pointer to session attrs of flash ddb entry
7519 * @fnode_sess: pointer to session attrs of flash ddb entry
7579 * qla4xxx_sysfs_ddb_logout_sid - Logout session for the specified target
7580 * @cls_sess: pointer to session to be logged out
7582 * This performs session log out from the specified target
7602 ql4_printk(KERN_ERR, ha, "%s: Not a flash node session\n", qla4xxx_sysfs_ddb_logout_sid()
7677 * when we setup the session to have the driver unload qla4xxx_sysfs_ddb_logout_sid()
7679 * session qla4xxx_sysfs_ddb_logout_sid()
7703 * @fnode_sess: pointer to session attrs of flash ddb entry
8069 * @fnode_sess: pointer to session attrs of flash ddb entry
8301 * @fnode_sess: pointer to session attrs of flash ddb entry
8392 "%s: session and conn entries for flashnode %u of host %lu deleted\n", qla4xxx_sysfs_ddb_delete()
8458 * from firmware DDBs. Based on the list of nt setup session and connection
8971 * when we setup the session to have the driver unload qla4xxx_destroy_fw_ddb_session()
8973 * session qla4xxx_destroy_fw_ddb_session()
/linux-4.1.27/arch/ia64/kernel/
H A Dperfmon.c267 unsigned int excl_idle:1; /* exclude idle task in system wide session */
281 * perfmon context: encapsulates all the state of a monitoring session
378 unsigned int pfs_sys_use_dbregs; /* incremented when a system wide session uses debug regs */
380 struct task_struct *pfs_sys_session[NR_CPUS]; /* point to task owning a system-wide session */
1023 * system-wide session are pinned and self-monitoring pfm_restore_monitoring()
1354 DPRINT(("reserving system wide session on CPU%u currently on CPU%u\n", cpu, smp_processor_id())); pfm_reserve_session()
1382 DPRINT(("system wide not possible, conflicting session [%d] on CPU%d\n", pfm_reserve_session()
1432 /* Undo forced polling. Last session reenables pal_halt */ pfm_unreserve_session()
1897 * and session unreserved. pfm_flush()
2113 * UNLOADED that the session has already been unreserved. pfm_close()
2845 * when the caller is running on the CPU being monitored by the session. pfm_write_pmcs()
2888 * - system-wide session: PMCx.pm=1 (privileged monitor) pfm_write_pmcs()
3088 * when the caller is running on the CPU being monitored by the session. pfm_write_pmds()
3284 * when the caller is running on the CPU being monitored by the session. pfm_read_pmds()
3540 * when the caller is running on the CPU being monitored by the session. pfm_restart()
3640 * the tool that is controlling the session is logically doing pfm_restart()
3712 * when the caller is running on the CPU being monitored by the session. pfm_write_ibr_dbr()
3770 * for a system wide session, we do not use pfm_write_ibr_dbr()
3957 * when the caller is running on the CPU being monitored by the session. pfm_stop()
4042 * when the caller is running on the CPU being monitored by the session. pfm_start()
4247 * be pinned on a CPU throughout the session. pfm_context_load()
4256 * systemwide: keep track of CPU this session is supposed to run on pfm_context_load()
4262 * now reserve the session pfm_context_load()
4683 * a task running on the same CPU as the session. pfm_check_task_state()
5440 * So there might be a window of time where the number of per-task session is zero pfm_overflow_handler()
5442 * context. This is safe because if a per-task session comes in, it will push this one pfm_overflow_handler()
5444 * session is force on that CPU, given that we use task pinning, pfm_save_regs() will pfm_overflow_handler()
6278 * session for system wide measurements) pfm_flush_pmds()
6451 /* reserve our session */ for_each_online_cpu()

Completed in 4920 milliseconds

123