diff options
| author | Evan Lojewski <github@meklort.com> | 2020-02-24 19:15:50 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-24 19:15:50 -0700 |
| commit | 3e7384db84d3874da1803fe3cced6cf3a87a5c63 (patch) | |
| tree | f11ec180efccc7f56f88abcec7f94fb67236afcd /libs/Network | |
| parent | 386395007c279216b0f5cfe24649e3b9ade5e393 (diff) | |
| download | bcm5719-ortega-3e7384db84d3874da1803fe3cced6cf3a87a5c63.tar.gz bcm5719-ortega-3e7384db84d3874da1803fe3cced6cf3a87a5c63.zip | |
ncsi: Record MAC addresses to SHM. (#40)
Diffstat (limited to 'libs/Network')
| -rw-r--r-- | libs/Network/generic.c | 55 |
1 files changed, 35 insertions, 20 deletions
diff --git a/libs/Network/generic.c b/libs/Network/generic.c index dbdae95..3c5c62e 100644 --- a/libs/Network/generic.c +++ b/libs/Network/generic.c @@ -50,26 +50,41 @@ void Network_SetMACAddr(NetworkPort_t *port, uint16_t high, uint32_t low, uint32 uint32_t match_high = (high << 16) | (low >> 16); uint16_t match_low = (low << 16); - APE_PERI.BmcToNcSourceMacMatch0High.r32 = match_high; - APE_PERI.BmcToNcSourceMacMatch1High.r32 = match_high; - APE_PERI.BmcToNcSourceMacMatch2High.r32 = match_high; - APE_PERI.BmcToNcSourceMacMatch3High.r32 = match_high; - APE_PERI.BmcToNcSourceMacMatch4High.r32 = match_high; - APE_PERI.BmcToNcSourceMacMatch5High.r32 = match_high; - APE_PERI.BmcToNcSourceMacMatch6High.r32 = match_high; - APE_PERI.BmcToNcSourceMacMatch7High.r32 = match_high; - APE_PERI.BmcToNcSourceMacMatch0Low.r32 = match_low; - APE_PERI.BmcToNcSourceMacMatch1Low.r32 = match_low; - APE_PERI.BmcToNcSourceMacMatch2Low.r32 = match_low; - APE_PERI.BmcToNcSourceMacMatch3Low.r32 = match_low; - APE_PERI.BmcToNcSourceMacMatch4Low.r32 = match_low; - APE_PERI.BmcToNcSourceMacMatch5Low.r32 = match_low; - APE_PERI.BmcToNcSourceMacMatch6Low.r32 = match_low; - APE_PERI.BmcToNcSourceMacMatch7Low.r32 = match_low; - - if (port) + switch(index) { - port->device->PerfectMatch1High.r32 = high; - port->device->PerfectMatch1Low.r32 = low; + case 0: + APE_PERI.BmcToNcSourceMacMatch0High.r32 = match_high; + APE_PERI.BmcToNcSourceMacMatch0Low.r32 = match_low; + port->shm_channel->NcsiChannelMac0High.r32 = high; + port->shm_channel->NcsiChannelMac0Mid.r32 = low >> 16; + port->shm_channel->NcsiChannelMac0Low.r32 = low & 0xff; + break; + + case 1: + APE_PERI.BmcToNcSourceMacMatch1High.r32 = match_high; + APE_PERI.BmcToNcSourceMacMatch1Low.r32 = match_low; + port->shm_channel->NcsiChannelMac1High.r32 = high; + port->shm_channel->NcsiChannelMac1Mid.r32 = low >> 16; + port->shm_channel->NcsiChannelMac1Low.r32 = low & 0xff; + break; + + case 2: + APE_PERI.BmcToNcSourceMacMatch2High.r32 = match_high; + APE_PERI.BmcToNcSourceMacMatch2Low.r32 = match_low; + port->shm_channel->NcsiChannelMac2High.r32 = high; + port->shm_channel->NcsiChannelMac2Mid.r32 = low >> 16; + port->shm_channel->NcsiChannelMac2Low.r32 = low & 0xff; + break; + + case 3: + APE_PERI.BmcToNcSourceMacMatch3High.r32 = match_high; + APE_PERI.BmcToNcSourceMacMatch3Low.r32 = match_low; + port->shm_channel->NcsiChannelMac3High.r32 = high; + port->shm_channel->NcsiChannelMac3Mid.r32 = low >> 16; + port->shm_channel->NcsiChannelMac3Low.r32 = low & 0xff; + break; } + + port->device->PerfectMatch1High.r32 = high; + port->device->PerfectMatch1Low.r32 = low; } |

