Lines Matching refs:ae
214 static int isotp_send_fc(struct sock *sk, int ae, u8 flowstatus) in isotp_send_fc() argument
252 ncf->len = ae + FC_CONTENT_SZ; in isotp_send_fc()
255 ncf->data[ae] = N_PCI_FC | flowstatus; in isotp_send_fc()
256 ncf->data[ae + 1] = so->rxfc.bs; in isotp_send_fc()
257 ncf->data[ae + 2] = so->rxfc.stmin; in isotp_send_fc()
259 if (ae) in isotp_send_fc()
368 static int isotp_rcv_fc(struct isotp_sock *so, struct canfd_frame *cf, int ae) in isotp_rcv_fc() argument
378 if ((cf->len < ae + FC_CONTENT_SZ) || in isotp_rcv_fc()
380 check_pad(so, cf, ae + FC_CONTENT_SZ, so->opt.rxpad_content))) { in isotp_rcv_fc()
394 so->txfc.bs = cf->data[ae + 1]; in isotp_rcv_fc()
395 so->txfc.stmin = cf->data[ae + 2]; in isotp_rcv_fc()
419 switch (cf->data[ae] & 0x0F) { in isotp_rcv_fc()
483 static int isotp_rcv_ff(struct sock *sk, struct canfd_frame *cf, int ae) in isotp_rcv_ff() argument
501 so->rx.len = (cf->data[ae] & 0x0F) << 8; in isotp_rcv_ff()
502 so->rx.len += cf->data[ae + 1]; in isotp_rcv_ff()
509 so->rx.len = cf->data[ae + 2] << 24; in isotp_rcv_ff()
510 so->rx.len += cf->data[ae + 3] << 16; in isotp_rcv_ff()
511 so->rx.len += cf->data[ae + 4] << 8; in isotp_rcv_ff()
512 so->rx.len += cf->data[ae + 5]; in isotp_rcv_ff()
519 if (so->rx.len + ae + off + ff_pci_sz < so->rx.ll_dl) in isotp_rcv_ff()
534 isotp_send_fc(sk, ae, ISOTP_FC_OVFLW); in isotp_rcv_ff()
540 for (i = ae + ff_pci_sz; i < so->rx.ll_dl; i++) in isotp_rcv_ff()
552 isotp_send_fc(sk, ae, ISOTP_FC_CTS); in isotp_rcv_ff()
556 static int isotp_rcv_cf(struct sock *sk, struct canfd_frame *cf, int ae, in isotp_rcv_cf() argument
584 if (so->rx.len - so->rx.idx > so->rx.ll_dl - ae - N_PCI_SZ) in isotp_rcv_cf()
588 if ((cf->data[ae] & 0x0F) != so->rx.sn) { in isotp_rcv_cf()
601 for (i = ae + N_PCI_SZ; i < cf->len; i++) { in isotp_rcv_cf()
646 isotp_send_fc(sk, ae, ISOTP_FC_CTS); in isotp_rcv_cf()
655 int ae = (so->opt.flags & CAN_ISOTP_EXTEND_ADDR) ? 1 : 0; in isotp_rcv() local
667 if (ae && cf->data[0] != so->opt.rx_ext_address) in isotp_rcv()
670 n_pci_type = cf->data[ae] & 0xF0; in isotp_rcv()
688 isotp_rcv_fc(so, cf, ae); in isotp_rcv()
700 sf_dl = cf->data[ae] & 0x0F; in isotp_rcv()
703 isotp_rcv_sf(sk, cf, SF_PCI_SZ4 + ae, skb, sf_dl); in isotp_rcv()
715 isotp_rcv_sf(sk, cf, SF_PCI_SZ8 + ae, skb, in isotp_rcv()
716 cf->data[SF_PCI_SZ4 + ae]); in isotp_rcv()
723 isotp_rcv_ff(sk, cf, ae); in isotp_rcv()
728 isotp_rcv_cf(sk, cf, ae, skb); in isotp_rcv()
737 int ae, int off) in isotp_fill_dataframe() argument
739 int pcilen = N_PCI_SZ + ae + off; in isotp_fill_dataframe()
763 if (ae) in isotp_fill_dataframe()
775 int ae = (so->opt.flags & CAN_ISOTP_EXTEND_ADDR) ? 1 : 0; in isotp_send_cframe() local
800 isotp_fill_dataframe(cf, so, ae, 0); in isotp_send_cframe()
803 cf->data[ae] = N_PCI_CF | so->tx.sn++; in isotp_send_cframe()
831 int ae) in isotp_create_fframe() argument
838 if (ae) in isotp_create_fframe()
844 cf->data[ae] = N_PCI_FF; in isotp_create_fframe()
845 cf->data[ae + 1] = 0; in isotp_create_fframe()
846 cf->data[ae + 2] = (u8)(so->tx.len >> 24) & 0xFFU; in isotp_create_fframe()
847 cf->data[ae + 3] = (u8)(so->tx.len >> 16) & 0xFFU; in isotp_create_fframe()
848 cf->data[ae + 4] = (u8)(so->tx.len >> 8) & 0xFFU; in isotp_create_fframe()
849 cf->data[ae + 5] = (u8)so->tx.len & 0xFFU; in isotp_create_fframe()
853 cf->data[ae] = (u8)(so->tx.len >> 8) | N_PCI_FF; in isotp_create_fframe()
854 cf->data[ae + 1] = (u8)so->tx.len & 0xFFU; in isotp_create_fframe()
859 for (i = ae + ff_pci_sz; i < so->tx.ll_dl; i++) in isotp_create_fframe()
957 int ae = (so->opt.flags & CAN_ISOTP_EXTEND_ADDR) ? 1 : 0; in isotp_sendmsg() local
1000 (size > so->tx.ll_dl - SF_PCI_SZ4 - ae - off)) { in isotp_sendmsg()
1043 if (size <= so->tx.ll_dl - SF_PCI_SZ4 - ae - off) { in isotp_sendmsg()
1053 if (size <= CAN_MAX_DLEN - SF_PCI_SZ4 - ae) in isotp_sendmsg()
1056 isotp_fill_dataframe(cf, so, ae, off); in isotp_sendmsg()
1059 cf->data[ae] = N_PCI_SF; in isotp_sendmsg()
1063 cf->data[SF_PCI_SZ4 + ae] = size; in isotp_sendmsg()
1065 cf->data[ae] |= size; in isotp_sendmsg()
1072 isotp_create_fframe(cf, so, ae); in isotp_sendmsg()