From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jason Wang Subject: Re: [RFC PATCH v2] ptr_ring: linked list fallback Date: Wed, 28 Feb 2018 14:28:21 +0800 Message-ID: <11ef5721-1a4c-f216-9f46-08a0ad0ca49d@redhat.com> References: <1519607771-20613-1-git-send-email-mst@redhat.com> <01aff5eb-a92f-2170-05f7-664220985070@redhat.com> <20180226223252-mutt-send-email-mst@kernel.org> <0316016a-717b-9d3f-5aef-dccaf34d0fae@redhat.com> <20180227190703-mutt-send-email-mst@kernel.org> <20180228060845-mutt-send-email-mst@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Cc: linux-kernel@vger.kernel.org, John Fastabend , netdev@vger.kernel.org, David Miller To: "Michael S. Tsirkin" Return-path: In-Reply-To: <20180228060845-mutt-send-email-mst@kernel.org> Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On 2018年02月28日 12:09, Michael S. Tsirkin wrote: >>> Or we can add plist to a union: >>> >>> >>> struct sk_buff { >>> union { >>> struct { >>> /* These two members must be first. */ >>> struct sk_buff *next; >>> struct sk_buff *prev; >>> union { >>> struct net_device *dev; >>> /* Some protocols might use this space to store information, >>> * while device pointer would be NULL. >>> * UDP receive path is one user. >>> */ >>> unsigned long dev_scratch; >>> }; >>> }; >>> struct rb_node rbnode; /* used in netem & tcp stack */ >>> + struct plist plist; /* For use with ptr_ring */ >>> }; >>> >> This look ok. >> >>>> For XDP, we need to embed plist in struct xdp_buff too, >>> Right - that's pretty straightforward, isn't it? >> Yes, it's not clear to me this is really needed for XDP consider the lock >> contention it brings. >> >> Thanks > The contention is only when the ring overflows into the list though. > Right, but there's usually a mismatch of speed between producer and consumer. In case of a fast producer, we may get this contention very frequently. Thanks