diff options
| author | Lojewski, Evan <github@meklort.com> | 2019-05-11 08:33:02 -0600 |
|---|---|---|
| committer | Lojewski, Evan <github@meklort.com> | 2019-05-11 08:33:02 -0600 |
| commit | 19769773c64d0371031c65dee2917cfb9ac803d7 (patch) | |
| tree | 930f98fb33dbf595d2fbcc6148d1c1bf0024e7ea /libs/Network/include | |
| parent | bc89c73168282c7de5eaa1ae836f3c1bd3c3fc5e (diff) | |
| download | bcm5719-ortega-19769773c64d0371031c65dee2917cfb9ac803d7.tar.gz bcm5719-ortega-19769773c64d0371031c65dee2917cfb9ac803d7.zip | |
Refactor network tx/rx code to allow a port structure allowing more ports than just the first to be used.
Diffstat (limited to 'libs/Network/include')
| -rw-r--r-- | libs/Network/include/Network.h | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/libs/Network/include/Network.h b/libs/Network/include/Network.h index 06bd57f..92074b4 100644 --- a/libs/Network/include/Network.h +++ b/libs/Network/include/Network.h @@ -45,25 +45,54 @@ #ifndef NETWORK_H #define NETWORK_H +#include <APE_APE.h> #include <APE_APE_PERI.h> +#include <APE_TX_PORT0.h> +#include <APE_RX_PORT0.h> +#include <APE_TX_PORT1.h> +#include <APE_RX_PORT1.h> +#include <APE_TX_PORT2.h> +#include <APE_RX_PORT2.h> +#include <APE_TX_PORT3.h> +#include <APE_RX_PORT3.h> #include <stdbool.h> #include <stdint.h> +typedef struct { + /* TX Registers */ + volatile RegAPETxToNetPoolModeStatus_t *tx_mode; + volatile TX_PORT_t * tx_port; + volatile RegAPETxToNetBufferAllocator_t *tx_allocator; + volatile RegAPETxToNetDoorbell_t *tx_doorbell; + + /* RX Registers */ + volatile RegAPERxPoolModeStatus_t *rx_mode; + volatile RX_PORT_t *rx_port; + volatile RegAPERxbufoffset_t *rx_offset; + volatile RegAPERxPoolRetire_t *rx_retire; +} NetworkPort_t; + + +extern NetworkPort_t gPort0; +extern NetworkPort_t gPort1; +extern NetworkPort_t gPort2; +extern NetworkPort_t gPort3; + void Network_InitTxRx(void); uint32_t Network_TX_numBlocksNeeded(uint32_t frame_size); -int32_t Network_TX_allocateBlock(void); +int32_t Network_TX_allocateBlock(NetworkPort_t *port); -void Network_TX_transmitBePacket(uint8_t *packet, uint32_t length); -void Network_TX_transmitLePacket(uint8_t *packet, uint32_t length); +void Network_TX_transmitBePacket(uint8_t *packet, uint32_t length, NetworkPort_t *port); +void Network_TX_transmitLePacket(uint8_t *packet, uint32_t length, NetworkPort_t *port); -void Network_TX_transmitPassthroughPacket(uint32_t length); +void Network_TX_transmitPassthroughPacket(uint32_t length, NetworkPort_t* port); // void Network_TX_transmitPassthroughPacket(RegAPE_PERIBmcToNcRxStatus_t // rx_status); -bool Network_RxLePatcket(uint32_t *buffer, uint32_t *length); -bool Network_PassthroughRxPatcket(void); +bool Network_RxLePatcket(uint32_t *buffer, uint32_t *length, NetworkPort_t *port); +bool Network_PassthroughRxPatcket(NetworkPort_t *port); void Network_SetMACAddr(uint16_t high, uint32_t low, uint32_t index, bool enabled); |

