From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 76007A04C7 for ; Mon, 14 Sep 2020 18:03:40 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 51F391BE98; Mon, 14 Sep 2020 18:03:39 +0200 (CEST) Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) by dpdk.org (Postfix) with ESMTP id E7C791BE95 for ; Mon, 14 Sep 2020 18:03:37 +0200 (CEST) Received: by mail-ej1-f50.google.com with SMTP id lo4so711282ejb.8 for ; Mon, 14 Sep 2020 09:03:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=HLNbArkazqLsmPOCaUvs5EhdeMltuWd67zjIseu9JF0=; b=VngW/2kFhKdyMPmePJhHmFjkQI5V8lYLNe5xMc5Xnfn+g9dDB2JXyLvYykREDCuHgD OSXLKZe5TjgCOP/zi/ZLsbxDTBBKLkOBZuXJ8cZenPpLjA3U5fUmO5CYITer8XojVOBs 2IvTgTAoeC00e6EyNSMs73HaaOuzY79EmUfs9sNBPlNUQ2HyRc0hiDbcKo6xYpK208Ox eVmGRMGYm1zeBO7V9WsxG0Zb8km6mC9RhA56REod+q1O+8K013PRHaI0jVJKiYw8zNAr 47MgUc7FrjLyJ7XuxeR7X7+Bg3VVL65tMvw3BRnVn5/hC0xUx5QBmslLFv1sG2O95bNb OyWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=HLNbArkazqLsmPOCaUvs5EhdeMltuWd67zjIseu9JF0=; b=MbI0HAWxQ8r+bVtIN38IZ54lUty1cEeqJxf91I6/U+7rk9clRaoiDXQc58qiB5uWz1 se7VdcNj3Wci91qVOC80DclI1UQbI/dAiH7fVnp2jE/bwTSywlpst3fN8lT8GSPMfp11 S7qP4MdpzOIEBc/0/2oDqLf2g+5Z9BhK0KGv53/m4vp+6cLmAO5Iq0oLdu25/JCrsD8M o0eIVAU8GFXXnkWKKM1jnQrX9RQYFVr4p+XVot10q0irWYweMxuWEfIRMlN1sVJIMj2J KY5ZvBws0AiNV2260aEIB1ciwkKq3PaJkHCK+ikO5dEQ44trjj6bIyaELfOIlEfNqwWS PQxA== X-Gm-Message-State: AOAM530HcA5D2ok8Bcqkr2C4Sv3aYqFYxM/+TyhqH7PEYpzU/sUx+Y7W DNiQ30o7cH3cKozG88h4JPYbyzhnHs9gVoVjms4= X-Google-Smtp-Source: ABdhPJwg15fObKuWeZ4+2o5xDUxIRZUoXy3GNk3JltW/MUAJDNB9Xzp7Gy6G+S3oIzMjtUOrLqTHqbgeNsqzkidtb6Y= X-Received: by 2002:a17:906:594c:: with SMTP id g12mr15940667ejr.347.1600099417642; Mon, 14 Sep 2020 09:03:37 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ravi Tandon Date: Mon, 14 Sep 2020 18:03:26 +0200 Message-ID: To: "Wiles, Keith" Cc: "users@dpdk.org" Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-users] Replicating PCAP packets read by pktgen for multiple source addresses X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org Sender: "users" Thanks Keith. I updated the refcnt and it worked. Regards, Ravi On Mon, Sep 14, 2020 at 3:30 PM Wiles, Keith wrote: > You can edit the packet in the function below, but you have to do that > action everytime. Freeing the mbuf I sok, you can look into the refcnt > value in the mbuf if you want tx_burst to not free the packet completely. > > > > *From: *users > *Date: *Sunday, September 13, 2020 at 5:00 PM > *To: *users@dpdk.org > *Subject: *[dpdk-users] Replicating PCAP packets read by pktgen for > multiple source addresses > > Hi, > > I want to use pktgen to read a pcap file and play that pcap file say 10 > times by editing the source IP address for each run, please let me know > what's the best way of doing this. > > I first thought of editing the source IP in the rte_mbuf pointed by pkts > before calling the rte_eth_tx_burst(info->pid, qid, pkts, cnt) function but > it seems that rte_eth_tx_burst function frees up the rte_mbuf pointed by > pkts after sending the packet once so I cannot edit the pkts buffer again. > > > static __inline__ void > trafficgen_send_burst(port_info_t *info, uint16_t qid) > { > struct mbuf_table *mtab = &info->q[qid].tx_mbufs; > struct rte_mbuf **pkts; > struct qstats_s *qstats; > uint32_t ret, cnt, tap, rnd, tstamp, i; > int32_t seq_idx; > > if ((cnt = mtab->len) == 0) > return; > > mtab->len = 0; > pkts = mtab->m_table; > > if (trafficgen_tst_port_flags(info, SEND_RANGE_PKTS)) > seq_idx = RANGE_PKT; > else if (trafficgen_tst_port_flags(info, SEND_RATE_PACKETS)) > seq_idx = RATE_PKT; > else > seq_idx = SINGLE_PKT; > > tap = trafficgen_tst_port_flags(info, PROCESS_TX_TAP_PKTS); > rnd = trafficgen_tst_port_flags(info, SEND_RANDOM_PKTS); > tstamp = trafficgen_tst_port_flags(info, (SEND_LATENCY_PKTS | > SEND_RATE_PACKETS)); > > qstats = &info->qstats[qid]; > qstats->txpkts += cnt; > for (i = 0; i < cnt; i++) > qstats->txbytes += rte_pktmbuf_data_len(pkts[i]); > > */*Inserting a for loop here doesn't help as rte_mbuf is freed by > rte_eth_tx_burst*/* > /* Send all of the packets before we can exit this function */ > while (cnt) { > > if (rnd) > trafficgen_rnd_bits_apply(info, pkts, cnt, NULL); > > if (tstamp) > trafficgen_tstamp_apply(info, pkts, cnt, seq_idx); > > ret = rte_eth_tx_burst(info->pid, qid, pkts, cnt); > > if (tap) > trafficgen_do_tx_tap(info, pkts, ret); > > pkts += ret; > cnt -= ret; > } > } > > Basically, I want to resend buffers stored in rte_mbuf again and again, > after modifying source IP in each run. > > Thanks > Ravi >