Message ID | 56e8d601-1dbd-f49e-369c-6cbed4d896bf@solarflare.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
Series | sfc: driver for EF100 family NICs, part 2 | expand |
Hi Edward, I love your patch! Yet something to improve: [auto build test ERROR on net-next/master] url: https://github.com/0day-ci/linux/commits/Edward-Cree/sfc-driver-for-EF100-family-NICs-part-2/20200804-044345 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git bd0b33b24897ba9ddad221e8ac5b6f0e38a2e004 config: x86_64-randconfig-a015-20200803 (attached as .config) compiler: gcc-9 (Debian 9.3.0-14) 9.3.0 reproduce (this is a W=1 build): # save the attached .config to linux build tree make W=1 ARCH=x86_64 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): drivers/net/ethernet/sfc/ef100_nic.c:835:3: error: 'const struct efx_nic_type' has no member named 'filter_rfs_expire_one' 835 | .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one, | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/sfc/ef100_nic.c:835:27: error: initialization of 'void (*)(struct efx_nic *, u32)' {aka 'void (*)(struct efx_nic *, unsigned int)'} from incompatible pointer type 'bool (*)(struct efx_nic *, u32, unsigned int)' {aka '_Bool (*)(struct efx_nic *, unsigned int, unsigned int)'} [-Werror=incompatible-pointer-types] 835 | .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/sfc/ef100_nic.c:835:27: note: (near initialization for 'ef100_vf_nic_type.ptp_write_host_time') cc1: some warnings being treated as errors vim +835 drivers/net/ethernet/sfc/ef100_nic.c 785 786 const struct efx_nic_type ef100_vf_nic_type = { 787 .revision = EFX_REV_EF100, 788 .is_vf = true, 789 .probe = ef100_probe_vf, 790 .offload_features = EF100_OFFLOAD_FEATURES, 791 .mcdi_max_ver = 2, 792 .mcdi_request = ef100_mcdi_request, 793 .mcdi_poll_response = ef100_mcdi_poll_response, 794 .mcdi_read_response = ef100_mcdi_read_response, 795 .mcdi_poll_reboot = ef100_mcdi_poll_reboot, 796 .mcdi_reboot_detected = ef100_mcdi_reboot_detected, 797 .irq_enable_master = efx_port_dummy_op_void, 798 .irq_test_generate = efx_ef100_irq_test_generate, 799 .irq_disable_non_ev = efx_port_dummy_op_void, 800 .push_irq_moderation = efx_channel_dummy_op_void, 801 .min_interrupt_mode = EFX_INT_MODE_MSIX, 802 .map_reset_reason = ef100_map_reset_reason, 803 .map_reset_flags = ef100_map_reset_flags, 804 .reset = ef100_reset, 805 .check_caps = ef100_check_caps, 806 .ev_probe = ef100_ev_probe, 807 .ev_init = ef100_ev_init, 808 .ev_fini = efx_mcdi_ev_fini, 809 .ev_remove = efx_mcdi_ev_remove, 810 .irq_handle_msi = ef100_msi_interrupt, 811 .ev_process = ef100_ev_process, 812 .ev_read_ack = ef100_ev_read_ack, 813 .ev_test_generate = efx_ef100_ev_test_generate, 814 .tx_probe = ef100_tx_probe, 815 .tx_init = ef100_tx_init, 816 .tx_write = ef100_tx_write, 817 .tx_enqueue = ef100_enqueue_skb, 818 .rx_probe = efx_mcdi_rx_probe, 819 .rx_init = efx_mcdi_rx_init, 820 .rx_remove = efx_mcdi_rx_remove, 821 .rx_write = ef100_rx_write, 822 .rx_packet = __ef100_rx_packet, 823 .fini_dmaq = efx_fini_dmaq, 824 .max_rx_ip_filters = EFX_MCDI_FILTER_TBL_ROWS, 825 .filter_table_probe = ef100_filter_table_up, 826 .filter_table_restore = efx_mcdi_filter_table_restore, 827 .filter_table_remove = ef100_filter_table_down, 828 .filter_insert = efx_mcdi_filter_insert, 829 .filter_remove_safe = efx_mcdi_filter_remove_safe, 830 .filter_get_safe = efx_mcdi_filter_get_safe, 831 .filter_clear_rx = efx_mcdi_filter_clear_rx, 832 .filter_count_rx_used = efx_mcdi_filter_count_rx_used, 833 .filter_get_rx_id_limit = efx_mcdi_filter_get_rx_id_limit, 834 .filter_get_rx_ids = efx_mcdi_filter_get_rx_ids, > 835 .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one, 836 837 .rx_prefix_size = ESE_GZ_RX_PKT_PREFIX_LEN, 838 .rx_hash_offset = ESF_GZ_RX_PREFIX_RSS_HASH_LBN / 8, 839 .rx_ts_offset = ESF_GZ_RX_PREFIX_PARTIAL_TSTAMP_LBN / 8, 840 .rx_hash_key_size = 40, 841 .rx_pull_rss_config = efx_mcdi_rx_pull_rss_config, 842 .rx_push_rss_config = efx_mcdi_pf_rx_push_rss_config, 843 .rx_restore_rss_contexts = efx_mcdi_rx_restore_rss_contexts, 844 845 .reconfigure_mac = ef100_reconfigure_mac, 846 .test_nvram = efx_new_mcdi_nvram_test_all, 847 .describe_stats = ef100_describe_stats, 848 .start_stats = efx_mcdi_mac_start_stats, 849 .update_stats = ef100_update_stats, 850 .pull_stats = efx_mcdi_mac_pull_stats, 851 .stop_stats = efx_mcdi_mac_stop_stats, 852 853 .mem_bar = NULL, 854 .mem_map_size = NULL, 855 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
From: kernel test robot <lkp@intel.com> Date: Tue, 4 Aug 2020 09:16:30 +0800 > drivers/net/ethernet/sfc/ef100_nic.c:835:3: error: 'const struct efx_nic_type' has no member named 'filter_rfs_expire_one' > 835 | .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one, > | ^~~~~~~~~~~~~~~~~~~~~ >>> drivers/net/ethernet/sfc/ef100_nic.c:835:27: error: initialization of 'void (*)(struct efx_nic *, u32)' {aka 'void (*)(struct efx_nic *, unsigned int)'} from incompatible pointer type 'bool (*)(struct efx_nic *, u32, unsigned int)' {aka '_Bool (*)(struct efx_nic *, unsigned int, unsigned int)'} [-Werror=incompatible-pointer-types] > 835 | .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one, > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I fixed this in my tree as follows: ==================== From da7955405fb25c11a541234b32d06d9c09f81be6 Mon Sep 17 00:00:00 2001 From: "David S. Miller" <davem@davemloft.net> Date: Mon, 3 Aug 2020 18:29:39 -0700 Subject: [PATCH] sfc: Fix build with CONFIG_RFS_ACCEL disabled. drivers/net/ethernet/sfc/ef100_nic.c:835:3: error: 'const struct efx_nic_type' has no member named 'filter_rfs_expire_one' 835 | .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one, | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/sfc/ef100_nic.c:835:27: error: initialization of 'void (*)(struct efx_nic *, u32)' {aka 'void (*)(struct efx_nic *, unsigned int)'} from incompatible pointer type 'bool (*)(struct efx_nic *, u32, unsigned int)' {aka '_Bool (*)(struct efx_nic *, unsigned int, unsigned int)'} [-Werror=incompatible-pointer-types] 835 | .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net> --- drivers/net/ethernet/sfc/ef100_nic.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ethernet/sfc/ef100_nic.c b/drivers/net/ethernet/sfc/ef100_nic.c index 8a2126fec078..36598d0542ed 100644 --- a/drivers/net/ethernet/sfc/ef100_nic.c +++ b/drivers/net/ethernet/sfc/ef100_nic.c @@ -832,7 +832,9 @@ const struct efx_nic_type ef100_vf_nic_type = { .filter_count_rx_used = efx_mcdi_filter_count_rx_used, .filter_get_rx_id_limit = efx_mcdi_filter_get_rx_id_limit, .filter_get_rx_ids = efx_mcdi_filter_get_rx_ids, +#ifdef CONFIG_RFS_ACCEL .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one, +#endif .rx_prefix_size = ESE_GZ_RX_PKT_PREFIX_LEN, .rx_hash_offset = ESF_GZ_RX_PREFIX_RSS_HASH_LBN / 8,
On 04/08/2020 02:30, David Miller wrote:
> I fixed this in my tree as follows:
LGTM. Thanks for fixing, and thanks robot for catching it.
diff --git a/drivers/net/ethernet/sfc/ef100.c b/drivers/net/ethernet/sfc/ef100.c index de611c0f94e7..9729983f4840 100644 --- a/drivers/net/ethernet/sfc/ef100.c +++ b/drivers/net/ethernet/sfc/ef100.c @@ -527,6 +527,8 @@ static int ef100_pci_probe(struct pci_dev *pci_dev, static const struct pci_device_id ef100_pci_table[] = { {PCI_DEVICE(PCI_VENDOR_ID_XILINX, 0x0100), /* Riverhead PF */ .driver_data = (unsigned long) &ef100_pf_nic_type }, + {PCI_DEVICE(PCI_VENDOR_ID_XILINX, 0x1100), /* Riverhead VF */ + .driver_data = (unsigned long) &ef100_vf_nic_type }, {0} /* end of list */ }; diff --git a/drivers/net/ethernet/sfc/ef100_nic.c b/drivers/net/ethernet/sfc/ef100_nic.c index 10748efbf98e..8a2126fec078 100644 --- a/drivers/net/ethernet/sfc/ef100_nic.c +++ b/drivers/net/ethernet/sfc/ef100_nic.c @@ -783,6 +783,78 @@ const struct efx_nic_type ef100_pf_nic_type = { }; +const struct efx_nic_type ef100_vf_nic_type = { + .revision = EFX_REV_EF100, + .is_vf = true, + .probe = ef100_probe_vf, + .offload_features = EF100_OFFLOAD_FEATURES, + .mcdi_max_ver = 2, + .mcdi_request = ef100_mcdi_request, + .mcdi_poll_response = ef100_mcdi_poll_response, + .mcdi_read_response = ef100_mcdi_read_response, + .mcdi_poll_reboot = ef100_mcdi_poll_reboot, + .mcdi_reboot_detected = ef100_mcdi_reboot_detected, + .irq_enable_master = efx_port_dummy_op_void, + .irq_test_generate = efx_ef100_irq_test_generate, + .irq_disable_non_ev = efx_port_dummy_op_void, + .push_irq_moderation = efx_channel_dummy_op_void, + .min_interrupt_mode = EFX_INT_MODE_MSIX, + .map_reset_reason = ef100_map_reset_reason, + .map_reset_flags = ef100_map_reset_flags, + .reset = ef100_reset, + .check_caps = ef100_check_caps, + .ev_probe = ef100_ev_probe, + .ev_init = ef100_ev_init, + .ev_fini = efx_mcdi_ev_fini, + .ev_remove = efx_mcdi_ev_remove, + .irq_handle_msi = ef100_msi_interrupt, + .ev_process = ef100_ev_process, + .ev_read_ack = ef100_ev_read_ack, + .ev_test_generate = efx_ef100_ev_test_generate, + .tx_probe = ef100_tx_probe, + .tx_init = ef100_tx_init, + .tx_write = ef100_tx_write, + .tx_enqueue = ef100_enqueue_skb, + .rx_probe = efx_mcdi_rx_probe, + .rx_init = efx_mcdi_rx_init, + .rx_remove = efx_mcdi_rx_remove, + .rx_write = ef100_rx_write, + .rx_packet = __ef100_rx_packet, + .fini_dmaq = efx_fini_dmaq, + .max_rx_ip_filters = EFX_MCDI_FILTER_TBL_ROWS, + .filter_table_probe = ef100_filter_table_up, + .filter_table_restore = efx_mcdi_filter_table_restore, + .filter_table_remove = ef100_filter_table_down, + .filter_insert = efx_mcdi_filter_insert, + .filter_remove_safe = efx_mcdi_filter_remove_safe, + .filter_get_safe = efx_mcdi_filter_get_safe, + .filter_clear_rx = efx_mcdi_filter_clear_rx, + .filter_count_rx_used = efx_mcdi_filter_count_rx_used, + .filter_get_rx_id_limit = efx_mcdi_filter_get_rx_id_limit, + .filter_get_rx_ids = efx_mcdi_filter_get_rx_ids, + .filter_rfs_expire_one = efx_mcdi_filter_rfs_expire_one, + + .rx_prefix_size = ESE_GZ_RX_PKT_PREFIX_LEN, + .rx_hash_offset = ESF_GZ_RX_PREFIX_RSS_HASH_LBN / 8, + .rx_ts_offset = ESF_GZ_RX_PREFIX_PARTIAL_TSTAMP_LBN / 8, + .rx_hash_key_size = 40, + .rx_pull_rss_config = efx_mcdi_rx_pull_rss_config, + .rx_push_rss_config = efx_mcdi_pf_rx_push_rss_config, + .rx_restore_rss_contexts = efx_mcdi_rx_restore_rss_contexts, + + .reconfigure_mac = ef100_reconfigure_mac, + .test_nvram = efx_new_mcdi_nvram_test_all, + .describe_stats = ef100_describe_stats, + .start_stats = efx_mcdi_mac_start_stats, + .update_stats = ef100_update_stats, + .pull_stats = efx_mcdi_mac_pull_stats, + .stop_stats = efx_mcdi_mac_stop_stats, + + .mem_bar = NULL, + .mem_map_size = NULL, + +}; + static int compare_versions(const char *a, const char *b) { int a_major, a_minor, a_point, a_patch; @@ -1178,6 +1250,11 @@ int ef100_probe_pf(struct efx_nic *efx) return rc; } +int ef100_probe_vf(struct efx_nic *efx) +{ + return ef100_probe_main(efx); +} + void ef100_remove(struct efx_nic *efx) { struct ef100_nic_data *nic_data = efx->nic_data; diff --git a/drivers/net/ethernet/sfc/ef100_nic.h b/drivers/net/ethernet/sfc/ef100_nic.h index 4a64c9438493..e799688d5264 100644 --- a/drivers/net/ethernet/sfc/ef100_nic.h +++ b/drivers/net/ethernet/sfc/ef100_nic.h @@ -13,8 +13,10 @@ #include "nic_common.h" extern const struct efx_nic_type ef100_pf_nic_type; +extern const struct efx_nic_type ef100_vf_nic_type; int ef100_probe_pf(struct efx_nic *efx); +int ef100_probe_vf(struct efx_nic *efx); void ef100_remove(struct efx_nic *efx); enum {
We don't yet have a .sriov_configure() to create them, though. Signed-off-by: Edward Cree <ecree@solarflare.com> --- drivers/net/ethernet/sfc/ef100.c | 2 + drivers/net/ethernet/sfc/ef100_nic.c | 77 ++++++++++++++++++++++++++++ drivers/net/ethernet/sfc/ef100_nic.h | 2 + 3 files changed, 81 insertions(+)