1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
@@ -950,12 +950,21 @@ void iwl_trans_pcie_free(struct iwl_tran
{
struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
+ compat_synchronize_threaded_irq(&trans_pcie->irq_compat);
+#else
synchronize_irq(trans_pcie->pci_dev->irq);
+#endif
iwl_pcie_tx_free(trans);
iwl_pcie_rx_free(trans);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
+ compat_free_threaded_irq(&trans_pcie->irq_compat);
+ compat_destroy_threaded_irq(&trans_pcie->irq_compat);
+#else
free_irq(trans_pcie->pci_dev->irq, trans);
+#endif
iwl_pcie_free_ict(trans);
pci_disable_msi(trans_pcie->pci_dev);
@@ -1655,9 +1664,16 @@ struct iwl_trans *iwl_trans_pcie_alloc(s
if (iwl_pcie_alloc_ict(trans))
goto out_free_cmd_pool;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)
+ err = compat_request_threaded_irq(&trans_pcie->irq_compat,
+ pdev->irq, iwl_pcie_isr,
+ iwl_pcie_irq_handler,
+ IRQF_SHARED, DRV_NAME, trans);
+#else
err = request_threaded_irq(pdev->irq, iwl_pcie_isr,
iwl_pcie_irq_handler,
IRQF_SHARED, DRV_NAME, trans);
+#endif
if (err) {
IWL_ERR(trans, "Error allocating IRQ %d\n", pdev->irq);
goto out_free_ict;
|