Bring in a regression for the previous fix from OpenBSD
Well, if you set FSFIXFAT, better do it... Try running fsck on:

    $ newfs_msdos -C 1M ./poc.fs
    $ dd if=/dev/zero of=poc.fs conv=notrunc bs=1 count=1 seek=512

multiple times and see that it does not get fixed.
don't cast void * in c.
Fix some bugs realted to semaphore. This change fixes a problem which
was exposed in if_wm.c rev. 1.271. Tested by riastradh@.
- Clear the SMBI bit in SWSM register before accessing NVM and PHY in
  wm_attach(). Same as FreeBSD.
- Fix a bug that 82573 doesn't put the hardware semaphore. Same as
  FreeBSD r256200.
 Restore the WM_F_EEPROM_SEMAPHORE flags for 82575-I354 and 80003 cases.
The flag was removed in last commit.
Rename some WM_F_* flags to clearify. Renumbering flags. No functional change.

 WM_F_EEPROM_HANDSHAKE -> WM_F_LOCK_EECD
 WM_F_EEPROM_SEMAPHORE -> WM_F_LOCK_SWSM
 WM_F_SWFW_SYNC        -> WM_F_LOCK_SWFW
 WM_F_SWFWHW_SYNC      -> WM_F_LOCK_EXTCNF
Fix compile error.