mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-20 08:22:39 +00:00
liquidio: Fix an issue with multiple switchdev enable disables
Return success if the same dispatch function is being registered for a given opcode and subcode, there by allow multiple switchdev enable and disables. Signed-off-by: Vijaya Mohan Guvva <vijaya.guvva@cavium.com> Signed-off-by: Satanand Burla <satananda.burla@cavium.com> Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
de4cc8bd68
commit
bf5345882b
@ -1180,6 +1180,10 @@ octeon_register_dispatch_fn(struct octeon_device *oct,
|
||||
spin_unlock_bh(&oct->dispatch.lock);
|
||||
|
||||
} else {
|
||||
if (pfn == fn &&
|
||||
octeon_get_dispatch_arg(oct, opcode, subcode) == fn_arg)
|
||||
return 0;
|
||||
|
||||
dev_err(&oct->pci_dev->dev,
|
||||
"Found previously registered dispatch fn for opcode/subcode: %x/%x\n",
|
||||
opcode, subcode);
|
||||
|
@ -52,8 +52,8 @@ struct __dispatch {
|
||||
* @return Failure: NULL
|
||||
*
|
||||
*/
|
||||
static inline void *octeon_get_dispatch_arg(struct octeon_device *octeon_dev,
|
||||
u16 opcode, u16 subcode)
|
||||
void *octeon_get_dispatch_arg(struct octeon_device *octeon_dev,
|
||||
u16 opcode, u16 subcode)
|
||||
{
|
||||
int idx;
|
||||
struct list_head *dispatch;
|
||||
|
@ -400,6 +400,9 @@ int octeon_register_dispatch_fn(struct octeon_device *oct,
|
||||
u16 subcode,
|
||||
octeon_dispatch_fn_t fn, void *fn_arg);
|
||||
|
||||
void *octeon_get_dispatch_arg(struct octeon_device *oct,
|
||||
u16 opcode, u16 subcode);
|
||||
|
||||
void octeon_droq_print_stats(void);
|
||||
|
||||
u32 octeon_droq_check_hw_for_pkts(struct octeon_droq *droq);
|
||||
|
Loading…
Reference in New Issue
Block a user