X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Fconfig.c;h=50657df18358a80c1025b6add8e4103522b4f13b;hb=1c1d4d7a923d4804f1926fc5264f9ecdd8977b04;hp=f85540c76208fcd2abe54326a04365d4d834695d;hpb=c866aaa8544958bbed247addb5c1db530bb133dd;p=dpdk.git diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index f85540c762..50657df183 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1,35 +1,34 @@ /*- * BSD LICENSE * - * Copyright(c) 2010-2012 Intel Corporation. All rights reserved. + * Copyright(c) 2010-2013 Intel Corporation. All rights reserved. * All rights reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions * are met: * - * * Redistributions of source code must retain the above copyright + * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the * distribution. - * * Neither the name of Intel Corporation nor the names of its - * contributors may be used to endorse or promote products derived + * * Neither the name of Intel Corporation nor the names of its + * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * */ /* BSD LICENSE * @@ -237,6 +236,8 @@ port_infos_display(portid_t port_id) struct rte_port *port; struct rte_eth_link link; int vlan_offload; + int socket_id; + struct rte_mempool * mp; static const char *info_border = "*********************"; if (port_id >= nb_ports) { @@ -245,9 +246,20 @@ port_infos_display(portid_t port_id) } port = &ports[port_id]; rte_eth_link_get_nowait(port_id, &link); + socket_id = rte_eth_dev_socket_id(port_id); printf("\n%s Infos for port %-2d %s\n", info_border, port_id, info_border); print_ethaddr("MAC address: ", &port->eth_addr); + printf("\nConnect to socket: %d",socket_id); + + if (port_numa[port_id] != NUMA_NO_CONFIG) { + mp = mbuf_pool_find(port_numa[port_id]); + if (mp) + printf("\nmemory allocation on the socket: %d", + port_numa[port_id]); + } else + printf("\nmemory allocation on the socket: %d",socket_id); + printf("\nLink status: %s\n", (link.link_status) ? ("up") : ("down")); printf("Link speed: %u Mbps\n", (unsigned) link.link_speed); printf("Link duplex: %s\n", (link.link_duplex == ETH_LINK_FULL_DUPLEX) ? @@ -308,7 +320,7 @@ port_reg_off_is_invalid(portid_t port_id, uint32_t reg_off) (unsigned)reg_off); return 1; } - pci_len = ports[port_id].dev_info.pci_dev->mem_resource.len; + pci_len = ports[port_id].dev_info.pci_dev->mem_resource[0].len; if (reg_off >= pci_len) { printf("Port %d: register offset %u (0x%X) out of port PCI " "resource (length=%"PRIu64")\n", @@ -627,6 +639,40 @@ rxtx_config_display(void) tx_rs_thresh, txq_flags); } +void +port_rss_reta_info(portid_t port_id,struct rte_eth_rss_reta *reta_conf) +{ + uint8_t i,j; + int ret; + + if (port_id_is_invalid(port_id)) + return; + + ret = rte_eth_dev_rss_reta_query(port_id, reta_conf); + if (ret != 0) { + printf("Failed to get RSS RETA info, return code = %d\n", ret); + return; + } + + if (reta_conf->mask_lo != 0) { + for (i = 0; i< ETH_RSS_RETA_NUM_ENTRIES/2; i++) { + if (reta_conf->mask_lo & (uint64_t)(1ULL << i)) + printf("RSS RETA configuration: hash index=%d," + "queue=%d\n",i,reta_conf->reta[i]); + } + } + + if (reta_conf->mask_hi != 0) { + for (i = 0; i< ETH_RSS_RETA_NUM_ENTRIES/2; i++) { + if(reta_conf->mask_hi & (uint64_t)(1ULL << i)) { + j = (uint8_t)(i + ETH_RSS_RETA_NUM_ENTRIES/2); + printf("RSS RETA configuration: hash index=%d," + "queue=%d\n",j,reta_conf->reta[j]); + } + } + } +} + /* * Setup forwarding configuration for each logical core. */ @@ -650,7 +696,6 @@ setup_fwd_config_of_each_lcore(struct fwd_config *cfg) nb_fs_per_lcore = (streamid_t) (nb_fs / nb_fc); nb_extra = (lcoreid_t) (nb_fs % nb_fc); } - nb_extra = (lcoreid_t) (nb_fs % nb_fc); nb_lc = (lcoreid_t) (nb_fc - nb_extra); sm_id = 0; @@ -848,7 +893,7 @@ dcb_rxq_2_txq_mapping(queueid_t rxq, queueid_t *txq) * - TxPk = (RxPi + 1) if RxPi is even, (RxPi - 1) if RxPi is odd * - TxQl = RxQj * In non-VT mode, - * - TxPk = (RxPi + 1) if RxPi is even, (RxPi - 1) if RxPi is odd + * - TxPk = (RxPi + 1) if RxPi is even, (RxPi - 1) if RxPi is odd * There is a mapping of RxQj to TxQl to be required,and the mapping was implemented * in dcb_rxq_2_txq_mapping function. */