Created
September 28, 2024 23:31
-
-
Save qosmio/7aba88c58bc944c453732916e4f29288 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
reverted: | |
--- b/drivers/net/wireless/ath/ath11k/pcic.c | |
+++ a/drivers/net/wireless/ath/ath11k/pcic.c | |
@@ -561,7 +561,6 @@ | |
{ | |
int i, j, n, ret, num_vectors = 0; | |
u32 user_base_data = 0, base_vector = 0; | |
- struct ath11k_ext_irq_grp *irq_grp; | |
unsigned long irq_flags; | |
ret = ath11k_pcic_get_user_msi_assignment(ab, "DP", &num_vectors, | |
@@ -575,16 +574,14 @@ | |
irq_flags |= IRQF_NOBALANCING; | |
for (i = 0; i < ATH11K_EXT_IRQ_GRP_NUM_MAX; i++) { | |
+ struct ath11k_ext_irq_grp *irq_grp = &ab->ext_irq_grp[i]; | |
- irq_grp = &ab->ext_irq_grp[i]; | |
u32 num_irq = 0; | |
irq_grp->ab = ab; | |
irq_grp->grp_id = i; | |
irq_grp->napi_ndev = alloc_netdev_dummy(0); | |
+ if (!irq_grp->napi_ndev) | |
+ return -ENOMEM; | |
- if (!irq_grp->napi_ndev) { | |
- ret = -ENOMEM; | |
- goto fail_allocate; | |
- } | |
netif_napi_add(irq_grp->napi_ndev, &irq_grp->napi, | |
ath11k_pcic_ext_grp_napi_poll); | |
@@ -609,8 +606,11 @@ | |
int irq = ath11k_pcic_get_msi_irq(ab, vector); | |
if (irq < 0) { | |
+ for (n = 0; n <= i; n++) { | |
+ irq_grp = &ab->ext_irq_grp[n]; | |
+ free_netdev(irq_grp->napi_ndev); | |
+ } | |
+ return irq; | |
- ret = irq; | |
- goto fail_irq; | |
} | |
ab->irq_num[irq_idx] = irq; | |
@@ -635,15 +635,6 @@ | |
} | |
return 0; | |
-fail_irq: | |
- /* i ->napi_ndev was properly allocated. Free it also */ | |
- i += 1; | |
-fail_allocate: | |
- for (n = 0; n < i; n++) { | |
- irq_grp = &ab->ext_irq_grp[n]; | |
- free_netdev(irq_grp->napi_ndev); | |
- } | |
- return ret; | |
} | |
int ath11k_pcic_config_irq(struct ath11k_base *ab) | |
--- b/drivers/net/wireless/ath/ath11k/ahb.c | |
+++ a/drivers/net/wireless/ath/ath11k/ahb.c | |
@@ -442,7 +442,6 @@ | |
free_irq(ab->irq_num[irq_grp->irqs[j]], irq_grp); | |
netif_napi_del(&irq_grp->napi); | |
- free_netdev(irq_grp->napi_ndev); | |
} | |
} | |
@@ -534,12 +533,8 @@ | |
irq_grp->ab = ab; | |
irq_grp->grp_id = i; | |
+ init_dummy_netdev(&irq_grp->napi_ndev); | |
+ netif_napi_add(&irq_grp->napi_ndev, &irq_grp->napi, | |
- | |
- irq_grp->napi_ndev = alloc_netdev_dummy(0); | |
- if (!irq_grp->napi_ndev) | |
- return -ENOMEM; | |
- | |
- netif_napi_add(irq_grp->napi_ndev, &irq_grp->napi, | |
ath11k_ahb_ext_grp_napi_poll); | |
for (j = 0; j < ATH11K_EXT_IRQ_NUM_MAX; j++) { | |
reverted: | |
--- b/drivers/net/wireless/ath/ath11k/core.h | |
+++ a/drivers/net/wireless/ath/ath11k/core.h | |
@@ -174,7 +174,7 @@ | |
u64 timestamp; | |
bool napi_enabled; | |
struct napi_struct napi; | |
+ struct net_device napi_ndev; | |
- struct net_device *napi_ndev; | |
}; | |
enum ath11k_smbios_cc_type { | |
reverted: | |
--- b/drivers/net/wireless/ath/ath11k/pcic.c | |
+++ a/drivers/net/wireless/ath/ath11k/pcic.c | |
@@ -316,7 +316,6 @@ | |
free_irq(ab->irq_num[irq_grp->irqs[j]], irq_grp); | |
netif_napi_del(&irq_grp->napi); | |
- free_netdev(irq_grp->napi_ndev); | |
} | |
} | |
@@ -559,7 +558,7 @@ | |
static int ath11k_pcic_ext_irq_config(struct ath11k_base *ab) | |
{ | |
+ int i, j, ret, num_vectors = 0; | |
- int i, j, n, ret, num_vectors = 0; | |
u32 user_base_data = 0, base_vector = 0; | |
unsigned long irq_flags; | |
@@ -579,11 +578,8 @@ | |
irq_grp->ab = ab; | |
irq_grp->grp_id = i; | |
+ init_dummy_netdev(&irq_grp->napi_ndev); | |
+ netif_napi_add(&irq_grp->napi_ndev, &irq_grp->napi, | |
- irq_grp->napi_ndev = alloc_netdev_dummy(0); | |
- if (!irq_grp->napi_ndev) | |
- return -ENOMEM; | |
- | |
- netif_napi_add(irq_grp->napi_ndev, &irq_grp->napi, | |
ath11k_pcic_ext_grp_napi_poll); | |
if (ab->hw_params.ring_mask->tx[i] || | |
@@ -605,13 +601,8 @@ | |
int vector = (i % num_vectors) + base_vector; | |
int irq = ath11k_pcic_get_msi_irq(ab, vector); | |
+ if (irq < 0) | |
- if (irq < 0) { | |
- for (n = 0; n <= i; n++) { | |
- irq_grp = &ab->ext_irq_grp[n]; | |
- free_netdev(irq_grp->napi_ndev); | |
- } | |
return irq; | |
- } | |
ab->irq_num[irq_idx] = irq; | |
@@ -624,10 +615,6 @@ | |
if (ret) { | |
ath11k_err(ab, "failed request irq %d: %d\n", | |
vector, ret); | |
- for (n = 0; n <= i; n++) { | |
- irq_grp = &ab->ext_irq_grp[n]; | |
- free_netdev(irq_grp->napi_ndev); | |
- } | |
return ret; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment