From: Ariel Elior <ariel.el...@cavium.com> Date: Wed, 28 Nov 2018 18:16:01 +0200
> Doorbell Overflow > If sufficient CPU cores will send doorbells at a sufficiently high rate, they > can cause an overflow in the doorbell queue block message fifo. When fill > level > reaches maximum, the device stops accepting all doorbells from that PF until a > recovery procedure has taken place. > > Doorbell Overflow Recovery > The recovery procedure basically means resending the last doorbell for every > doorbelling entity. A doorbelling entity is anything which may send doorbells: > L2 tx ring, rdma sq/rq/cq, light l2, vf l2 tx ring, spq, etc. This relies on > the design assumption that all doorbells are aggregative, so last doorbell > carries the information of all previous doorbells. > > APIs > All doorbelling entities need to register with the mechanism before sending > doorbells. The registration entails providing the doorbell address the entity > would be using, and a virtual address where last doorbell data can be found. > Typically fastpath structures already have this construct. > > Executing the recovery procedure > Handling the attentions, iterating over all the registered entities and > resending their doorbells, is all handled within qed core module. > > Relevance > All doorbelling entities in all protocols need to register with the mechanism, > via the new APIs. Technically this is quite simple (just call the API). Some > protocol fastpath implementation may not have the doorbell data stored > anywhere > (compute it from scratch every time) and will have to add such a place. > This is rare and is also better practice (save some cycles on the fastpath). > > Performance Penalty > No performance penalty should incur as a result of this feature. If anything > performance can improve by avoiding recalcualtion of doorbell data everytime > doorbell is sent (in some flows). > > Add the database used to register doorbelling entities, and APIs for adding > and deleting entries, and logic for traversing the database and doorbelling > once on behalf of all entities. > > Please consider applying to net-next. Series applied, thanks.