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()
203 static void mod_retrieve_ccdlc(struct canfd_frame *cf) in mod_retrieve_ccdlc() argument
205 struct can_frame *ccf = (struct can_frame *)cf; in mod_retrieve_ccdlc()
217 static void mod_store_ccdlc(struct canfd_frame *cf) in mod_store_ccdlc() argument
219 struct can_frame *ccf = (struct can_frame *)cf; in mod_store_ccdlc()
237 static void mod_and_ccdlc(struct canfd_frame *cf, struct cf_mod *mod) in mod_and_ccdlc() argument
239 mod_retrieve_ccdlc(cf); in mod_and_ccdlc()
240 mod_and_len(cf, mod); in mod_and_ccdlc()
241 mod_store_ccdlc(cf); in mod_and_ccdlc()
244 static void mod_or_ccdlc(struct canfd_frame *cf, struct cf_mod *mod) in mod_or_ccdlc() argument
246 mod_retrieve_ccdlc(cf); in mod_or_ccdlc()
247 mod_or_len(cf, mod); in mod_or_ccdlc()
248 mod_store_ccdlc(cf); in mod_or_ccdlc()
251 static void mod_xor_ccdlc(struct canfd_frame *cf, struct cf_mod *mod) in mod_xor_ccdlc() argument
253 mod_retrieve_ccdlc(cf); in mod_xor_ccdlc()
254 mod_xor_len(cf, mod); in mod_xor_ccdlc()
255 mod_store_ccdlc(cf); in mod_xor_ccdlc()
258 static void mod_set_ccdlc(struct canfd_frame *cf, struct cf_mod *mod) in mod_set_ccdlc() argument
260 mod_set_len(cf, mod); in mod_set_ccdlc()
261 mod_store_ccdlc(cf); in mod_set_ccdlc()
320 static void cgw_csum_xor_rel(struct canfd_frame *cf, struct cgw_csum_xor *xor) in cgw_csum_xor_rel() argument
322 int from = calc_idx(xor->from_idx, cf->len); in cgw_csum_xor_rel()
323 int to = calc_idx(xor->to_idx, cf->len); in cgw_csum_xor_rel()
324 int res = calc_idx(xor->result_idx, cf->len); in cgw_csum_xor_rel()
333 val ^= cf->data[i]; in cgw_csum_xor_rel()
336 val ^= cf->data[i]; in cgw_csum_xor_rel()
339 cf->data[res] = val; in cgw_csum_xor_rel()
342 static void cgw_csum_xor_pos(struct canfd_frame *cf, struct cgw_csum_xor *xor) in cgw_csum_xor_pos() argument
348 val ^= cf->data[i]; in cgw_csum_xor_pos()
350 cf->data[xor->result_idx] = val; in cgw_csum_xor_pos()
353 static void cgw_csum_xor_neg(struct canfd_frame *cf, struct cgw_csum_xor *xor) in cgw_csum_xor_neg() argument
359 val ^= cf->data[i]; in cgw_csum_xor_neg()
361 cf->data[xor->result_idx] = val; in cgw_csum_xor_neg()
364 static void cgw_csum_crc8_rel(struct canfd_frame *cf, in cgw_csum_crc8_rel() argument
367 int from = calc_idx(crc8->from_idx, cf->len); in cgw_csum_crc8_rel()
368 int to = calc_idx(crc8->to_idx, cf->len); in cgw_csum_crc8_rel()
369 int res = calc_idx(crc8->result_idx, cf->len); in cgw_csum_crc8_rel()
378 crc = crc8->crctab[crc ^ cf->data[i]]; in cgw_csum_crc8_rel()
381 crc = crc8->crctab[crc ^ cf->data[i]]; in cgw_csum_crc8_rel()
390 crc = crc8->crctab[crc ^ crc8->profile_data[cf->data[1] & 0xF]]; in cgw_csum_crc8_rel()
394 crc = crc8->crctab[crc ^ (cf->can_id & 0xFF) ^ in cgw_csum_crc8_rel()
395 (cf->can_id >> 8 & 0xFF)]; in cgw_csum_crc8_rel()
399 cf->data[crc8->result_idx] = crc ^ crc8->final_xor_val; in cgw_csum_crc8_rel()
402 static void cgw_csum_crc8_pos(struct canfd_frame *cf, in cgw_csum_crc8_pos() argument
409 crc = crc8->crctab[crc ^ cf->data[i]]; in cgw_csum_crc8_pos()
417 crc = crc8->crctab[crc ^ crc8->profile_data[cf->data[1] & 0xF]]; in cgw_csum_crc8_pos()
421 crc = crc8->crctab[crc ^ (cf->can_id & 0xFF) ^ in cgw_csum_crc8_pos()
422 (cf->can_id >> 8 & 0xFF)]; in cgw_csum_crc8_pos()
426 cf->data[crc8->result_idx] = crc ^ crc8->final_xor_val; in cgw_csum_crc8_pos()
429 static void cgw_csum_crc8_neg(struct canfd_frame *cf, in cgw_csum_crc8_neg() argument
436 crc = crc8->crctab[crc ^ cf->data[i]]; in cgw_csum_crc8_neg()
444 crc = crc8->crctab[crc ^ crc8->profile_data[cf->data[1] & 0xF]]; in cgw_csum_crc8_neg()
448 crc = crc8->crctab[crc ^ (cf->can_id & 0xFF) ^ in cgw_csum_crc8_neg()
449 (cf->can_id >> 8 & 0xFF)]; in cgw_csum_crc8_neg()
453 cf->data[crc8->result_idx] = crc ^ crc8->final_xor_val; in cgw_csum_crc8_neg()
460 struct canfd_frame *cf; in can_can_gw_rcv() local
529 cf = (struct canfd_frame *)nskb->data; in can_can_gw_rcv()
533 (*gwj->mod.modfunc[modidx++])(cf, &gwj->mod); in can_can_gw_rcv()
541 if (cf->len > max_len) { in can_can_gw_rcv()
550 (*gwj->mod.csumfunc.crc8)(cf, &gwj->mod.csum.crc8); in can_can_gw_rcv()
553 (*gwj->mod.csumfunc.xor)(cf, &gwj->mod.csum.xor); in can_can_gw_rcv()
657 memcpy(&mb.cf, &gwj->mod.modframe.and, sizeof(mb.cf)); in cgw_put_job()
664 memcpy(&mb.cf, &gwj->mod.modframe.or, sizeof(mb.cf)); in cgw_put_job()
671 memcpy(&mb.cf, &gwj->mod.modframe.xor, sizeof(mb.cf)); in cgw_put_job()
678 memcpy(&mb.cf, &gwj->mod.modframe.set, sizeof(mb.cf)); in cgw_put_job()
687 memcpy(&mb.cf, &gwj->mod.modframe.and, sizeof(mb.cf)); in cgw_put_job()
694 memcpy(&mb.cf, &gwj->mod.modframe.or, sizeof(mb.cf)); in cgw_put_job()
701 memcpy(&mb.cf, &gwj->mod.modframe.xor, sizeof(mb.cf)); in cgw_put_job()
708 memcpy(&mb.cf, &gwj->mod.modframe.set, sizeof(mb.cf)); in cgw_put_job()
830 canfdframecpy(&mod->modframe.and, &mb.cf); in cgw_parse_attr()
849 canfdframecpy(&mod->modframe.or, &mb.cf); in cgw_parse_attr()
868 canfdframecpy(&mod->modframe.xor, &mb.cf); in cgw_parse_attr()
887 canfdframecpy(&mod->modframe.set, &mb.cf); in cgw_parse_attr()
908 canframecpy(&mod->modframe.and, &mb.cf); in cgw_parse_attr()
924 canframecpy(&mod->modframe.or, &mb.cf); in cgw_parse_attr()
940 canframecpy(&mod->modframe.xor, &mb.cf); in cgw_parse_attr()
956 canframecpy(&mod->modframe.set, &mb.cf); in cgw_parse_attr()