X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=app%2Ftest-pmd%2Ftxonly.c;h=1b2f66169d6cb32f09d12e065d2fc8ae3a4bbc63;hb=ea672a8b1655bbb44876d2550ff56f384968a43b;hp=7692cb3d869b6350c7c673a295bb84cd09eced3c;hpb=dada9ef6edc59015b6674b5a95258787c71401b0;p=dpdk.git diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c index 7692cb3d86..1b2f66169d 100644 --- a/app/test-pmd/txonly.c +++ b/app/test-pmd/txonly.c @@ -1,35 +1,34 @@ /*- * BSD LICENSE - * - * Copyright(c) 2010-2012 Intel Corporation. All rights reserved. + * + * Copyright(c) 2010-2014 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. - * */ #include @@ -77,8 +76,8 @@ #define UDP_SRC_PORT 1024 #define UDP_DST_PORT 1024 -#define IP_SRC_ADDR ((192 << 24) | (168 << 16) | (0 << 8) | 1) -#define IP_DST_ADDR ((192 << 24) | (168 << 16) | (0 << 8) | 2) +#define IP_SRC_ADDR ((192U << 24) | (168 << 16) | (0 << 8) | 1) +#define IP_DST_ADDR ((192U << 24) | (168 << 16) | (0 << 8) | 2) #define IP_DEFTTL 64 /* from RFC 1340. */ #define IP_VERSION 0x40 @@ -92,13 +91,10 @@ static inline struct rte_mbuf * tx_mbuf_alloc(struct rte_mempool *mp) { struct rte_mbuf *m; - void *mb; - if (rte_mempool_get(mp, &mb) < 0) - return NULL; - m = (struct rte_mbuf *)mb; - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); - return m; + m = __rte_mbuf_raw_alloc(mp); + __rte_mbuf_sanity_check_raw(m, 0); + return (m); } static void @@ -110,18 +106,18 @@ copy_buf_to_pkt_segs(void* buf, unsigned len, struct rte_mbuf *pkt, unsigned copy_len; seg = pkt; - while (offset >= seg->pkt.data_len) { - offset -= seg->pkt.data_len; - seg = seg->pkt.next; + while (offset >= seg->data_len) { + offset -= seg->data_len; + seg = seg->next; } - copy_len = seg->pkt.data_len - offset; - seg_buf = ((char *) seg->pkt.data + offset); + copy_len = seg->data_len - offset; + seg_buf = ((char *) seg->data + offset); while (len > copy_len) { rte_memcpy(seg_buf, buf, (size_t) copy_len); len -= copy_len; buf = ((char*) buf + copy_len); - seg = seg->pkt.next; - seg_buf = seg->pkt.data; + seg = seg->next; + seg_buf = seg->data; } rte_memcpy(seg_buf, buf, (size_t) len); } @@ -129,8 +125,8 @@ copy_buf_to_pkt_segs(void* buf, unsigned len, struct rte_mbuf *pkt, static inline void copy_buf_to_pkt(void* buf, unsigned len, struct rte_mbuf *pkt, unsigned offset) { - if (offset + len <= pkt->pkt.data_len) { - rte_memcpy(((char *) pkt->pkt.data + offset), buf, (size_t) len); + if (offset + len <= pkt->data_len) { + rte_memcpy(((char *) pkt->data + offset), buf, (size_t) len); return; } copy_buf_to_pkt_segs(buf, len, pkt, offset); @@ -229,18 +225,19 @@ pkt_burst_transmit(struct fwd_stream *fs) return; break; } - pkt->pkt.data_len = tx_pkt_seg_lengths[0]; + pkt->data_len = tx_pkt_seg_lengths[0]; pkt_seg = pkt; for (i = 1; i < tx_pkt_nb_segs; i++) { - pkt_seg->pkt.next = tx_mbuf_alloc(mbp); - if (pkt_seg->pkt.next == NULL) { + pkt_seg->next = tx_mbuf_alloc(mbp); + if (pkt_seg->next == NULL) { + pkt->nb_segs = i; rte_pktmbuf_free(pkt); goto nomore_mbuf; } - pkt_seg = pkt_seg->pkt.next; - pkt_seg->pkt.data_len = tx_pkt_seg_lengths[i]; + pkt_seg = pkt_seg->next; + pkt_seg->data_len = tx_pkt_seg_lengths[i]; } - pkt_seg->pkt.next = NULL; /* Last segment of packet. */ + pkt_seg->next = NULL; /* Last segment of packet. */ /* * Initialize Ethernet header. @@ -263,12 +260,12 @@ pkt_burst_transmit(struct fwd_stream *fs) * Complete first mbuf of packet and append it to the * burst of packets to be transmitted. */ - pkt->pkt.nb_segs = tx_pkt_nb_segs; - pkt->pkt.pkt_len = tx_pkt_length; + pkt->nb_segs = tx_pkt_nb_segs; + pkt->pkt_len = tx_pkt_length; pkt->ol_flags = ol_flags; - pkt->pkt.vlan_tci = vlan_tci; - pkt->pkt.l2_len = sizeof(struct ether_hdr); - pkt->pkt.l3_len = sizeof(struct ipv4_hdr); + pkt->vlan_macip.f.vlan_tci = vlan_tci; + pkt->vlan_macip.f.l2_len = sizeof(struct ether_hdr); + pkt->vlan_macip.f.l3_len = sizeof(struct ipv4_hdr); pkts_burst[nb_pkt] = pkt; } nb_tx = rte_eth_tx_burst(fs->tx_port, fs->tx_queue, pkts_burst, nb_pkt);