X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Fconfig.c;h=255f82d43d3469631aa79b0ca9c822c8f7369541;hb=836853d3d4cf7b7dc111b1d4b5ce503423c66be5;hp=66fcd745bd7a0e0f9c385b92e2d5fcfb9a9c978a;hpb=529ba951029e36857c895335226cc9350511be3a;p=dpdk.git diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 66fcd745bd..255f82d43d 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -503,6 +503,19 @@ 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. */ @@ -568,23 +581,78 @@ union igb_ring_dword { } words; }; -struct igb_ring_desc { +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; }; +struct igb_ring_desc_16_bytes { + union igb_ring_dword lo_dword; + union igb_ring_dword hi_dword; +}; + +static void +ring_rxd_display_dword(union igb_ring_dword dword) +{ + printf(" 0x%08X - 0x%08X\n", (unsigned)dword.words.lo, + (unsigned)dword.words.hi); +} + +static void +ring_rx_descriptor_display(const struct rte_memzone *ring_mz, +#ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC + uint8_t port_id, +#else + __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_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 + /* 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_descriptor_display(const struct rte_memzone *ring_mz, uint16_t desc_id) +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 @@ -601,7 +669,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_descriptor_display(rx_mz, rxd_id); + ring_rx_descriptor_display(rx_mz, port_id, rxd_id); } void @@ -618,7 +686,7 @@ tx_ring_desc_display(portid_t port_id, queueid_t txq_id, uint16_t txd_id) tx_mz = ring_dma_zone_lookup("tx_ring", port_id, txq_id); if (tx_mz == NULL) return; - ring_descriptor_display(tx_mz, txd_id); + ring_tx_descriptor_display(tx_mz, txd_id); } void