4e59532541
Matthias reports: nfp_eth_set_bit_config() is marked as __always_inline to allow gcc to identify the 'mask' parameter as known to be constant at compile time, which is required to use the FIELD_GET() macro. The forced inlining does the trick for gcc, but for kernel builds with clang it results in undefined symbols: drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp_eth.o: In function `__nfp_eth_set_aneg': drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp_eth.c:(.text+0x787): undefined reference to `__compiletime_assert_492' drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp_eth.c:(.text+0x7b1): undefined reference to `__compiletime_assert_496' These __compiletime_assert_xyx() calls would have been optimized away if the compiler had seen 'mask' as a constant. Add a macro to extract the mask and shift and pass those to nfp_eth_set_bit_config() separately. Reported-by: Matthias Kaehlcke <mka@chromium.org> Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Tested-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: Simon Horman <simon.horman@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net> |
||
---|---|---|
.. | ||
bpf | ||
flower | ||
nfpcore | ||
nic | ||
Makefile | ||
nfp_app_nic.c | ||
nfp_app.c | ||
nfp_app.h | ||
nfp_asm.c | ||
nfp_asm.h | ||
nfp_devlink.c | ||
nfp_hwmon.c | ||
nfp_main.c | ||
nfp_main.h | ||
nfp_net_common.c | ||
nfp_net_ctrl.h | ||
nfp_net_debugfs.c | ||
nfp_net_ethtool.c | ||
nfp_net_main.c | ||
nfp_net_repr.c | ||
nfp_net_repr.h | ||
nfp_net_sriov.c | ||
nfp_net_sriov.h | ||
nfp_net.h | ||
nfp_netvf_main.c | ||
nfp_port.c | ||
nfp_port.h |