You could use a Lattice ECP5 FPGA as a fully programmable/customizable NIC, you'll need an external PHY/transciever, this FPGA has 100% open source tooling available. There's an open source BMC implementation for this FPGA, it should be easy to modify to function as a plain Gigabit PCIe NIC.