Undefined reference error (linker), but header file exists

I'm getting this error on the build (see below). It is almost like the header file can't be found, but at the top of the octeon3-core.c file, I have:

#include "octeon3.h"

and the directory tree for build_dir/target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon

-rw-r--r-- 1 grommish grommish 10368 Jun 11 04:49 octeon3-bgx-nexus.c
-rw-r--r-- 1 grommish grommish 54043 Jun 11 04:49 octeon3-bgx-port.c
-rw-r--r-- 1 grommish grommish 54547 Jun 11 04:49 octeon3-core.c
-rw-r--r-- 1 grommish grommish  9352 Jun 11 04:49 octeon3-fpa.c
-rw-r--r-- 1 grommish grommish 15161 Jun 11 04:49 octeon3.h
-rw-r--r-- 1 grommish grommish 21779 Jun 11 04:49 octeon3-pki.c
-rw-r--r-- 1 grommish grommish 37490 Jun 11 04:49 octeon3-pko.c
-rw-r--r-- 1 grommish grommish  8069 Jun 11 04:49 octeon3-sso.c
-rw-r--r-- 1 grommish grommish 42314 May 14 01:57 octeon_mgmt.c

In the octeon3.h file, for example, I have the following entries:

int bgx_port_get_qlm(int node, int bgx, int index);
void bgx_port_set_netdev(struct device *dev, struct net_device *netdev);

Am I missing something? I appreciate any help!

Compile-time error:

mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o: in function `octeon3_eth_remove':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:2019: undefined reference to `bgx_port_set_netdev'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o: in function `octeon3_eth_set_mac_address':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1580: undefined reference to `bgx_port_set_rx_filtering'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o: in function `octeon3_eth_bgx_ndo_stop':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1266: undefined reference to `bgx_port_disable'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o: in function `octeon3_bgx_hwtstamp':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1600: undefined reference to `bgx_port_get_mode'
mips64-openwrt-linux-musl-ld: target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1600: undefined reference to `bgx_port_get_mode'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o: in function `octeon3_ioctl':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1810: undefined reference to `bgx_port_do_ioctl'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o: in function `octeon3_eth_bgx_ndo_open':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1213: undefined reference to `bgx_port_enable'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o: in function `octeon3_eth_bgx_ndo_init':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1037: undefined reference to `bgx_port_get_pknd'
mips64-openwrt-linux-musl-ld: target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1046: undefined reference to `bgx_port_get_mac'
mips64-openwrt-linux-musl-ld: target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1054: undefined reference to `bgx_port_set_rx_filtering'
mips64-openwrt-linux-musl-ld: target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1055: undefined reference to `bgx_port_change_mtu'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o: in function `octeon3_eth_probe':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-core.c:1854: undefined reference to `bgx_port_set_netdev'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o:(.rodata+0x40): undefined reference to `bgx_port_set_rx_filtering'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o:(.rodata+0x68): undefined reference to `bgx_port_change_mtu'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o:(.rodata+0x218): undefined reference to `bgx_port_ethtool_set_settings'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o:(.rodata+0x258): undefined reference to `bgx_port_ethtool_nway_reset'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-core.o:(.rodata+0x3b8): undefined reference to `bgx_port_ethtool_get_link_ksettings'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-pko.o: in function `get_78xx_fifos_required':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-pko.c:635: undefined reference to `bgx_port_get_qlm'
mips64-openwrt-linux-musl-ld: target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-pko.c:656: undefined reference to `bgx_port_get_mode'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-pko.o: in function `get_75xx_fifos_required':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-pko.c:767: undefined reference to `bgx_port_get_qlm'
mips64-openwrt-linux-musl-ld: target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-pko.c:772: undefined reference to `bgx_port_get_mode'
mips64-openwrt-linux-musl-ld: drivers/net/ethernet/cavium/octeon/octeon3-pko.o: in function `get_73xx_fifos_required':
target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-pko.c:868: undefined reference to `bgx_port_get_qlm'
mips64-openwrt-linux-musl-ld: target-mips64_octeon3_64_musl/linux-octeon/linux-4.19.123/drivers/net/ethernet/cavium/octeon/octeon3-pko.c:874: undefined reference to `bgx_port_get_qlm'

The header file just defines the function prototypes, what you're missing is an actual dynamic library, static library or object file to link against which provides symbols for these functions. Maybe you're just missing an -l flag?