Lines Matching defs:session
98 static bool j1939_sk_queue_session(struct j1939_session *session)
100 struct j1939_sock *jsk = j1939_sk(session->sk);
105 j1939_session_get(session);
106 list_add_tail(&session->sk_session_queue_entry, &jsk->sk_session_queue);
116 struct j1939_session *session = NULL;
120 session = list_last_entry(&jsk->sk_session_queue,
123 if (session->total_queued_size == session->total_message_size)
124 session = NULL;
126 j1939_session_get(session);
130 return session;
136 struct j1939_session *session, *tmp;
140 list_for_each_entry_safe(session, tmp, &jsk->sk_session_queue,
142 list_del_init(&session->sk_session_queue_entry);
143 session->err = err;
144 j1939_session_put(session);
149 static void j1939_sk_queue_activate_next_locked(struct j1939_session *session)
156 if (!session->sk)
159 jsk = j1939_sk(session->sk);
162 err = session->err;
168 /* Some else has already activated the next session */
169 if (first != session)
183 "%s: 0x%p: Identical session is already activated.\n",
198 void j1939_sk_queue_activate_next(struct j1939_session *session)
202 if (!session->sk)
205 jsk = j1939_sk(session->sk);
208 j1939_sk_queue_activate_next_locked(session);
945 j1939_sk_get_timestamping_opt_stats(struct j1939_session *session,
955 if (session->skcb.addr.type == J1939_SIMPLE)
956 size = session->total_message_size;
958 size = min(session->pkt.tx_acked * 7,
959 session->total_message_size);
964 session->total_message_size);
966 session->skcb.addr.pgn);
968 session->skcb.addr.src_name, J1939_NLA_PAD);
970 session->skcb.addr.dst_name, J1939_NLA_PAD);
972 session->skcb.addr.sa);
974 session->skcb.addr.da);
983 static void __j1939_sk_errqueue(struct j1939_session *session, struct sock *sk,
986 struct j1939_priv *priv = session->priv;
1023 skb = j1939_sk_get_timestamping_opt_stats(session, type);
1047 serr->ee.ee_errno = session->err;
1065 serr->ee.ee_errno = session->err;
1074 serr->ee.ee_data = session->tskey;
1076 netdev_dbg(session->priv->ndev, "%s: 0x%p tskey: %i, state: %s\n",
1077 __func__, session, session->tskey, state);
1084 void j1939_sk_errqueue(struct j1939_session *session,
1087 struct j1939_priv *priv = session->priv;
1090 if (session->sk) {
1092 __j1939_sk_errqueue(session, session->sk, type);
1096 /* spread RX notifications to all sockets subscribed to this session */
1099 if (j1939_sk_recv_match_one(jsk, &session->skcb))
1100 __j1939_sk_errqueue(session, &jsk->sk, type);
1122 struct j1939_session *session = j1939_sk_get_incomplete_session(jsk);
1127 if (session &&
1128 session->total_message_size != session->total_queued_size + size) {
1129 j1939_session_put(session);
1149 if (!session) {
1151 * of the session
1154 session = j1939_tp_send(priv, skb, size);
1155 if (IS_ERR(session)) {
1156 ret = PTR_ERR(session);
1159 if (j1939_sk_queue_session(session)) {
1160 /* try to activate session if we a
1163 if (!j1939_session_activate(session)) {
1164 j1939_tp_schedule_txtimer(session, 0);
1167 session->err = ret;
1174 skcb->offset = session->total_queued_size;
1175 j1939_session_skb_queue(session, skb);
1179 session->total_queued_size += segment_size;
1201 if (session)
1202 j1939_session_put(session);