Hi Pablo, I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master] [also build test WARNING on next-20181130] [cannot apply to v4.20-rc4] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Pablo-Neira-Ayuso/add-flow_rule-infrastructure/20181130-204709 config: x86_64-allmodconfig (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All warnings (new ones prefixed by >>): include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/scsi/libfc/fc_libfc.c:209:26: warning: cast to restricted __be16 drivers/scsi/libfc/fc_libfc.c:209:26: warning: cast to restricted __be16 drivers/scsi/libfc/fc_libfc.c:209:26: warning: cast to restricted __be16 drivers/scsi/libfc/fc_libfc.c:209:26: warning: cast to restricted __be16 drivers/scsi/libfc/fc_libfc.c:209:24: warning: incorrect type in assignment (different base types) drivers/scsi/libfc/fc_libfc.c:209:24: expected restricted __be16 [usertype] fh_seq_cnt drivers/scsi/libfc/fc_libfc.c:209:24: got int drivers/scsi/libfc/fc_libfc.c:299:17: error: incompatible types in comparison expression (different address spaces) drivers/scsi/libfc/fc_libfc.c:301:17: error: incompatible types in comparison expression (different address spaces) drivers/net/wireless/intel/iwlwifi/fw/file.h:287:19: warning: mixed bitwiseness drivers/net/wireless/intel/iwlwifi/fw/file.h:413:19: warning: mixed bitwiseness include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/staging/android/ion/ion_carveout_heap.c:106:17: warning: symbol 'ion_carveout_heap_create' was not declared. Should it be static? include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/net/wireless/ath/ath9k/eeprom_def.c:138:9: warning: cast to restricted __le16 drivers/net/wireless/ath/ath9k/eeprom_def.c:138:9: warning: cast from restricted __le32 drivers/net/wireless/ath/ath9k/eeprom_def.c:139:9: warning: cast to restricted __le16 drivers/net/wireless/ath/ath9k/eeprom_def.c:139:9: warning: cast from restricted __le32 drivers/net/wireless/ath/ath9k/eeprom_def.c:140:9: warning: cast to restricted __le16 drivers/net/wireless/ath/ath9k/eeprom_def.c:140:9: warning: cast from restricted __le32 include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/staging/android/ion/ion_chunk_heap.c:111:17: warning: symbol 'ion_chunk_heap_create' was not declared. Should it be static? include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/net/wireless/marvell/mwifiex/sta_event.c:635:13: warning: restricted __le16 degrades to integer drivers/net/wireless/marvell/mwifiex/sta_event.c:635:13: warning: cast to restricted __le16 drivers/gpu/drm/nouveau/nvkm/engine/fifo/gv100.c:56:1: warning: symbol 'gv100_fifo_runlist' was not declared. Should it be static? include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/net/wireless/intel/iwlwifi/fw/file.h:287:19: warning: mixed bitwiseness drivers/net/wireless/intel/iwlwifi/fw/file.h:413:19: warning: mixed bitwiseness include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c:4789:17: warning: cast from restricted __le16 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c:4862:17: warning: cast from restricted __le16 include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y >> drivers/net/ethernet/netronome/nfp/flower/action.c:613:28: warning: mixing >> different enum types drivers/net/ethernet/netronome/nfp/flower/action.c:613:28: unsigned int enum flow_action_mangle_base versus drivers/net/ethernet/netronome/nfp/flower/action.c:613:28: unsigned int enum pedit_header_type include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/net/wireless/ath/ath9k/eeprom_4k.c:79:9: warning: cast to restricted __le16 drivers/net/wireless/ath/ath9k/eeprom_4k.c:79:9: warning: cast from restricted __le32 drivers/scsi/libfc/fc_exch.c:285:40: warning: mixing different enum types drivers/scsi/libfc/fc_exch.c:285:40: unsigned int enum fc_class versus drivers/scsi/libfc/fc_exch.c:285:40: unsigned int enum fc_sof include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/scsi/libfc/fc_exch.c:820:23: warning: context imbalance in 'fc_exch_em_alloc' - different lock contexts for basic block drivers/scsi/libfc/fc_exch.c:1031:29: warning: context imbalance in 'fc_exch_resp' - unexpected unlock drivers/scsi/libfc/fc_exch.c:2224:9: warning: context imbalance in 'fc_exch_seq_send' - unexpected unlock include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/net/ethernet/intel/igb/igb_ptp.c:1102:17: warning: incorrect type in argument 1 (different base types) drivers/net/ethernet/intel/igb/igb_ptp.c:1102:17: expected unsigned int [unsigned] val drivers/net/ethernet/intel/igb/igb_ptp.c:1102:17: got restricted __be16 [usertype] <noident> drivers/net/ethernet/intel/igb/igb_ptp.c:1107:25: warning: incorrect type in argument 1 (different base types) drivers/net/ethernet/intel/igb/igb_ptp.c:1107:25: expected unsigned int [unsigned] val drivers/net/ethernet/intel/igb/igb_ptp.c:1107:25: got restricted __be16 [usertype] <noident> include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv04.c:212:1: error: directive in argument list drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv04.c:214:1: error: directive in argument list include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/net/wireless/ath/ath9k/eeprom_9287.c:82:9: warning: cast to restricted __le16 drivers/net/wireless/ath/ath9k/eeprom_9287.c:82:9: warning: cast from restricted __le32 drivers/net/wireless/ath/ath9k/eeprom_9287.c:83:9: warning: cast to restricted __le16 drivers/net/wireless/ath/ath9k/eeprom_9287.c:83:9: warning: cast from restricted __le32 drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv10.c:83:1: error: directive in argument list drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv10.c:85:1: error: directive in argument list include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv17.c:84:1: error: directive in argument list drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv17.c:86:1: error: directive in argument list include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv40.c:231:1: error: directive in argument list drivers/gpu/drm/nouveau/nvkm/engine/fifo/dmanv40.c:233:1: error: directive in argument list include/linux/slab.h:332:43: warning: dubious: x & !y drivers/net/wireless/intel/iwlwifi/dvm/..//fw/file.h:287:19: warning: mixed bitwiseness drivers/net/wireless/intel/iwlwifi/dvm/..//fw/file.h:413:19: warning: mixed bitwiseness include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y include/linux/slab.h:332:43: warning: dubious: x & !y vim +613 drivers/net/ethernet/netronome/nfp/flower/action.c ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 586 f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 587 static int ca04c9e4 Pablo Neira Ayuso 2018-11-29 588 nfp_fl_pedit(const struct flow_action_entry *act, ca04c9e4 Pablo Neira Ayuso 2018-11-29 589 struct tc_cls_flower_offload *flow, ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 590 char *nfp_action, int *a_len, u32 *csum_updated) da83d8fe Pieter Jansen van Vuuren 2017-10-06 591 { 012ba7af Pablo Neira Ayuso 2018-11-29 592 struct flow_rule *rule = tc_cls_flower_offload_flow_rule(flow); 354b82bb Pieter Jansen van Vuuren 2017-10-06 593 struct nfp_fl_set_ipv6_addr set_ip6_dst, set_ip6_src; 4234d62c Pieter Jansen van Vuuren 2018-11-06 594 struct nfp_fl_set_ipv6_tc_hl_fl set_ip6_tc_hl_fl; a3c6b063 Pieter Jansen van Vuuren 2018-11-06 595 struct nfp_fl_set_ip4_ttl_tos set_ip_ttl_tos; c0b1bd9a Pieter Jansen van Vuuren 2017-10-06 596 struct nfp_fl_set_ip4_addrs set_ip_addr; f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 597 struct nfp_fl_set_tport set_tport; da83d8fe Pieter Jansen van Vuuren 2017-10-06 598 struct nfp_fl_set_eth set_eth; da83d8fe Pieter Jansen van Vuuren 2017-10-06 599 enum pedit_header_type htype; d08c9e58 Pieter Jansen van Vuuren 2018-10-15 600 size_t act_size = 0; ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 601 u8 ip_proto = 0; ca04c9e4 Pablo Neira Ayuso 2018-11-29 602 int idx, err; ca04c9e4 Pablo Neira Ayuso 2018-11-29 603 u32 offset; da83d8fe Pieter Jansen van Vuuren 2017-10-06 604 4234d62c Pieter Jansen van Vuuren 2018-11-06 605 memset(&set_ip6_tc_hl_fl, 0, sizeof(set_ip6_tc_hl_fl)); a3c6b063 Pieter Jansen van Vuuren 2018-11-06 606 memset(&set_ip_ttl_tos, 0, sizeof(set_ip_ttl_tos)); 354b82bb Pieter Jansen van Vuuren 2017-10-06 607 memset(&set_ip6_dst, 0, sizeof(set_ip6_dst)); 354b82bb Pieter Jansen van Vuuren 2017-10-06 608 memset(&set_ip6_src, 0, sizeof(set_ip6_src)); c0b1bd9a Pieter Jansen van Vuuren 2017-10-06 609 memset(&set_ip_addr, 0, sizeof(set_ip_addr)); f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 610 memset(&set_tport, 0, sizeof(set_tport)); da83d8fe Pieter Jansen van Vuuren 2017-10-06 611 memset(&set_eth, 0, sizeof(set_eth)); da83d8fe Pieter Jansen van Vuuren 2017-10-06 612 ca04c9e4 Pablo Neira Ayuso 2018-11-29 @613 htype = act->mangle.htype; ca04c9e4 Pablo Neira Ayuso 2018-11-29 614 offset = act->mangle.offset; da83d8fe Pieter Jansen van Vuuren 2017-10-06 615 da83d8fe Pieter Jansen van Vuuren 2017-10-06 616 switch (htype) { da83d8fe Pieter Jansen van Vuuren 2017-10-06 617 case TCA_PEDIT_KEY_EX_HDR_TYPE_ETH: ca04c9e4 Pablo Neira Ayuso 2018-11-29 618 err = nfp_fl_set_eth(act, idx, offset, &set_eth); da83d8fe Pieter Jansen van Vuuren 2017-10-06 619 break; c0b1bd9a Pieter Jansen van Vuuren 2017-10-06 620 case TCA_PEDIT_KEY_EX_HDR_TYPE_IP4: ca04c9e4 Pablo Neira Ayuso 2018-11-29 621 err = nfp_fl_set_ip4(act, idx, offset, &set_ip_addr, a3c6b063 Pieter Jansen van Vuuren 2018-11-06 622 &set_ip_ttl_tos); c0b1bd9a Pieter Jansen van Vuuren 2017-10-06 623 break; 354b82bb Pieter Jansen van Vuuren 2017-10-06 624 case TCA_PEDIT_KEY_EX_HDR_TYPE_IP6: ca04c9e4 Pablo Neira Ayuso 2018-11-29 625 err = nfp_fl_set_ip6(act, idx, offset, &set_ip6_dst, 4234d62c Pieter Jansen van Vuuren 2018-11-06 626 &set_ip6_src, &set_ip6_tc_hl_fl); 354b82bb Pieter Jansen van Vuuren 2017-10-06 627 break; f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 628 case TCA_PEDIT_KEY_EX_HDR_TYPE_TCP: ca04c9e4 Pablo Neira Ayuso 2018-11-29 629 err = nfp_fl_set_tport(act, idx, offset, &set_tport, f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 630 NFP_FL_ACTION_OPCODE_SET_TCP); f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 631 break; f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 632 case TCA_PEDIT_KEY_EX_HDR_TYPE_UDP: ca04c9e4 Pablo Neira Ayuso 2018-11-29 633 err = nfp_fl_set_tport(act, idx, offset, &set_tport, f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 634 NFP_FL_ACTION_OPCODE_SET_UDP); f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 635 break; da83d8fe Pieter Jansen van Vuuren 2017-10-06 636 default: da83d8fe Pieter Jansen van Vuuren 2017-10-06 637 return -EOPNOTSUPP; da83d8fe Pieter Jansen van Vuuren 2017-10-06 638 } da83d8fe Pieter Jansen van Vuuren 2017-10-06 639 if (err) da83d8fe Pieter Jansen van Vuuren 2017-10-06 640 return err; da83d8fe Pieter Jansen van Vuuren 2017-10-06 641 012ba7af Pablo Neira Ayuso 2018-11-29 642 if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_BASIC)) { 012ba7af Pablo Neira Ayuso 2018-11-29 643 struct flow_match_basic match; ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 644 012ba7af Pablo Neira Ayuso 2018-11-29 645 flow_rule_match_basic(rule, &match); 012ba7af Pablo Neira Ayuso 2018-11-29 646 ip_proto = match.key->ip_proto; ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 647 } ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 648 62d3f60b Pieter Jansen van Vuuren 2017-10-20 649 if (set_eth.head.len_lw) { da83d8fe Pieter Jansen van Vuuren 2017-10-06 650 act_size = sizeof(set_eth); da83d8fe Pieter Jansen van Vuuren 2017-10-06 651 memcpy(nfp_action, &set_eth, act_size); da83d8fe Pieter Jansen van Vuuren 2017-10-06 652 *a_len += act_size; d08c9e58 Pieter Jansen van Vuuren 2018-10-15 653 } a3c6b063 Pieter Jansen van Vuuren 2018-11-06 654 if (set_ip_ttl_tos.head.len_lw) { a3c6b063 Pieter Jansen van Vuuren 2018-11-06 655 nfp_action += act_size; a3c6b063 Pieter Jansen van Vuuren 2018-11-06 656 act_size = sizeof(set_ip_ttl_tos); a3c6b063 Pieter Jansen van Vuuren 2018-11-06 657 memcpy(nfp_action, &set_ip_ttl_tos, act_size); a3c6b063 Pieter Jansen van Vuuren 2018-11-06 658 *a_len += act_size; a3c6b063 Pieter Jansen van Vuuren 2018-11-06 659 a3c6b063 Pieter Jansen van Vuuren 2018-11-06 660 /* Hardware will automatically fix IPv4 and TCP/UDP checksum. */ a3c6b063 Pieter Jansen van Vuuren 2018-11-06 661 *csum_updated |= TCA_CSUM_UPDATE_FLAG_IPV4HDR | a3c6b063 Pieter Jansen van Vuuren 2018-11-06 662 nfp_fl_csum_l4_to_flag(ip_proto); a3c6b063 Pieter Jansen van Vuuren 2018-11-06 663 } d08c9e58 Pieter Jansen van Vuuren 2018-10-15 664 if (set_ip_addr.head.len_lw) { d08c9e58 Pieter Jansen van Vuuren 2018-10-15 665 nfp_action += act_size; c0b1bd9a Pieter Jansen van Vuuren 2017-10-06 666 act_size = sizeof(set_ip_addr); c0b1bd9a Pieter Jansen van Vuuren 2017-10-06 667 memcpy(nfp_action, &set_ip_addr, act_size); c0b1bd9a Pieter Jansen van Vuuren 2017-10-06 668 *a_len += act_size; ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 669 ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 670 /* Hardware will automatically fix IPv4 and TCP/UDP checksum. */ ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 671 *csum_updated |= TCA_CSUM_UPDATE_FLAG_IPV4HDR | ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 672 nfp_fl_csum_l4_to_flag(ip_proto); d08c9e58 Pieter Jansen van Vuuren 2018-10-15 673 } 4234d62c Pieter Jansen van Vuuren 2018-11-06 674 if (set_ip6_tc_hl_fl.head.len_lw) { 4234d62c Pieter Jansen van Vuuren 2018-11-06 675 nfp_action += act_size; 4234d62c Pieter Jansen van Vuuren 2018-11-06 676 act_size = sizeof(set_ip6_tc_hl_fl); 4234d62c Pieter Jansen van Vuuren 2018-11-06 677 memcpy(nfp_action, &set_ip6_tc_hl_fl, act_size); 4234d62c Pieter Jansen van Vuuren 2018-11-06 678 *a_len += act_size; 4234d62c Pieter Jansen van Vuuren 2018-11-06 679 4234d62c Pieter Jansen van Vuuren 2018-11-06 680 /* Hardware will automatically fix TCP/UDP checksum. */ 4234d62c Pieter Jansen van Vuuren 2018-11-06 681 *csum_updated |= nfp_fl_csum_l4_to_flag(ip_proto); 4234d62c Pieter Jansen van Vuuren 2018-11-06 682 } d08c9e58 Pieter Jansen van Vuuren 2018-10-15 683 if (set_ip6_dst.head.len_lw && set_ip6_src.head.len_lw) { 354b82bb Pieter Jansen van Vuuren 2017-10-06 684 /* TC compiles set src and dst IPv6 address as a single action, 354b82bb Pieter Jansen van Vuuren 2017-10-06 685 * the hardware requires this to be 2 separate actions. 354b82bb Pieter Jansen van Vuuren 2017-10-06 686 */ d08c9e58 Pieter Jansen van Vuuren 2018-10-15 687 nfp_action += act_size; 354b82bb Pieter Jansen van Vuuren 2017-10-06 688 act_size = sizeof(set_ip6_src); 354b82bb Pieter Jansen van Vuuren 2017-10-06 689 memcpy(nfp_action, &set_ip6_src, act_size); 354b82bb Pieter Jansen van Vuuren 2017-10-06 690 *a_len += act_size; 354b82bb Pieter Jansen van Vuuren 2017-10-06 691 354b82bb Pieter Jansen van Vuuren 2017-10-06 692 act_size = sizeof(set_ip6_dst); 354b82bb Pieter Jansen van Vuuren 2017-10-06 693 memcpy(&nfp_action[sizeof(set_ip6_src)], &set_ip6_dst, 354b82bb Pieter Jansen van Vuuren 2017-10-06 694 act_size); 354b82bb Pieter Jansen van Vuuren 2017-10-06 695 *a_len += act_size; ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 696 ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 697 /* Hardware will automatically fix TCP/UDP checksum. */ ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 698 *csum_updated |= nfp_fl_csum_l4_to_flag(ip_proto); 62d3f60b Pieter Jansen van Vuuren 2017-10-20 699 } else if (set_ip6_dst.head.len_lw) { d08c9e58 Pieter Jansen van Vuuren 2018-10-15 700 nfp_action += act_size; 354b82bb Pieter Jansen van Vuuren 2017-10-06 701 act_size = sizeof(set_ip6_dst); 354b82bb Pieter Jansen van Vuuren 2017-10-06 702 memcpy(nfp_action, &set_ip6_dst, act_size); 354b82bb Pieter Jansen van Vuuren 2017-10-06 703 *a_len += act_size; ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 704 ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 705 /* Hardware will automatically fix TCP/UDP checksum. */ ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 706 *csum_updated |= nfp_fl_csum_l4_to_flag(ip_proto); 62d3f60b Pieter Jansen van Vuuren 2017-10-20 707 } else if (set_ip6_src.head.len_lw) { d08c9e58 Pieter Jansen van Vuuren 2018-10-15 708 nfp_action += act_size; 354b82bb Pieter Jansen van Vuuren 2017-10-06 709 act_size = sizeof(set_ip6_src); 354b82bb Pieter Jansen van Vuuren 2017-10-06 710 memcpy(nfp_action, &set_ip6_src, act_size); 354b82bb Pieter Jansen van Vuuren 2017-10-06 711 *a_len += act_size; ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 712 ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 713 /* Hardware will automatically fix TCP/UDP checksum. */ ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 714 *csum_updated |= nfp_fl_csum_l4_to_flag(ip_proto); d08c9e58 Pieter Jansen van Vuuren 2018-10-15 715 } d08c9e58 Pieter Jansen van Vuuren 2018-10-15 716 if (set_tport.head.len_lw) { d08c9e58 Pieter Jansen van Vuuren 2018-10-15 717 nfp_action += act_size; f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 718 act_size = sizeof(set_tport); f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 719 memcpy(nfp_action, &set_tport, act_size); f8b7b0a6 Pieter Jansen van Vuuren 2017-10-06 720 *a_len += act_size; ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 721 ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 722 /* Hardware will automatically fix TCP/UDP checksum. */ ed8f2b52 Pieter Jansen van Vuuren 2018-06-29 723 *csum_updated |= nfp_fl_csum_l4_to_flag(ip_proto); da83d8fe Pieter Jansen van Vuuren 2017-10-06 724 } da83d8fe Pieter Jansen van Vuuren 2017-10-06 725 da83d8fe Pieter Jansen van Vuuren 2017-10-06 726 return 0; da83d8fe Pieter Jansen van Vuuren 2017-10-06 727 } da83d8fe Pieter Jansen van Vuuren 2017-10-06 728 :::::: The code at line 613 was first introduced by commit :::::: ca04c9e42b71103c41fbc618e0a9a306344e72fd drivers: net: use flow action infrastructure :::::: TO: Pablo Neira Ayuso <pa...@netfilter.org> :::::: CC: 0day robot <l...@intel.com> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
.config.gz
Description: application/gzip