qed: Correct slowpath interrupt scheme
When using INTa, ISR might be called before device is configured for INTa [E.g., due to other device asserting the shared interrupt line], in which case the ISR would read the SISR registers that shouldn't be read unless HW is already configured for INTa. This might break interrupts later on. There's also an MSI-X issue due to this difference, although it's mostly theoretical. This patch changes the initialization order, calling request_irq() for the slowpath interrupt only after the chip is configured for working in the preferred interrupt mode. Signed-off-by: Sudarsana Kalluru <Sudarsana.Kalluru@qlogic.com> Signed-off-by: Manish Chopra <manish.chopra@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
c78df14ee0
commit
8f16bc97fa
@@ -299,6 +299,7 @@ struct qed_hwfn {
|
||||
|
||||
/* Flag indicating whether interrupts are enabled or not*/
|
||||
bool b_int_enabled;
|
||||
bool b_int_requested;
|
||||
|
||||
struct qed_mcp_info *mcp_info;
|
||||
|
||||
@@ -491,6 +492,8 @@ u32 qed_unzip_data(struct qed_hwfn *p_hwfn,
|
||||
u32 input_len, u8 *input_buf,
|
||||
u32 max_size, u8 *unzip_buf);
|
||||
|
||||
int qed_slowpath_irq_req(struct qed_hwfn *hwfn);
|
||||
|
||||
#define QED_ETH_INTERFACE_VERSION 300
|
||||
|
||||
#endif /* _QED_H */
|
||||
|
Reference in New Issue
Block a user