2018-01-25 11:14:13

by Tobias Schramm

[permalink] [raw]
Subject: [PATCH v3 0/2] ath10k: Add support for Ubiquiti-branded QCA988X

A lot of more modern Ubiquiti AirMAX wireless devices contain a rebranded
QCA988X with changed PCI vendor and device id.
This patch adds support for those chips by treating them as QCA988X rev2
radios.

Changes since v1:
* Send patch to more people and lists

Changes since v2:
* Rename PCI_VENDOR_ID_UBNT to PCI_VENDOR_ID_UBIQUITI

Tobias Schramm (2):
pci: Add vendor id of Ubiquiti Networks
ath10k: Add support for Ubiquiti rebranded QCA988X v2

drivers/net/wireless/ath/ath10k/core.c | 24 ++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/hw.h | 1 +
drivers/net/wireless/ath/ath10k/pci.c | 4 ++++
include/linux/pci_ids.h | 2 ++
4 files changed, 31 insertions(+)

--
2.16.0


2018-01-29 14:45:04

by Kalle Valo

[permalink] [raw]
Subject: Re: [v3,2/2] ath10k: Add support for Ubiquiti rebranded QCA988X v2

Tobias Schramm <[email protected]> wrote:

> Some modern Ubiquiti devices contain a rebranded QCA988X rev2 with
> a custom Ubiquiti vendor and device id. This patch adds support for
> those devices, treating them as a QCA988X v2.
>
> Signed-off-by: Tobias Schramm <[email protected]>
> [[email protected]: rebase, add missing fields in hw_params, fix a long line in pci.c:61]
> Signed-off-by: Kalle Valo <[email protected]>

This didn't apply to ath.git so I rebased it and it did some other modifications
(list in the commit log):

https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?h=pending&id=4037b395c946f94ee05ddc652421cdbd35567a3e

--
https://patchwork.kernel.org/patch/10183909/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

2018-01-25 11:14:22

by Tobias Schramm

[permalink] [raw]
Subject: [PATCH v3 1/2] pci: Add vendor id of Ubiquiti Networks

Signed-off-by: Tobias Schramm <[email protected]>
---
include/linux/pci_ids.h | 2 ++
1 file changed, 2 insertions(+)

diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index ab20dc5db423..35871adfdc86 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -149,6 +149,8 @@
#define PCI_VENDOR_ID_DYNALINK 0x0675
#define PCI_DEVICE_ID_DYNALINK_IS64PH 0x1702

+#define PCI_VENDOR_ID_UBIQUITI 0x0777
+
#define PCI_VENDOR_ID_BERKOM 0x0871
#define PCI_DEVICE_ID_BERKOM_A1T 0xffa1
#define PCI_DEVICE_ID_BERKOM_T_CONCEPT 0xffa2
--
2.16.0

2018-01-29 18:03:54

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH v3 1/2] pci: Add vendor id of Ubiquiti Networks

On Thu, Jan 25, 2018 at 12:13:39PM +0100, Tobias Schramm wrote:
> Signed-off-by: Tobias Schramm <[email protected]>

Acked-by: Bjorn Helgaas <[email protected]>

I see Kalle has already applied this, but if it's updated for any reason,
please add my ack and change the subject to:

PCI: Add Ubiquiti Networks vendor ID

i.e., match the style of previous changes.

> ---
> include/linux/pci_ids.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
> index ab20dc5db423..35871adfdc86 100644
> --- a/include/linux/pci_ids.h
> +++ b/include/linux/pci_ids.h
> @@ -149,6 +149,8 @@
> #define PCI_VENDOR_ID_DYNALINK 0x0675
> #define PCI_DEVICE_ID_DYNALINK_IS64PH 0x1702
>
> +#define PCI_VENDOR_ID_UBIQUITI 0x0777
> +
> #define PCI_VENDOR_ID_BERKOM 0x0871
> #define PCI_DEVICE_ID_BERKOM_A1T 0xffa1
> #define PCI_DEVICE_ID_BERKOM_T_CONCEPT 0xffa2
> --
> 2.16.0
>

2018-01-25 11:14:26

by Tobias Schramm

[permalink] [raw]
Subject: [PATCH v3 2/2] ath10k: Add support for Ubiquiti rebranded QCA988X v2

Some modern Ubiquiti devices contain a rebranded QCA988X rev2 with
a custom Ubiquiti vendor and device id. This patch adds support for
those devices, treating them as a QCA988X v2.

Signed-off-by: Tobias Schramm <[email protected]>
---
drivers/net/wireless/ath/ath10k/core.c | 24 ++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/hw.h | 1 +
drivers/net/wireless/ath/ath10k/pci.c | 4 ++++
3 files changed, 29 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index b29fdbd21ead..9fb38f2c1d6e 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -52,6 +52,30 @@ MODULE_PARM_DESC(cryptmode, "Crypto mode: 0-hardware, 1-software");
MODULE_PARM_DESC(rawmode, "Use raw 802.11 frame datapath");

static const struct ath10k_hw_params ath10k_hw_params_list[] = {
+ {
+ .id = QCA988X_HW_2_0_VERSION,
+ .dev_id = QCA988X_2_0_DEVICE_ID_UBNT,
+ .name = "qca988x hw2.0",
+ .patch_load_addr = QCA988X_HW_2_0_PATCH_LOAD_ADDR,
+ .uart_pin = 7,
+ .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL,
+ .otp_exe_param = 0,
+ .channel_counters_freq_hz = 88000,
+ .max_probe_resp_desc_thres = 0,
+ .cal_data_len = 2116,
+ .fw = {
+ .dir = QCA988X_HW_2_0_FW_DIR,
+ .board = QCA988X_HW_2_0_BOARD_DATA_FILE,
+ .board_size = QCA988X_BOARD_DATA_SZ,
+ .board_ext_size = QCA988X_BOARD_EXT_DATA_SZ,
+ },
+ .hw_ops = &qca988x_ops,
+ .decap_align_bytes = 4,
+ .spectral_bin_discard = 0,
+ .vht160_mcs_rx_highest = 0,
+ .vht160_mcs_tx_highest = 0,
+ .n_cipher_suites = 8,
+ },
{
.id = QCA988X_HW_2_0_VERSION,
.dev_id = QCA988X_2_0_DEVICE_ID,
diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h
index 05f26e5858ad..5ae3b56acc19 100644
--- a/drivers/net/wireless/ath/ath10k/hw.h
+++ b/drivers/net/wireless/ath/ath10k/hw.h
@@ -22,6 +22,7 @@

#define ATH10K_FW_DIR "ath10k"

+#define QCA988X_2_0_DEVICE_ID_UBNT (0x11ac)
#define QCA988X_2_0_DEVICE_ID (0x003c)
#define QCA6164_2_1_DEVICE_ID (0x0041)
#define QCA6174_2_1_DEVICE_ID (0x003e)
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
index ffea348b2190..e28e2f5f09c5 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -52,6 +52,7 @@ MODULE_PARM_DESC(reset_mode, "0: auto, 1: warm only (default: 0)");
#define ATH10K_PCI_NUM_WARM_RESET_ATTEMPTS 3

static const struct pci_device_id ath10k_pci_id_table[] = {
+ { PCI_VDEVICE(UBIQUITI, QCA988X_2_0_DEVICE_ID_UBNT) }, /* PCI-E QCA988X V2 (Ubiquiti branded) */
{ PCI_VDEVICE(ATHEROS, QCA988X_2_0_DEVICE_ID) }, /* PCI-E QCA988X V2 */
{ PCI_VDEVICE(ATHEROS, QCA6164_2_1_DEVICE_ID) }, /* PCI-E QCA6164 V2.1 */
{ PCI_VDEVICE(ATHEROS, QCA6174_2_1_DEVICE_ID) }, /* PCI-E QCA6174 V2.1 */
@@ -68,6 +69,7 @@ static const struct ath10k_pci_supp_chip ath10k_pci_supp_chips[] = {
* hacks. ath10k doesn't have them and these devices crash horribly
* because of that.
*/
+ { QCA988X_2_0_DEVICE_ID_UBNT, QCA988X_HW_2_0_CHIP_ID_REV },
{ QCA988X_2_0_DEVICE_ID, QCA988X_HW_2_0_CHIP_ID_REV },

{ QCA6164_2_1_DEVICE_ID, QCA6174_HW_2_1_CHIP_ID_REV },
@@ -1977,6 +1979,7 @@ static int ath10k_pci_get_num_banks(struct ath10k *ar)
struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);

switch (ar_pci->pdev->device) {
+ case QCA988X_2_0_DEVICE_ID_UBNT:
case QCA988X_2_0_DEVICE_ID:
case QCA99X0_2_0_DEVICE_ID:
case QCA9888_2_0_DEVICE_ID:
@@ -3208,6 +3211,7 @@ static int ath10k_pci_probe(struct pci_dev *pdev,
u32 (*targ_cpu_to_ce_addr)(struct ath10k *ar, u32 addr);

switch (pci_dev->device) {
+ case QCA988X_2_0_DEVICE_ID_UBNT:
case QCA988X_2_0_DEVICE_ID:
hw_rev = ATH10K_HW_QCA988X;
pci_ps = false;
--
2.16.0

2018-01-29 18:41:11

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH v3 1/2] pci: Add vendor id of Ubiquiti Networks

Bjorn Helgaas <[email protected]> writes:

> On Thu, Jan 25, 2018 at 12:13:39PM +0100, Tobias Schramm wrote:
>> Signed-off-by: Tobias Schramm <[email protected]>
>
> Acked-by: Bjorn Helgaas <[email protected]>
>
> I see Kalle has already applied this, but if it's updated for any reason,
> please add my ack and change the subject to:
>
> PCI: Add Ubiquiti Networks vendor ID
>
> i.e., match the style of previous changes.

I only applied it to my pending branch which I use for build testing
etc. and I can easily change it, which I now did:

https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?h=pending&id=3c4cdd0851bc114f8b6d9f9db0b0479737bbd2d8

--
Kalle Valo

2018-02-07 14:11:38

by Kalle Valo

[permalink] [raw]
Subject: Re: [v3,1/2] pci: Add vendor id of Ubiquiti Networks

Tobias Schramm <[email protected]> wrote:

> Acked-by: Bjorn Helgaas <[email protected]>
> Signed-off-by: Tobias Schramm <[email protected]>
> Signed-off-by: Kalle Valo <[email protected]>

2 patches applied to ath-current branch of ath.git, thanks.

d5cc61119343 PCI: Add Ubiquiti Networks vendor ID
34f1cb339cae ath10k: add support for Ubiquiti rebranded QCA988X v2

--
https://patchwork.kernel.org/patch/10183907/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches