diff --git a/packages/ti/drv/emac/test/EmacLoopbackTest/test_utils_k3.c b/packages/ti/drv/emac/test/EmacLoopbackTest/test_utils_k3.c
index da992f4981a8cf093cbd9766bf6755d23fb54d7f..d923cda242e515bac5d7bd96a5f94d566709a26e 100644 (file)
extern uint32_t endPort;
extern int port_en[];
+#ifdef APP_TEST_ENABLE_POLL_CTRL_TIMER
+extern SemaphoreP_Handle gAppTestPollCtrlTimerSem;
+#endif
+
/**********************************************************************
************************** Global Variables **************************
**********************************************************************/
static uint8_t gAppTestSequenceNumber = 1;
#ifdef EMAC_TEST_APP_ICSSG
+#define EMAC_ICSSG_DUAL_MAC_FW_BUFER_POOL_SIZE_PG2 0X14000 // 8 BUFFER POOLS EACH 0X2000 BYTES PLUS 0X4000 BYTES FOR RX Q CONTEXT info
+#define EMAC_ICSSG_BUFFER_POOL_SIZE_PG2 0x2000u
+#define EMAC_ICSSG_MAX_NUM_BUFFER_POOLS_PG2 8u
+
#ifdef SOC_J721E
uint8_t icss_tx_port_queue[2][100352] __attribute__ ((aligned (UDMA_CACHELINE_ALIGNMENT))) __attribute__ ((section (".bss:emac_ocmc_mem")));
#else
@@ -109,9 +117,6 @@ uint8_t icss_tx_port_queue[1][100352] __attribute__ ((aligned (UDMA_CACHELINE_AL
#ifdef EMAC_BENCHMARK
uint8_t icss_tx_port_queue[1][100352] __attribute__ ((aligned (UDMA_CACHELINE_ALIGNMENT))) __attribute__ ((section (".bss:emac_msmc_mem")));
#else /* test all port for DUAL MAC */
-#define EMAC_ICSSG_DUAL_MAC_FW_BUFER_POOL_SIZE_PG2 0X14000 // 8 BUFFER POOLS EACH 0X2000 BYTES PLUS 0X4000 BYTES FOR RX Q CONTEXT info
-#define EMAC_ICSSG_BUFFER_POOL_SIZE_PG2 0x2000u
-#define EMAC_ICSSG_MAX_NUM_BUFFER_POOLS_PG2 8u
uint8_t icss_tx_port_queue[6][EMAC_ICSSG_DUAL_MAC_FW_BUFER_POOL_SIZE_PG2] __attribute__ ((aligned (UDMA_CACHELINE_ALIGNMENT))) __attribute__ ((section (".bss:emac_msmc_mem")));
#endif
#endif
void app_test_wait_mgmt_resp(uint32_t waitTimeMilliSec);
uint32_t pollModeEnabled = 0;
-uint32_t linkStatus = 0;
uint32_t initComplete = 0;
uint32_t app_test_id = 0;
#if defined (EMAC_BENCHMARK)
#endif
}
-
-
/******************************************************************************
* Function: EMAC RX timestamp_response back function
******************************************************************************/
@@ -752,7 +754,6 @@ void app_test_ts_response_cb(uint32_t port_num, uint32_t ts_id, uint64_t ts, boo
void app_test_task_poll_pkt (UArg arg0, UArg arg1)
{
uint32_t port = (uint32_t) arg0;
- linkStatus = 1;
while(initComplete == 0)
{
Task_sleep(1);
}
}
+#ifdef APP_TEST_ENABLE_POLL_CTRL_TIMER
void app_test_task_poll_ctrl (UArg arg0, UArg arg1)
{
- uint32_t port = (uint32_t) arg0;
+ uint32_t pNum = 0;
#ifdef EMAC_TEST_APP_ICSSG
- uint32_t mgmtRings =0x7;
- uint32_t pktRings =0x1ff;
- uint32_t txRings = 0xf;
+ uint32_t mgmtRings =EMAC_POLL_RX_MGMT_RING2 | EMAC_POLL_RX_MGMT_RING3;
+ uint32_t pktRings =EMAC_POLL_RX_PKT_RING1 | EMAC_POLL_RX_PKT_RING2;
+ uint32_t txRings = EMAC_POLL_TX_COMPLETION_RING_ALL;
+#else
+ uint32_t mgmtRings =0x0;
+ uint32_t pktRings =EMAC_POLL_RX_PKT_RING1;
+ uint32_t txRings = EMAC_POLL_TX_COMPLETION_RING1;
+#endif
+ while(initComplete == 0)
+ {
+ Task_sleep(1);
+ }
+
+ UART_printf("app_test_task_poll_ctrl: timer based polling\n");
+ while(1)
+ {
+ SemaphoreP_pend(gAppTestPollCtrlTimerSem, BIOS_WAIT_FOREVER);
+
+ for (pNum = portNum; pNum <= endPort; pNum++)
+ {
+ if (!port_en[pNum])
+ continue;
+ emac_poll_ctrl (pNum, pktRings, mgmtRings, txRings);
+ }
+ }
+}
+#else
+void app_test_task_poll_ctrl (UArg arg0, UArg arg1)
+{
+ uint32_t pNum;
+#ifdef EMAC_TEST_APP_ICSSG
+ uint32_t mgmtRings =EMAC_POLL_RX_MGMT_RING2 | EMAC_POLL_RX_MGMT_RING3;
+ uint32_t pktRings =EMAC_POLL_RX_PKT_RING1 | EMAC_POLL_RX_PKT_RING2;
+ uint32_t txRings = EMAC_POLL_TX_COMPLETION_RING_ALL;
#else
uint32_t mgmtRings =0x0;
- uint32_t pktRings =0x1;
- uint32_t txRings = 0x0;
+ uint32_t pktRings =EMAC_POLL_RX_PKT_RING1;
+ uint32_t txRings = EMAC_POLL_TX_COMPLETION_RING1;
#endif
- linkStatus = 1;
while(initComplete == 0)
{
Task_sleep(1);
}
- UART_printf("polling all pkts on port: %d\n", port);
+ UART_printf("app_test_task_poll_ctrl: sleep polling\n");
while(1)
{
- if (pollModeEnabled == 1)
- emac_poll_ctrl(port, pktRings,mgmtRings,txRings);
- else
- emac_poll_ctrl(port, 0,EMAC_POLL_RX_MGMT_RING2,txRings);
- Task_sleep(2);
+ for (pNum = portNum; pNum <= endPort; pNum++)
+ {
+ if (!port_en[pNum])
+ continue;
+ if (pollModeEnabled == 1)
+ {
+ emac_poll_ctrl(pNum, pktRings,mgmtRings,txRings);
+ }
+ else
+ {
+ emac_poll_ctrl(pNum, 0,EMAC_POLL_RX_MGMT_RING2,txRings);
+ }
+ Task_sleep(2);
+ }
}
}
+#endif
+
int32_t emac_send_fail = 0;
open_cfg.free_pkt_cb = app_free_pkt;
open_cfg.rx_pkt_cb = app_test_rx_pkt_cb;
open_cfg.tx_ts_cb = app_test_ts_response_cb;
+ open_cfg.drv_trace_cb = NULL;
open_cfg.rx_mgmt_response_cb = app_test_rx_mgmt_response_cb;
open_cfg.loop_back = 0U;
/* Only need to enbale loopback for CPSW test application and when not doing benchmark testing */
{
for (pNum = startP; pNum <= endP; pNum++)
{
+ if (!port_en[pNum])
+ continue;
params.subCommand = EMAC_IOCTL_PORT_STATE_FORWARD;
params.seqNumber = gAppTestSequenceNumber++;
retVal = emac_ioctl(pNum, EMAC_IOCTL_PORT_STATE_CTRL, ¶ms);