diff options
author | Michal Kalderon <Michal.Kalderon@cavium.com> | 2017-06-20 16:00:06 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-06-20 19:34:09 +0300 |
commit | 6c9e80ea571db545a0baff1e0f48ae75a7ed127d (patch) | |
tree | ade832593cfe1483048945a37ddbcd3df4445f60 /drivers/net/ethernet/qlogic/qed/qed_sp.h | |
parent | 898fff120d9e73c2432432d4e457bf584b2a9df7 (diff) | |
download | linux-6c9e80ea571db545a0baff1e0f48ae75a7ed127d.tar.xz |
qed: SPQ async callback registration
Whenever firmware indicates that there's an async indication it needs
to handle, there's a switch-case where the right functionality is called
based on function's personality and information.
Before iWARP is added [as yet another client], switch over the SPQ into
a callback-registered mechanism, allowing registration of the relevant
event-processing logic based on the function's personality. This allows
us to tidy the code by removing protocol-specifics from a common file.
Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/qlogic/qed/qed_sp.h')
-rw-r--r-- | drivers/net/ethernet/qlogic/qed/qed_sp.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/ethernet/qlogic/qed/qed_sp.h b/drivers/net/ethernet/qlogic/qed/qed_sp.h index 00dd50f8c42f..56c95fb9a26d 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_sp.h +++ b/drivers/net/ethernet/qlogic/qed/qed_sp.h @@ -174,6 +174,22 @@ struct qed_consq { struct qed_chain chain; }; +typedef int +(*qed_spq_async_comp_cb)(struct qed_hwfn *p_hwfn, + u8 opcode, + u16 echo, + union event_ring_data *data, + u8 fw_return_code); + +int +qed_spq_register_async_cb(struct qed_hwfn *p_hwfn, + enum protocol_type protocol_id, + qed_spq_async_comp_cb cb); + +void +qed_spq_unregister_async_cb(struct qed_hwfn *p_hwfn, + enum protocol_type protocol_id); + struct qed_spq { spinlock_t lock; /* SPQ lock */ @@ -203,6 +219,7 @@ struct qed_spq { u32 comp_count; u32 cid; + qed_spq_async_comp_cb async_comp_cb[MAX_PROTOCOL_TYPE]; }; /** |