Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7b54194 authored by Michal Kazior's avatar Michal Kazior Committed by Kalle Valo
Browse files

ath10k: embed ar_pci inside ar



Use the common convention of embedding private
structures inside parent structures. This
reduces allocations and simplifies pci probing
code.

Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent 5c81c7fd
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -1059,12 +1059,12 @@ void ath10k_core_unregister(struct ath10k *ar)
}
EXPORT_SYMBOL(ath10k_core_unregister);

struct ath10k *ath10k_core_create(void *hif_priv, struct device *dev,
struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev,
				  const struct ath10k_hif_ops *hif_ops)
{
	struct ath10k *ar;

	ar = ath10k_mac_create();
	ar = ath10k_mac_create(priv_size);
	if (!ar)
		return NULL;

@@ -1074,7 +1074,6 @@ struct ath10k *ath10k_core_create(void *hif_priv, struct device *dev,
	ar->p2p = !!ath10k_p2p;
	ar->dev = dev;

	ar->hif.priv = hif_priv;
	ar->hif.ops = hif_ops;

	init_completion(&ar->scan.started);
+4 −2
Original line number Diff line number Diff line
@@ -398,7 +398,6 @@ struct ath10k {
	bool p2p;

	struct {
		void *priv;
		const struct ath10k_hif_ops *ops;
	} hif;

@@ -532,9 +531,12 @@ struct ath10k {
		enum ath10k_spectral_mode mode;
		struct ath10k_spec_scan config;
	} spectral;

	/* must be last */
	u8 drv_priv[0] __aligned(sizeof(void *));
};

struct ath10k *ath10k_core_create(void *hif_priv, struct device *dev,
struct ath10k *ath10k_core_create(size_t priv_size, struct device *dev,
				  const struct ath10k_hif_ops *hif_ops);
void ath10k_core_destroy(struct ath10k *ar);

+2 −2
Original line number Diff line number Diff line
@@ -4564,12 +4564,12 @@ static struct ieee80211_rate ath10k_rates[] = {
#define ath10k_g_rates (ath10k_rates + 0)
#define ath10k_g_rates_size (ARRAY_SIZE(ath10k_rates))

struct ath10k *ath10k_mac_create(void)
struct ath10k *ath10k_mac_create(size_t priv_size)
{
	struct ieee80211_hw *hw;
	struct ath10k *ar;

	hw = ieee80211_alloc_hw(sizeof(struct ath10k), &ath10k_ops);
	hw = ieee80211_alloc_hw(sizeof(struct ath10k) + priv_size, &ath10k_ops);
	if (!hw)
		return NULL;

+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ struct ath10k_generic_iter {
	int ret;
};

struct ath10k *ath10k_mac_create(void);
struct ath10k *ath10k_mac_create(size_t priv_size);
void ath10k_mac_destroy(struct ath10k *ar);
int ath10k_mac_register(struct ath10k *ar);
void ath10k_mac_unregister(struct ath10k *ar);
+9 −16
Original line number Diff line number Diff line
@@ -2621,10 +2621,14 @@ static int ath10k_pci_probe(struct pci_dev *pdev,

	ath10k_dbg(ATH10K_DBG_PCI, "pci probe\n");

	ar_pci = kzalloc(sizeof(*ar_pci), GFP_KERNEL);
	if (ar_pci == NULL)
	ar = ath10k_core_create(sizeof(*ar_pci), &pdev->dev,
				&ath10k_pci_hif_ops);
	if (!ar) {
		ath10k_err("failed to allocate core\n");
		return -ENOMEM;
	}

	ar_pci = ath10k_pci_priv(ar);
	ar_pci->pdev = pdev;
	ar_pci->dev = &pdev->dev;

@@ -2635,7 +2639,7 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
	default:
		ret = -ENODEV;
		ath10k_err("Unknown device ID: %d\n", pci_dev->device);
		goto err_ar_pci;
		goto err_core_destroy;
	}

	if (ath10k_pci_target_ps)
@@ -2643,13 +2647,6 @@ static int ath10k_pci_probe(struct pci_dev *pdev,

	ath10k_pci_dump_features(ar_pci);

	ar = ath10k_core_create(ar_pci, ar_pci->dev, &ath10k_pci_hif_ops);
	if (!ar) {
		ath10k_err("failed to create driver core\n");
		ret = -EINVAL;
		goto err_ar_pci;
	}

	ar_pci->ar = ar;
	atomic_set(&ar_pci->keep_awake_count, 0);

@@ -2658,7 +2655,7 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
	ret = pci_enable_device(pdev);
	if (ret) {
		ath10k_err("failed to enable PCI device: %d\n", ret);
		goto err_ar;
		goto err_core_destroy;
	}

	/* Request MMIO resources */
@@ -2742,11 +2739,8 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
	pci_release_region(pdev, BAR_NUM);
err_device:
	pci_disable_device(pdev);
err_ar:
err_core_destroy:
	ath10k_core_destroy(ar);
err_ar_pci:
	/* call HIF PCI free here */
	kfree(ar_pci);

	return ret;
}
@@ -2775,7 +2769,6 @@ static void ath10k_pci_remove(struct pci_dev *pdev)
	pci_disable_device(pdev);

	ath10k_core_destroy(ar);
	kfree(ar_pci);
}

MODULE_DEVICE_TABLE(pci, ath10k_pci_id_table);
Loading