Lines Matching refs:mod
102 struct cf_mod *mod);
135 struct cf_mod mod; member
156 struct cf_mod *mod) { op ; }
158 MODFUNC(mod_and_id, cf->can_id &= mod->modframe.and.can_id)
159 MODFUNC(mod_and_dlc, cf->can_dlc &= mod->modframe.and.can_dlc)
160 MODFUNC(mod_and_data, *(u64 *)cf->data &= *(u64 *)mod->modframe.and.data)
161 MODFUNC(mod_or_id, cf->can_id |= mod->modframe.or.can_id)
162 MODFUNC(mod_or_dlc, cf->can_dlc |= mod->modframe.or.can_dlc)
163 MODFUNC(mod_or_data, *(u64 *)cf->data |= *(u64 *)mod->modframe.or.data)
164 MODFUNC(mod_xor_id, cf->can_id ^= mod->modframe.xor.can_id)
165 MODFUNC(mod_xor_dlc, cf->can_dlc ^= mod->modframe.xor.can_dlc)
166 MODFUNC(mod_xor_data, *(u64 *)cf->data ^= *(u64 *)mod->modframe.xor.data)
167 MODFUNC(mod_set_id, cf->can_id = mod->modframe.set.can_id)
168 MODFUNC(mod_set_dlc, cf->can_dlc = mod->modframe.set.can_dlc)
169 MODFUNC(mod_set_data, *(u64 *)cf->data = *(u64 *)mod->modframe.set.data)
394 if (gwj->mod.modfunc[0]) in can_can_gw_rcv()
417 while (modidx < MAX_MODFUNCTIONS && gwj->mod.modfunc[modidx]) in can_can_gw_rcv()
418 (*gwj->mod.modfunc[modidx++])(cf, &gwj->mod); in can_can_gw_rcv()
422 if (gwj->mod.csumfunc.crc8) in can_can_gw_rcv()
423 (*gwj->mod.csumfunc.crc8)(cf, &gwj->mod.csum.crc8); in can_can_gw_rcv()
425 if (gwj->mod.csumfunc.xor) in can_can_gw_rcv()
426 (*gwj->mod.csumfunc.xor)(cf, &gwj->mod.csum.xor); in can_can_gw_rcv()
523 if (gwj->mod.modtype.and) { in cgw_put_job()
524 memcpy(&mb.cf, &gwj->mod.modframe.and, sizeof(mb.cf)); in cgw_put_job()
525 mb.modtype = gwj->mod.modtype.and; in cgw_put_job()
530 if (gwj->mod.modtype.or) { in cgw_put_job()
531 memcpy(&mb.cf, &gwj->mod.modframe.or, sizeof(mb.cf)); in cgw_put_job()
532 mb.modtype = gwj->mod.modtype.or; in cgw_put_job()
537 if (gwj->mod.modtype.xor) { in cgw_put_job()
538 memcpy(&mb.cf, &gwj->mod.modframe.xor, sizeof(mb.cf)); in cgw_put_job()
539 mb.modtype = gwj->mod.modtype.xor; in cgw_put_job()
544 if (gwj->mod.modtype.set) { in cgw_put_job()
545 memcpy(&mb.cf, &gwj->mod.modframe.set, sizeof(mb.cf)); in cgw_put_job()
546 mb.modtype = gwj->mod.modtype.set; in cgw_put_job()
551 if (gwj->mod.csumfunc.crc8) { in cgw_put_job()
553 &gwj->mod.csum.crc8) < 0) in cgw_put_job()
557 if (gwj->mod.csumfunc.xor) { in cgw_put_job()
559 &gwj->mod.csum.xor) < 0) in cgw_put_job()
625 static int cgw_parse_attr(struct nlmsghdr *nlh, struct cf_mod *mod, in cgw_parse_attr() argument
634 memset(mod, 0, sizeof(*mod)); in cgw_parse_attr()
653 canframecpy(&mod->modframe.and, &mb.cf); in cgw_parse_attr()
654 mod->modtype.and = mb.modtype; in cgw_parse_attr()
657 mod->modfunc[modidx++] = mod_and_id; in cgw_parse_attr()
660 mod->modfunc[modidx++] = mod_and_dlc; in cgw_parse_attr()
663 mod->modfunc[modidx++] = mod_and_data; in cgw_parse_attr()
669 canframecpy(&mod->modframe.or, &mb.cf); in cgw_parse_attr()
670 mod->modtype.or = mb.modtype; in cgw_parse_attr()
673 mod->modfunc[modidx++] = mod_or_id; in cgw_parse_attr()
676 mod->modfunc[modidx++] = mod_or_dlc; in cgw_parse_attr()
679 mod->modfunc[modidx++] = mod_or_data; in cgw_parse_attr()
685 canframecpy(&mod->modframe.xor, &mb.cf); in cgw_parse_attr()
686 mod->modtype.xor = mb.modtype; in cgw_parse_attr()
689 mod->modfunc[modidx++] = mod_xor_id; in cgw_parse_attr()
692 mod->modfunc[modidx++] = mod_xor_dlc; in cgw_parse_attr()
695 mod->modfunc[modidx++] = mod_xor_data; in cgw_parse_attr()
701 canframecpy(&mod->modframe.set, &mb.cf); in cgw_parse_attr()
702 mod->modtype.set = mb.modtype; in cgw_parse_attr()
705 mod->modfunc[modidx++] = mod_set_id; in cgw_parse_attr()
708 mod->modfunc[modidx++] = mod_set_dlc; in cgw_parse_attr()
711 mod->modfunc[modidx++] = mod_set_data; in cgw_parse_attr()
725 nla_memcpy(&mod->csum.crc8, tb[CGW_CS_CRC8], in cgw_parse_attr()
734 mod->csumfunc.crc8 = cgw_csum_crc8_rel; in cgw_parse_attr()
736 mod->csumfunc.crc8 = cgw_csum_crc8_pos; in cgw_parse_attr()
738 mod->csumfunc.crc8 = cgw_csum_crc8_neg; in cgw_parse_attr()
749 nla_memcpy(&mod->csum.xor, tb[CGW_CS_XOR], in cgw_parse_attr()
758 mod->csumfunc.xor = cgw_csum_xor_rel; in cgw_parse_attr()
760 mod->csumfunc.xor = cgw_csum_xor_pos; in cgw_parse_attr()
762 mod->csumfunc.xor = cgw_csum_xor_neg; in cgw_parse_attr()
832 err = cgw_parse_attr(nlh, &gwj->mod, CGW_TYPE_CAN_CAN, &gwj->ccgw, in cgw_create_job()
892 struct cf_mod mod; in cgw_remove_job() local
911 err = cgw_parse_attr(nlh, &mod, CGW_TYPE_CAN_CAN, &ccgw, &limhops); in cgw_remove_job()
934 if (memcmp(&gwj->mod, &mod, sizeof(mod))) in cgw_remove_job()