diff mbox series

Patch for Atheros QCA6174

Message ID dd4aa95d-c7e6-f582-48bd-c7d6f8cdc8b2@debitel.net (mailing list archive)
State Changes Requested
Delegated to: Kalle Valo
Headers show
Series Patch for Atheros QCA6174 | expand

Commit Message

Andreas Tepe Sept. 14, 2021, 4:59 p.m. UTC
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:



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

Kind regards,
Andreas

Comments

Peter Oh Sept. 14, 2021, 6:07 p.m. UTC | #1
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
Andreas Tepe Sept. 14, 2021, 6:23 p.m. UTC | #2
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
>
Andreas Tepe Sept. 15, 2021, 4 p.m. UTC | #3
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
>
Peter Oh Sept. 15, 2021, 4:49 p.m. UTC | #4
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
diff mbox series

Patch

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"},