net: mana: add msix index sharing between EQs
This patch allows to assign and poll more than one EQ on the same msix index. It is achieved by introducing a list of attached EQs in each IRQ context. It also removes the existing msix_index map that tried to ensure that there is only one EQ at each msix_index. This patch exports symbols for creating EQs from other MANA kernel modules. Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
10b7572d17
commit
02fed6d92b
@@ -293,6 +293,7 @@ struct gdma_queue {
|
||||
|
||||
u32 head;
|
||||
u32 tail;
|
||||
struct list_head entry;
|
||||
|
||||
/* Extra fields specific to EQ/CQ. */
|
||||
union {
|
||||
@@ -328,6 +329,7 @@ struct gdma_queue_spec {
|
||||
void *context;
|
||||
|
||||
unsigned long log2_throttle_limit;
|
||||
unsigned int msix_index;
|
||||
} eq;
|
||||
|
||||
struct {
|
||||
@@ -344,7 +346,9 @@ struct gdma_queue_spec {
|
||||
|
||||
struct gdma_irq_context {
|
||||
void (*handler)(void *arg);
|
||||
void *arg;
|
||||
/* Protect the eq_list */
|
||||
spinlock_t lock;
|
||||
struct list_head eq_list;
|
||||
char name[MANA_IRQ_NAME_SZ];
|
||||
};
|
||||
|
||||
@@ -355,7 +359,6 @@ struct gdma_context {
|
||||
unsigned int max_num_queues;
|
||||
unsigned int max_num_msix;
|
||||
unsigned int num_msix_usable;
|
||||
struct gdma_resource msix_resource;
|
||||
struct gdma_irq_context *irq_contexts;
|
||||
|
||||
/* L2 MTU */
|
||||
|
||||
Reference in New Issue
Block a user