Lines Matching refs: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) {
1668 __func__, session, skcb.addr.sa, skcb.addr.da);
1679 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1694 __func__, session, skcb->addr.sa, skcb->addr.da,
1705 if (session->skcb.addr.sa != skcb->addr.sa ||
1706 session->skcb.addr.da != skcb->addr.da)
1707 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",
1709 session->skcb.addr.sa, skcb->addr.sa,
1710 session->skcb.addr.da, skcb->addr.da);
1715 session->skcb.addr.sa = skcb->addr.sa;
1716 session->skcb.addr.da = skcb->addr.da;
1726 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1730 session = j1939_session_get_by_addr(priv, &skcb->addr, false,
1754 if (cmd == J1939_TP_CMD_BAM && j1939_sk_recv_match(priv, skcb))
1803 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1806 session = j1939_session_get_by_addr(priv, &skcb->addr, false,
1823 struct j1939_sk_buff_cb *skcb, *se_skcb;
1834 skcb = j1939_skb_to_cb(skb);
1846 if (skcb->addr.type == J1939_ETP)
1852 if (skcb->addr.type != J1939_ETP)
1906 j1939_cb_is_broadcast(&session->skcb)) {
1945 struct j1939_sk_buff_cb *skcb;
1948 skcb = j1939_skb_to_cb(skb);
1950 if (j1939_tp_im_transmitter(skcb)) {
1951 session = j1939_session_get_by_addr(priv, &skcb->addr, false,
1960 if (j1939_tp_im_receiver(skcb)) {
1961 session = j1939_session_get_by_addr(priv, &skcb->addr, false,
1970 if (j1939_cb_is_broadcast(skcb)) {
1971 session = j1939_session_get_by_addr(priv, &skcb->addr, false,
1982 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
1986 if (skcb->addr.pgn == J1939_TP_PGN_DAT ||
1987 skcb->addr.pgn == J1939_TP_PGN_CTL ||
1988 skcb->addr.pgn == J1939_ETP_PGN_DAT ||
1989 skcb->addr.pgn == J1939_ETP_PGN_CTL)
1997 skcb->addr.type = J1939_SIMPLE;
1999 skcb->addr.type = J1939_ETP;
2001 skcb->addr.type = J1939_TP;
2003 if (skcb->addr.type == J1939_ETP &&
2004 j1939_cb_is_broadcast(skcb))
2013 if (j1939_address_is_unicast(skcb->addr.da) &&
2014 priv->ents[skcb->addr.da].nusers)
2015 skcb->flags |= J1939_ECU_LOCAL_DST;
2018 skcb->flags |= J1939_ECU_LOCAL_SRC;
2030 session->pkt.block = skcb->addr.type == J1939_ETP ? 255 :
2033 if (j1939_cb_is_broadcast(&session->skcb))
2037 skcb->tskey = atomic_inc_return(&session->sk->sk_tskey) - 1;
2038 session->tskey = skcb->tskey;
2045 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
2054 if (cmd == J1939_TP_CMD_BAM && !j1939_cb_is_broadcast(skcb)) {
2056 __func__, skcb->addr.sa);
2061 if (skcb->addr.type != extd)
2064 if (cmd == J1939_TP_CMD_RTS && j1939_cb_is_broadcast(skcb)) {
2066 __func__, skcb->addr.sa);
2070 if (j1939_tp_im_transmitter(skcb))
2073 if (j1939_tp_im_receiver(skcb) || j1939_cb_is_broadcast(skcb))
2082 if (skcb->addr.type != extd)
2085 if (j1939_tp_im_transmitter(skcb))
2088 if (j1939_tp_im_receiver(skcb))
2094 if (skcb->addr.type != J1939_ETP)
2097 if (j1939_tp_im_transmitter(skcb))
2100 if (j1939_tp_im_receiver(skcb))
2109 if (skcb->addr.type != extd)
2112 if (j1939_tp_im_transmitter(skcb))
2115 if (j1939_tp_im_receiver(skcb))
2121 if (j1939_cb_is_broadcast(skcb)) {
2123 __func__, skcb->addr.sa);
2127 if (j1939_tp_im_transmitter(skcb))
2130 if (j1939_tp_im_receiver(skcb))
2141 struct j1939_sk_buff_cb *skcb = j1939_skb_to_cb(skb);
2143 if (!j1939_tp_im_involved_anydir(skcb) && !j1939_cb_is_broadcast(skcb))
2146 switch (skcb->addr.pgn) {
2148 skcb->addr.type = J1939_ETP;
2155 skcb->addr.type = J1939_ETP;