Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save qosmio/7aba88c58bc944c453732916e4f29288 to your computer and use it in GitHub Desktop.
Save qosmio/7aba88c58bc944c453732916e4f29288 to your computer and use it in GitHub Desktop.
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