Open moriel5 opened 2 years ago
That implies that the card you are using never had the NC-SI feature enabled (possibly not a server card?)
If you use bcmflash without the --ape argument, it should give you details on the card firmware including various settings, and what code directory entries exist. The APE is has Code CPU set to 0x0D. Based on the error message, that implies the APE code directory entry is missing.
In any case, bcmflash doesn't have the ability to rearrange or add entries in the firmware, only to replace them. That said, you can build a new firmware image using bcmflash. For your case, you'll wan to modify utils/bcmflash/create_header.cpp to have a new device, and create the associated nvm_exp182a.cpp file (modeled from nvm_kh08p.c, and information from the firmware dump).
All that said, the replacement APE firmware won't be super useful to you as it only enabled NC-SI via the RMII bus, and not via SMBus, so it won't be usable. You could however, write custom firmware and do things like put a web server in the card, however if you wanted to using the APE.
That implies that the card you are using never had the NC-SI feature enabled (possibly not a server card?)
@meklort That is certainly quite the surprise, however from checking, it appears that the EXP182a was generally placed inside NEC's Express 5800 workstation and NS100Te NAS lineups (there were three options for the networking add-in card, all of them from the same Tigon3 family generation), both of which already included BMCs, so this would explain NC-SI not being enabled.
Also, this except from the EXP182a's manual appears to match this:
Functions (NOT supported)
- Wake On LAN OutOfBox, from Standby, from Sleep, from Hibernation, from suspend or any type of WOL
- PCI EXRESS Hot-plug technology
Network Boot PXE, iSCSI or RPL
For your case, you'll wan to modify utils/bcmflash/create_header.cpp to have a new device, and create the associated nvm_exp182a.cpp file (modeled from nvm_kh08p.c, and information from the firmware dump).
I'll create nvm_exp182a.cpp (at least I'll try to), would you want me to create a pull request with it?
You could however, write custom firmware and do things like put a web server in the card, however if you wanted to using the APE.
That is true, however I am still not at the level that I'll understand what I am even doing, so I'll wait with that until I reach that level (and/or until NC-SI via SMBus is ready).
By the way, how do I set the MAC address value needed? Since I see that it is split into two swap32 values (something that I barely understand at the moment).
I have already replaced the necessary swap16 values for the subsystem GPHYs (SERDES was the same), and I have absolutely no idea what to do with all the UNKNOWN's, nor with all the function configurations that are not immediately obvious.
Also, NEC did something interesting with the EXP182a's stock firmware, where PXE is only enabled on port 0, and the only reference to a VLAN I could find is MBAVLAN, which is disabled on all ports on stock.
Update: NEC had also changed the subsystem vendor ID (but not the subsystem device ID, nor the main device and vendor IDs).
I had just flashed your firmware on my first EXP182a (I know it took a long time, there were delays), and it seems to have gone smoothly (I'm guessing that I am supposed to see information about the firmware, such as the address, offset and CRC checksum, as I am flashing it), however after flashing the APE firmware, it claims that the "Original APE entry was not found in firmware header.".
Is this supposed to happen?