Lines Matching refs:cf

98 	void (*modfunc[MAX_MODFUNCTIONS])(struct canfd_frame *cf,
107 void (*xor)(struct canfd_frame *cf,
109 void (*crc8)(struct canfd_frame *cf,
153 #define MODFUNC(func, op) static void func(struct canfd_frame *cf, \
156 MODFUNC(mod_and_id, cf->can_id &= mod->modframe.and.can_id)
157 MODFUNC(mod_and_len, cf->len &= mod->modframe.and.len)
158 MODFUNC(mod_and_flags, cf->flags &= mod->modframe.and.flags)
159 MODFUNC(mod_and_data, *(u64 *)cf->data &= *(u64 *)mod->modframe.and.data)
160 MODFUNC(mod_or_id, cf->can_id |= mod->modframe.or.can_id)
161 MODFUNC(mod_or_len, cf->len |= mod->modframe.or.len)
162 MODFUNC(mod_or_flags, cf->flags |= mod->modframe.or.flags)
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_len, cf->len ^= mod->modframe.xor.len)
166 MODFUNC(mod_xor_flags, cf->flags ^= mod->modframe.xor.flags)
167 MODFUNC(mod_xor_data, *(u64 *)cf->data ^= *(u64 *)mod->modframe.xor.data)
168 MODFUNC(mod_set_id, cf->can_id = mod->modframe.set.can_id)
169 MODFUNC(mod_set_len, cf->len = mod->modframe.set.len)
170 MODFUNC(mod_set_flags, cf->flags = mod->modframe.set.flags)
171 MODFUNC(mod_set_data, *(u64 *)cf->data = *(u64 *)mod->modframe.set.data)
173 static void mod_and_fddata(struct canfd_frame *cf, struct cf_mod *mod) in mod_and_fddata() argument
178 *(u64 *)(cf->data + i) &= *(u64 *)(mod->modframe.and.data + i); in mod_and_fddata()
181 static void mod_or_fddata(struct canfd_frame *cf, struct cf_mod *mod) in mod_or_fddata() argument
186 *(u64 *)(cf->data + i) |= *(u64 *)(mod->modframe.or.data + i); in mod_or_fddata()
189 static void mod_xor_fddata(struct canfd_frame *cf, struct cf_mod *mod) in mod_xor_fddata() argument
194 *(u64 *)(cf->data + i) ^= *(u64 *)(mod->modframe.xor.data + i); in mod_xor_fddata()
197 static void mod_set_fddata(struct canfd_frame *cf, struct cf_mod *mod) in mod_set_fddata() argument
199 memcpy(cf->data, mod->modframe.set.data, CANFD_MAX_DLEN); in mod_set_fddata()
258 static void cgw_csum_xor_rel(struct canfd_frame *cf, struct cgw_csum_xor *xor) in cgw_csum_xor_rel() argument
260 int from = calc_idx(xor->from_idx, cf->len); in cgw_csum_xor_rel()
261 int to = calc_idx(xor->to_idx, cf->len); in cgw_csum_xor_rel()
262 int res = calc_idx(xor->result_idx, cf->len); in cgw_csum_xor_rel()
271 val ^= cf->data[i]; in cgw_csum_xor_rel()
274 val ^= cf->data[i]; in cgw_csum_xor_rel()
277 cf->data[res] = val; in cgw_csum_xor_rel()
280 static void cgw_csum_xor_pos(struct canfd_frame *cf, struct cgw_csum_xor *xor) in cgw_csum_xor_pos() argument
286 val ^= cf->data[i]; in cgw_csum_xor_pos()
288 cf->data[xor->result_idx] = val; in cgw_csum_xor_pos()
291 static void cgw_csum_xor_neg(struct canfd_frame *cf, struct cgw_csum_xor *xor) in cgw_csum_xor_neg() argument
297 val ^= cf->data[i]; in cgw_csum_xor_neg()
299 cf->data[xor->result_idx] = val; in cgw_csum_xor_neg()
302 static void cgw_csum_crc8_rel(struct canfd_frame *cf, in cgw_csum_crc8_rel() argument
305 int from = calc_idx(crc8->from_idx, cf->len); in cgw_csum_crc8_rel()
306 int to = calc_idx(crc8->to_idx, cf->len); in cgw_csum_crc8_rel()
307 int res = calc_idx(crc8->result_idx, cf->len); in cgw_csum_crc8_rel()
316 crc = crc8->crctab[crc ^ cf->data[i]]; in cgw_csum_crc8_rel()
319 crc = crc8->crctab[crc ^ cf->data[i]]; in cgw_csum_crc8_rel()
328 crc = crc8->crctab[crc ^ crc8->profile_data[cf->data[1] & 0xF]]; in cgw_csum_crc8_rel()
332 crc = crc8->crctab[crc ^ (cf->can_id & 0xFF) ^ in cgw_csum_crc8_rel()
333 (cf->can_id >> 8 & 0xFF)]; in cgw_csum_crc8_rel()
337 cf->data[crc8->result_idx] = crc ^ crc8->final_xor_val; in cgw_csum_crc8_rel()
340 static void cgw_csum_crc8_pos(struct canfd_frame *cf, in cgw_csum_crc8_pos() argument
347 crc = crc8->crctab[crc ^ cf->data[i]]; in cgw_csum_crc8_pos()
355 crc = crc8->crctab[crc ^ crc8->profile_data[cf->data[1] & 0xF]]; in cgw_csum_crc8_pos()
359 crc = crc8->crctab[crc ^ (cf->can_id & 0xFF) ^ in cgw_csum_crc8_pos()
360 (cf->can_id >> 8 & 0xFF)]; in cgw_csum_crc8_pos()
364 cf->data[crc8->result_idx] = crc ^ crc8->final_xor_val; in cgw_csum_crc8_pos()
367 static void cgw_csum_crc8_neg(struct canfd_frame *cf, in cgw_csum_crc8_neg() argument
374 crc = crc8->crctab[crc ^ cf->data[i]]; in cgw_csum_crc8_neg()
382 crc = crc8->crctab[crc ^ crc8->profile_data[cf->data[1] & 0xF]]; in cgw_csum_crc8_neg()
386 crc = crc8->crctab[crc ^ (cf->can_id & 0xFF) ^ in cgw_csum_crc8_neg()
387 (cf->can_id >> 8 & 0xFF)]; in cgw_csum_crc8_neg()
391 cf->data[crc8->result_idx] = crc ^ crc8->final_xor_val; in cgw_csum_crc8_neg()
398 struct canfd_frame *cf; in can_can_gw_rcv() local
467 cf = (struct canfd_frame *)nskb->data; in can_can_gw_rcv()
471 (*gwj->mod.modfunc[modidx++])(cf, &gwj->mod); in can_can_gw_rcv()
479 if (cf->len > max_len) { in can_can_gw_rcv()
488 (*gwj->mod.csumfunc.crc8)(cf, &gwj->mod.csum.crc8); in can_can_gw_rcv()
491 (*gwj->mod.csumfunc.xor)(cf, &gwj->mod.csum.xor); in can_can_gw_rcv()
589 memcpy(&mb.cf, &gwj->mod.modframe.and, sizeof(mb.cf)); in cgw_put_job()
596 memcpy(&mb.cf, &gwj->mod.modframe.or, sizeof(mb.cf)); in cgw_put_job()
603 memcpy(&mb.cf, &gwj->mod.modframe.xor, sizeof(mb.cf)); in cgw_put_job()
610 memcpy(&mb.cf, &gwj->mod.modframe.set, sizeof(mb.cf)); in cgw_put_job()
619 memcpy(&mb.cf, &gwj->mod.modframe.and, sizeof(mb.cf)); in cgw_put_job()
626 memcpy(&mb.cf, &gwj->mod.modframe.or, sizeof(mb.cf)); in cgw_put_job()
633 memcpy(&mb.cf, &gwj->mod.modframe.xor, sizeof(mb.cf)); in cgw_put_job()
640 memcpy(&mb.cf, &gwj->mod.modframe.set, sizeof(mb.cf)); in cgw_put_job()
762 canfdframecpy(&mod->modframe.and, &mb.cf); in cgw_parse_attr()
781 canfdframecpy(&mod->modframe.or, &mb.cf); in cgw_parse_attr()
800 canfdframecpy(&mod->modframe.xor, &mb.cf); in cgw_parse_attr()
819 canfdframecpy(&mod->modframe.set, &mb.cf); in cgw_parse_attr()
840 canframecpy(&mod->modframe.and, &mb.cf); in cgw_parse_attr()
856 canframecpy(&mod->modframe.or, &mb.cf); in cgw_parse_attr()
872 canframecpy(&mod->modframe.xor, &mb.cf); in cgw_parse_attr()
888 canframecpy(&mod->modframe.set, &mb.cf); in cgw_parse_attr()