linux/drivers/net/ethernet/netronome/nfp
Jakub Kicinski 4e59532541 nfp: don't depend on compiler constant propagation
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>
2017-11-05 23:23:26 +09:00
..
bpf nfp: bpf: move to new BPF program offload infrastructure 2017-11-05 22:26:19 +09:00
flower nfp: flower: vxlan - ensure no sleep in atomic context 2017-11-02 20:27:11 +09:00
nfpcore nfp: don't depend on compiler constant propagation 2017-11-05 23:23:26 +09:00
nic nfp: separate app vNIC init/clean from alloc/free 2017-09-03 21:22:04 -07:00
Makefile Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
nfp_app_nic.c nfp: separate app vNIC init/clean from alloc/free 2017-09-03 21:22:04 -07:00
nfp_app.c nfp: bpf: fall back to core NIC app if BPF not selected 2017-11-02 20:27:11 +09:00
nfp_app.h nfp: bpf: move to new BPF program offload infrastructure 2017-11-05 22:26:19 +09:00
nfp_asm.c nfp: bpf: direct packet access - write 2017-10-14 11:13:28 -07:00
nfp_asm.h nfp: bpf: rename ALU_OP_NEG to ALU_OP_NOT 2017-11-02 16:47:30 +09:00
nfp_devlink.c nfp: devlink add support for getting eswitch mode 2017-06-25 11:42:01 -04:00
nfp_hwmon.c nfp: add hwmon support 2017-05-30 11:27:06 -04:00
nfp_main.c nfp: wait for the NSP resource to appear on boot 2017-09-13 13:29:13 -07:00
nfp_main.h nfp: add basic SR-IOV ndo functions 2017-08-25 19:24:58 -07:00
nfp_net_common.c nfp: bpf: move to new BPF program offload infrastructure 2017-11-05 22:26:19 +09:00
nfp_net_ctrl.h nfp: bpf: move to datapath ABI version 2 2017-10-09 09:51:03 -07:00
nfp_net_debugfs.c nfp: don't reuse pointers in ring dumping 2017-08-18 22:39:28 -07:00
nfp_net_ethtool.c nfp: improve defines for constants in ethtool 2017-11-02 20:27:11 +09:00
nfp_net_main.c nfp: wait for board state before talking to the NSP 2017-09-13 13:29:13 -07:00
nfp_net_repr.c nfp: add basic SR-IOV ndo functions to representors 2017-08-25 19:24:58 -07:00
nfp_net_repr.h nfp: extend flower matching capabilities 2017-07-01 08:51:32 -07:00
nfp_net_sriov.c nfp: inform the VF driver needs to be restarted after changing the MAC 2017-10-28 18:59:48 +09:00
nfp_net_sriov.h nfp: add basic SR-IOV ndo functions 2017-08-25 19:24:58 -07:00
nfp_net.h nfp: bpf: require seamless reload for program replace 2017-11-05 22:26:19 +09:00
nfp_netvf_main.c nfp: advertise support for NFD ABI 0.5 2017-06-07 12:51:42 -04:00
nfp_port.c nfp: store pointer to MAC statistics in nfp_port 2017-08-18 22:39:28 -07:00
nfp_port.h nfp: add ethtool statistics for representors 2017-08-18 22:39:28 -07:00