From owner-freebsd-net@freebsd.org Tue Nov 21 00:11:47 2017 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4FDEEDB83FE for ; Tue, 21 Nov 2017 00:11:47 +0000 (UTC) (envelope-from rizzo.unipi@gmail.com) Received: from mail-io0-x22f.google.com (mail-io0-x22f.google.com [IPv6:2607:f8b0:4001:c06::22f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 159E173A81 for ; Tue, 21 Nov 2017 00:11:47 +0000 (UTC) (envelope-from rizzo.unipi@gmail.com) Received: by mail-io0-x22f.google.com with SMTP id g73so17566979ioj.8 for ; Mon, 20 Nov 2017 16:11:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=S8HAmXH9yuuFJK3rWcsNLF6IlkMnqYfJqKtb7gkzZ2w=; b=JETbtoPJlJJEz9WUi1LohAX7HHf7D4Rx1tI3zCPihb4lM0829BOdPaauqv1D21475g dzMHeuL4JsZaYGyWjUrUt8pFvtwVz99VtdC+zzdhqSVz7exrytfzvPOkc2ei8UFcwBDW rlS2X9MkrA5nvGj63O753x1hwBpHf85vk+j6wb+dt4In07v42sVyszwdU1xul8DGMVIt h0jI2hGD5gA5OiPLKEbcsEPx+DPb45OgJ8AD3MPy9YTVT311WrgeCn69QH8TyxFLY7jx WTJ+NIezAc5hYPii3ae9Xo4XotAV0KDGeGbQhL2ZcR1T2wi0xLdZdVie3P8L80ECWK7Z AeJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=S8HAmXH9yuuFJK3rWcsNLF6IlkMnqYfJqKtb7gkzZ2w=; b=s4qgeV2le7sxwqLL8Ze7ee5yh2OJ+Q0UFXrt81TwgC2bAukwZjw9dpdAayEUz2xdkr 1FeG+yEGEyfynGqaPjh4SNIWz+IOYgNpmjwr+IcBwW8DiAAgJnFf6P/+xQLRYuopkXQ4 13SlgcDtp3W7l64HNvWpjGhDUTropmb0eOgT+WtRUInZ1wcPMO2xdRg2bkeyKkVLOhSH IPm+v9O9ZrYIc9DvAtTIguW9K6Vab5jokR0htgrJe9V5G+h4hgegJNxwTidNUpkWgBja tf7pHTYwZvHNTzwbDrjDC41kDo4qanTZwgdkSt6xv9ObIvFiew5+jzNcO8v28Pbio1kz FBjw== X-Gm-Message-State: AJaThX6rMtuVNCAAvFYNdqJxhR9eqvR7/7pFZDVXJhEskUmBtUAhnhCe y+6mhT9llF6WdyBNmnfa6UqFKoZlho6YDKpekJU= X-Google-Smtp-Source: AGs4zMZebZ4pG8gNb+ONGvqTk2OXor4MJ3ggtvJk7aEmgnQLwoDwoKLPKXW0KlWUstz9SQQB+Knp/ruFBOPEePtyZbA= X-Received: by 10.107.182.7 with SMTP id g7mr15524664iof.39.1511223104798; Mon, 20 Nov 2017 16:11:44 -0800 (PST) MIME-Version: 1.0 Sender: rizzo.unipi@gmail.com Received: by 10.107.141.201 with HTTP; Mon, 20 Nov 2017 16:11:44 -0800 (PST) In-Reply-To: References: From: Luigi Rizzo Date: Mon, 20 Nov 2017 16:11:44 -0800 X-Google-Sender-Auth: gnqJjgtMrj_IoESYpCp6AJ-zMpM Message-ID: Subject: Re: [netmap] when does a packet in the netmap ring send out exactly To: Xiaoye Sun Cc: Vincenzo Maffione , FreeBSD Net Content-Type: text/plain; charset="UTF-8" X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Nov 2017 00:11:47 -0000 Hi, I think if you call the TXSYNC ioctl without advancing the head pointer, then the tail is advanced as much as possible. Cheers luigi On Mon, Nov 20, 2017 at 3:35 PM, Xiaoye Sun wrote: > Hi, > > I found that the tail pointer only moves when the ring has less than half > of the slots available. This prevents me from knowing the accurate time > when the packet in a slot is processed. Is there a way to move the tail > pointer as long as the packet in the slot is processed? Is this a > configurable feature? > > Best, > Xiaoye > > On Fri, Oct 27, 2017 at 11:52 AM, Vincenzo Maffione > wrote: > >> Hi, >> This is actually a limitation of the netmap API: ring->tail is exposed >> to the user so that it knows it can use the slots in the range >> "[ring->head..ring->tail[" for new transmissions (note that head is >> included, tail excluded, to prevent wraparound). However, there is no >> explicit indication of "up to what slots packets were transmitted". >> For hw NICs, however, ring->tail is an indication of where transmission >> was completed. >> Example: >> 1) at the beginning ring->tail = ring->head = ring->cur = 0 >> 2) then your program moves head/cur forward: head = cur = 10 >> 3) you call TXSYNC, to submit the packets to the NIC. >> 4) after the TXSYNC call, is very likely that tail is still 0, i.e. >> because no transmission has been completed by the NIC (and no interrupt >> generated). >> 5) say after 20 us you issue another TXSYNC, and in the meanwhile 6 >> packets had completed. In this case after TXSYNC you will find tail==5, >> meaning that packets in the slots 0,1,2,3,4 and 5 have been completed. Note >> that also the slot pointed by tail has been completed. >> >> But you are right that there is no way to receive completion notification >> if the queue is not full. You must use TXSYNC to check (by sleeping or busy >> wait) when tail moves forward. >> >> Cheers, >> Vincenzo >> >> >> 2017-10-27 3:06 GMT+02:00 Xiaoye Sun : >> >>> Hi >>> >>> I write a netmap program that sends packets to the network. my program >>> uses one netmap ring and fills the ring slots with packets. >>> My program needs to do something (action A) after a particular packet >>> (packet P) in the ring slot is sent to the network. so the program tracks >>> the position of the tail point and checks if the tail point has moved >>> across the slot I used to put that packet P. >>> However, I found that the tail pointer may not move forward even seconds >>> after the receiver side got packet P. >>> Sometimes the tail pointer never moves forward until the TX ring is full. >>> I try ioctl(NIOCTXSYNC), however, it cannot 100% solve the problem. >>> >>> My question is that is there a way to make the TX ring empty as early as >>> possible so that I can know when my packet is sent out. or is there >>> another >>> way to know when the packet in the slot is sent to the network/NIC >>> physical >>> queue? >>> >>> I am using Linux 3.16.0-4-amd64. >>> >>> Thanks! >>> >>> Best, >>> Xiaoye >>> _______________________________________________ >>> freebsd-net@freebsd.org mailing list >>> https://lists.freebsd.org/mailman/listinfo/freebsd-net >>> To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >>> >> >> >> >> -- >> Vincenzo Maffione >> > _______________________________________________ > freebsd-net@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" -- -----------------------------------------+------------------------------- Prof. Luigi RIZZO, rizzo@iet.unipi.it . Dip. di Ing. dell'Informazione http://www.iet.unipi.it/~luigi/ . Universita` di Pisa TEL +39-050-2217533 . via Diotisalvi 2 Mobile +39-338-6809875 . 56122 PISA (Italy) -----------------------------------------+-------------------------------