X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Fconfig.c;h=606e34a85b3900d612a6a0396c38c3b14efea2d7;hb=5f4ec54f1d161dd9c9b0c9d45f22724b04e1cd73;hp=b654eb8647c464e1368a4dce4475d485cfd08fe0;hpb=ac2ece3fb1f5511b96b595d6cd6861d25520b99b;p=dpdk.git diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index b654eb8647..606e34a85b 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -252,6 +252,7 @@ void port_infos_display(portid_t port_id) { struct rte_port *port; + struct ether_addr mac_addr; struct rte_eth_link link; int vlan_offload; struct rte_mempool * mp; @@ -265,7 +266,8 @@ port_infos_display(portid_t port_id) rte_eth_link_get_nowait(port_id, &link); printf("\n%s Infos for port %-2d %s\n", info_border, port_id, info_border); - print_ethaddr("MAC address: ", &port->eth_addr); + rte_eth_macaddr_get(port_id, &mac_addr); + print_ethaddr("MAC address: ", &mac_addr); printf("\nConnect to socket: %u", port->socket_id); if (port_numa[port_id] != NUMA_NO_CONFIG) { @@ -309,7 +311,7 @@ port_infos_display(portid_t port_id) } } -static int +int port_id_is_invalid(portid_t port_id) { if (port_id < nb_ports) @@ -503,10 +505,23 @@ port_reg_set(portid_t port_id, uint32_t reg_off, uint32_t reg_v) display_port_reg_value(port_id, reg_off, reg_v); } +void +port_mtu_set(portid_t port_id, uint16_t mtu) +{ + int diag; + + if (port_id_is_invalid(port_id)) + return; + diag = rte_eth_dev_set_mtu(port_id, mtu); + if (diag == 0) + return; + printf("Set MTU failed. diag=%d\n", diag); +} + /* * RX/TX ring descriptors display functions. */ -static int +int rx_queue_id_is_invalid(queueid_t rxq_id) { if (rxq_id < nb_rxq) @@ -515,7 +530,7 @@ rx_queue_id_is_invalid(queueid_t rxq_id) return 1; } -static int +int tx_queue_id_is_invalid(queueid_t txq_id) { if (txq_id < nb_txq) @@ -550,7 +565,7 @@ ring_dma_zone_lookup(const char *ring_name, uint8_t port_id, uint16_t q_id) char mz_name[RTE_MEMZONE_NAMESIZE]; const struct rte_memzone *mz; - rte_snprintf(mz_name, sizeof(mz_name), "%s_%s_%d_%d", + snprintf(mz_name, sizeof(mz_name), "%s_%s_%d_%d", ports[port_id].dev_info.driver_name, ring_name, port_id, q_id); mz = rte_memzone_lookup(mz_name); if (mz == NULL) @@ -568,53 +583,78 @@ union igb_ring_dword { } words; }; -#ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC -struct igb_ring_desc_32B { +struct igb_ring_desc_32_bytes { union igb_ring_dword lo_dword; union igb_ring_dword hi_dword; union igb_ring_dword resv1; union igb_ring_dword resv2; }; -#endif -struct igb_ring_desc { +struct igb_ring_desc_16_bytes { union igb_ring_dword lo_dword; union igb_ring_dword hi_dword; }; static void -ring_rx_descriptor_display(const struct rte_memzone *ring_mz, uint16_t desc_id) +ring_rxd_display_dword(union igb_ring_dword dword) { -#ifdef RTE_LIBRTE_I40E_16BYTE_RX_DESC - struct igb_ring_desc *ring; - struct igb_ring_desc rd; + printf(" 0x%08X - 0x%08X\n", (unsigned)dword.words.lo, + (unsigned)dword.words.hi); +} - ring = (struct igb_ring_desc *) ring_mz->addr; +static void +ring_rx_descriptor_display(const struct rte_memzone *ring_mz, +#ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC + uint8_t port_id, #else - struct igb_ring_desc_32B *ring; - struct igb_ring_desc_32B rd; + __rte_unused uint8_t port_id, +#endif + uint16_t desc_id) +{ + struct igb_ring_desc_16_bytes *ring = + (struct igb_ring_desc_16_bytes *)ring_mz->addr; +#ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC + struct rte_eth_dev_info dev_info; + + memset(&dev_info, 0, sizeof(dev_info)); + rte_eth_dev_info_get(port_id, &dev_info); + if (strstr(dev_info.driver_name, "i40e") != NULL) { + /* 32 bytes RX descriptor, i40e only */ + struct igb_ring_desc_32_bytes *ring = + (struct igb_ring_desc_32_bytes *)ring_mz->addr; - ring = (struct igb_ring_desc_32B *) ring_mz->addr; + ring_rxd_display_dword(rte_le_to_cpu_64( + ring[desc_id].lo_dword)); + ring_rxd_display_dword(rte_le_to_cpu_64( + ring[desc_id].hi_dword)); + ring_rxd_display_dword(rte_le_to_cpu_64( + ring[desc_id].resv1)); + ring_rxd_display_dword(rte_le_to_cpu_64( + ring[desc_id].resv2)); + return; + } #endif - rd.lo_dword = rte_le_to_cpu_64(ring[desc_id].lo_dword); - rd.hi_dword = rte_le_to_cpu_64(ring[desc_id].hi_dword); - printf(" 0x%08X - 0x%08X / 0x%08X - 0x%08X\n", - (unsigned)rd.lo_dword.words.lo, (unsigned)rd.lo_dword.words.hi, - (unsigned)rd.hi_dword.words.lo, (unsigned)rd.hi_dword.words.hi); + /* 16 bytes RX descriptor */ + ring_rxd_display_dword(rte_le_to_cpu_64( + ring[desc_id].lo_dword)); + ring_rxd_display_dword(rte_le_to_cpu_64( + ring[desc_id].hi_dword)); } static void ring_tx_descriptor_display(const struct rte_memzone *ring_mz, uint16_t desc_id) { - struct igb_ring_desc *ring; - struct igb_ring_desc rd; + struct igb_ring_desc_16_bytes *ring; + struct igb_ring_desc_16_bytes txd; - ring = (struct igb_ring_desc *) ring_mz->addr; - rd.lo_dword = rte_le_to_cpu_64(ring[desc_id].lo_dword); - rd.hi_dword = rte_le_to_cpu_64(ring[desc_id].hi_dword); + ring = (struct igb_ring_desc_16_bytes *)ring_mz->addr; + txd.lo_dword = rte_le_to_cpu_64(ring[desc_id].lo_dword); + txd.hi_dword = rte_le_to_cpu_64(ring[desc_id].hi_dword); printf(" 0x%08X - 0x%08X / 0x%08X - 0x%08X\n", - (unsigned)rd.lo_dword.words.lo, (unsigned)rd.lo_dword.words.hi, - (unsigned)rd.hi_dword.words.lo, (unsigned)rd.hi_dword.words.hi); + (unsigned)txd.lo_dword.words.lo, + (unsigned)txd.lo_dword.words.hi, + (unsigned)txd.hi_dword.words.lo, + (unsigned)txd.hi_dword.words.hi); } void @@ -631,7 +671,7 @@ rx_ring_desc_display(portid_t port_id, queueid_t rxq_id, uint16_t rxd_id) rx_mz = ring_dma_zone_lookup("rx_ring", port_id, rxq_id); if (rx_mz == NULL) return; - ring_rx_descriptor_display(rx_mz, rxd_id); + ring_rx_descriptor_display(rx_mz, port_id, rxd_id); } void