2021-09-14 17:09:40

by Andreas Tepe

[permalink] [raw]
Subject: Patch for Atheros QCA6174

Hello dear developer,

since this patch has been around for years already and mentioned
multiple times on bugzilla, I'll try this way to communicate it. I never
posted a patch before and tried to follow the rules on the
https://wireless.wiki.kernel.org/ website.

The card is build in Samsung Galaxy Books and not usable without the patch.

Information about the card:

01:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless
Network Adapter (rev 32)
Subsystem: Samsung Electronics Co Ltd QCA6174 802.11ac Wireless Network
Adapter
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
<MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 129
Region 0: Memory at df400000 (64-bit, non-prefetchable) [size=2M]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA
PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable+ Count=1/8 Maskable+ 64bit-
Address: fee003b8 Data: 0000
Masking: 000000fe Pending: 00000000
Capabilities: [70] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 <64us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 10.000W
DevCtl: CorrErr- NonFatalErr- FatalErr- UnsupReq-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 256 bytes, MaxReadReq 512 bytes
DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency
L0s <4us, L1 <64us
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM L1 Enabled; RCB 64 bytes, Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s (ok), Width x1 (ok)
TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis+ NROPrPrP- LTR+
10BitTagComp- 10BitTagReq- OBFF Via message, ExtFmt- EETLPPrefix-
EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
FRS- TPHComp- ExtTPHComp-
AtomicOpsCap: 32bit- 64bit- 128bitCAS-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis- LTR+ OBFF Disabled,
AtomicOpsCtl: ReqEn-
LnkCap2: Supported Link Speeds: 2.5GT/s, Crosslink- Retimer-
2Retimers- DRS-
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance-
ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-
EqualizationPhase1-
EqualizationPhase2- EqualizationPhase3- LinkEqualizationRequest-
Retimer- 2Retimers- CrosslinkRes: unsupported
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF-
MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+
MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+
AERCap: First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap-
ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
HeaderLog: 00000000 00000000 00000000 00000000
Capabilities: [148 v1] Virtual Channel
Caps: LPEVC=0 RefClk=100ns PATEntryBits=1
Arb: Fixed- WRR32- WRR64- WRR128-
Ctrl: ArbSelect=Fixed
Status: InProgress-
VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
Status: NegoPending- InProgress-
Capabilities: [168 v1] Device Serial Number 00-00-00-00-00-00-00-00
Capabilities: [178 v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
Capabilities: [180 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
PortCommonModeRestoreTime=50us PortTPowerOnTime=10us
L1SubCtl1: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+
T_CommonMode=0us LTR1.2_Threshold=98304ns
L1SubCtl2: T_PwrOn=44us
Kernel driver in use: ath10k_pci
Kernel modules: ath10k_pci


The patch is:

diff --git a/./linux-5.14.3/drivers/net/wireless/ath/regd_common.h
b/./regd_common.h
index c4bd26e..6d8c85d 100644
--- a/./linux-5.14.3/drivers/net/wireless/ath/regd_common.h
+++ b/./regd_common.h
@@ -76,6 +76,7 @@ enum EnumRd {
APL7_FCCA = 0x5C,
APL8_WORLD = 0x5D,
APL9_WORLD = 0x5E,
+ APL10_WORLD = 0x5F,

WOR0_WORLD = 0x60,
WOR1_WORLD = 0x61,
@@ -204,6 +205,7 @@ static struct reg_dmn_pair_mapping regDomainPairs[] = {
{APL6_WORLD, CTL_ETSI, CTL_ETSI},
{APL8_WORLD, CTL_ETSI, CTL_ETSI},
{APL9_WORLD, CTL_ETSI, CTL_ETSI},
+ {APL10_WORLD, CTL_ETSI, CTL_ETSI},

{APL3_FCCA, CTL_FCC, CTL_FCC},
{APL7_FCCA, CTL_FCC, CTL_FCC},
@@ -426,6 +428,7 @@ static struct country_code_to_enum_rd allCountries[] = {
{CTRY_KOREA_ROC, APL9_WORLD, "KR"},
{CTRY_KOREA_ROC2, APL2_WORLD, "K2"},
{CTRY_KOREA_ROC3, APL9_WORLD, "K3"},
+ {CTRY_KOREA_ROC, APL10_WORLD, "KR"},
{CTRY_KUWAIT, ETSI3_WORLD, "KW"},
{CTRY_LATVIA, ETSI1_WORLD, "LV"},
{CTRY_LEBANON, NULL1_WORLD, "LB"},


It would be great if you could apply the patch since no Linux has
wireless on those machines without it.

Kind regards,
Andreas


Attachments:
OpenPGP_signature (855.00 B)
OpenPGP digital signature

2021-09-14 18:08:47

by Peter Oh

[permalink] [raw]
Subject: Re: Patch for Atheros QCA6174


On 9/14/21 9:59 AM, Andreas Tepe wrote:
> @@ -426,6 +428,7 @@ static struct country_code_to_enum_rd allCountries[] = {
> {CTRY_KOREA_ROC, APL9_WORLD, "KR"},
> {CTRY_KOREA_ROC2, APL2_WORLD, "K2"},
> {CTRY_KOREA_ROC3, APL9_WORLD, "K3"},
> + {CTRY_KOREA_ROC, APL10_WORLD, "KR"},
> {CTRY_KUWAIT, ETSI3_WORLD, "KW"},
> {CTRY_LATVIA, ETSI1_WORLD, "LV"},
> {CTRY_LEBANON, NULL1_WORLD, "LB"},

The same country number CTRY_KOREA_ROC(410) cannot be used for different
regDomainPairs.


Thanks,

Peter

2021-09-14 18:24:36

by Andreas Tepe

[permalink] [raw]
Subject: Re: Patch for Atheros QCA6174

Hello Peter,

thanks for the information and the very quick answer!

When I saw that in the patch, I had the same question, but it still
worked. I have to admit that I copied it without knowing why it works.

Who defines the codes? Is it possible to set it to CTRY_KOREA_ROC4 which
is not in use yet? In that case drivers/net/wireless/ath/regd.h also
would need an additional entry line after row 128

CTRY_KOREA_ROC4 = 413,

413 apparently is not in use yet.

Cheers,
Andreas

Am 14.09.21 um 20:07 schrieb Peter Oh:
>
> On 9/14/21 9:59 AM, Andreas Tepe wrote:
>> @@ -426,6 +428,7 @@ static struct country_code_to_enum_rd
>> allCountries[] = {
>>          {CTRY_KOREA_ROC, APL9_WORLD, "KR"},
>>          {CTRY_KOREA_ROC2, APL2_WORLD, "K2"},
>>          {CTRY_KOREA_ROC3, APL9_WORLD, "K3"},
>> +       {CTRY_KOREA_ROC, APL10_WORLD, "KR"},
>>          {CTRY_KUWAIT, ETSI3_WORLD, "KW"},
>>          {CTRY_LATVIA, ETSI1_WORLD, "LV"},
>>          {CTRY_LEBANON, NULL1_WORLD, "LB"},
>
> The same country number CTRY_KOREA_ROC(410) cannot be used for different
> regDomainPairs.
>
>
> Thanks,
>
> Peter
>


Attachments:
OpenPGP_signature (855.00 B)
OpenPGP digital signature

2021-09-15 16:01:17

by Andreas Tepe

[permalink] [raw]
Subject: Re: Patch for Atheros QCA6174

Hello Peter,

here the patches for kernel linux-5.15-rc1:

diff --git a/linux-5.15-rc1/drivers/net/wireless/ath/regd_common.h~
b/linux-5.15-rc1/drivers/net/wireless/ath/regd_common.h
index c4bd26e..cdb1e9a 100644
--- a/linux-5.15-rc1/drivers/net/wireless/ath/regd_common.h~
+++ b/linux-5.15-rc1/drivers/net/wireless/ath/regd_common.h
@@ -76,6 +76,7 @@ enum EnumRd {
APL7_FCCA = 0x5C,
APL8_WORLD = 0x5D,
APL9_WORLD = 0x5E,
+ APL10_WORLD = 0x5F,

WOR0_WORLD = 0x60,
WOR1_WORLD = 0x61,
@@ -204,6 +205,7 @@ static struct reg_dmn_pair_mapping regDomainPairs[] = {
{APL6_WORLD, CTL_ETSI, CTL_ETSI},
{APL8_WORLD, CTL_ETSI, CTL_ETSI},
{APL9_WORLD, CTL_ETSI, CTL_ETSI},
+ {APL10_WORLD, CTL_ETSI, CTL_ETSI},

{APL3_FCCA, CTL_FCC, CTL_FCC},
{APL7_FCCA, CTL_FCC, CTL_FCC},
@@ -426,6 +428,7 @@ static struct country_code_to_enum_rd allCountries[] = {
{CTRY_KOREA_ROC, APL9_WORLD, "KR"},
{CTRY_KOREA_ROC2, APL2_WORLD, "K2"},
{CTRY_KOREA_ROC3, APL9_WORLD, "K3"},
+ {CTRY_KOREA_ROC4, APL10_WORLD, "K4"},
{CTRY_KUWAIT, ETSI3_WORLD, "KW"},
{CTRY_LATVIA, ETSI1_WORLD, "LV"},
{CTRY_LEBANON, NULL1_WORLD, "LB"},


diff --git a/linux-5.15-rc1/drivers/net/wireless/ath/regd.h~
b/linux-5.15-rc1/drivers/net/wireless/ath/regd.h
index 8d5a16b..774419c 100644
--- a/linux-5.15-rc1/drivers/net/wireless/ath/regd.h~
+++ b/linux-5.15-rc1/drivers/net/wireless/ath/regd.h
@@ -126,6 +126,7 @@ enum CountryCode {
CTRY_KOREA_ROC = 410,
CTRY_KOREA_ROC2 = 411,
CTRY_KOREA_ROC3 = 412,
+ CTRY_KOREA_ROC4 = 413,
CTRY_KUWAIT = 414,
CTRY_LATVIA = 428,
CTRY_LEBANON = 422,


Kind regards,
Andreas


Am 14.09.21 um 20:07 schrieb Peter Oh:
>
> On 9/14/21 9:59 AM, Andreas Tepe wrote:
>> @@ -426,6 +428,7 @@ static struct country_code_to_enum_rd
>> allCountries[] = {
>>          {CTRY_KOREA_ROC, APL9_WORLD, "KR"},
>>          {CTRY_KOREA_ROC2, APL2_WORLD, "K2"},
>>          {CTRY_KOREA_ROC3, APL9_WORLD, "K3"},
>> +       {CTRY_KOREA_ROC, APL10_WORLD, "KR"},
>>          {CTRY_KUWAIT, ETSI3_WORLD, "KW"},
>>          {CTRY_LATVIA, ETSI1_WORLD, "LV"},
>>          {CTRY_LEBANON, NULL1_WORLD, "LB"},
>
> The same country number CTRY_KOREA_ROC(410) cannot be used for different
> regDomainPairs.
>
>
> Thanks,
>
> Peter
>


Attachments:
OpenPGP_signature (855.00 B)
OpenPGP digital signature

2021-09-15 16:50:19

by Peter Oh

[permalink] [raw]
Subject: Re: Patch for Atheros QCA6174


On 9/15/21 9:00 AM, Andreas Tepe wrote:
> Hello Peter,
>
> here the patches for kernel linux-5.15-rc1:

For the upstream reviewers, you need to add a root cause analysis(why
the error happens) and about how your patch fixes the problem. Take a
read
https://www.kernel.org/doc/html/latest/process/submitting-patches.html#
for about submitting patches and follow the instruction, otherwise your
patch maybe not getting reviewed by the maintainer.

In addition to that, you said

"mentioned multiple times on bugzilla",

hence it'd be good if you add the bugzilla link, so that people
understand the history.

Peter