From 9d6283ca4f85201c946dbeba6249f3bc1e6acc43 Mon Sep 17 00:00:00 2001 From: Jon Hunter Date: Wed, 17 Jul 2024 15:05:26 +0100 Subject: [PATCH] net: nvethernet: Fix build for Linux v6.11 In Linux v6.11, the structure 'kernel_ethtool_ts_info' was added as a copy of the existing 'ethtool_ts_info' for the kernel and the various kernel functions were updated to use the new structure. This broke the build for the nvethernet driver, so add a test to the conftest script to detect the presence of this new strucutue and update the nvethernet driver accordingly. Bug 4749580 Change-Id: I2c5daa0132edee8c98eec3a66e19144484325ab0 Signed-off-by: Jon Hunter Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3176868 GVS: buildbot_gerritrpt Reviewed-by: Revanth Kumar Uppala --- .../net/ethernet/nvidia/nvethernet/ethtool.c | 4 ++++ scripts/conftest/Makefile | 1 + scripts/conftest/conftest.sh | 17 +++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/drivers/net/ethernet/nvidia/nvethernet/ethtool.c b/drivers/net/ethernet/nvidia/nvethernet/ethtool.c index 9e6cf869..9efc7fe1 100644 --- a/drivers/net/ethernet/nvidia/nvethernet/ethtool.c +++ b/drivers/net/ethernet/nvidia/nvethernet/ethtool.c @@ -894,7 +894,11 @@ static int ether_set_pauseparam(struct net_device *ndev, * @return zero on success */ static int ether_get_ts_info(struct net_device *ndev, +#if defined(NV_ETHTOOL_KERNEL_ETHTOOL_TS_INFO_STRUCT_PRESENT) /* Linux v6.11 */ + struct kernel_ethtool_ts_info *info) +#else struct ethtool_ts_info *info) +#endif { struct ether_priv_data *pdata = netdev_priv(ndev); diff --git a/scripts/conftest/Makefile b/scripts/conftest/Makefile index 6b0e81c2..c4d0604c 100644 --- a/scripts/conftest/Makefile +++ b/scripts/conftest/Makefile @@ -119,6 +119,7 @@ NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_fb_helper_struct_has_info_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_mode_config_struct_has_fb_base_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += drm_scdc_get_set_has_struct_drm_connector_arg NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_keee_struct_present +NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_kernel_ethtool_ts_info_struct_present NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_ops_get_set_coalesce_has_coal_and_extack_args NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_ops_get_set_ringparam_has_ringparam_and_extack_args NV_CONFTEST_FUNCTION_COMPILE_TESTS += ethtool_ops_get_set_rxfh_has_rxfh_param_args diff --git a/scripts/conftest/conftest.sh b/scripts/conftest/conftest.sh index 0fc79f67..1d1df322 100755 --- a/scripts/conftest/conftest.sh +++ b/scripts/conftest/conftest.sh @@ -7106,6 +7106,23 @@ compile_test() { compile_check_conftest "$CODE" "NV_ETHTOOL_KEEE_STRUCT_PRESENT" "" "types" ;; + ethtool_kernel_ethtool_ts_info_struct_present) + # + # Determine if the 'struct kernel_ethtool_ts_info' is present. + # + # Commit 2111375b85ad ("net: Add struct kernel_ethtool_ts_info") + # replaced struct ethtool_ts_info with kernel_ethtool_ts_info in + # Linux v6.11. + # + CODE=" + #include + int conftest(struct kernel_ethtool_ts_info *info) { + return 0; + }" + + compile_check_conftest "$CODE" "NV_ETHTOOL_KERNEL_ETHTOOL_TS_INFO_STRUCT_PRESENT" "" "types" + ;; + ethtool_ops_get_set_coalesce_has_coal_and_extack_args) # # Determine if the 'get_coalesce' and 'set_coalesce' ethtool_ops