We did this recently in project mu, trying to find exactly the changes needed but I recall the following:
Mac Address needs to be programmed before network stack fully loads (pretty sure I only got it working in DXE), possible to add changes from this PR and have an event callback to set mac address