Lines Matching refs:skcb

316 static inline bool j1939_cb_is_broadcast(const struct j1939_sk_buff_cb *skcb)  in j1939_cb_is_broadcast()  argument
318 return (!skcb->addr.dst_name && (skcb->addr.da == 0xff)); in j1939_cb_is_broadcast()
352 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_session_skb_queue() local
357 if (j1939_address_is_unicast(skcb->addr.da) && in j1939_session_skb_queue()
358 priv->ents[skcb->addr.da].nusers) in j1939_session_skb_queue()
359 skcb->flags |= J1939_ECU_LOCAL_DST; in j1939_session_skb_queue()
361 skcb->flags |= J1939_ECU_LOCAL_SRC; in j1939_session_skb_queue()
411 static inline int j1939_tp_im_receiver(const struct j1939_sk_buff_cb *skcb) in j1939_tp_im_receiver() argument
413 return skcb->flags & J1939_ECU_LOCAL_DST; in j1939_tp_im_receiver()
417 static inline int j1939_tp_im_transmitter(const struct j1939_sk_buff_cb *skcb) in j1939_tp_im_transmitter() argument
419 return skcb->flags & J1939_ECU_LOCAL_SRC; in j1939_tp_im_transmitter()
423 static int j1939_tp_im_involved(const struct j1939_sk_buff_cb *skcb, bool swap) in j1939_tp_im_involved() argument
426 return j1939_tp_im_receiver(skcb); in j1939_tp_im_involved()
428 return j1939_tp_im_transmitter(skcb); in j1939_tp_im_involved()
431 static int j1939_tp_im_involved_anydir(struct j1939_sk_buff_cb *skcb) in j1939_tp_im_involved_anydir() argument
433 return skcb->flags & (J1939_ECU_LOCAL_SRC | J1939_ECU_LOCAL_DST); in j1939_tp_im_involved_anydir()
520 if (j1939_session_match(&session->skcb.addr, addr, reverse) && in j1939_session_get_by_addr_locked()
533 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_session_get_simple() local
541 if (session->skcb.addr.type == J1939_SIMPLE && in j1939_session_get_simple()
542 session->tskey == skcb->tskey && session->sk == skb->sk) in j1939_session_get_simple()
566 static void j1939_skbcb_swap(struct j1939_sk_buff_cb *skcb) in j1939_skbcb_swap() argument
570 swap(skcb->addr.dst_name, skcb->addr.src_name); in j1939_skbcb_swap()
571 swap(skcb->addr.da, skcb->addr.sa); in j1939_skbcb_swap()
574 if (skcb->flags & J1939_ECU_LOCAL_SRC) in j1939_skbcb_swap()
576 if (skcb->flags & J1939_ECU_LOCAL_DST) in j1939_skbcb_swap()
578 skcb->flags &= ~(J1939_ECU_LOCAL_SRC | J1939_ECU_LOCAL_DST); in j1939_skbcb_swap()
579 skcb->flags |= tmp; in j1939_skbcb_swap()
589 struct j1939_sk_buff_cb *skcb; in j1939_tp_tx_dat_new() local
604 skcb = j1939_skb_to_cb(skb); in j1939_tp_tx_dat_new()
606 j1939_skbcb_swap(skcb); in j1939_tp_tx_dat_new()
609 if (skcb->addr.type == J1939_ETP) in j1939_tp_tx_dat_new()
610 skcb->addr.pgn = J1939_ETP_PGN_CTL; in j1939_tp_tx_dat_new()
612 skcb->addr.pgn = J1939_TP_PGN_CTL; in j1939_tp_tx_dat_new()
614 if (skcb->addr.type == J1939_ETP) in j1939_tp_tx_dat_new()
615 skcb->addr.pgn = J1939_ETP_PGN_DAT; in j1939_tp_tx_dat_new()
617 skcb->addr.pgn = J1939_TP_PGN_DAT; in j1939_tp_tx_dat_new()
630 skb = j1939_tp_tx_dat_new(priv, &session->skcb, in j1939_tp_tx_dat()
670 return j1939_xtp_do_tx_ctl(priv, &session->skcb, in j1939_tp_tx_ctl()
672 session->skcb.addr.pgn, dat); in j1939_tp_tx_ctl()
719 if (session->skcb.addr.type == J1939_ETP) { in j1939_session_tx_rts()
725 } else if (j1939_cb_is_broadcast(&session->skcb)) { in j1939_session_tx_rts()
787 struct j1939_sk_buff_cb *skcb; in j1939_session_tx_dat() local
799 skcb = j1939_skb_to_cb(se_skb); in j1939_session_tx_dat()
803 if (session->skcb.addr.type != J1939_ETP && in j1939_session_tx_dat()
804 j1939_cb_is_broadcast(&session->skcb)) in j1939_session_tx_dat()
811 offset = (session->pkt.tx * 7) - skcb->offset; in j1939_session_tx_dat()
819 __func__, session, skcb->offset, se_skb->len , session->pkt.tx); in j1939_session_tx_dat()
843 pdelay = j1939_cb_is_broadcast(&session->skcb) ? 50 : in j1939_session_tx_dat()
869 if (!j1939_tp_im_transmitter(&session->skcb)) { in j1939_xtp_txnext_transmiter()
910 if (!j1939_sk_recv_match(priv, &session->skcb)) in j1939_session_tx_cts()
917 if (session->skcb.addr.type == J1939_ETP) { in j1939_session_tx_cts()
954 if (!j1939_sk_recv_match(priv, &session->skcb)) in j1939_session_tx_eoma()
959 if (session->skcb.addr.type == J1939_ETP) { in j1939_session_tx_eoma()
995 if (!j1939_tp_im_receiver(&session->skcb)) { in j1939_xtp_txnext_receiver()
1011 if ((session->skcb.addr.type == J1939_TP && in j1939_xtp_txnext_receiver()
1012 j1939_cb_is_broadcast(&session->skcb))) in j1939_xtp_txnext_receiver()
1118 if (!j1939_cb_is_broadcast(&session->skcb)) { in __j1939_session_cancel()
1119 j1939_xtp_tx_abort(priv, &session->skcb, in __j1939_session_cancel()
1121 err, session->skcb.addr.pgn); in __j1939_session_cancel()
1149 if (session->skcb.addr.type == J1939_SIMPLE) { in j1939_tp_txtimer()
1190 if (session->skcb.addr.type != J1939_SIMPLE) { in j1939_tp_txtimer()
1231 } else if (session->skcb.addr.type == J1939_SIMPLE) { in j1939_tp_rxtimer()
1263 const struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_xtp_rx_cmd_bad_pgn() local
1269 if (session->skcb.addr.pgn == pgn) in j1939_xtp_rx_cmd_bad_pgn()
1306 __func__, session, cmd, pgn, session->skcb.addr.pgn); in j1939_xtp_rx_cmd_bad_pgn()
1308 j1939_xtp_tx_abort(priv, skcb, true, abort, pgn); in j1939_xtp_rx_cmd_bad_pgn()
1316 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_xtp_rx_abort_one() local
1320 session = j1939_session_get_by_addr(priv, &skcb->addr, reverse, in j1939_xtp_rx_abort_one()
1354 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_xtp_rx_eoma_one() local
1363 if (skcb->addr.type == J1939_ETP) in j1939_xtp_rx_eoma_one()
1387 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_xtp_rx_eoma() local
1390 session = j1939_session_get_by_addr(priv, &skcb->addr, true, in j1939_xtp_rx_eoma()
1418 if (session->skcb.addr.type == J1939_ETP) in j1939_xtp_rx_cts_one()
1462 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_xtp_rx_cts() local
1465 session = j1939_session_get_by_addr(priv, &skcb->addr, true, in j1939_xtp_rx_cts()
1477 struct j1939_sk_buff_cb *skcb; in j1939_session_new() local
1495 skcb = j1939_skb_to_cb(skb); in j1939_session_new()
1496 memcpy(&session->skcb, skcb, sizeof(session->skcb)); in j1939_session_new()
1506 __func__, session, skcb->addr.sa, skcb->addr.da); in j1939_session_new()
1517 struct j1939_sk_buff_cb *skcb; in j1939_session_fresh_new() local
1528 skcb = j1939_skb_to_cb(skb); in j1939_session_fresh_new()
1529 memcpy(skcb, rel_skcb, sizeof(*skcb)); in j1939_session_fresh_new()
1550 if (session->skcb.addr.type != J1939_SIMPLE) in j1939_session_activate()
1553 &session->skcb.addr, false, in j1939_session_activate()
1578 struct j1939_sk_buff_cb skcb = *j1939_skb_to_cb(skb); in j1939_xtp_rx_rts_session_new() local
1588 skcb.addr.pgn = pgn; in j1939_xtp_rx_rts_session_new()
1590 if (!j1939_sk_recv_match(priv, &skcb)) in j1939_xtp_rx_rts_session_new()
1593 if (skcb.addr.type == J1939_ETP) { in j1939_xtp_rx_rts_session_new()
1612 j1939_xtp_tx_abort(priv, &skcb, true, abort, pgn); in j1939_xtp_rx_rts_session_new()
1616 session = j1939_session_fresh_new(priv, len, &skcb); in j1939_xtp_rx_rts_session_new()
1618 j1939_xtp_tx_abort(priv, &skcb, true, in j1939_xtp_rx_rts_session_new()
1626 if (skcb.addr.type != J1939_ETP) { in j1939_xtp_rx_rts_session_new()
1646 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_xtp_rx_rts_session_active() local
1661 __func__, session, skcb->addr.sa, skcb->addr.da, in j1939_xtp_rx_rts_session_active()
1670 if (session->skcb.addr.sa != skcb->addr.sa || in j1939_xtp_rx_rts_session_active()
1671 session->skcb.addr.da != skcb->addr.da) in j1939_xtp_rx_rts_session_active()
1674 session->skcb.addr.sa, skcb->addr.sa, in j1939_xtp_rx_rts_session_active()
1675 session->skcb.addr.da, skcb->addr.da); in j1939_xtp_rx_rts_session_active()
1680 session->skcb.addr.sa = skcb->addr.sa; in j1939_xtp_rx_rts_session_active()
1681 session->skcb.addr.da = skcb->addr.da; in j1939_xtp_rx_rts_session_active()
1691 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_xtp_rx_rts() local
1695 session = j1939_session_get_by_addr(priv, &skcb->addr, false, in j1939_xtp_rx_rts()
1719 if (cmd == J1939_TP_CMD_BAM && j1939_sk_recv_match(priv, skcb)) in j1939_xtp_rx_rts()
1765 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_xtp_rx_dpo() local
1768 session = j1939_session_get_by_addr(priv, &skcb->addr, false, in j1939_xtp_rx_dpo()
1785 struct j1939_sk_buff_cb *skcb; in j1939_xtp_rx_dat_one() local
1796 skcb = j1939_skb_to_cb(skb); in j1939_xtp_rx_dat_one()
1808 if (skcb->addr.type == J1939_ETP) in j1939_xtp_rx_dat_one()
1813 if (skcb->addr.type != J1939_ETP) in j1939_xtp_rx_dat_one()
1837 skcb = j1939_skb_to_cb(se_skb); in j1939_xtp_rx_dat_one()
1838 offset = packet * 7 - skcb->offset; in j1939_xtp_rx_dat_one()
1866 if (skcb->addr.type != J1939_ETP && in j1939_xtp_rx_dat_one()
1867 j1939_cb_is_broadcast(&session->skcb)) { in j1939_xtp_rx_dat_one()
1906 struct j1939_sk_buff_cb *skcb; in j1939_xtp_rx_dat() local
1909 skcb = j1939_skb_to_cb(skb); in j1939_xtp_rx_dat()
1911 if (j1939_tp_im_transmitter(skcb)) { in j1939_xtp_rx_dat()
1912 session = j1939_session_get_by_addr(priv, &skcb->addr, false, in j1939_xtp_rx_dat()
1921 if (j1939_tp_im_receiver(skcb)) { in j1939_xtp_rx_dat()
1922 session = j1939_session_get_by_addr(priv, &skcb->addr, false, in j1939_xtp_rx_dat()
1931 if (j1939_cb_is_broadcast(skcb)) { in j1939_xtp_rx_dat()
1932 session = j1939_session_get_by_addr(priv, &skcb->addr, false, in j1939_xtp_rx_dat()
1943 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_tp_send() local
1947 if (skcb->addr.pgn == J1939_TP_PGN_DAT || in j1939_tp_send()
1948 skcb->addr.pgn == J1939_TP_PGN_CTL || in j1939_tp_send()
1949 skcb->addr.pgn == J1939_ETP_PGN_DAT || in j1939_tp_send()
1950 skcb->addr.pgn == J1939_ETP_PGN_CTL) in j1939_tp_send()
1958 skcb->addr.type = J1939_SIMPLE; in j1939_tp_send()
1960 skcb->addr.type = J1939_ETP; in j1939_tp_send()
1962 skcb->addr.type = J1939_TP; in j1939_tp_send()
1964 if (skcb->addr.type == J1939_ETP && in j1939_tp_send()
1965 j1939_cb_is_broadcast(skcb)) in j1939_tp_send()
1974 if (j1939_address_is_unicast(skcb->addr.da) && in j1939_tp_send()
1975 priv->ents[skcb->addr.da].nusers) in j1939_tp_send()
1976 skcb->flags |= J1939_ECU_LOCAL_DST; in j1939_tp_send()
1979 skcb->flags |= J1939_ECU_LOCAL_SRC; in j1939_tp_send()
1991 session->pkt.block = skcb->addr.type == J1939_ETP ? 255 : in j1939_tp_send()
1994 if (j1939_cb_is_broadcast(&session->skcb)) in j1939_tp_send()
1998 skcb->tskey = session->sk->sk_tskey++; in j1939_tp_send()
1999 session->tskey = skcb->tskey; in j1939_tp_send()
2006 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_tp_cmd_recv() local
2015 if (cmd == J1939_TP_CMD_BAM && !j1939_cb_is_broadcast(skcb)) { in j1939_tp_cmd_recv()
2017 __func__, skcb->addr.sa); in j1939_tp_cmd_recv()
2022 if (skcb->addr.type != extd) in j1939_tp_cmd_recv()
2025 if (cmd == J1939_TP_CMD_RTS && j1939_cb_is_broadcast(skcb)) { in j1939_tp_cmd_recv()
2027 __func__, skcb->addr.sa); in j1939_tp_cmd_recv()
2031 if (j1939_tp_im_transmitter(skcb)) in j1939_tp_cmd_recv()
2034 if (j1939_tp_im_receiver(skcb) || j1939_cb_is_broadcast(skcb)) in j1939_tp_cmd_recv()
2043 if (skcb->addr.type != extd) in j1939_tp_cmd_recv()
2046 if (j1939_tp_im_transmitter(skcb)) in j1939_tp_cmd_recv()
2049 if (j1939_tp_im_receiver(skcb)) in j1939_tp_cmd_recv()
2055 if (skcb->addr.type != J1939_ETP) in j1939_tp_cmd_recv()
2058 if (j1939_tp_im_transmitter(skcb)) in j1939_tp_cmd_recv()
2061 if (j1939_tp_im_receiver(skcb)) in j1939_tp_cmd_recv()
2070 if (skcb->addr.type != extd) in j1939_tp_cmd_recv()
2073 if (j1939_tp_im_transmitter(skcb)) in j1939_tp_cmd_recv()
2076 if (j1939_tp_im_receiver(skcb)) in j1939_tp_cmd_recv()
2082 if (j1939_cb_is_broadcast(skcb)) { in j1939_tp_cmd_recv()
2084 __func__, skcb->addr.sa); in j1939_tp_cmd_recv()
2088 if (j1939_tp_im_transmitter(skcb)) in j1939_tp_cmd_recv()
2091 if (j1939_tp_im_receiver(skcb)) in j1939_tp_cmd_recv()
2102 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb); in j1939_tp_recv() local
2104 if (!j1939_tp_im_involved_anydir(skcb) && !j1939_cb_is_broadcast(skcb)) in j1939_tp_recv()
2107 switch (skcb->addr.pgn) { in j1939_tp_recv()
2109 skcb->addr.type = J1939_ETP; in j1939_tp_recv()
2116 skcb->addr.type = J1939_ETP; in j1939_tp_recv()