и на счёт "_start" не очень понятно... если это функции запуска обмена с физикой БЕЗ ожидания результата,
то таковой м.б. только последяя функция:
//заканчиваем диагностику
ETH_WritePHYRegister_start(DP83848_PHY_ADDRESS, PHYcONTROL2_REG, 0x8100);
А использование таковой при переключении между парами, скорее всего приведёт к ошибке.
//здесь диагностируем пару 36
3:
ETH_WritePHYRegister_start(DP83848_PHY_ADDRESS, PHYcONTROL2_REG, 0x6100);
диагностика пары 36 по алгоритму пары 12