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 0D00EA04C9 for ; Sun, 13 Sep 2020 23:59:43 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 807811DB9; Sun, 13 Sep 2020 23:59:42 +0200 (CEST) Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) by dpdk.org (Postfix) with ESMTP id 9DE61FFA for ; Sun, 13 Sep 2020 23:59:41 +0200 (CEST) Received: by mail-ej1-f51.google.com with SMTP id e23so20470953eja.3 for ; Sun, 13 Sep 2020 14:59:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=fXKstgtGgTLLEWkYnrg5TSS8omkUpH1N61BTCvA4/JY=; b=UFz6t+g3xd4f6W/2IyO6EuFbCY/95NGQ0WP/paxsYTCpjfenWaeuFN/mBYWqXMTdHP yHb4oMbsc9RtuErvfQWPKgp38daPwVv+k3gu7/7BJEiKXHuGdMlv6ftkqe3+iTT+Giri p1gGG+8+ttrshPNcAi2Y64kSqn/JVYV70F3opVEThzUcraVskbH+Cpn4Um7T36t23Gqg qneUJZicNXE9HQIY8rRBFcSaaoNUalCCtO0FQSyGulKi9YbGPm+1Sq4FraH3JFLWpeUm aFTspun/1lIj4V7JrVE/p/+5GKWxzt/KnNZb5VqM45tBgRoHNFPu5DPl+/CBy5BeEa3P DD4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=fXKstgtGgTLLEWkYnrg5TSS8omkUpH1N61BTCvA4/JY=; b=LgXqDwYuviJUe6uLOD00PPJjK2c1gXQXjjgpKFjKe8l4ktS7uHVbWhKqZW705+wzWs QDv0DMpoqgrOxWw+YOhRezdP7HIaPcRBhaLZ5WhZFzEGYy2KCDDT3vlrpH6dk7i+Jd5k rdda1wdgjXLCYQHkG6TFcmgjlpHZkCWg9bQNPbpcdJhXzSBVW1yiL091H7cgtScYw7DJ z9YHKFK33ZJ6K3idDMTOU81T0GJhVHm4xssmHM2uSnosNsCWgrj9b3v1ESk47ioQjEfB MLihtmT33kw6hheS8rHc/C9ia5ObmXYal5bPNM7v6LPu/6yOeDmKZgfXgyq63mdcHp5n lPOA== X-Gm-Message-State: AOAM5337+D9m6GHugKVlBXrhdSM0wIXZuM7aPCzhfkO+yeFXa7gEtnYi ZJV+UxEKV5IcOmnRzbOOmW41S/ZKbDKT2UDvJhR4mql/LTgiQg== X-Google-Smtp-Source: ABdhPJyBdXhlo17Q6jNhrx9Zyc3/ar//6O/4dO0UPlM+OBeriYCVV0u3o9DGaJ1+zxuaYhUi3mdZyjV4IHjNVJpQiD4= X-Received: by 2002:a17:907:4276:: with SMTP id nq6mr7657875ejb.246.1600034381179; Sun, 13 Sep 2020 14:59:41 -0700 (PDT) MIME-Version: 1.0 From: Ravi Tandon Date: Sun, 13 Sep 2020 23:59:30 +0200 Message-ID: To: users@dpdk.org Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [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" 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