On 26 July 2018 at 21:24, gyanesh patra <pgyanesh.pa...@gmail.com> wrote:
> I verified the throughput over the link with/without this debug message. > With DEBUG message: 10-15 Mbps > without DEBUG message: 1500 Mbps > > Due to this debug message to the stdout, the throughput drops to the > minimum and the latency can't be calculated properly too. > Should i just remove the debug message from the netmap.c file? Does it > serve any purpose? > > Yes it has to be removed or odp compiled without --enable-debug Actually print is on wrong arm of "if" statement. I.e. when packet accepted drop error printed. Thanks for reporting this. Maxim. > Regards, > Gyanesh > > On Thu, Jul 26, 2018 at 11:25 AM Maxim Uvarov <maxim.uva...@linaro.org> > wrote: > >> >> >> On 26 July 2018 at 16:01, gyanesh patra <pgyanesh.pa...@gmail.com> wrote: >> >>> Hi, >>> Here is the output for the debug messages as advised: >>> For this code: >>> -------------- >>> 541 ODP_DBG("MTU: %" PRIu32 "\n", mtu); >>> >>> 542 ODP_DBG("NM buf_size: %" PRIu32 "\n", buf_size); >>> >>> 543 pkt_nm->mtu = (mtu < buf_size) ? mtu : buf_size; >>> >>> Output: >>> --------- >>> netmap interface: eth5 >>> num_rx_desc: 0 >>> num_tx_desc: 0 >>> pktio/netmap.c:541:netmap_open():MTU: 1514 >>> pktio/netmap.c:542:netmap_open():NM buf_size: 2048 >>> pktio/netmap.c:567:netmap_open():netmap pktio eth5 does not support >>> statistics counters >>> odp_packet_io.c:295:odp_pktio_open():interface: eth5, driver: netmap >>> >>> ===== >>> For this code: >>> -------------- >>> 839 if (odp_likely(ring->slot[slot_id].len <= mtu)) { >>> >>> 840 slot_tbl[num_rx].buf = buf; >>> >>> 841 slot_tbl[num_rx].len = ring->slot[slot_id].len; >>> >>> 842 ODP_DBG("dropped oversized packet %d >>> %d\n",ring->slot[slot_id].len, mtu); >>> 843 num_rx++; >>> >>> 844 } >>> >>> Output: >>> -------- >>> pktio/netmap.c:842:netmap_recv_desc():dropped oversized packet 60 1514 >>> pktio/netmap.c:842:netmap_recv_desc():dropped oversized packet 60 1514 >>> >>> >> Are packets dropped or you just see this message? >> >> if (odp_likely(ring->slot[slot_id].len <= mtu)) { >> slot_tbl[num_rx].buf = buf; >> slot_tbl[num_rx].len = ring->slot[slot_id].len; >> ODP_DBG("dropped oversized packet\n"); >> num_rx++; >> } >> >> num_rx is increasing then packet wrapped into odp: >> if (num_rx) { >> return netmap_pkt_to_odp(pktio_entry, pkt_table, slot_tbl, >> num_rx, ts); >> >> it looks like message just confusing. Packet is less then mtu. >> >> >> >> >>> If anything else is required, i can get those details too. >>> >>> Thanks, >>> P Gyanesh Kumar Patra >>> >>> >>> On Thu, Jul 26, 2018 at 3:36 AM Elo, Matias (Nokia - FI/Espoo) < >>> matias....@nokia.com> wrote: >>> >>>> >>>> >>>> > On 25 Jul 2018, at 17:11, Maxim Uvarov <maxim.uva...@linaro.org> >>>> wrote: >>>> > >>>> > For quick look it looks like mtu is not set correctly on open(). Can >>>> you try this patch: >>>> > >>>> > diff --git a/platform/linux-generic/pktio/netmap.c >>>> b/platform/linux-generic/pktio/netmap.c >>>> > index 0da2b7a..d4db0af 100644 >>>> > --- a/platform/linux-generic/pktio/netmap.c >>>> > +++ b/platform/linux-generic/pktio/netmap.c >>>> > @@ -539,6 +539,7 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, >>>> pktio_entry_t *pktio_entry, >>>> > goto error; >>>> > } >>>> > pkt_nm->mtu = (mtu < buf_size) ? mtu : buf_size; >>>> > + pkt_priv(pktio_entry)->mtu = pkt_nm->mtu; >>>> >>>> >>>> pkt_netmap_t *pkt_nm = pkt_priv(pktio_entry), so this is unnecessary. >>>> >>>> >>>> >> >>>> >> >>>> >> Is this a know issue or am i missing something? >>>> >> >>>> >>>> >>>> As far as I can see the problem is caused by reading interface MTU >>>> incorrectly or netmap using unusually small buffers (assuming moongen sends >>>> packets smaller than MTU). The following patch should help debug the issue. >>>> >>>> -Matias >>>> >>>> diff --git a/platform/linux-generic/pktio/netmap.c >>>> b/platform/linux-generic/pktio/netmap.c >>>> index 0da2b7afd..3e0a17542 100644 >>>> --- a/platform/linux-generic/pktio/netmap.c >>>> +++ b/platform/linux-generic/pktio/netmap.c >>>> @@ -538,6 +538,10 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, >>>> pktio_entry_t *pktio_entry, >>>> ODP_ERR("Unable to read interface MTU\n"); >>>> goto error; >>>> } >>>> + >>>> + ODP_DBG("MTU: %" PRIu32 "\n", mtu); >>>> + ODP_DBG("NM buf_size: %" PRIu32 "\n", buf_size); >>>> + >>>> pkt_nm->mtu = (mtu < buf_size) ? mtu : buf_size; >>>> >>>> /* Check if RSS is supported. If not, set 'max_input_queues' to >>>> 1. */ >>>> >>>> >>>> >>