Seems to sane to me, by my quick read.My only comment is: if invalid MAC address, generate a random one using get_random_bytes() like some other net drivers do, rather than just failing.
Users should be able to use the NIC even if the MAC is invalid -- after all, they can set one using ifconfig even if it is not available at driver load time.
Jeff