X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=test%2Ftest%2Ftest_link_bonding.c;h=e41ab60d2be9397bc0fedf60c72da724901acf4c;hb=f8244c6399d9;hp=32296604d23d363f71e9010b30a37a32ffb76e8f;hpb=7d3b1ec47fae5b2d972e05d0ee37bb7a1731b085;p=dpdk.git diff --git a/test/test/test_link_bonding.c b/test/test/test_link_bonding.c index 32296604d2..e41ab60d2b 100644 --- a/test/test/test_link_bonding.c +++ b/test/test/test_link_bonding.c @@ -83,7 +83,7 @@ #define MAX_PKT_BURST (512) #define DEF_PKT_BURST (16) -#define BONDED_DEV_NAME ("unit_test_bond_dev") +#define BONDED_DEV_NAME ("net_bonding_ut") #define INVALID_SOCKET_ID (-1) #define INVALID_PORT_ID (-1) @@ -94,9 +94,9 @@ uint8_t slave_mac[] = {0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00 }; uint8_t bonded_mac[] = {0xAA, 0xFF, 0xAA, 0xFF, 0xAA, 0xFF }; struct link_bonding_unittest_params { - int8_t bonded_port_id; - int8_t slave_port_ids[TEST_MAX_NUMBER_OF_PORTS]; - uint8_t bonded_slave_count; + int16_t bonded_port_id; + int16_t slave_port_ids[TEST_MAX_NUMBER_OF_PORTS]; + uint16_t bonded_slave_count; uint8_t bonding_mode; uint16_t nb_rx_q; @@ -172,7 +172,7 @@ struct rte_eth_rxmode rx_mode = { .hw_vlan_strip = 1, /**< VLAN strip enabled. */ .hw_vlan_extend = 0, /**< Extended VLAN disabled. */ .jumbo_frame = 0, /**< Jumbo Frame Support disabled. */ - .hw_strip_crc = 0, /**< CRC stripping by hardware disabled. */ + .hw_strip_crc = 1, /**< CRC stripping by hardware enabled. */ }; struct rte_fdir_conf fdir_conf = { @@ -191,7 +191,7 @@ static struct rte_eth_conf default_pmd_conf = { .hw_ip_checksum = 0, /**< IP checksum offload enabled */ .hw_vlan_filter = 0, /**< VLAN filtering disabled */ .jumbo_frame = 0, /**< Jumbo Frame Support disabled */ - .hw_strip_crc = 0, /**< CRC stripped by hardware */ + .hw_strip_crc = 1, /**< CRC stripped by hardware */ }, .txmode = { .mq_mode = ETH_MQ_TX_NONE, @@ -221,6 +221,10 @@ static struct rte_eth_txconf tx_conf_default = { }; +static void free_virtualpmd_tx_queue(void); + + + static int configure_ethdev(uint8_t port_id, uint8_t start, uint8_t en_isr) { @@ -313,7 +317,7 @@ test_create_bonded_device(void) { int current_slave_count; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; /* Don't try to recreate bonded device if re-running test suite*/ if (test_params->bonded_port_id == -1) { @@ -383,7 +387,7 @@ test_add_slave_to_bonded_device(void) { int current_slave_count; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; TEST_ASSERT_SUCCESS(rte_eth_bond_slave_add(test_params->bonded_port_id, test_params->slave_port_ids[test_params->bonded_slave_count]), @@ -430,7 +434,7 @@ test_remove_slave_from_bonded_device(void) { int current_slave_count; struct ether_addr read_mac_addr, *mac_addr; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; TEST_ASSERT_SUCCESS(rte_eth_bond_slave_remove(test_params->bonded_port_id, test_params->slave_port_ids[test_params->bonded_slave_count-1]), @@ -492,7 +496,7 @@ static int test_add_already_bonded_slave_to_bonded_device(void) { int port_id, current_slave_count; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; char pmd_name[RTE_ETH_NAME_MAX_LEN]; test_add_slave_to_bonded_device(); @@ -524,7 +528,7 @@ static int test_get_slaves_from_bonded_device(void) { int current_slave_count; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; TEST_ASSERT_SUCCESS(test_add_slave_to_bonded_device(), "Failed to add slave to bonded device"); @@ -605,7 +609,7 @@ test_start_bonded_device(void) struct rte_eth_link link_status; int current_slave_count, current_bonding_mode, primary_port; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; /* Add slave to bonded device*/ TEST_ASSERT_SUCCESS(test_add_slave_to_bonded_device(), @@ -654,7 +658,7 @@ static int test_stop_bonded_device(void) { int current_slave_count; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; struct rte_eth_link link_status; @@ -684,6 +688,7 @@ static int remove_slaves_and_stop_bonded_device(void) { /* Clean up and remove slaves from bonded device */ + free_virtualpmd_tx_queue(); while (test_params->bonded_slave_count > 0) TEST_ASSERT_SUCCESS(test_remove_slave_from_bonded_device(), "test_remove_slave_from_bonded_device failed"); @@ -927,7 +932,7 @@ test_set_bonded_port_initialization_mac_assignment(void) { int i, slave_count, bonded_port_id; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; int slave_port_ids[BONDED_INIT_MAC_ASSIGNMENT_SLAVE_COUNT]; struct ether_addr slave_mac_addr, bonded_mac_addr, read_mac_addr; @@ -939,7 +944,7 @@ test_set_bonded_port_initialization_mac_assignment(void) /* * 1. a - Create / configure bonded / slave ethdevs */ - bonded_port_id = rte_eth_bond_create("ethdev_bond_mac_ass_test", + bonded_port_id = rte_eth_bond_create("net_bonding_mac_ass_test", BONDING_MODE_ACTIVE_BACKUP, rte_socket_id()); TEST_ASSERT(bonded_port_id > 0, "failed to create bonded device"); @@ -1109,7 +1114,7 @@ test_set_bonded_port_initialization_mac_assignment(void) static int initialize_bonded_device_with_slaves(uint8_t bonding_mode, uint8_t bond_en_isr, - uint8_t number_of_slaves, uint8_t enable_slave) + uint16_t number_of_slaves, uint8_t enable_slave) { /* Configure bonded device */ TEST_ASSERT_SUCCESS(configure_ethdev(test_params->bonded_port_id, 0, @@ -1173,15 +1178,19 @@ test_adding_slave_after_bonded_device_started(void) int test_lsc_interrupt_count; -static void -test_bonding_lsc_event_callback(uint8_t port_id __rte_unused, - enum rte_eth_event_type type __rte_unused, void *param __rte_unused) +static int +test_bonding_lsc_event_callback(uint16_t port_id __rte_unused, + enum rte_eth_event_type type __rte_unused, + void *param __rte_unused, + void *ret_param __rte_unused) { pthread_mutex_lock(&mutex); test_lsc_interrupt_count++; pthread_cond_signal(&cvar); pthread_mutex_unlock(&mutex); + + return 0; } static inline int @@ -1215,7 +1224,7 @@ static int test_status_interrupt(void) { int slave_count; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; /* initialized bonding device with T slaves */ TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( @@ -1304,7 +1313,7 @@ test_status_interrupt(void) static int generate_test_burst(struct rte_mbuf **pkts_burst, uint16_t burst_size, uint8_t vlan, uint8_t ipv4, uint8_t toggle_dst_mac, - uint8_t toggle_ip_addr, uint8_t toggle_udp_port) + uint8_t toggle_ip_addr, uint16_t toggle_udp_port) { uint16_t pktlen, generated_burst_size, ether_type; void *ip_hdr; @@ -1375,7 +1384,7 @@ test_roundrobin_tx_burst(void) TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_ROUND_ROBIN, 0, 2, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); burst_size = 20 * test_params->bonded_slave_count; @@ -1464,7 +1473,7 @@ test_roundrobin_tx_burst_slave_tx_fail(void) TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_ROUND_ROBIN, 0, TEST_RR_SLAVE_TX_FAIL_SLAVE_COUNT, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); /* Generate test bursts of packets to transmit */ TEST_ASSERT_EQUAL(generate_test_burst(pkt_burst, @@ -1617,9 +1626,6 @@ test_roundrobin_rx_burst_on_single_slave(void) /* free mbufs */ for (i = 0; i < MAX_PKT_BURST; i++) { - if (gen_pkt_burst[i] != NULL) - rte_pktmbuf_free(gen_pkt_burst[i]); - if (rx_pkt_burst[i] != NULL) rte_pktmbuf_free(rx_pkt_burst[i]); } @@ -1848,7 +1854,7 @@ test_roundrobin_verify_slave_link_status_change_behaviour(void) struct rte_mbuf *rx_pkt_burst[MAX_PKT_BURST] = { NULL }; struct rte_eth_stats port_stats; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; int i, burst_size, slave_count; @@ -1966,12 +1972,6 @@ test_roundrobin_verify_slave_link_status_change_behaviour(void) for (i = 0; i < MAX_PKT_BURST; i++) { if (rx_pkt_burst[i] != NULL) rte_pktmbuf_free(rx_pkt_burst[i]); - - if (gen_pkt_burst[1][i] != NULL) - rte_pktmbuf_free(gen_pkt_burst[1][i]); - - if (gen_pkt_burst[3][i] != NULL) - rte_pktmbuf_free(gen_pkt_burst[1][i]); } /* Clean up and remove slaves from bonded device */ @@ -2408,9 +2408,9 @@ test_activebackup_verify_slave_link_status_change_failover(void) struct rte_mbuf *rx_pkt_burst[MAX_PKT_BURST] = { NULL }; struct rte_eth_stats port_stats; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; - int i, j, burst_size, slave_count, primary_port; + int i, burst_size, slave_count, primary_port; burst_size = 21; @@ -2543,16 +2543,6 @@ test_activebackup_verify_slave_link_status_change_failover(void) "(%d) port_stats.opackets not as expected", test_params->slave_port_ids[3]); - /* free mbufs */ - for (i = 0; i < TEST_ACTIVE_BACKUP_RX_BURST_SLAVE_COUNT; i++) { - for (j = 0; j < MAX_PKT_BURST; j++) { - if (pkt_burst[i][j] != NULL) { - rte_pktmbuf_free(pkt_burst[i][j]); - pkt_burst[i][j] = NULL; - } - } - } - /* Clean up and remove slaves from bonded device */ return remove_slaves_and_stop_bonded_device(); } @@ -2785,7 +2775,7 @@ balance_l23_tx_burst(uint8_t vlan_enabled, uint8_t ipv4, static int test_balance_l23_tx_burst_ipv4_toggle_ip_addr(void) { - return balance_l23_tx_burst(0, 1, 1, 0); + return balance_l23_tx_burst(0, 1, 0, 1); } static int @@ -2951,7 +2941,7 @@ test_balance_tx_burst_slave_tx_fail(void) TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BALANCE, 0, TEST_BAL_SLAVE_TX_FAIL_SLAVE_COUNT, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); TEST_ASSERT_SUCCESS(rte_eth_bond_xmit_policy_set( test_params->bonded_port_id, BALANCE_XMIT_POLICY_LAYER2), @@ -3082,7 +3072,7 @@ test_balance_rx_burst(void) /* Initialize bonded device with 4 slaves in round robin mode */ TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BALANCE, 0, 3, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); /* Generate test bursts of packets to transmit */ for (i = 0; i < TEST_BALANCE_RX_BURST_SLAVE_COUNT; i++) { @@ -3161,7 +3151,7 @@ test_balance_verify_promiscuous_enable_disable(void) /* Initialize bonded device with 4 slaves in round robin mode */ TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BALANCE, 0, 4, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); rte_eth_promiscuous_enable(test_params->bonded_port_id); @@ -3204,7 +3194,7 @@ test_balance_verify_mac_assignment(void) /* Initialize bonded device with 2 slaves in active backup mode */ TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BALANCE, 0, 2, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); /* Verify that bonded MACs is that of first slave and that the other slave * MAC hasn't been changed */ @@ -3312,16 +3302,16 @@ test_balance_verify_slave_link_status_change_behaviour(void) struct rte_mbuf *rx_pkt_burst[MAX_PKT_BURST] = { NULL }; struct rte_eth_stats port_stats; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; - int i, j, burst_size, slave_count; + int i, burst_size, slave_count; memset(pkt_burst, 0, sizeof(pkt_burst)); /* Initialize bonded device with 4 slaves in round robin mode */ TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BALANCE, 0, TEST_BALANCE_LINK_STATUS_SLAVE_COUNT, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); TEST_ASSERT_SUCCESS(rte_eth_bond_xmit_policy_set( test_params->bonded_port_id, BALANCE_XMIT_POLICY_LAYER2), @@ -3452,16 +3442,6 @@ test_balance_verify_slave_link_status_change_behaviour(void) test_params->bonded_port_id, (int)port_stats.ipackets, burst_size * 3); - /* free mbufs allocate for rx testing */ - for (i = 0; i < TEST_BALANCE_RX_BURST_SLAVE_COUNT; i++) { - for (j = 0; j < MAX_PKT_BURST; j++) { - if (pkt_burst[i][j] != NULL) { - rte_pktmbuf_free(pkt_burst[i][j]); - pkt_burst[i][j] = NULL; - } - } - } - /* Clean up and remove slaves from bonded device */ return remove_slaves_and_stop_bonded_device(); } @@ -3476,7 +3456,7 @@ test_broadcast_tx_burst(void) TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BROADCAST, 0, 2, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); initialize_eth_header(test_params->pkt_eth_hdr, (struct ether_addr *)src_mac, (struct ether_addr *)dst_mac_0, @@ -3557,7 +3537,7 @@ test_broadcast_tx_burst_slave_tx_fail(void) TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BROADCAST, 0, TEST_BCAST_SLAVE_TX_FAIL_SLAVE_COUNT, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); /* Generate test bursts for transmission */ TEST_ASSERT_EQUAL(generate_test_burst(pkts_burst, @@ -3675,7 +3655,7 @@ test_broadcast_rx_burst(void) /* Initialize bonded device with 4 slaves in round robin mode */ TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BROADCAST, 0, 3, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); /* Generate test bursts of packets to transmit */ for (i = 0; i < BROADCAST_RX_BURST_NUM_OF_SLAVES; i++) { @@ -3754,7 +3734,7 @@ test_broadcast_verify_promiscuous_enable_disable(void) /* Initialize bonded device with 4 slaves in round robin mode */ TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BROADCAST, 0, 4, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); rte_eth_promiscuous_enable(test_params->bonded_port_id); @@ -3800,7 +3780,7 @@ test_broadcast_verify_mac_assignment(void) /* Initialize bonded device with 4 slaves in round robin mode */ TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BROADCAST, 0, 4, 1), - "Failed to intialise bonded device"); + "Failed to initialise bonded device"); /* Verify that all MACs are the same as first slave added to bonded * device */ @@ -3881,16 +3861,16 @@ test_broadcast_verify_slave_link_status_change_behaviour(void) struct rte_mbuf *rx_pkt_burst[MAX_PKT_BURST] = { NULL }; struct rte_eth_stats port_stats; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; - int i, j, burst_size, slave_count; + int i, burst_size, slave_count; memset(pkt_burst, 0, sizeof(pkt_burst)); /* Initialize bonded device with 4 slaves in round robin mode */ TEST_ASSERT_SUCCESS(initialize_bonded_device_with_slaves( BONDING_MODE_BROADCAST, 0, BROADCAST_LINK_STATUS_NUM_OF_SLAVES, - 1), "Failed to intialise bonded device"); + 1), "Failed to initialise bonded device"); /* Verify Current Slaves Count /Active Slave Count is */ slave_count = rte_eth_bond_slaves_get(test_params->bonded_port_id, slaves, @@ -3980,16 +3960,6 @@ test_broadcast_verify_slave_link_status_change_behaviour(void) "(%d) port_stats.ipackets not as expected\n", test_params->bonded_port_id); - /* free mbufs allocate for rx testing */ - for (i = 0; i < BROADCAST_LINK_STATUS_NUM_OF_SLAVES; i++) { - for (j = 0; j < MAX_PKT_BURST; j++) { - if (pkt_burst[i][j] != NULL) { - rte_pktmbuf_free(pkt_burst[i][j]); - pkt_burst[i][j] = NULL; - } - } - } - /* Clean up and remove slaves from bonded device */ return remove_slaves_and_stop_bonded_device(); } @@ -4372,7 +4342,7 @@ test_tlb_verify_mac_assignment(void) /* Set explicit MAC address */ TEST_ASSERT_SUCCESS(rte_eth_bond_mac_address_set( test_params->bonded_port_id, (struct ether_addr *)bonded_mac), - "failed to set MAC addres"); + "failed to set MAC address"); rte_eth_macaddr_get(test_params->bonded_port_id, &read_mac_addr); TEST_ASSERT_SUCCESS(memcmp(&bonded_mac, &read_mac_addr, @@ -4403,9 +4373,9 @@ test_tlb_verify_slave_link_status_change_failover(void) struct rte_mbuf *rx_pkt_burst[MAX_PKT_BURST] = { NULL }; struct rte_eth_stats port_stats; - uint8_t slaves[RTE_MAX_ETHPORTS]; + uint16_t slaves[RTE_MAX_ETHPORTS]; - int i, j, burst_size, slave_count, primary_port; + int i, burst_size, slave_count, primary_port; burst_size = 21; @@ -4523,18 +4493,6 @@ test_tlb_verify_slave_link_status_change_failover(void) "(%d) port_stats.ipackets not as expected\n", test_params->bonded_port_id); - /* free mbufs */ - - for (i = 0; i < TEST_ADAPTIVE_TRANSMIT_LOAD_BALANCING_RX_BURST_SLAVE_COUNT; i++) { - for (j = 0; j < MAX_PKT_BURST; j++) { - if (pkt_burst[i][j] != NULL) { - rte_pktmbuf_free(pkt_burst[i][j]); - pkt_burst[i][j] = NULL; - } - } - } - - /* Clean up and remove slaves from bonded device */ return remove_slaves_and_stop_bonded_device(); }