Lines Matching defs:skcb

320 static inline bool j1939_cb_is_broadcast(const struct j1939_sk_buff_cb *skcb)
322 return (!skcb->addr.dst_name && (skcb->addr.da == 0xff));
356 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
361 if (j1939_address_is_unicast(skcb->addr.da) &&
362 priv->ents[skcb->addr.da].nusers)
363 skcb->flags |= J1939_ECU_LOCAL_DST;
365 skcb->flags |= J1939_ECU_LOCAL_SRC;
415 static inline int j1939_tp_im_receiver(const struct j1939_sk_buff_cb *skcb)
417 return skcb->flags & J1939_ECU_LOCAL_DST;
421 static inline int j1939_tp_im_transmitter(const struct j1939_sk_buff_cb *skcb)
423 return skcb->flags & J1939_ECU_LOCAL_SRC;
427 static int j1939_tp_im_involved(const struct j1939_sk_buff_cb *skcb, bool swap)
430 return j1939_tp_im_receiver(skcb);
432 return j1939_tp_im_transmitter(skcb);
435 static int j1939_tp_im_involved_anydir(struct j1939_sk_buff_cb *skcb)
437 return skcb->flags & (J1939_ECU_LOCAL_SRC | J1939_ECU_LOCAL_DST);
524 if (j1939_session_match(&session->skcb.addr, addr, reverse) &&
537 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
545 if (session->skcb.addr.type == J1939_SIMPLE &&
546 session->tskey == skcb->tskey && session->sk == skb->sk)
570 static void j1939_skbcb_swap(struct j1939_sk_buff_cb *skcb)
574 swap(skcb->addr.dst_name, skcb->addr.src_name);
575 swap(skcb->addr.da, skcb->addr.sa);
578 if (skcb->flags & J1939_ECU_LOCAL_SRC)
580 if (skcb->flags & J1939_ECU_LOCAL_DST)
582 skcb->flags &= ~(J1939_ECU_LOCAL_SRC | J1939_ECU_LOCAL_DST);
583 skcb->flags |= tmp;
593 struct j1939_sk_buff_cb *skcb;
611 skcb = j1939_skb_to_cb(skb);
613 j1939_skbcb_swap(skcb);
616 if (skcb->addr.type == J1939_ETP)
617 skcb->addr.pgn = J1939_ETP_PGN_CTL;
619 skcb->addr.pgn = J1939_TP_PGN_CTL;
621 if (skcb->addr.type == J1939_ETP)
622 skcb->addr.pgn = J1939_ETP_PGN_DAT;
624 skcb->addr.pgn = J1939_TP_PGN_DAT;
637 skb = j1939_tp_tx_dat_new(priv, &session->skcb,
677 return j1939_xtp_do_tx_ctl(priv, &session->skcb,
679 session->skcb.addr.pgn, dat);
726 if (session->skcb.addr.type == J1939_ETP) {
732 } else if (j1939_cb_is_broadcast(&session->skcb)) {
810 if (session->skcb.addr.type != J1939_ETP &&
811 j1939_cb_is_broadcast(&session->skcb))
851 pdelay = j1939_cb_is_broadcast(&session->skcb) ? 50 :
877 if (!j1939_tp_im_transmitter(&session->skcb)) {
918 if (!j1939_sk_recv_match(priv, &session->skcb))
925 if (session->skcb.addr.type == J1939_ETP) {
962 if (!j1939_sk_recv_match(priv, &session->skcb))
967 if (session->skcb.addr.type == J1939_ETP) {
1003 if (!j1939_tp_im_receiver(&session->skcb)) {
1019 if ((session->skcb.addr.type == J1939_TP &&
1020 j1939_cb_is_broadcast(&session->skcb)))
1122 if (!j1939_cb_is_broadcast(&session->skcb)) {
1123 j1939_xtp_tx_abort(priv, &session->skcb,
1125 err, session->skcb.addr.pgn);
1156 if (session->skcb.addr.type == J1939_SIMPLE) {
1197 if (session->skcb.addr.type != J1939_SIMPLE) {
1238 } else if (session->skcb.addr.type == J1939_SIMPLE) {
1273 const struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1279 if (session->skcb.addr.pgn == pgn)
1319 __func__, session, cmd, pgn, session->skcb.addr.pgn);
1321 j1939_xtp_tx_abort(priv, skcb, true, abort, pgn);
1329 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1333 session = j1939_session_get_by_addr(priv, &skcb->addr, reverse,
1369 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1378 if (skcb->addr.type == J1939_ETP)
1402 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1405 session = j1939_session_get_by_addr(priv, &skcb->addr, true,
1433 if (session->skcb.addr.type == J1939_ETP)
1477 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1480 session = j1939_session_get_by_addr(priv, &skcb->addr, true,
1492 struct j1939_sk_buff_cb *skcb;
1510 skcb = j1939_skb_to_cb(skb);
1511 memcpy(&session->skcb, skcb, sizeof(session->skcb));
1521 __func__, session, skcb->addr.sa, skcb->addr.da);
1532 struct j1939_sk_buff_cb *skcb;
1543 skcb = j1939_skb_to_cb(skb);
1544 memcpy(skcb, rel_skcb, sizeof(*skcb));
1565 if (session->skcb.addr.type != J1939_SIMPLE)
1568 &session->skcb.addr, false,
1593 struct j1939_sk_buff_cb skcb = *j1939_skb_to_cb(skb);
1603 skcb.addr.pgn = pgn;
1605 if (!j1939_sk_recv_match(priv, &skcb))
1608 if (skcb.addr.type == J1939_ETP) {
1627 j1939_xtp_tx_abort(priv, &skcb, true, abort, pgn);
1631 session = j1939_session_fresh_new(priv, len, &skcb);
1633 j1939_xtp_tx_abort(priv, &skcb, true,
1641 if (skcb.addr.type != J1939_ETP) {
1664 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1679 __func__, session, skcb->addr.sa, skcb->addr.da,
1688 if (session->skcb.addr.sa != skcb->addr.sa ||
1689 session->skcb.addr.da != skcb->addr.da)
1690 netdev_warn(priv->ndev, "%s: 0x%p: session->skcb.addr.sa=0x%02x skcb->addr.sa=0x%02x session->skcb.addr.da=0x%02x skcb->addr.da=0x%02x\n",
1692 session->skcb.addr.sa, skcb->addr.sa,
1693 session->skcb.addr.da, skcb->addr.da);
1698 session->skcb.addr.sa = skcb->addr.sa;
1699 session->skcb.addr.da = skcb->addr.da;
1709 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1713 session = j1939_session_get_by_addr(priv, &skcb->addr, false,
1737 if (cmd == J1939_TP_CMD_BAM && j1939_sk_recv_match(priv, skcb))
1786 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1789 session = j1939_session_get_by_addr(priv, &skcb->addr, false,
1806 struct j1939_sk_buff_cb *skcb, *se_skcb;
1817 skcb = j1939_skb_to_cb(skb);
1829 if (skcb->addr.type == J1939_ETP)
1835 if (skcb->addr.type != J1939_ETP)
1889 j1939_cb_is_broadcast(&session->skcb)) {
1928 struct j1939_sk_buff_cb *skcb;
1931 skcb = j1939_skb_to_cb(skb);
1933 if (j1939_tp_im_transmitter(skcb)) {
1934 session = j1939_session_get_by_addr(priv, &skcb->addr, false,
1943 if (j1939_tp_im_receiver(skcb)) {
1944 session = j1939_session_get_by_addr(priv, &skcb->addr, false,
1953 if (j1939_cb_is_broadcast(skcb)) {
1954 session = j1939_session_get_by_addr(priv, &skcb->addr, false,
1965 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1969 if (skcb->addr.pgn == J1939_TP_PGN_DAT ||
1970 skcb->addr.pgn == J1939_TP_PGN_CTL ||
1971 skcb->addr.pgn == J1939_ETP_PGN_DAT ||
1972 skcb->addr.pgn == J1939_ETP_PGN_CTL)
1980 skcb->addr.type = J1939_SIMPLE;
1982 skcb->addr.type = J1939_ETP;
1984 skcb->addr.type = J1939_TP;
1986 if (skcb->addr.type == J1939_ETP &&
1987 j1939_cb_is_broadcast(skcb))
1996 if (j1939_address_is_unicast(skcb->addr.da) &&
1997 priv->ents[skcb->addr.da].nusers)
1998 skcb->flags |= J1939_ECU_LOCAL_DST;
2001 skcb->flags |= J1939_ECU_LOCAL_SRC;
2013 session->pkt.block = skcb->addr.type == J1939_ETP ? 255 :
2016 if (j1939_cb_is_broadcast(&session->skcb))
2020 skcb->tskey = atomic_inc_return(&session->sk->sk_tskey) - 1;
2021 session->tskey = skcb->tskey;
2028 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
2037 if (cmd == J1939_TP_CMD_BAM && !j1939_cb_is_broadcast(skcb)) {
2039 __func__, skcb->addr.sa);
2044 if (skcb->addr.type != extd)
2047 if (cmd == J1939_TP_CMD_RTS && j1939_cb_is_broadcast(skcb)) {
2049 __func__, skcb->addr.sa);
2053 if (j1939_tp_im_transmitter(skcb))
2056 if (j1939_tp_im_receiver(skcb) || j1939_cb_is_broadcast(skcb))
2065 if (skcb->addr.type != extd)
2068 if (j1939_tp_im_transmitter(skcb))
2071 if (j1939_tp_im_receiver(skcb))
2077 if (skcb->addr.type != J1939_ETP)
2080 if (j1939_tp_im_transmitter(skcb))
2083 if (j1939_tp_im_receiver(skcb))
2092 if (skcb->addr.type != extd)
2095 if (j1939_tp_im_transmitter(skcb))
2098 if (j1939_tp_im_receiver(skcb))
2104 if (j1939_cb_is_broadcast(skcb)) {
2106 __func__, skcb->addr.sa);
2110 if (j1939_tp_im_transmitter(skcb))
2113 if (j1939_tp_im_receiver(skcb))
2124 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
2126 if (!j1939_tp_im_involved_anydir(skcb) && !j1939_cb_is_broadcast(skcb))
2129 switch (skcb->addr.pgn) {
2131 skcb->addr.type = J1939_ETP;
2138 skcb->addr.type = J1939_ETP;