12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670 |
- From: Matthias Schiffer <mschiffer@universe-factory.net>
- Date: Tue, 15 Aug 2017 00:18:21 +0200
- Subject: mac80211, mt76, ath10k-ct, ath10k-firmware: backport from LEDE df3295f50e54909090846de12f7deb3ff8de6557
- diff --git a/package/firmware/ath10k-firmware/Makefile b/package/firmware/ath10k-firmware/Makefile
- index 8bf5729fff16677ef6449498f1df3cda19272583..16d77a398fbd3cbed6371e2cf977e2d8c4cfda36 100644
- --- a/package/firmware/ath10k-firmware/Makefile
- +++ b/package/firmware/ath10k-firmware/Makefile
- @@ -8,9 +8,9 @@
- include $(TOPDIR)/rules.mk
-
- PKG_NAME:=ath10k-firmware
- -PKG_SOURCE_DATE:=2017-01-11
- -PKG_SOURCE_VERSION:=ab432c60437931a165f0aff1a6e3371f358b75dd
- -PKG_MIRROR_HASH:=e3188ecd4d7470d3cdde89fefa6258f9ec4f404b23558d1474e5014679b28101
- +PKG_SOURCE_DATE:=2017-03-29
- +PKG_SOURCE_VERSION:=956e2609b7e42c8c710bba10ef925a5be1be5137
- +PKG_MIRROR_HASH:=25f724ff38c830281b3efba4a4ddffaae0c4bd8fea0f4c1061591229ff05535b
- PKG_RELEASE:=1
-
- PKG_SOURCE_PROTO:=git
- @@ -32,6 +32,11 @@ $(Package/ath10k-firmware-default)
- TITLE:=ath10k firmware for QCA9887 devices
- endef
-
- +define Package/ath10k-firmware-qca9888
- +$(Package/ath10k-firmware-default)
- + TITLE:=ath10k firmware for QCA9888 devices
- +endef
- +
- define Package/ath10k-firmware-qca9887-ct
- $(Package/ath10k-firmware-default)
- TITLE:=ath10k-CT firmware for QCA9887 devices
- @@ -76,34 +81,41 @@ define Download/ct-firmware
- URL_FILE:=$($(1)_FIRMWARE_FILE_CT)
- endef
-
- -QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community.bin-19-rc3-lede
- +QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community.bin-19-rc5-lede
- define Download/ath10k-firmware-qca988x-ct
- $(call Download/ct-firmware,QCA988X,)
- - HASH:=4112d78161a2c20e7a9490ea8d04e9f919508bafb097d88761dcce026c26f93f
- + HASH:=556d6a4df50cd94a229a240d6d1d108ed5910069902f1e0cbb57b02ede27690f
- endef
- $(eval $(call Download,ath10k-firmware-qca988x-ct))
-
- -QCA9887_FIRMWARE_FILE_CT:=firmware-2-ct-full-community.bin-19-rc3-lede
- +QCA9887_FIRMWARE_FILE_CT:=firmware-2-ct-full-community.bin-19-rc5-lede
- define Download/ath10k-firmware-qca9887-ct
- $(call Download/ct-firmware,QCA9887,ath10k-9887)
- - HASH:=18b61875726d4384de46f75dec1d42fea31aa6d66dba4940cb9d375bc98732e4
- + HASH:=725982694156e0b891dcd1b1b18ba5318fbbe173f4ec9603ff7acbd08f7c4050
- endef
- $(eval $(call Download,ath10k-firmware-qca9887-ct))
-
- -QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-9.bin-lede.001
- +QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-9.bin-lede.002
- define Download/ath10k-firmware-qca99x0-ct
- $(call Download/ct-firmware,QCA99X0,ath10k-10-4)
- - HASH:=61ff2b52617ae805579f423d6539284f056aba2b9f7e3629d600f6a5077ab703
- + HASH:=e3c77077b47d55219f90816a51bf046f5b40c32be5e96bf629b083d873a879ad
- endef
- $(eval $(call Download,ath10k-firmware-qca99x0-ct))
-
- -QCA9984_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-9.bin-lede.001
- +QCA9984_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-9.bin-lede.002
- define Download/ath10k-firmware-qca9984-ct
- $(call Download/ct-firmware,QCA9984,ath10k-9984-10-4)
- - HASH:=e079db5059cf28979ff50c7f6706df87e96a375e8048deeb4f6ede5357577f74
- + HASH:=610f7747db6b101f4fc21431b776ac640b5977357e5be9aece2349447b9b1d85
- endef
- $(eval $(call Download,ath10k-firmware-qca9984-ct))
-
- +QCA9888_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-9.bin-lede.002
- +define Download/ath10k-firmware-qca9888-ct
- + $(call Download/ct-firmware,QCA9888,ath10k-9888-10-4)
- + HASH:=f92e7d7968698af7c6f2d76b31b3645589e03839e15838010ce457c635e5aae6
- +endef
- +$(eval $(call Download,ath10k-firmware-qca9888-ct))
- +
- define Package/ath10k-firmware-qca99x0
- $(Package/ath10k-firmware-default)
- TITLE:=ath10k firmware for QCA99x0 devices
- @@ -158,6 +170,14 @@ This firmware conflicts with the standard 9984 firmware, so select only
- one.
- endef
-
- +define Package/ath10k-firmware-qca9888-ct/description
- +Alternative ath10k firmware for QCA9886 and QCA9888 from Candela Technologies.
- +Enables IBSS and other features. See:
- +http://www.candelatech.com/ath10k-10.4.php
- +This firmware conflicts with the standard 9886 and 9888 firmware, so select only
- +one.
- +endef
- +
- define Package/ath10k-firmware-qca99x0/description
- Standard ath10k firmware for QCA99x0 from QCA
- This firmware conflicts with the CT 99x0 firmware, so select only
- @@ -178,6 +198,13 @@ $(Package/ath10k-firmware-default)
- CATEGORY:=Firmware
- endef
-
- +define Package/ath10k-firmware-qca9888-ct
- +$(Package/ath10k-firmware-default)
- + TITLE:=ath10k CT 10.4.3 firmware for QCA9886 and QCA9888 devices
- + SECTION:=firmware
- + CATEGORY:=Firmware
- +endef
- +
- define Package/ath10k-firmware-qca9984
- $(Package/ath10k-firmware-default)
- TITLE:=ath10k firmware for QCA9984 devices
- @@ -185,6 +212,13 @@ $(Package/ath10k-firmware-default)
- CATEGORY:=Firmware
- endef
-
- +define Package/ath10k-firmware-qca4019
- +$(Package/ath10k-firmware-default)
- + TITLE:=ath10k firmware for IPQ/QCA4019 devices
- + SECTION:=firmware
- + CATEGORY:=Firmware
- +endef
- +
- define Package/ath10k-firmware-qca6174
- $(Package/ath10k-firmware-default)
- TITLE:=ath10k firmware for QCA6174 devices
- @@ -203,31 +237,18 @@ define Download/qca99x0-board
- endef
- $(eval $(call Download,qca99x0-board))
-
- -QCA9984_BOARD_REV:=719c0127e52bd70559e71b85ab0331790e1bf66c
- -QCA9984_BOARD_FILE:=board-2.bin
- -QCA9984_BOARD_FILE_DL:=$(QCA9984_BOARD_FILE).$(QCA9984_BOARD_REV)
- -QCA9984_FIRMWARE_REV:=d43cb1188154037506e94abf3aa456cc934c6861
- -QCA9984_FIRMWARE_FILE:=firmware-5.bin_10.4-3.4-00072
- -QCA9984_FIRMWARE_FILE_DL:=$(QCA9984_FIRMWARE_FILE).$(QCA9984_FIRMWARE_REV)
- -
- -define Download/ath10k-qca9984-board
- - URL:=https://source.codeaurora.org/quic/qsdk/oss/firmware/ath10k-firmware/plain/ath10k/QCA9984/hw1.0/
- - URL_FILE:=$(QCA9984_BOARD_FILE)?id=$(QCA9984_BOARD_REV)
- - FILE:=$(QCA9984_BOARD_FILE_DL)
- - HASH:=e968b214fd76d5b7859f71841ce40fbd5f47336c3ccbaf95e23f902f5e569aef
- -endef
- -$(eval $(call Download,ath10k-qca9984-board))
- +define Build/Compile
-
- -define Download/ath10k-qca9984-firmware
- - URL:=https://source.codeaurora.org/quic/qsdk/oss/firmware/ath10k-firmware/plain/ath10k/QCA9984/hw1.0/
- - URL_FILE:=$(QCA9984_FIRMWARE_FILE)?id=$(QCA9984_FIRMWARE_REV)
- - FILE:=$(QCA9984_FIRMWARE_FILE_DL)
- - HASH:=28d5834e8c4ca8fcef9ea033cd8b9b0f9ee84ecf30dbde84c9c64bf8dd9912bc
- endef
- -$(eval $(call Download,ath10k-qca9984-firmware))
- -
- -define Build/Compile
-
- +define Package/ath10k-firmware-qca4019/install
- + $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA4019/hw1.0
- + $(INSTALL_DATA) \
- + $(PKG_BUILD_DIR)/QCA4019/hw1.0/board-2.bin \
- + $(1)/lib/firmware/ath10k/QCA4019/hw1.0/
- + $(INSTALL_DATA) \
- + $(PKG_BUILD_DIR)/QCA4019/hw1.0/3.2.1/firmware-5.bin_10.4-3.2.1-00053 \
- + $(1)/lib/firmware/ath10k/QCA4019/hw1.0/firmware-5.bin
- endef
-
- define Package/ath10k-firmware-qca9887/install
- @@ -240,13 +261,26 @@ define Package/ath10k-firmware-qca9887/install
- $(1)/lib/firmware/ath10k/QCA9887/hw1.0/board.bin
- endef
-
- +define Package/ath10k-firmware-qca9888/install
- + $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9888/hw2.0
- + $(INSTALL_DATA) \
- + $(PKG_BUILD_DIR)/QCA9888/hw2.0/board-2.bin \
- + $(1)/lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin
- + $(INSTALL_DATA) \
- + $(PKG_BUILD_DIR)/QCA9888/hw2.0/board-2.bin \
- + $(1)/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
- + $(INSTALL_DATA) \
- + $(PKG_BUILD_DIR)/QCA9888/hw2.0/firmware-5.bin_10.4-3.2-00072 \
- + $(1)/lib/firmware/ath10k/QCA9888/hw2.0/firmware-5.bin
- +endef
- +
- define Package/ath10k-firmware-qca988x/install
- $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA988X/hw2.0
- $(INSTALL_DATA) \
- $(PKG_BUILD_DIR)/QCA988X/hw2.0/board.bin \
- $(1)/lib/firmware/ath10k/QCA988X/hw2.0/
- $(INSTALL_DATA) \
- - $(PKG_BUILD_DIR)/QCA988X/hw2.0/10.2.4-1.0/firmware-5.bin_10.2.4-1.0-00016 \
- + $(PKG_BUILD_DIR)/QCA988X/hw2.0/10.2.4-1.0/firmware-5.bin_10.2.4-1.0-00029 \
- $(1)/lib/firmware/ath10k/QCA988X/hw2.0/firmware-5.bin
- endef
-
- @@ -303,22 +337,16 @@ endef
-
- define Package/ath10k-firmware-qca9984/install
- $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
- - ln -s \
- - ../../cal-pci-0000:01:00.0.bin \
- - $(1)/lib/firmware/ath10k/QCA9984/hw1.0/board.bin
- $(INSTALL_DATA) \
- - $(DL_DIR)/$(QCA9984_BOARD_FILE_DL) \
- + $(PKG_BUILD_DIR)/QCA9984/hw1.0/board-2.bin \
- $(1)/lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin
- $(INSTALL_DATA) \
- - $(DL_DIR)/$(QCA9984_FIRMWARE_FILE_DL) \
- + $(PKG_BUILD_DIR)/QCA9984/hw1.0/3.4/firmware-5.bin_10.4-3.4-00082 \
- $(1)/lib/firmware/ath10k/QCA9984/hw1.0/firmware-5.bin
- endef
-
- define Package/ath10k-firmware-qca9984-ct/install
- $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
- - ln -s \
- - ../../cal-pci-0000:01:00.0.bin \
- - $(1)/lib/firmware/ath10k/QCA9984/hw1.0/board.bin
- $(INSTALL_DATA) \
- $(PKG_BUILD_DIR)/QCA9984/hw1.0/board-2.bin \
- $(1)/lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin
- @@ -327,13 +355,29 @@ define Package/ath10k-firmware-qca9984-ct/install
- $(1)/lib/firmware/ath10k/QCA9984/hw1.0/firmware-5.bin
- endef
-
- +define Package/ath10k-firmware-qca9888-ct/install
- + $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9888/hw2.0
- + ln -s \
- + ../../cal-pci-0000:01:00.0.bin \
- + $(1)/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
- + $(INSTALL_DATA) \
- + $(PKG_BUILD_DIR)/QCA9888/hw2.0/board-2.bin \
- + $(1)/lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin
- + $(INSTALL_DATA) \
- + $(DL_DIR)/$(call CT_FIRMWARE_FILE,QCA9888) \
- + $(1)/lib/firmware/ath10k/QCA9888/hw2.0/firmware-5.bin
- +endef
- +
- $(eval $(call BuildPackage,ath10k-firmware-qca9887))
- +$(eval $(call BuildPackage,ath10k-firmware-qca9888))
- $(eval $(call BuildPackage,ath10k-firmware-qca988x))
- $(eval $(call BuildPackage,ath10k-firmware-qca99x0))
- $(eval $(call BuildPackage,ath10k-firmware-qca6174))
- $(eval $(call BuildPackage,ath10k-firmware-qca9984))
- +$(eval $(call BuildPackage,ath10k-firmware-qca4019))
-
- $(eval $(call BuildPackage,ath10k-firmware-qca9887-ct))
- $(eval $(call BuildPackage,ath10k-firmware-qca988x-ct))
- $(eval $(call BuildPackage,ath10k-firmware-qca99x0-ct))
- $(eval $(call BuildPackage,ath10k-firmware-qca9984-ct))
- +$(eval $(call BuildPackage,ath10k-firmware-qca9888-ct))
- diff --git a/package/kernel/ath10k-ct/Makefile b/package/kernel/ath10k-ct/Makefile
- index 4ec49c326560f55d0ab66419fac89744ea5f9535..85fe4eb4638bc286d8e6486731e255ceb7ce5694 100644
- --- a/package/kernel/ath10k-ct/Makefile
- +++ b/package/kernel/ath10k-ct/Makefile
- @@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
-
- PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
- PKG_SOURCE_PROTO:=git
- -PKG_SOURCE_DATE:=2017-01-26
- -PKG_SOURCE_VERSION:=d2bc84ff277936c58231f0c2280242eda4199e63
- -PKG_MIRROR_HASH:=6b734b987db00b97b06faca686dcebc56fb23b93093afbb35d5cf534987269bf
- +PKG_SOURCE_DATE:=2017-05-16
- +PKG_SOURCE_VERSION:=c048ef0c3eedf99b41bc12b3f4e47ef3d9fab484
- +PKG_MIRROR_HASH:=7936293962a10a0da7469759623013fc151019a6a584cfc6416bc0b605bd74d7
-
- PKG_MAINTAINER:=Ben Greear <greearb@candelatech.com>
- PKG_BUILD_PARALLEL:=1
- diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
- index 8ec05a343a4df23ef43411b5074ea1b4fe10d5f5..1ac390d337c23cfb33be5f19de3281a4d83263f3 100644
- --- a/package/kernel/mac80211/Makefile
- +++ b/package/kernel/mac80211/Makefile
- @@ -42,8 +42,8 @@ PKG_DRIVERS = \
- rt2800-lib rt2800-mmio rt2800-pci rt2800-soc rt2800-usb \
- rt61-pci rt73-usb \
- rtl8180 rtl8187 \
- - rtlwifi rtlwifi-pci rtlwifi-usb rtl8192c-common rtl8192ce rtl8192se \
- - rtl8192de rtl8192cu \
- + rtlwifi rtlwifi-pci rtlwifi-btcoexist rtlwifi-usb rtl8192c-common \
- + rtl8192ce rtl8192se rtl8192de rtl8192cu rtl8821ae \
- rtl8xxxu \
- wlcore wl12xx wl18xx \
- zd1211rw
- @@ -278,7 +278,7 @@ endef
- define KernelPackage/ath10k
- $(call KernelPackage/mac80211/Default)
- TITLE:=Atheros 802.11ac wireless cards support
- - URL:=https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
- + URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath10k
- DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11W_SUPPORT +@KERNEL_RELAY
- FILES:= \
- $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_core.ko \
- @@ -689,7 +689,7 @@ define KernelPackage/brcmfmac
- TITLE:=Broadcom IEEE802.11n USB FullMAC WLAN driver
- URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211
- DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +kmod-brcmutil \
- - +BRCMFMAC_SDIO:kmod-mmc \
- + +BRCMFMAC_SDIO:kmod-mmc @!TARGET_uml \
- +BRCMFMAC_USB:kmod-usb-core +BRCMFMAC_USB:brcmfmac-firmware-usb
- FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
- AUTOLOAD:=$(call AutoProbe,brcmfmac)
- @@ -1042,7 +1042,7 @@ endef
- define KernelPackage/mwl8k
- $(call KernelPackage/mac80211/Default)
- TITLE:=Driver for Marvell TOPDOG 802.11 Wireless cards
- - URL:=http://wireless.kernel.org/en/users/Drivers/mwl8k
- + URL:=https://wireless.wiki.kernel.org/en/users/drivers/mwl8k
- DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT +mwl8k-firmware
- FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwl8k.ko
- AUTOLOAD:=$(call AutoProbe,mwl8k)
- @@ -1056,7 +1056,7 @@ endef
- define KernelPackage/mwifiex-pcie
- $(call KernelPackage/mac80211/Default)
- TITLE:=Driver for Marvell 802.11n/802.11ac PCIe Wireless cards
- - URL:=http://wireless.kernel.org/en/users/Drivers/mwifiex
- + URL:=https://wireless.wiki.kernel.org/en/users/drivers/mwifiex
- DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +mwifiex-pcie-firmware
- FILES:= \
- $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex.ko \
- @@ -1071,7 +1071,7 @@ endef
- define KernelPackage/mwifiex-sdio
- $(call KernelPackage/mac80211/Default)
- TITLE:=Driver for Marvell 802.11n/802.11ac SDIO Wireless cards
- - URL:=http://wireless.kernel.org/en/users/Drivers/mwifiex
- + URL:=https://wireless.wiki.kernel.org/en/users/drivers/mwifiex
- DEPENDS+= +kmod-mmc +kmod-mac80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +mwifiex-sdio-firmware
- FILES:= \
- $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex.ko \
- @@ -1268,7 +1268,7 @@ endef
- define KernelPackage/rtl818x/Default
- $(call KernelPackage/mac80211/Default)
- TITLE:=Realtek Drivers for RTL818x devices
- - URL:=http://wireless.kernel.org/en/users/Drivers/rtl8187
- + URL:=https://wireless.wiki.kernel.org/en/users/drivers/rtl8187
- DEPENDS+= +kmod-eeprom-93cx6 +kmod-mac80211
- endef
-
- @@ -1314,6 +1314,15 @@ define KernelPackage/rtlwifi-pci
- HIDDEN:=1
- endef
-
- +define KernelPackage/rtlwifi-btcoexist
- + $(call KernelPackage/mac80211/Default)
- + TITLE:=Realtek BT coexist support
- + DEPENDS+= +kmod-rtlwifi
- + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist.ko
- + AUTOLOAD:=$(call AutoProbe,btcoexist)
- + HIDDEN:=1
- +endef
- +
- define KernelPackage/rtlwifi-usb
- $(call KernelPackage/mac80211/Default)
- TITLE:=Realtek common driver part (USB support)
- @@ -1363,6 +1372,13 @@ define KernelPackage/rtl8192cu
- AUTOLOAD:=$(call AutoProbe,rtl8192cu)
- endef
-
- +define KernelPackage/rtl8821ae
- + $(call KernelPackage/mac80211/Default)
- + TITLE:=Realtek RTL8821AE support
- + DEPENDS+= +kmod-rtlwifi-btcoexist +kmod-rtlwifi-pci +rtl8821ae-firmware
- + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/rtl8821ae.ko
- + AUTOLOAD:=$(call AutoProbe,rtl8821ae)
- +endef
-
- define KernelPackage/rtl8xxxu
- $(call KernelPackage/mac80211/Default)
- @@ -1414,7 +1430,7 @@ endef
- define KernelPackage/wl12xx
- $(call KernelPackage/mac80211/Default)
- TITLE:=Driver for TI WL12xx
- - URL:=http://wireless.kernel.org/en/users/Drivers/wl12xx
- + URL:=https://wireless.wiki.kernel.org/en/users/drivers/wl12xx
- DEPENDS+= +kmod-wlcore +wl12xx-firmware
- FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl12xx/wl12xx.ko
- AUTOLOAD:=$(call AutoProbe,wl12xx)
- @@ -1427,7 +1443,7 @@ endef
- define KernelPackage/wl18xx
- $(call KernelPackage/mac80211/Default)
- TITLE:=Driver for TI WL18xx
- - URL:=http://wireless.kernel.org/en/users/Drivers/wl18xx
- + URL:=https://wireless.wiki.kernel.org/en/users/drivers/wl18xx
- DEPENDS+= +kmod-wlcore +wl18xx-firmware
- FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl18xx/wl18xx.ko
- AUTOLOAD:=$(call AutoProbe,wl18xx)
- @@ -1521,6 +1537,7 @@ config-$(CONFIG_PACKAGE_ATH_DFS) += ATH9K_DFS_CERTIFIED ATH10K_DFS_CERTIFIED
- config-$(call config_package,ath9k) += ATH9K
- config-$(call config_package,ath9k-common) += ATH9K_COMMON
- config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB
- +config-$(CONFIG_TARGET_ipq806x) += ATH10K_AHB
- config-$(CONFIG_PCI) += ATH9K_PCI
- config-$(CONFIG_ATH_USER_REGD) += ATH_USER_REGD
- config-$(CONFIG_ATH9K_SUPPORT_PCOEM) += ATH9K_PCOEM
- @@ -1626,12 +1643,14 @@ config-$(call config_package,zd1211rw) += ZD1211RW
-
- config-$(call config_package,rtlwifi) += RTL_CARDS RTLWIFI
- config-$(call config_package,rtlwifi-pci) += RTLWIFI_PCI
- +config-$(call config_package,rtlwifi-btcoexist) += RTLBTCOEXIST
- config-$(call config_package,rtlwifi-usb) += RTLWIFI_USB
- config-$(call config_package,rtl8192c-common) += RTL8192C_COMMON
- config-$(call config_package,rtl8192ce) += RTL8192CE
- config-$(call config_package,rtl8192se) += RTL8192SE
- config-$(call config_package,rtl8192de) += RTL8192DE
- config-$(call config_package,rtl8192cu) += RTL8192CU
- +config-$(call config_package,rtl8821ae) += RTL8821AE
- config-$(CONFIG_PACKAGE_RTLWIFI_DEBUG) += RTLWIFI_DEBUG
-
- config-$(call config_package,rtl8xxxu) += RTL8XXXU
- @@ -1640,8 +1659,7 @@ config-y += RTL8XXXU_UNTESTED
- config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS B43_LEDS B43LEGACY_LEDS
-
- MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \
- - CROSS_COMPILE="$(KERNEL_CROSS)" \
- - ARCH="$(LINUX_KARCH)" \
- + $(KERNEL_MAKE_FLAGS) \
- EXTRA_CFLAGS="-I$(PKG_BUILD_DIR)/include $(IREMAP_CFLAGS)" \
- KLIB_BUILD="$(LINUX_DIR)" \
- MODPROBE=true \
- @@ -1649,10 +1667,6 @@ MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \
- KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER))) \
- KBUILD_LDFLAGS_MODULE_PREREQ=
-
- -ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
- - MAKE_OPTS += V=1
- -endif
- -
- define ConfigVars
- $(subst $(space),,$(foreach opt,$(config-$(1)),CPTCFG_$(opt)=$(1)
- ))
- @@ -1834,12 +1848,14 @@ $(eval $(call KernelPackage,rtl8180))
- $(eval $(call KernelPackage,rtl8187))
- $(eval $(call KernelPackage,rtlwifi))
- $(eval $(call KernelPackage,rtlwifi-pci))
- +$(eval $(call KernelPackage,rtlwifi-btcoexist))
- $(eval $(call KernelPackage,rtlwifi-usb))
- $(eval $(call KernelPackage,rtl8192c-common))
- $(eval $(call KernelPackage,rtl8192ce))
- $(eval $(call KernelPackage,rtl8192se))
- $(eval $(call KernelPackage,rtl8192de))
- $(eval $(call KernelPackage,rtl8192cu))
- +$(eval $(call KernelPackage,rtl8821ae))
- $(eval $(call KernelPackage,rtl8xxxu))
- $(eval $(call KernelPackage,wlcore))
- $(eval $(call KernelPackage,wl12xx))
- diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
- index 82c374353ec98259e57c2568843ca9ef6b3a4ca2..ebd24df0d3e984bf2afc5997207509f8150509b2 100644
- --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
- +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
- @@ -411,6 +411,34 @@ mac80211_check_ap() {
- has_ap=1
- }
-
- +mac80211_iw_interface_add() {
- + local phy="$1"
- + local ifname="$2"
- + local type="$3"
- + local wdsflag="$4"
- + local rc
- +
- + iw phy "$phy" interface add "$ifname" type "$type" $wdsflag
- + rc="$?"
- +
- + [ "$rc" = 233 ] && {
- + # Device might have just been deleted, give the kernel some time to finish cleaning it up
- + sleep 1
- +
- + iw phy "$phy" interface add "$ifname" type "$type" $wdsflag
- + rc="$?"
- + }
- +
- + [ "$rc" = 233 ] && {
- + # Device might not support virtual interfaces, so the interface never got deleted in the first place.
- + # Check if the interface already exists, and avoid failing in this case.
- + ip link show dev "$ifname" >/dev/null 2>/dev/null && rc=0
- + }
- +
- + [ "$rc" != 0 ] && wireless_setup_failed INTERFACE_CREATION_FAILED
- + return $rc
- +}
- +
- mac80211_prepare_vif() {
- json_select config
-
- @@ -437,7 +465,7 @@ mac80211_prepare_vif() {
- # It is far easier to delete and create the desired interface
- case "$mode" in
- adhoc)
- - iw phy "$phy" interface add "$ifname" type adhoc
- + mac80211_iw_interface_add "$phy" "$ifname" adhoc || return
- ;;
- ap)
- # Hostapd will handle recreating the interface and
- @@ -451,21 +479,21 @@ mac80211_prepare_vif() {
- mac80211_hostapd_setup_bss "$phy" "$ifname" "$macaddr" "$type" || return
-
- [ -n "$hostapd_ctrl" ] || {
- - iw phy "$phy" interface add "$ifname" type __ap
- + mac80211_iw_interface_add "$phy" "$ifname" __ap || return
- hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}"
- }
- ;;
- mesh)
- - iw phy "$phy" interface add "$ifname" type mp
- + mac80211_iw_interface_add "$phy" "$ifname" mp || return
- ;;
- monitor)
- - iw phy "$phy" interface add "$ifname" type monitor
- + mac80211_iw_interface_add "$phy" "$ifname" monitor || return
- ;;
- sta)
- local wdsflag=
- staidx="$(($staidx + 1))"
- [ "$wds" -gt 0 ] && wdsflag="4addr on"
- - iw phy "$phy" interface add "$ifname" type managed $wdsflag
- + mac80211_iw_interface_add "$phy" "$ifname" managed "$wdsflag" || return
- [ "$powersave" -gt 0 ] && powersave="on" || powersave="off"
- iw "$ifname" set power_save "$powersave"
- ;;
- diff --git a/package/kernel/mac80211/files/regdb.txt b/package/kernel/mac80211/files/regdb.txt
- index c4a9b2d15fd56c7331726cfb10e15c7acc673e8c..d583887602d2e3b337a9f878ef0aa7e58b36d8c2 100644
- --- a/package/kernel/mac80211/files/regdb.txt
- +++ b/package/kernel/mac80211/files/regdb.txt
- @@ -85,12 +85,20 @@ country AT: DFS-ETSI
- # 60 GHz band channels 1-4, ref: Etsi En 302 567
- (57000 - 66000 @ 2160), (40)
-
- +# Source:
- +# https://www.legislation.gov.au/Details/F2016C00432
- +# Both DFS-ETSI and DFS-FCC are acceptable per AS/NZS 4268 Appendix B.
- +# The EIRP for DFS bands can be increased by 3dB if TPC is implemented.
- +# In order to allow 80MHz operation between 5650-5730MHz the upper boundary
- +# of this more restrictive band has been shifted up by 5MHz from 5725MHz.
- country AU: DFS-ETSI
- - (2402 - 2482 @ 40), (20)
- - (5170 - 5250 @ 80), (17), AUTO-BW
- - (5250 - 5330 @ 80), (24), DFS, AUTO-BW
- - (5490 - 5710 @ 160), (24), DFS
- - (5735 - 5835 @ 80), (30)
- + (2400 - 2483.5 @ 40), (36)
- + (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW
- + (5250 - 5350 @ 80), (20), NO-OUTDOOR, AUTO-BW, DFS
- + (5470 - 5600 @ 80), (27), DFS
- + (5650 - 5730 @ 80), (27), DFS
- + (5730 - 5850 @ 80), (36)
- + (57000 - 66000 @ 2160), (43), NO-OUTDOOR
-
- country AW: DFS-ETSI
- (2402 - 2482 @ 40), (20)
- @@ -230,9 +238,9 @@ country BZ: DFS-JP
-
- country CA: DFS-FCC
- (2402 - 2472 @ 40), (30)
- - (5170 - 5250 @ 80), (17), AUTO-BW
- - (5250 - 5330 @ 80), (24), DFS, AUTO-BW
- - (5490 - 5600 @ 80), (24), DFS
- + (5150 - 5250 @ 80), (23), AUTO-BW
- + (5250 - 5350 @ 80), (24), DFS, AUTO-BW
- + (5470 - 5600 @ 80), (24), DFS
- (5650 - 5730 @ 80), (24), DFS
- (5735 - 5835 @ 80), (30)
-
- @@ -580,11 +588,10 @@ country IL: DFS-ETSI
- (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
- (5250 - 5350 @ 80), (200 mW), NO-OUTDOOR, DFS, AUTO-BW
-
- -country IN: DFS-JP
- +country IN:
- (2402 - 2482 @ 40), (20)
- - (5170 - 5250 @ 80), (20), AUTO-BW
- - (5250 - 5330 @ 80), (20), DFS, AUTO-BW
- - (5735 - 5835 @ 80), (20)
- + (5150 - 5350 @ 160), (23)
- + (5725 - 5875 @ 80), (23)
-
- country IR: DFS-JP
- (2402 - 2482 @ 40), (20)
- diff --git a/package/kernel/mac80211/patches/012-kernel_build_check.patch b/package/kernel/mac80211/patches/012-kernel_build_check.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..d225ba1820b911003c267809b07c565e5e42d034
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/012-kernel_build_check.patch
- @@ -0,0 +1,11 @@
- +--- a/Makefile
- ++++ b/Makefile
- +@@ -2,7 +2,7 @@
- + # Makefile for the output source package
- + #
- +
- +-ifeq ($(KERNELRELEASE),)
- ++ifeq ($(KERNELVERSION),)
- +
- + MAKEFLAGS += --no-print-directory
- + SHELL := /usr/bin/env bash
- diff --git a/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch b/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch
- index 7e829faef60b721a04da969a31deb5c7b6a00990..cf551fde023a8e1ae9e4379db59616559e0ae2dc 100644
- --- a/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch
- +++ b/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch
- @@ -23,11 +23,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 5 +++++
- 2 files changed, 13 insertions(+), 15 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -index 8fcbc8dc94c1..4b08007f93f7 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -@@ -1436,21 +1436,6 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
- +@@ -1436,21 +1436,6 @@ void rt2x00lib_remove_dev(struct rt2x00_
- cancel_work_sync(&rt2x00dev->intf_work);
- cancel_delayed_work_sync(&rt2x00dev->autowakeup_work);
- cancel_work_sync(&rt2x00dev->sleep_work);
- @@ -49,7 +47,7 @@ index 8fcbc8dc94c1..4b08007f93f7 100644
-
- /*
- * Kill the tx status tasklet.
- -@@ -1466,6 +1451,14 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
- +@@ -1466,6 +1451,14 @@ void rt2x00lib_remove_dev(struct rt2x00_
- */
- rt2x00lib_uninitialize(rt2x00dev);
-
- @@ -64,11 +62,9 @@ index 8fcbc8dc94c1..4b08007f93f7 100644
- /*
- * Free extra components
- */
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
- -index 838ca58d2dd6..5a2bf9f63cd7 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
- -@@ -744,6 +744,11 @@ void rt2x00usb_uninitialize(struct rt2x00_dev *rt2x00dev)
- +@@ -744,6 +744,11 @@ void rt2x00usb_uninitialize(struct rt2x0
- {
- struct data_queue *queue;
-
- @@ -80,6 +76,3 @@ index 838ca58d2dd6..5a2bf9f63cd7 100644
- queue_for_each(rt2x00dev, queue)
- rt2x00usb_free_entries(queue);
- }
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch b/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch
- index 6510b55c7952999db4f15fd3bc095dcc06414928..d096b64a8a18ad2c22c4fb93913fd63975dc3cd0 100644
- --- a/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch
- +++ b/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch
- @@ -30,11 +30,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 4 ----
- 1 file changed, 4 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
- -index 5a2bf9f63cd7..fe13dd07cc2a 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
- -@@ -319,10 +319,8 @@ static bool rt2x00usb_kick_tx_entry(struct queue_entry *entry, void *data)
- +@@ -319,10 +319,8 @@ static bool rt2x00usb_kick_tx_entry(stru
- entry->skb->data, length,
- rt2x00usb_interrupt_txdone, entry);
-
- @@ -45,7 +43,7 @@ index 5a2bf9f63cd7..fe13dd07cc2a 100644
- if (status == -ENODEV)
- clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
- set_bit(ENTRY_DATA_IO_FAILED, &entry->flags);
- -@@ -410,10 +408,8 @@ static bool rt2x00usb_kick_rx_entry(struct queue_entry *entry, void *data)
- +@@ -410,10 +408,8 @@ static bool rt2x00usb_kick_rx_entry(stru
- entry->skb->data, entry->skb->len,
- rt2x00usb_interrupt_rxdone, entry);
-
- @@ -56,6 +54,3 @@ index 5a2bf9f63cd7..fe13dd07cc2a 100644
- if (status == -ENODEV)
- clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
- set_bit(ENTRY_DATA_IO_FAILED, &entry->flags);
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch b/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch
- index 78d8ac63d8629ee79873c8d0399ed1a1aca8e435..5ff73df2a6f4748ab7eb9074050b03dcc473da2a 100644
- --- a/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch
- +++ b/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch
- @@ -36,11 +36,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 13 ++++++++-----
- 1 file changed, 8 insertions(+), 5 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
- -index fe13dd07cc2a..c696f0ad6a68 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
- -@@ -825,10 +825,6 @@ int rt2x00usb_probe(struct usb_interface *usb_intf,
- +@@ -825,10 +825,6 @@ int rt2x00usb_probe(struct usb_interface
- if (retval)
- goto exit_free_device;
-
- @@ -51,7 +49,7 @@ index fe13dd07cc2a..c696f0ad6a68 100644
- rt2x00dev->anchor = devm_kmalloc(&usb_dev->dev,
- sizeof(struct usb_anchor),
- GFP_KERNEL);
- -@@ -836,10 +832,17 @@ int rt2x00usb_probe(struct usb_interface *usb_intf,
- +@@ -836,10 +832,17 @@ int rt2x00usb_probe(struct usb_interface
- retval = -ENOMEM;
- goto exit_free_reg;
- }
- @@ -70,6 +68,3 @@ index fe13dd07cc2a..c696f0ad6a68 100644
- exit_free_reg:
- rt2x00usb_free_reg(rt2x00dev);
-
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch b/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch
- index d8f262af850ef85ce74be1d1a4b0bceb67928f66..274d8f7c3f819f2908778561cfa1acbcab7531d1 100644
- --- a/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch
- +++ b/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch
- @@ -9,11 +9,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt61pci.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt61pci.c b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
- -index 5306a3b2622d..8adb5f3abe15 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
- -@@ -1903,8 +1903,7 @@ static void rt61pci_write_tx_desc(struct queue_entry *entry,
- +@@ -1903,8 +1903,7 @@ static void rt61pci_write_tx_desc(struct
-
- rt2x00_desc_read(txd, 5, &word);
- rt2x00_set_field32(&word, TXD_W5_PID_TYPE, entry->queue->qid);
- @@ -23,6 +21,3 @@ index 5306a3b2622d..8adb5f3abe15 100644
- rt2x00_set_field32(&word, TXD_W5_TX_POWER,
- TXPOWER_TO_DEV(entry->queue->rt2x00dev->tx_power));
- rt2x00_set_field32(&word, TXD_W5_WAITING_DMA_DONE_INT, 1);
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch b/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch
- index 04a5118103f219c9b4d737c27cfc80f8ee121e2a..241c1127bcd3a9162b7c4b466e54266a8d43dbe4 100644
- --- a/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch
- +++ b/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch
- @@ -18,11 +18,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt73usb.c | 2 +-
- 10 files changed, 15 insertions(+), 14 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c
- -index 085c5b423bdf..19874439ac40 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c
- -@@ -1200,7 +1200,7 @@ static void rt2400pci_write_beacon(struct queue_entry *entry,
- +@@ -1200,7 +1200,7 @@ static void rt2400pci_write_beacon(struc
- /*
- * Dump beacon to userspace through debugfs.
- */
- @@ -31,11 +29,9 @@ index 085c5b423bdf..19874439ac40 100644
- out:
- /*
- * Enable beaconing again.
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c
- -index 9832fd50c793..791434de8052 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c
- -@@ -1349,7 +1349,7 @@ static void rt2500pci_write_beacon(struct queue_entry *entry,
- +@@ -1349,7 +1349,7 @@ static void rt2500pci_write_beacon(struc
- /*
- * Dump beacon to userspace through debugfs.
- */
- @@ -44,11 +40,9 @@ index 9832fd50c793..791434de8052 100644
- out:
- /*
- * Enable beaconing again.
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
- -index cd3ab5a9e98d..62357465fe29 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
- -@@ -1170,7 +1170,7 @@ static void rt2500usb_write_beacon(struct queue_entry *entry,
- +@@ -1170,7 +1170,7 @@ static void rt2500usb_write_beacon(struc
- /*
- * Dump beacon to userspace through debugfs.
- */
- @@ -57,11 +51,9 @@ index cd3ab5a9e98d..62357465fe29 100644
-
- /*
- * USB devices cannot blindly pass the skb->len as the
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -index 572cdea4ca25..8223a1520316 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -1014,7 +1014,7 @@ void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc)
- +@@ -1014,7 +1014,7 @@ void rt2800_write_beacon(struct queue_en
- /*
- * Dump beacon to userspace through debugfs.
- */
- @@ -70,11 +62,9 @@ index 572cdea4ca25..8223a1520316 100644
-
- /*
- * Write entire beacon with TXWI and padding to register.
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- -index ea299c4e7ada..26869b3bef45 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- -@@ -1400,11 +1400,11 @@ void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop);
- +@@ -1400,11 +1400,11 @@ void rt2x00queue_flush_queues(struct rt2
- */
- #ifdef CPTCFG_RT2X00_LIB_DEBUGFS
- void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
- @@ -88,11 +78,9 @@ index ea299c4e7ada..26869b3bef45 100644
- {
- }
- #endif /* CPTCFG_RT2X00_LIB_DEBUGFS */
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
- -index 72ae530e4a3b..964aefdc11f0 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
- -@@ -157,9 +157,10 @@ void rt2x00debug_update_crypto(struct rt2x00_dev *rt2x00dev,
- +@@ -157,9 +157,10 @@ void rt2x00debug_update_crypto(struct rt
- }
-
- void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
- @@ -104,7 +92,7 @@ index 72ae530e4a3b..964aefdc11f0 100644
- struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb);
- struct sk_buff *skbcopy;
- struct rt2x00dump_hdr *dump_hdr;
- -@@ -196,8 +197,8 @@ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
- +@@ -196,8 +197,8 @@ void rt2x00debug_dump_frame(struct rt2x0
- dump_hdr->chip_rf = cpu_to_le16(rt2x00dev->chip.rf);
- dump_hdr->chip_rev = cpu_to_le16(rt2x00dev->chip.rev);
- dump_hdr->type = cpu_to_le16(type);
- @@ -115,11 +103,9 @@ index 72ae530e4a3b..964aefdc11f0 100644
- dump_hdr->timestamp_sec = cpu_to_le32(timestamp.tv_sec);
- dump_hdr->timestamp_usec = cpu_to_le32(timestamp.tv_usec);
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -index 4b08007f93f7..dd6678109b7e 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -@@ -363,7 +363,7 @@ void rt2x00lib_txdone(struct queue_entry *entry,
- +@@ -363,7 +363,7 @@ void rt2x00lib_txdone(struct queue_entry
- * Send frame to debugfs immediately, after this call is completed
- * we are going to overwrite the skb->cb array.
- */
- @@ -128,7 +114,7 @@ index 4b08007f93f7..dd6678109b7e 100644
-
- /*
- * Determine if the frame has been successfully transmitted and
- -@@ -772,7 +772,7 @@ void rt2x00lib_rxdone(struct queue_entry *entry, gfp_t gfp)
- +@@ -772,7 +772,7 @@ void rt2x00lib_rxdone(struct queue_entry
- */
- rt2x00link_update_stats(rt2x00dev, entry->skb, &rxdesc);
- rt2x00debug_update_crypto(rt2x00dev, &rxdesc);
- @@ -137,11 +123,9 @@ index 4b08007f93f7..dd6678109b7e 100644
-
- /*
- * Initialize RX status information, and send frame
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
- -index b2364d378774..380daf4e1b8d 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
- -@@ -544,7 +544,7 @@ static void rt2x00queue_write_tx_descriptor(struct queue_entry *entry,
- +@@ -544,7 +544,7 @@ static void rt2x00queue_write_tx_descrip
- * All processing on the frame has been completed, this means
- * it is now ready to be dumped to userspace through debugfs.
- */
- @@ -150,11 +134,9 @@ index b2364d378774..380daf4e1b8d 100644
- }
-
- static void rt2x00queue_kick_tx_queue(struct data_queue *queue,
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt61pci.c b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
- -index 8adb5f3abe15..973d418b8113 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
- -@@ -1988,7 +1988,7 @@ static void rt61pci_write_beacon(struct queue_entry *entry,
- +@@ -1988,7 +1988,7 @@ static void rt61pci_write_beacon(struct
- /*
- * Dump beacon to userspace through debugfs.
- */
- @@ -163,11 +145,9 @@ index 8adb5f3abe15..973d418b8113 100644
-
- /*
- * Write entire beacon with descriptor and padding to register.
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt73usb.c b/drivers/net/wireless/ralink/rt2x00/rt73usb.c
- -index 1a29c4d205a5..bb8d307a789f 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt73usb.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt73usb.c
- -@@ -1557,7 +1557,7 @@ static void rt73usb_write_beacon(struct queue_entry *entry,
- +@@ -1557,7 +1557,7 @@ static void rt73usb_write_beacon(struct
- /*
- * Dump beacon to userspace through debugfs.
- */
- @@ -176,6 +156,3 @@ index 1a29c4d205a5..bb8d307a789f 100644
-
- /*
- * Write entire beacon with descriptor and padding to register.
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch b/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch
- index d8194acd2345a3d0536a0742fe84cddb5b4832fe..c2ef9c1bb0dda0fd116ab66ffb89783b3a433114 100644
- --- a/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch
- +++ b/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch
- @@ -13,11 +13,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 2 --
- 2 files changed, 5 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
- -index 380daf4e1b8d..e1660b92b20c 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
- -@@ -83,7 +83,6 @@ struct sk_buff *rt2x00queue_alloc_rxskb(struct queue_entry *entry, gfp_t gfp)
- +@@ -83,7 +83,6 @@ struct sk_buff *rt2x00queue_alloc_rxskb(
- */
- skbdesc = get_skb_frame_desc(skb);
- memset(skbdesc, 0, sizeof(*skbdesc));
- @@ -25,7 +23,7 @@ index 380daf4e1b8d..e1660b92b20c 100644
-
- if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DMA)) {
- dma_addr_t skb_dma;
- -@@ -689,7 +688,6 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb,
- +@@ -689,7 +688,6 @@ int rt2x00queue_write_tx_frame(struct da
- goto out;
- }
-
- @@ -33,7 +31,7 @@ index 380daf4e1b8d..e1660b92b20c 100644
- entry->skb = skb;
-
- /*
- -@@ -774,7 +772,6 @@ int rt2x00queue_update_beacon(struct rt2x00_dev *rt2x00dev,
- +@@ -774,7 +772,6 @@ int rt2x00queue_update_beacon(struct rt2
- */
- skbdesc = get_skb_frame_desc(intf->beacon->skb);
- memset(skbdesc, 0, sizeof(*skbdesc));
- @@ -41,8 +39,6 @@ index 380daf4e1b8d..e1660b92b20c 100644
-
- /*
- * Send beacon to hardware.
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
- -index 2233b911a1d7..22d18818e850 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
- @@ -116,8 +116,6 @@ struct skb_frame_desc {
- @@ -54,6 +50,3 @@ index 2233b911a1d7..22d18818e850 100644
- };
-
- /**
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch b/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch
- index a82886d234cd2ee8807a80bbd0cf071e4b9cd982..65496ca467a30c6a5f5633f7dce804ca6d2214c9 100644
- --- a/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch
- +++ b/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch
- @@ -21,11 +21,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2500usb.c | 19 +++++--------------
- 1 file changed, 5 insertions(+), 14 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
- -index 62357465fe29..0d2670a56c4c 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
- -@@ -55,7 +55,7 @@ MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption.");
- +@@ -55,7 +55,7 @@ MODULE_PARM_DESC(nohwcrypt, "Disable har
- * If the csr_mutex is already held then the _lock variants must
- * be used instead.
- */
- @@ -34,7 +32,7 @@ index 62357465fe29..0d2670a56c4c 100644
- const unsigned int offset,
- u16 *value)
- {
- -@@ -66,7 +66,7 @@ static inline void rt2500usb_register_read(struct rt2x00_dev *rt2x00dev,
- +@@ -66,7 +66,7 @@ static inline void rt2500usb_register_re
- *value = le16_to_cpu(reg);
- }
-
- @@ -43,7 +41,7 @@ index 62357465fe29..0d2670a56c4c 100644
- const unsigned int offset,
- u16 *value)
- {
- -@@ -77,16 +77,7 @@ static inline void rt2500usb_register_read_lock(struct rt2x00_dev *rt2x00dev,
- +@@ -77,16 +77,7 @@ static inline void rt2500usb_register_re
- *value = le16_to_cpu(reg);
- }
-
- @@ -61,7 +59,7 @@ index 62357465fe29..0d2670a56c4c 100644
- const unsigned int offset,
- u16 value)
- {
- -@@ -96,7 +87,7 @@ static inline void rt2500usb_register_write(struct rt2x00_dev *rt2x00dev,
- +@@ -96,7 +87,7 @@ static inline void rt2500usb_register_wr
- ®, sizeof(reg));
- }
-
- @@ -70,7 +68,7 @@ index 62357465fe29..0d2670a56c4c 100644
- const unsigned int offset,
- u16 value)
- {
- -@@ -106,7 +97,7 @@ static inline void rt2500usb_register_write_lock(struct rt2x00_dev *rt2x00dev,
- +@@ -106,7 +97,7 @@ static inline void rt2500usb_register_wr
- ®, sizeof(reg), REGISTER_TIMEOUT);
- }
-
- @@ -79,6 +77,3 @@ index 62357465fe29..0d2670a56c4c 100644
- const unsigned int offset,
- void *value, const u16 length)
- {
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch b/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch
- index c2fa92641ad231558b4d9dcadeb59e7d4504ba74..8b61235e112f742304ab0b15d00737183168624c 100644
- --- a/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch
- +++ b/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch
- @@ -21,8 +21,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 23 +++++++++++++++++++++++
- 2 files changed, 23 insertions(+), 25 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
- -index 256496bfbafb..0e7051d8132f 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
- @@ -2987,29 +2987,4 @@ enum rt2800_eeprom_word {
- @@ -55,8 +53,6 @@ index 256496bfbafb..0e7051d8132f 100644
- -};
- -
- #endif /* RT2800_H */
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- -index 0a8b4df665fe..8e1ae138c3f1 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- @@ -20,6 +20,29 @@
- @@ -89,6 +85,3 @@ index 0a8b4df665fe..8e1ae138c3f1 100644
- struct rt2800_ops {
- void (*register_read)(struct rt2x00_dev *rt2x00dev,
- const unsigned int offset, u32 *value);
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch b/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch
- index e6c829cbf8048e28a7910b58f07a064f43d1b9b6..922c35833ced8cd7b6c0b3361facbbff0ff133d8 100644
- --- a/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch
- +++ b/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch
- @@ -14,8 +14,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 3 ++-
- 3 files changed, 8 insertions(+), 1 deletion(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -index 8223a1520316..46405cce35e0 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- @@ -855,11 +855,13 @@ EXPORT_SYMBOL_GPL(rt2800_process_rxwi);
- @@ -32,7 +30,7 @@ index 8223a1520316..46405cce35e0 100644
-
- /*
- * Obtain the status about this packet.
- -@@ -872,6 +874,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
- +@@ -872,6 +874,7 @@ void rt2800_txdone_entry(struct queue_en
-
- real_mcs = rt2x00_get_field32(status, TX_STA_FIFO_MCS);
- aggr = rt2x00_get_field32(status, TX_STA_FIFO_TX_AGGRE);
- @@ -40,7 +38,7 @@ index 8223a1520316..46405cce35e0 100644
-
- /*
- * If a frame was meant to be sent as a single non-aggregated MPDU
- -@@ -1468,6 +1471,7 @@ int rt2800_sta_add(struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif,
- +@@ -1468,6 +1471,7 @@ int rt2800_sta_add(struct rt2x00_dev *rt
- return 0;
-
- __set_bit(wcid - WCID_START, drv_data->sta_ids);
- @@ -48,7 +46,7 @@ index 8223a1520316..46405cce35e0 100644
-
- /*
- * Clean up WCID attributes and write STA address to the device.
- -@@ -1498,6 +1502,7 @@ int rt2800_sta_remove(struct rt2x00_dev *rt2x00dev, struct ieee80211_sta *sta)
- +@@ -1498,6 +1502,7 @@ int rt2800_sta_remove(struct rt2x00_dev
- * get renewed when the WCID is reused.
- */
- rt2800_config_wcid(rt2x00dev, NULL, wcid);
- @@ -56,8 +54,6 @@ index 8223a1520316..46405cce35e0 100644
- __clear_bit(wcid - WCID_START, drv_data->sta_ids);
-
- return 0;
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- -index 8e1ae138c3f1..6811d677a6e7 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- @@ -41,6 +41,7 @@ struct rt2800_drv_data {
- @@ -68,8 +64,6 @@ index 8e1ae138c3f1..6811d677a6e7 100644
- };
-
- struct rt2800_ops {
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
- -index 22d18818e850..9b297fce4692 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
- @@ -102,7 +102,7 @@ enum skb_frame_desc_flags {
- @@ -89,6 +83,3 @@ index 22d18818e850..9b297fce4692 100644
- };
-
- /**
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch b/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch
- index 278d2d6071a1d4b2bdeea891384692e9e22d45b6..84f2732b2216ac066b08ace5aff5ec515144b09b 100644
- --- a/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch
- +++ b/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch
- @@ -12,11 +12,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 141 +++++++++++++------------
- 1 file changed, 76 insertions(+), 65 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -index dd6678109b7e..b5d90fefc96b 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -@@ -313,73 +313,14 @@ static inline int rt2x00lib_txdone_bar_status(struct queue_entry *entry)
- +@@ -313,73 +313,14 @@ static inline int rt2x00lib_txdone_bar_s
- return ret;
- }
-
- @@ -96,7 +94,7 @@ index dd6678109b7e..b5d90fefc96b 100644
-
- rate_idx = skbdesc->tx_rate_idx;
- rate_flags = skbdesc->tx_rate_flags;
- -@@ -448,6 +389,76 @@ void rt2x00lib_txdone(struct queue_entry *entry,
- +@@ -448,6 +389,76 @@ void rt2x00lib_txdone(struct queue_entry
- else
- rt2x00dev->low_level_stats.dot11RTSFailureCount++;
- }
- @@ -173,6 +171,3 @@ index dd6678109b7e..b5d90fefc96b 100644
-
- /*
- * Only send the status report to mac80211 when it's a frame
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch b/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch
- index b28d894fc69998b6fcf2b1f8ec9e983a8f35760c..e1359397ba37af5a1561a4a8270dfeaf4e86ffcb 100644
- --- a/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch
- +++ b/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch
- @@ -12,11 +12,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 51 +++++++++++++++-----------
- 1 file changed, 29 insertions(+), 22 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -index b5d90fefc96b..03b368ac9cb6 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -@@ -391,6 +391,32 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev,
- +@@ -391,6 +391,32 @@ static void rt2x00lib_fill_tx_status(str
- }
- }
-
- @@ -49,7 +47,7 @@ index b5d90fefc96b..03b368ac9cb6 100644
- void rt2x00lib_txdone(struct queue_entry *entry,
- struct txdone_entry_desc *txdesc)
- {
- -@@ -471,30 +497,11 @@ void rt2x00lib_txdone(struct queue_entry *entry,
- +@@ -471,30 +497,11 @@ void rt2x00lib_txdone(struct queue_entry
- ieee80211_tx_status(rt2x00dev->hw, entry->skb);
- else
- ieee80211_tx_status_ni(rt2x00dev->hw, entry->skb);
- @@ -83,6 +81,3 @@ index b5d90fefc96b..03b368ac9cb6 100644
- }
- EXPORT_SYMBOL_GPL(rt2x00lib_txdone);
-
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch b/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch
- index 7bec546a9e62d7647a11560f6c04e0d7c281b094..60edb08e751f5a4daae61c4f515c2c699b67db63 100644
- --- a/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch
- +++ b/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch
- @@ -13,11 +13,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 50 ++++++++++++++++++++++++++
- 2 files changed, 52 insertions(+)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- -index 340787894c69..91ba10fdf732 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- -@@ -1425,6 +1425,8 @@ void rt2x00lib_dmastart(struct queue_entry *entry);
- +@@ -1425,6 +1425,8 @@ void rt2x00lib_dmastart(struct queue_ent
- void rt2x00lib_dmadone(struct queue_entry *entry);
- void rt2x00lib_txdone(struct queue_entry *entry,
- struct txdone_entry_desc *txdesc);
- @@ -26,11 +24,9 @@ index 340787894c69..91ba10fdf732 100644
- void rt2x00lib_txdone_noinfo(struct queue_entry *entry, u32 status);
- void rt2x00lib_rxdone(struct queue_entry *entry, gfp_t gfp);
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -index 03b368ac9cb6..90fc259fb5bc 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -@@ -417,6 +417,56 @@ static void rt2x00lib_clear_entry(struct rt2x00_dev *rt2x00dev,
- +@@ -417,6 +417,56 @@ static void rt2x00lib_clear_entry(struct
- spin_unlock_bh(&entry->queue->tx_lock);
- }
-
- @@ -87,6 +83,3 @@ index 03b368ac9cb6..90fc259fb5bc 100644
- void rt2x00lib_txdone(struct queue_entry *entry,
- struct txdone_entry_desc *txdesc)
- {
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch b/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch
- index bb35f2d3005aca4df52f115bacf894a0a8909ce9..a0cc37f491a44e49127f525bbc6f01ab0fe1db5f 100644
- --- a/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch
- +++ b/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch
- @@ -13,11 +13,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 1 +
- 2 files changed, 6 insertions(+), 1 deletion(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -index 90fc259fb5bc..e95d2aad3b3f 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
- -@@ -357,6 +357,9 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev,
- +@@ -357,6 +357,9 @@ static void rt2x00lib_fill_tx_status(str
- if (i < (IEEE80211_TX_MAX_RATES - 1))
- tx_info->status.rates[i].idx = -1; /* terminate */
-
- @@ -27,7 +25,7 @@ index 90fc259fb5bc..e95d2aad3b3f 100644
- if (!(tx_info->flags & IEEE80211_TX_CTL_NO_ACK)) {
- if (success)
- tx_info->flags |= IEEE80211_TX_STAT_ACK;
- -@@ -375,7 +378,8 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev,
- +@@ -375,7 +378,8 @@ static void rt2x00lib_fill_tx_status(str
- */
- if (test_bit(TXDONE_AMPDU, &txdesc->flags) ||
- tx_info->flags & IEEE80211_TX_CTL_AMPDU) {
- @@ -37,8 +35,6 @@ index 90fc259fb5bc..e95d2aad3b3f 100644
- tx_info->status.ampdu_len = 1;
- tx_info->status.ampdu_ack_len = success ? 1 : 0;
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
- -index 9b297fce4692..c78fb8c8838a 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
- @@ -215,6 +215,7 @@ enum txdone_entry_desc_flags {
- @@ -49,6 +45,3 @@ index 9b297fce4692..c78fb8c8838a 100644
- };
-
- /**
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch b/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch
- index f4e4b8b075f5df37429ef36cca0828c72b9592f2..1e23ef7bcbcb5aaed507e0879e25038b3dea6fc5 100644
- --- a/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch
- +++ b/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch
- @@ -23,11 +23,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2800usb.c | 18 ++++++--------
- 4 files changed, 35 insertions(+), 19 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -index 46405cce35e0..4a7bec708a13 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -852,7 +852,8 @@ void rt2800_process_rxwi(struct queue_entry *entry,
- +@@ -852,7 +852,8 @@ void rt2800_process_rxwi(struct queue_en
- }
- EXPORT_SYMBOL_GPL(rt2800_process_rxwi);
-
- @@ -37,7 +35,7 @@ index 46405cce35e0..4a7bec708a13 100644
- {
- struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
- struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
- -@@ -860,8 +861,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
- +@@ -860,8 +861,7 @@ void rt2800_txdone_entry(struct queue_en
- struct txdone_entry_desc txdesc;
- u32 word;
- u16 mcs, real_mcs;
- @@ -47,7 +45,7 @@ index 46405cce35e0..4a7bec708a13 100644
-
- /*
- * Obtain the status about this packet.
- -@@ -875,6 +875,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
- +@@ -875,6 +875,7 @@ void rt2800_txdone_entry(struct queue_en
- real_mcs = rt2x00_get_field32(status, TX_STA_FIFO_MCS);
- aggr = rt2x00_get_field32(status, TX_STA_FIFO_TX_AGGRE);
- wcid = rt2x00_get_field32(status, TX_STA_FIFO_WCID);
- @@ -55,7 +53,7 @@ index 46405cce35e0..4a7bec708a13 100644
-
- /*
- * If a frame was meant to be sent as a single non-aggregated MPDU
- -@@ -891,8 +892,12 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
- +@@ -891,8 +892,12 @@ void rt2800_txdone_entry(struct queue_en
- * Hence, replace the requested rate with the real tx rate to not
- * confuse the rate control algortihm by providing clearly wrong
- * data.
- @@ -70,7 +68,7 @@ index 46405cce35e0..4a7bec708a13 100644
- skbdesc->tx_rate_idx = real_mcs;
- mcs = real_mcs;
- }
- -@@ -900,6 +905,9 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
- +@@ -900,6 +905,9 @@ void rt2800_txdone_entry(struct queue_en
- if (aggr == 1 || ampdu == 1)
- __set_bit(TXDONE_AMPDU, &txdesc.flags);
-
- @@ -80,7 +78,7 @@ index 46405cce35e0..4a7bec708a13 100644
- /*
- * Ralink has a retry mechanism using a global fallback
- * table. We setup this fallback table to try the immediate
- -@@ -931,7 +939,18 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
- +@@ -931,7 +939,18 @@ void rt2800_txdone_entry(struct queue_en
- if (txdesc.retry)
- __set_bit(TXDONE_FALLBACK, &txdesc.flags);
-
- @@ -100,11 +98,9 @@ index 46405cce35e0..4a7bec708a13 100644
- }
- EXPORT_SYMBOL_GPL(rt2800_txdone_entry);
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- -index 6811d677a6e7..d9ef260d542a 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- -@@ -191,7 +191,8 @@ void rt2800_write_tx_data(struct queue_entry *entry,
- +@@ -191,7 +191,8 @@ void rt2800_write_tx_data(struct queue_e
- struct txentry_desc *txdesc);
- void rt2800_process_rxwi(struct queue_entry *entry, struct rxdone_entry_desc *txdesc);
-
- @@ -114,11 +110,9 @@ index 6811d677a6e7..d9ef260d542a 100644
-
- void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc);
- void rt2800_clear_beacon(struct queue_entry *entry);
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
- -index de4790b41be7..3ab3b5323897 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
- -@@ -239,7 +239,7 @@ static bool rt2800mmio_txdone_release_entries(struct queue_entry *entry,
- +@@ -239,7 +239,7 @@ static bool rt2800mmio_txdone_release_en
- {
- if (test_bit(ENTRY_DATA_STATUS_SET, &entry->flags)) {
- rt2800_txdone_entry(entry, entry->status,
- @@ -127,11 +121,9 @@ index de4790b41be7..3ab3b5323897 100644
- return false;
- }
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
- -index 205a7b8ac8a7..f11e3f532a84 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
- -@@ -501,8 +501,7 @@ static int rt2800usb_get_tx_data_len(struct queue_entry *entry)
- +@@ -501,8 +501,7 @@ static int rt2800usb_get_tx_data_len(str
- /*
- * TX control handlers
- */
- @@ -141,7 +133,7 @@ index 205a7b8ac8a7..f11e3f532a84 100644
- {
- __le32 *txwi;
- u32 word;
- -@@ -515,7 +514,7 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
- +@@ -515,7 +514,7 @@ rt2800usb_txdone_entry_check(struct queu
- * frame.
- */
- if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags))
- @@ -150,7 +142,7 @@ index 205a7b8ac8a7..f11e3f532a84 100644
-
- wcid = rt2x00_get_field32(reg, TX_STA_FIFO_WCID);
- ack = rt2x00_get_field32(reg, TX_STA_FIFO_TX_ACK_REQUIRED);
- -@@ -537,10 +536,10 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
- +@@ -537,10 +536,10 @@ rt2800usb_txdone_entry_check(struct queu
- rt2x00_dbg(entry->queue->rt2x00dev,
- "TX status report missed for queue %d entry %d\n",
- entry->queue->qid, entry->entry_idx);
- @@ -163,7 +155,7 @@ index 205a7b8ac8a7..f11e3f532a84 100644
- }
-
- static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev)
- -@@ -549,7 +548,7 @@ static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev)
- +@@ -549,7 +548,7 @@ static void rt2800usb_txdone(struct rt2x
- struct queue_entry *entry;
- u32 reg;
- u8 qid;
- @@ -172,7 +164,7 @@ index 205a7b8ac8a7..f11e3f532a84 100644
-
- while (kfifo_get(&rt2x00dev->txstatus_fifo, ®)) {
- /*
- -@@ -574,11 +573,8 @@ static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev)
- +@@ -574,11 +573,8 @@ static void rt2800usb_txdone(struct rt2x
- break;
- }
-
- @@ -186,6 +178,3 @@ index 205a7b8ac8a7..f11e3f532a84 100644
- }
- }
-
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch b/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch
- index 4e18dc8e2ae984ac809785b4a37d7bcf5b410eaa..37838e889567ddbe8ebec79d91c5b71ed3cbfc8a 100644
- --- a/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch
- +++ b/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch
- @@ -17,8 +17,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 35 +++++++++++++++++++++++++-
- 2 files changed, 36 insertions(+), 1 deletion(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
- -index 0e7051d8132f..480b08601785 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
- @@ -1760,6 +1760,8 @@
- @@ -30,11 +28,9 @@ index 0e7051d8132f..480b08601785 100644
- #define TX_STA_FIFO_PHYMODE FIELD32(0xc0000000)
-
- /*
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -index 4a7bec708a13..8d00c599e47a 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -852,6 +852,39 @@ void rt2800_process_rxwi(struct queue_entry *entry,
- +@@ -852,6 +852,39 @@ void rt2800_process_rxwi(struct queue_en
- }
- EXPORT_SYMBOL_GPL(rt2800_process_rxwi);
-
- @@ -74,7 +70,7 @@ index 4a7bec708a13..8d00c599e47a 100644
- void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
- bool match)
- {
- -@@ -898,7 +931,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
- +@@ -898,7 +931,7 @@ void rt2800_txdone_entry(struct queue_en
- * and provide retry count.
- */
- if (unlikely((aggr == 1 && ampdu == 0 && real_mcs != mcs)) || !match) {
- @@ -83,6 +79,3 @@ index 4a7bec708a13..8d00c599e47a 100644
- mcs = real_mcs;
- }
-
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch b/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch
- index 31d79bb751b05b410f1b84261284e4de347912c6..7825810cef9b978c0e076961af4492b3a9eda344 100644
- --- a/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch
- +++ b/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch
- @@ -14,11 +14,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
- -index e1660b92b20c..a2c1ca5c76d1 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
- -@@ -372,15 +372,16 @@ static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev,
- +@@ -372,15 +372,16 @@ static void rt2x00queue_create_tx_descri
-
- /*
- * Determine IFS values
- @@ -38,6 +36,3 @@ index e1660b92b20c..a2c1ca5c76d1 100644
- txdesc->u.ht.txop = TXOP_BACKOFF;
- else if (!(tx_info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT))
- txdesc->u.ht.txop = TXOP_SIFS;
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch b/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch
- index 4e53092d12aac787c365f2ee2be55c333ca71cdd..415bf5b2a6dabf1292a2b54f35e066618ff2d8ac 100644
- --- a/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch
- +++ b/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch
- @@ -10,11 +10,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- -index 91ba10fdf732..ce340bfd71a0 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- -@@ -1396,7 +1396,7 @@ void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop);
- +@@ -1396,7 +1396,7 @@ void rt2x00queue_flush_queues(struct rt2
- * rt2x00debug_dump_frame - Dump a frame to userspace through debugfs.
- * @rt2x00dev: Pointer to &struct rt2x00_dev.
- * @type: The type of frame that is being dumped.
- @@ -23,6 +21,3 @@ index 91ba10fdf732..ce340bfd71a0 100644
- */
- #ifdef CPTCFG_RT2X00_LIB_DEBUGFS
- void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch b/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch
- index 3cf342d6903e86830d497999ad76750b85c20084..c6fb7dd2c4b926017b023826bff0acebe3bc1501 100644
- --- a/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch
- +++ b/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch
- @@ -13,8 +13,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2800.h | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
- -index 480b08601785..fd1dbd956bad 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
- @@ -1171,10 +1171,10 @@
- @@ -32,6 +30,3 @@ index 480b08601785..fd1dbd956bad 100644
-
- /*
- * TX_PIN_CFG:
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch b/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch
- index 7b99312744c7704264b15a52ce4fa70450c62040..b91e5821cdf4b1ece474fb84f222c9220929fa44 100644
- --- a/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch
- +++ b/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch
- @@ -19,8 +19,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- drivers/net/wireless/ralink/rt2x00/rt2x00.h | 1 +
- 5 files changed, 1578 insertions(+), 27 deletions(-)
-
- -diff --git a/drivers/net/wireless/ralink/rt2x00/Kconfig b/drivers/net/wireless/ralink/rt2x00/Kconfig
- -index de62f5dcb62f..a1d1cfe214d2 100644
- --- a/drivers/net/wireless/ralink/rt2x00/Kconfig
- +++ b/drivers/net/wireless/ralink/rt2x00/Kconfig
- @@ -210,7 +210,7 @@ endif
- @@ -32,8 +30,6 @@ index de62f5dcb62f..a1d1cfe214d2 100644
- select RT2X00_LIB_SOC
- select RT2X00_LIB_MMIO
- select RT2X00_LIB_CRYPTO
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
- -index fd1dbd956bad..6a8c93fb6a43 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
- @@ -79,6 +79,7 @@
- @@ -376,8 +372,6 @@ index fd1dbd956bad..6a8c93fb6a43 100644
- EEPROM_TSSI_BOUND_A1,
- EEPROM_TSSI_BOUND_A2,
- EEPROM_TSSI_BOUND_A3,
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -index 8d00c599e47a..201b12ed90c6 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- @@ -59,6 +59,9 @@
- @@ -390,7 +384,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- #define WAIT_FOR_RF(__dev, __reg) \
- rt2800_regbusy_read((__dev), RF_CSR_CFG0, RF_CSR_CFG0_BUSY, (__reg))
- #define WAIT_FOR_MCU(__dev, __reg) \
- -@@ -150,19 +153,56 @@ static void rt2800_rfcsr_write(struct rt2x00_dev *rt2x00dev,
- +@@ -150,19 +153,56 @@ static void rt2800_rfcsr_write(struct rt
- * Wait until the RFCSR becomes available, afterwards we
- * can safely write the new data into the register.
- */
- @@ -413,8 +407,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- + rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg);
- + }
- + break;
- -
- -- rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg);
- ++
- + default:
- + if (WAIT_FOR_RFCSR(rt2x00dev, ®)) {
- + reg = 0;
- @@ -422,7 +415,8 @@ index 8d00c599e47a..201b12ed90c6 100644
- + rt2x00_set_field32(®, RF_CSR_CFG_REGNUM, word);
- + rt2x00_set_field32(®, RF_CSR_CFG_WRITE, 1);
- + rt2x00_set_field32(®, RF_CSR_CFG_BUSY, 1);
- -+
- +
- +- rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg);
- + rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg);
- + }
- + break;
- @@ -454,7 +448,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev,
- const unsigned int word, u8 *value)
- {
- -@@ -178,22 +218,48 @@ static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev,
- +@@ -178,22 +218,48 @@ static void rt2800_rfcsr_read(struct rt2
- * doesn't become available in time, reg will be 0xffffffff
- * which means we return 0xff to the caller.
- */
- @@ -479,11 +473,11 @@ index 8d00c599e47a..201b12ed90c6 100644
- - }
- + WAIT_FOR_RFCSR_MT7620(rt2x00dev, ®);
- + }
- -
- -- *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA);
- ++
- + *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA_MT7620);
- + break;
- -+
- +
- +- *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA);
- + default:
- + if (WAIT_FOR_RFCSR(rt2x00dev, ®)) {
- + reg = 0;
- @@ -512,7 +506,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- static void rt2800_rf_write(struct rt2x00_dev *rt2x00dev,
- const unsigned int word, const u32 value)
- {
- -@@ -250,6 +316,7 @@ static const unsigned int rt2800_eeprom_map[EEPROM_WORD_COUNT] = {
- +@@ -250,6 +316,7 @@ static const unsigned int rt2800_eeprom_
- [EEPROM_TSSI_BOUND_BG5] = 0x003b,
- [EEPROM_TXPOWER_A1] = 0x003c,
- [EEPROM_TXPOWER_A2] = 0x0053,
- @@ -520,7 +514,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- [EEPROM_TSSI_BOUND_A1] = 0x006a,
- [EEPROM_TSSI_BOUND_A2] = 0x006b,
- [EEPROM_TSSI_BOUND_A3] = 0x006c,
- -@@ -524,6 +591,7 @@ void rt2800_get_txwi_rxwi_size(struct rt2x00_dev *rt2x00dev,
- +@@ -524,6 +591,7 @@ void rt2800_get_txwi_rxwi_size(struct rt
- break;
-
- case RT5592:
- @@ -528,7 +522,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- *txwi_size = TXWI_DESC_SIZE_5WORDS;
- *rxwi_size = RXWI_DESC_SIZE_6WORDS;
- break;
- -@@ -2810,7 +2878,8 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev,
- +@@ -2810,7 +2878,8 @@ static void rt2800_config_channel_rf53xx
- rt2800_rfcsr_write(rt2x00dev, 59,
- r59_nonbt_rev[idx]);
- } else if (rt2x00_rt(rt2x00dev, RT5390) ||
- @@ -538,7 +532,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- static const char r59_non_bt[] = {0x8f, 0x8f,
- 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8d,
- 0x8a, 0x88, 0x88, 0x87, 0x87, 0x86};
- -@@ -3104,6 +3173,242 @@ static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev,
- +@@ -3104,6 +3173,242 @@ static void rt2800_config_channel_rf55xx
- rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x19 : 0x7F);
- }
-
- @@ -781,7 +775,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev,
- const unsigned int word,
- const u8 value)
- -@@ -3228,7 +3533,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
- +@@ -3228,7 +3533,7 @@ static void rt2800_config_channel(struct
- struct channel_info *info)
- {
- u32 reg;
- @@ -790,7 +784,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- u8 bbp, rfcsr;
-
- info->default_power1 = rt2800_txpower_to_dev(rt2x00dev, rf->channel,
- -@@ -3273,6 +3578,9 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
- +@@ -3273,6 +3578,9 @@ static void rt2800_config_channel(struct
- case RF5592:
- rt2800_config_channel_rf55xx(rt2x00dev, conf, rf, info);
- break;
- @@ -800,7 +794,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- default:
- rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info);
- }
- -@@ -3347,7 +3655,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
- +@@ -3347,7 +3655,8 @@ static void rt2800_config_channel(struct
-
- if (rf->channel <= 14) {
- if (!rt2x00_rt(rt2x00dev, RT5390) &&
- @@ -810,7 +804,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
- rt2800_bbp_write(rt2x00dev, 82, 0x62);
- rt2800_bbp_write(rt2x00dev, 75, 0x46);
- -@@ -3367,7 +3676,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
- +@@ -3367,7 +3676,7 @@ static void rt2800_config_channel(struct
- rt2800_bbp_write(rt2x00dev, 82, 0x94);
- else if (rt2x00_rt(rt2x00dev, RT3593))
- rt2800_bbp_write(rt2x00dev, 82, 0x82);
- @@ -819,7 +813,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- rt2800_bbp_write(rt2x00dev, 82, 0xf2);
-
- if (rt2x00_rt(rt2x00dev, RT3593))
- -@@ -3388,7 +3697,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
- +@@ -3388,7 +3697,7 @@ static void rt2800_config_channel(struct
- if (rt2x00_rt(rt2x00dev, RT3572))
- rt2800_rfcsr_write(rt2x00dev, 8, 0);
-
- @@ -828,7 +822,7 @@ index 8d00c599e47a..201b12ed90c6 100644
-
- switch (rt2x00dev->default_ant.tx_chain_num) {
- case 3:
- -@@ -3437,6 +3746,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
- +@@ -3437,6 +3746,7 @@ static void rt2800_config_channel(struct
-
- rt2x00_set_field32(&tx_pin, TX_PIN_CFG_RFTR_EN, 1);
- rt2x00_set_field32(&tx_pin, TX_PIN_CFG_TRSW_EN, 1);
- @@ -836,7 +830,7 @@ index 8d00c599e47a..201b12ed90c6 100644
-
- rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
-
- -@@ -3495,7 +3805,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
- +@@ -3495,7 +3805,7 @@ static void rt2800_config_channel(struct
- usleep_range(1000, 1500);
- }
-
- @@ -845,7 +839,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- rt2800_bbp_write(rt2x00dev, 195, 141);
- rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a);
-
- -@@ -4182,6 +4492,128 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev,
- +@@ -4182,6 +4492,128 @@ static void rt2800_config_txpower_rt3593
- (unsigned long) regs[i]);
- }
-
- @@ -974,7 +968,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- /*
- * We configure transmit power using MAC TX_PWR_CFG_{0,...,N} registers and
- * BBP R1 register. TX_PWR_CFG_X allow to configure per rate TX power values,
- -@@ -4378,6 +4810,8 @@ static void rt2800_config_txpower(struct rt2x00_dev *rt2x00dev,
- +@@ -4378,6 +4810,8 @@ static void rt2800_config_txpower(struct
- {
- if (rt2x00_rt(rt2x00dev, RT3593))
- rt2800_config_txpower_rt3593(rt2x00dev, chan, power_level);
- @@ -983,7 +977,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- else
- rt2800_config_txpower_rt28xx(rt2x00dev, chan, power_level);
- }
- -@@ -4393,6 +4827,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
- +@@ -4393,6 +4827,7 @@ void rt2800_vco_calibration(struct rt2x0
- {
- u32 tx_pin;
- u8 rfcsr;
- @@ -991,7 +985,7 @@ index 8d00c599e47a..201b12ed90c6 100644
-
- /*
- * A voltage-controlled oscillator(VCO) is an electronic oscillator
- -@@ -4431,6 +4866,15 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
- +@@ -4431,6 +4866,15 @@ void rt2800_vco_calibration(struct rt2x0
- rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr);
- rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1);
- rt2800_rfcsr_write(rt2x00dev, 3, rfcsr);
- @@ -1007,7 +1001,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- break;
- default:
- WARN_ONCE(1, "Not supported RF chipet %x for VCO recalibration",
- -@@ -4438,7 +4882,8 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
- +@@ -4438,7 +4882,8 @@ void rt2800_vco_calibration(struct rt2x0
- return;
- }
-
- @@ -1017,7 +1011,7 @@ index 8d00c599e47a..201b12ed90c6 100644
-
- rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);
- if (rt2x00dev->rf_channel <= 14) {
- -@@ -4470,6 +4915,42 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
- +@@ -4470,6 +4915,42 @@ void rt2800_vco_calibration(struct rt2x0
- }
- rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
-
- @@ -1060,7 +1054,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- }
- EXPORT_SYMBOL_GPL(rt2800_vco_calibration);
-
- -@@ -4568,7 +5049,8 @@ static u8 rt2800_get_default_vgc(struct rt2x00_dev *rt2x00dev)
- +@@ -4568,7 +5049,8 @@ static u8 rt2800_get_default_vgc(struct
- rt2x00_rt(rt2x00dev, RT3593) ||
- rt2x00_rt(rt2x00dev, RT5390) ||
- rt2x00_rt(rt2x00dev, RT5392) ||
- @@ -1070,7 +1064,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- vgc = 0x1c + (2 * rt2x00dev->lna_gain);
- else
- vgc = 0x2e + rt2x00dev->lna_gain;
- -@@ -4795,7 +5277,8 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
- +@@ -4795,7 +5277,8 @@ static int rt2800_init_registers(struct
- 0x00000000);
- }
- } else if (rt2x00_rt(rt2x00dev, RT5390) ||
- @@ -1080,7 +1074,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404);
- rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
- rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000);
- -@@ -4805,6 +5288,24 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
- +@@ -4805,6 +5288,24 @@ static int rt2800_init_registers(struct
- rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000);
- } else if (rt2x00_rt(rt2x00dev, RT5350)) {
- rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404);
- @@ -1105,7 +1099,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- } else {
- rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000);
- rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
- -@@ -5786,6 +6287,231 @@ static void rt2800_init_bbp_5592(struct rt2x00_dev *rt2x00dev)
- +@@ -5786,6 +6287,231 @@ static void rt2800_init_bbp_5592(struct
- rt2800_bbp_write(rt2x00dev, 103, 0xc0);
- }
-
- @@ -1337,7 +1331,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev)
- {
- unsigned int i;
- -@@ -5830,6 +6556,9 @@ static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev)
- +@@ -5830,6 +6556,9 @@ static void rt2800_init_bbp(struct rt2x0
- case RT5592:
- rt2800_init_bbp_5592(rt2x00dev);
- return;
- @@ -1347,7 +1341,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- }
-
- for (i = 0; i < EEPROM_BBP_SIZE; i++) {
- -@@ -6901,6 +7630,615 @@ static void rt2800_init_rfcsr_5592(struct rt2x00_dev *rt2x00dev)
- +@@ -6901,6 +7630,615 @@ static void rt2800_init_rfcsr_5592(struc
- rt2800_led_open_drain_enable(rt2x00dev);
- }
-
- @@ -1963,7 +1957,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
- {
- if (rt2800_is_305x_soc(rt2x00dev)) {
- -@@ -6941,6 +8279,9 @@ static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
- +@@ -6941,6 +8279,9 @@ static void rt2800_init_rfcsr(struct rt2
- case RT5592:
- rt2800_init_rfcsr_5592(rt2x00dev);
- break;
- @@ -1973,7 +1967,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- }
- }
-
- -@@ -7307,7 +8648,8 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
- +@@ -7307,7 +8648,8 @@ static int rt2800_init_eeprom(struct rt2
- */
- if (rt2x00_rt(rt2x00dev, RT3290) ||
- rt2x00_rt(rt2x00dev, RT5390) ||
- @@ -1983,7 +1977,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
- else if (rt2x00_rt(rt2x00dev, RT3352))
- rf = RF3322;
- -@@ -7339,6 +8681,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
- +@@ -7339,6 +8681,7 @@ static int rt2800_init_eeprom(struct rt2
- case RF5390:
- case RF5392:
- case RF5592:
- @@ -1991,7 +1985,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- break;
- default:
- rt2x00_err(rt2x00dev, "Invalid RF chipset 0x%04x detected\n",
- -@@ -7746,6 +9089,23 @@ static const struct rf_channel rf_vals_5592_xtal40[] = {
- +@@ -7746,6 +9089,23 @@ static const struct rf_channel rf_vals_5
- {196, 83, 0, 12, 1},
- };
-
- @@ -2015,7 +2009,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
- {
- struct hw_mode_spec *spec = &rt2x00dev->spec;
- -@@ -7849,6 +9209,11 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
- +@@ -7849,6 +9209,11 @@ static int rt2800_probe_hw_mode(struct r
- spec->channels = rf_vals_3x;
- break;
-
- @@ -2027,7 +2021,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- case RF3052:
- case RF3053:
- spec->num_channels = ARRAY_SIZE(rf_vals_3x);
- -@@ -7980,6 +9345,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
- +@@ -7980,6 +9345,7 @@ static int rt2800_probe_hw_mode(struct r
- case RF5390:
- case RF5392:
- case RF5592:
- @@ -2035,7 +2029,7 @@ index 8d00c599e47a..201b12ed90c6 100644
- __set_bit(CAPABILITY_VCO_RECALIBRATION, &rt2x00dev->cap_flags);
- break;
- }
- -@@ -8024,6 +9390,9 @@ static int rt2800_probe_rt(struct rt2x00_dev *rt2x00dev)
- +@@ -8024,6 +9390,9 @@ static int rt2800_probe_rt(struct rt2x00
- return -ENODEV;
- }
-
- @@ -2045,8 +2039,6 @@ index 8d00c599e47a..201b12ed90c6 100644
- rt2x00_set_rt(rt2x00dev, rt, rev);
-
- return 0;
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- -index d9ef260d542a..f357531d9488 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
- @@ -33,6 +33,10 @@
- @@ -2060,8 +2052,6 @@ index d9ef260d542a..f357531d9488 100644
- u8 bbp25;
- u8 bbp26;
- u8 txmixer_gain_24g;
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- -index ce340bfd71a0..8fdd2f9726ee 100644
- --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- @@ -174,6 +174,7 @@ struct rt2x00_chip {
- @@ -2072,6 +2062,3 @@ index ce340bfd71a0..8fdd2f9726ee 100644
-
- u16 rf;
- u16 rev;
- ---
- -2.12.1
- -
- diff --git a/package/kernel/mac80211/patches/020-20-rt2x00-reverse-external-PA-capability-flag-logic.patch b/package/kernel/mac80211/patches/020-20-rt2x00-reverse-external-PA-capability-flag-logic.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..7994456de71a9b6115a34e307024b59043c80aec
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/020-20-rt2x00-reverse-external-PA-capability-flag-logic.patch
- @@ -0,0 +1,121 @@
- +From 1f242a3de702d5a19c479685d35b050837122724 Mon Sep 17 00:00:00 2001
- +From: Daniel Golle <daniel@makrotopia.org>
- +Date: Mon, 10 Apr 2017 15:29:45 +0200
- +Subject: [PATCH] rt2x00: reverse external PA capability flag logic
- +
- +Consequently refer to external PA instead of inverting the logic and
- +use an internal PA capability flag which is a bit confusing.
- +Currently this is used for Rt3352 only, but MT7620A also allows for an
- +external PA which will be supported by a follow up patch.
- +
- +Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- +Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 40 +++++++++++++-------------
- + drivers/net/wireless/ralink/rt2x00/rt2x00.h | 4 +--
- + 2 files changed, 22 insertions(+), 22 deletions(-)
- +
- +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +@@ -7014,9 +7014,9 @@ static void rt2800_init_rfcsr_3290(struc
- +
- + static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev)
- + {
- +- int tx0_int_pa = test_bit(CAPABILITY_INTERNAL_PA_TX0,
- ++ int tx0_ext_pa = test_bit(CAPABILITY_EXTERNAL_PA_TX0,
- + &rt2x00dev->cap_flags);
- +- int tx1_int_pa = test_bit(CAPABILITY_INTERNAL_PA_TX1,
- ++ int tx1_ext_pa = test_bit(CAPABILITY_EXTERNAL_PA_TX1,
- + &rt2x00dev->cap_flags);
- + u8 rfcsr;
- +
- +@@ -7056,9 +7056,9 @@ static void rt2800_init_rfcsr_3352(struc
- + rt2800_rfcsr_write(rt2x00dev, 32, 0x80);
- + rt2800_rfcsr_write(rt2x00dev, 33, 0x00);
- + rfcsr = 0x01;
- +- if (!tx0_int_pa)
- ++ if (tx0_ext_pa)
- + rt2x00_set_field8(&rfcsr, RFCSR34_TX0_EXT_PA, 1);
- +- if (!tx1_int_pa)
- ++ if (tx1_ext_pa)
- + rt2x00_set_field8(&rfcsr, RFCSR34_TX1_EXT_PA, 1);
- + rt2800_rfcsr_write(rt2x00dev, 34, rfcsr);
- + rt2800_rfcsr_write(rt2x00dev, 35, 0x03);
- +@@ -7068,13 +7068,13 @@ static void rt2800_init_rfcsr_3352(struc
- + rt2800_rfcsr_write(rt2x00dev, 39, 0xc5);
- + rt2800_rfcsr_write(rt2x00dev, 40, 0x33);
- + rfcsr = 0x52;
- +- if (tx0_int_pa) {
- ++ if (!tx0_ext_pa) {
- + rt2x00_set_field8(&rfcsr, RFCSR41_BIT1, 1);
- + rt2x00_set_field8(&rfcsr, RFCSR41_BIT4, 1);
- + }
- + rt2800_rfcsr_write(rt2x00dev, 41, rfcsr);
- + rfcsr = 0x52;
- +- if (tx1_int_pa) {
- ++ if (!tx1_ext_pa) {
- + rt2x00_set_field8(&rfcsr, RFCSR42_BIT1, 1);
- + rt2x00_set_field8(&rfcsr, RFCSR42_BIT4, 1);
- + }
- +@@ -7087,19 +7087,19 @@ static void rt2800_init_rfcsr_3352(struc
- + rt2800_rfcsr_write(rt2x00dev, 48, 0x14);
- + rt2800_rfcsr_write(rt2x00dev, 49, 0x00);
- + rfcsr = 0x2d;
- +- if (!tx0_int_pa)
- ++ if (tx0_ext_pa)
- + rt2x00_set_field8(&rfcsr, RFCSR50_TX0_EXT_PA, 1);
- +- if (!tx1_int_pa)
- ++ if (tx1_ext_pa)
- + rt2x00_set_field8(&rfcsr, RFCSR50_TX1_EXT_PA, 1);
- + rt2800_rfcsr_write(rt2x00dev, 50, rfcsr);
- +- rt2800_rfcsr_write(rt2x00dev, 51, (tx0_int_pa ? 0x7f : 0x52));
- +- rt2800_rfcsr_write(rt2x00dev, 52, (tx0_int_pa ? 0x00 : 0xc0));
- +- rt2800_rfcsr_write(rt2x00dev, 53, (tx0_int_pa ? 0x52 : 0xd2));
- +- rt2800_rfcsr_write(rt2x00dev, 54, (tx0_int_pa ? 0x1b : 0xc0));
- +- rt2800_rfcsr_write(rt2x00dev, 55, (tx1_int_pa ? 0x7f : 0x52));
- +- rt2800_rfcsr_write(rt2x00dev, 56, (tx1_int_pa ? 0x00 : 0xc0));
- +- rt2800_rfcsr_write(rt2x00dev, 57, (tx0_int_pa ? 0x52 : 0x49));
- +- rt2800_rfcsr_write(rt2x00dev, 58, (tx1_int_pa ? 0x1b : 0xc0));
- ++ rt2800_rfcsr_write(rt2x00dev, 51, (tx0_ext_pa ? 0x52 : 0x7f));
- ++ rt2800_rfcsr_write(rt2x00dev, 52, (tx0_ext_pa ? 0xc0 : 0x00));
- ++ rt2800_rfcsr_write(rt2x00dev, 53, (tx0_ext_pa ? 0xd2 : 0x52));
- ++ rt2800_rfcsr_write(rt2x00dev, 54, (tx0_ext_pa ? 0xc0 : 0x1b));
- ++ rt2800_rfcsr_write(rt2x00dev, 55, (tx1_ext_pa ? 0x52 : 0x7f));
- ++ rt2800_rfcsr_write(rt2x00dev, 56, (tx1_ext_pa ? 0xc0 : 0x00));
- ++ rt2800_rfcsr_write(rt2x00dev, 57, (tx0_ext_pa ? 0x49 : 0x52));
- ++ rt2800_rfcsr_write(rt2x00dev, 58, (tx1_ext_pa ? 0xc0 : 0x1b));
- + rt2800_rfcsr_write(rt2x00dev, 59, 0x00);
- + rt2800_rfcsr_write(rt2x00dev, 60, 0x00);
- + rt2800_rfcsr_write(rt2x00dev, 61, 0x00);
- +@@ -8782,13 +8782,13 @@ static int rt2800_init_eeprom(struct rt2
- + rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
- +
- + if (rt2x00_rt(rt2x00dev, RT3352)) {
- +- if (!rt2x00_get_field16(eeprom,
- ++ if (rt2x00_get_field16(eeprom,
- + EEPROM_NIC_CONF1_EXTERNAL_TX0_PA_3352))
- +- __set_bit(CAPABILITY_INTERNAL_PA_TX0,
- ++ __set_bit(CAPABILITY_EXTERNAL_PA_TX0,
- + &rt2x00dev->cap_flags);
- +- if (!rt2x00_get_field16(eeprom,
- ++ if (rt2x00_get_field16(eeprom,
- + EEPROM_NIC_CONF1_EXTERNAL_TX1_PA_3352))
- +- __set_bit(CAPABILITY_INTERNAL_PA_TX1,
- ++ __set_bit(CAPABILITY_EXTERNAL_PA_TX1,
- + &rt2x00dev->cap_flags);
- + }
- +
- +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
- +@@ -719,8 +719,8 @@ enum rt2x00_capability_flags {
- + CAPABILITY_DOUBLE_ANTENNA,
- + CAPABILITY_BT_COEXIST,
- + CAPABILITY_VCO_RECALIBRATION,
- +- CAPABILITY_INTERNAL_PA_TX0,
- +- CAPABILITY_INTERNAL_PA_TX1,
- ++ CAPABILITY_EXTERNAL_PA_TX0,
- ++ CAPABILITY_EXTERNAL_PA_TX1,
- + };
- +
- + /*
- diff --git a/package/kernel/mac80211/patches/020-21-rt2800-fix-LNA-gain-assignment-for-MT7620.patch b/package/kernel/mac80211/patches/020-21-rt2800-fix-LNA-gain-assignment-for-MT7620.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..71a4ffea45879af5f8fda8dca253b23b9abd752b
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/020-21-rt2800-fix-LNA-gain-assignment-for-MT7620.patch
- @@ -0,0 +1,49 @@
- +From 0109238d62a99ea779a7e28e21868118e7b8d69d Mon Sep 17 00:00:00 2001
- +From: Daniel Golle <daniel@makrotopia.org>
- +Date: Mon, 10 Apr 2017 14:28:14 +0200
- +Subject: [PATCH 1/2] rt2800: fix LNA gain assignment for MT7620
- +To: Stanislaw Gruszka <sgruszka@redhat.com>
- +Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
- + linux-wireless@vger.kernel.org,
- + Kalle Valo <kvalo@codeaurora.org>
- +
- +The base value used for MT7620 differs from Rt5392 which resulted in
- +quite bad RX signal quality. Fix this by using the correct base value as
- +well as the LNA calibration values for HT20.
- +
- +Reported-by: Tom Psyborg <pozega.tomislav@gmail.com>
- +Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- +---
- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 18 ++++++++++++++++--
- + 1 file changed, 16 insertions(+), 2 deletions(-)
- +
- +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +@@ -3806,11 +3806,25 @@ static void rt2800_config_channel(struct
- + }
- +
- + if (rt2x00_rt(rt2x00dev, RT5592) || rt2x00_rt(rt2x00dev, RT6352)) {
- ++ reg = 0x10;
- ++ if (!conf_is_ht40(conf)) {
- ++ if (rt2x00_rt(rt2x00dev, RT6352) &&
- ++ rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
- ++ reg |= 0x5;
- ++ } else {
- ++ reg |= 0xa;
- ++ }
- ++ }
- + rt2800_bbp_write(rt2x00dev, 195, 141);
- +- rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a);
- ++ rt2800_bbp_write(rt2x00dev, 196, reg);
- +
- + /* AGC init */
- +- reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2 * rt2x00dev->lna_gain;
- ++ if (rt2x00_rt(rt2x00dev, RT6352))
- ++ reg = 0x04;
- ++ else
- ++ reg = rf->channel <= 14 ? 0x1c : 0x24;
- ++
- ++ reg += 2 * rt2x00dev->lna_gain;
- + rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
- +
- + rt2800_iq_calibrate(rt2x00dev, rf->channel);
- diff --git a/package/kernel/mac80211/patches/020-22-rt2800-do-VCO-calibration-after-programming-ALC.patch b/package/kernel/mac80211/patches/020-22-rt2800-do-VCO-calibration-after-programming-ALC.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..3d76408cd24c9fe9029202b3aa2efa891137ab2f
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/020-22-rt2800-do-VCO-calibration-after-programming-ALC.patch
- @@ -0,0 +1,29 @@
- +From feb608c7986c14bab153f31f8e96f251072e6578 Mon Sep 17 00:00:00 2001
- +From: Daniel Golle <daniel@makrotopia.org>
- +Date: Mon, 10 Apr 2017 15:33:20 +0200
- +Subject: [PATCH 2/2] rt2800: do VCO calibration after programming ALC
- +To: Stanislaw Gruszka <sgruszka@redhat.com>
- +Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
- + linux-wireless@vger.kernel.org,
- + Kalle Valo <kvalo@codeaurora.org>
- +
- +Scanning fails if we don't do VCO calibration every time.
- +The vendor driver duplicates the VCO calibration function into the
- +channel switching logic, we can do the same with less duplication.
- +
- +Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- +---
- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++
- + 1 file changed, 2 insertions(+)
- +
- +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +@@ -3407,6 +3407,8 @@ static void rt2800_config_alc(struct rt2
- + rt2800_rfcsr_write(rt2x00dev, 42, 0x5b);
- + }
- + rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, mac_sys_ctrl);
- ++
- ++ rt2800_vco_calibration(rt2x00dev);
- + }
- +
- + static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev,
- diff --git a/package/kernel/mac80211/patches/020-23-rt2800-fix-mt7620-vco-calibration-registers.patch b/package/kernel/mac80211/patches/020-23-rt2800-fix-mt7620-vco-calibration-registers.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..360d06e8f8d4a3d8dd99ff1c6ed2d82b7618b5ca
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/020-23-rt2800-fix-mt7620-vco-calibration-registers.patch
- @@ -0,0 +1,45 @@
- +From 02c452f317b4a4d06c433c294e66896a389731c1 Mon Sep 17 00:00:00 2001
- +From: Daniel Golle <daniel@makrotopia.org>
- +Date: Tue, 18 Apr 2017 11:09:53 +0200
- +Subject: [PATCH] rt2800: fix mt7620 vco calibration registers
- +MIME-Version: 1.0
- +Content-Type: text/plain; charset=UTF-8
- +Content-Transfer-Encoding: 8bit
- +To: Stanislaw Gruszka <sgruszka@redhat.com>
- +Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
- + linux-wireless@vger.kernel.org,
- + Kalle Valo <kvalo@codeaurora.org>,
- + Tom Psyborg <pozega.tomislav@gmail.com>
- +
- +Use register values from init LNA function instead of the ones from
- +restore LNA function. Apply register values based on rx path
- +configuration.
- +
- +Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
- +Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- +---
- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 +++---
- + 1 file changed, 3 insertions(+), 3 deletions(-)
- +
- +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +@@ -4932,7 +4932,7 @@ void rt2800_vco_calibration(struct rt2x0
- + rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
- +
- + if (rt2x00_rt(rt2x00dev, RT6352)) {
- +- if (rt2x00dev->default_ant.tx_chain_num == 1) {
- ++ if (rt2x00dev->default_ant.rx_chain_num == 1) {
- + rt2800_bbp_write(rt2x00dev, 91, 0x07);
- + rt2800_bbp_write(rt2x00dev, 95, 0x1A);
- + rt2800_bbp_write(rt2x00dev, 195, 128);
- +@@ -4953,8 +4953,8 @@ void rt2800_vco_calibration(struct rt2x0
- + }
- +
- + if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
- +- rt2800_bbp_write(rt2x00dev, 75, 0x60);
- +- rt2800_bbp_write(rt2x00dev, 76, 0x44);
- ++ rt2800_bbp_write(rt2x00dev, 75, 0x68);
- ++ rt2800_bbp_write(rt2x00dev, 76, 0x4C);
- + rt2800_bbp_write(rt2x00dev, 79, 0x1C);
- + rt2800_bbp_write(rt2x00dev, 80, 0x0C);
- + rt2800_bbp_write(rt2x00dev, 82, 0xB6);
- diff --git a/package/kernel/mac80211/patches/020-24-rt2800-fix-mt7620-E2-channel-registers.patch b/package/kernel/mac80211/patches/020-24-rt2800-fix-mt7620-E2-channel-registers.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..92c2134845a7e239593e5a474995d0b7b5e0541f
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/020-24-rt2800-fix-mt7620-E2-channel-registers.patch
- @@ -0,0 +1,36 @@
- +From c426cb0ed15ee12dfdc8c53ddd1449ac617023cf Mon Sep 17 00:00:00 2001
- +From: Daniel Golle <daniel@makrotopia.org>
- +Date: Tue, 18 Apr 2017 11:45:37 +0200
- +Subject: [PATCH] rt2800: fix mt7620 E2 channel registers
- +To: Stanislaw Gruszka <sgruszka@redhat.com>
- +Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
- + linux-wireless@vger.kernel.org,
- + Kalle Valo <kvalo@codeaurora.org>,
- + Tom Psyborg <pozega.tomislav@gmail.com>
- +
- +From: Tomislav Požega <pozega.tomislav@gmail.com>
- +
- +update RF register 47 and 54 values according to vendor driver
- +
- +Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
- +Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- +---
- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 ++++--
- + 1 file changed, 4 insertions(+), 2 deletions(-)
- +
- +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +@@ -8145,9 +8145,11 @@ static void rt2800_init_rfcsr_6352(struc
- + rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xB3);
- + rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xD5);
- + rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x27);
- +- rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x69);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0x67);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0x69);
- + rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xFF);
- +- rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x20);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x20);
- + rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x66);
- + rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xFF);
- + rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x1C);
- diff --git a/package/kernel/mac80211/patches/021-01-rt2800-fix-LNA-gain-assignment-for-MT7620.patch b/package/kernel/mac80211/patches/021-01-rt2800-fix-LNA-gain-assignment-for-MT7620.patch
- deleted file mode 100644
- index 3270ea2c566850e04b5484de41e462ebafa3cfcc..0000000000000000000000000000000000000000
- --- a/package/kernel/mac80211/patches/021-01-rt2800-fix-LNA-gain-assignment-for-MT7620.patch
- +++ /dev/null
- @@ -1,54 +0,0 @@
- -From 0109238d62a99ea779a7e28e21868118e7b8d69d Mon Sep 17 00:00:00 2001
- -From: Daniel Golle <daniel@makrotopia.org>
- -Date: Mon, 10 Apr 2017 14:28:14 +0200
- -Subject: [PATCH 1/2] rt2800: fix LNA gain assignment for MT7620
- -To: Stanislaw Gruszka <sgruszka@redhat.com>
- -Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
- - linux-wireless@vger.kernel.org,
- - Kalle Valo <kvalo@codeaurora.org>
- -
- -The base value used for MT7620 differs from Rt5392 which resulted in
- -quite bad RX signal quality. Fix this by using the correct base value as
- -well as the LNA calibration values for HT20.
- -
- -Reported-by: Tom Psyborg <pozega.tomislav@gmail.com>
- -Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- ----
- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 18 ++++++++++++++++--
- - 1 file changed, 16 insertions(+), 2 deletions(-)
- -
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -index ba06ac2d876d..7135519a638c 100644
- ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -3806,11 +3806,25 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
- - }
- -
- - if (rt2x00_rt(rt2x00dev, RT5592) || rt2x00_rt(rt2x00dev, RT6352)) {
- -+ reg = 0x10;
- -+ if (!conf_is_ht40(conf)) {
- -+ if (rt2x00_rt(rt2x00dev, RT6352) &&
- -+ rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
- -+ reg |= 0x5;
- -+ } else {
- -+ reg |= 0xa;
- -+ }
- -+ }
- - rt2800_bbp_write(rt2x00dev, 195, 141);
- -- rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a);
- -+ rt2800_bbp_write(rt2x00dev, 196, reg);
- -
- - /* AGC init */
- -- reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2 * rt2x00dev->lna_gain;
- -+ if (rt2x00_rt(rt2x00dev, RT6352))
- -+ reg = 0x04;
- -+ else
- -+ reg = rf->channel <= 14 ? 0x1c : 0x24;
- -+
- -+ reg += 2 * rt2x00dev->lna_gain;
- - rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
- -
- - rt2800_iq_calibrate(rt2x00dev, rf->channel);
- ---
- -2.12.2
- -
- diff --git a/package/kernel/mac80211/patches/021-02-rt2800-do-VCO-calibration-after-programming-ALC.patch b/package/kernel/mac80211/patches/021-02-rt2800-do-VCO-calibration-after-programming-ALC.patch
- deleted file mode 100644
- index 1dafb78f1c71037d7362c13f68728b11dc5aaff2..0000000000000000000000000000000000000000
- --- a/package/kernel/mac80211/patches/021-02-rt2800-do-VCO-calibration-after-programming-ALC.patch
- +++ /dev/null
- @@ -1,34 +0,0 @@
- -From feb608c7986c14bab153f31f8e96f251072e6578 Mon Sep 17 00:00:00 2001
- -From: Daniel Golle <daniel@makrotopia.org>
- -Date: Mon, 10 Apr 2017 15:33:20 +0200
- -Subject: [PATCH 2/2] rt2800: do VCO calibration after programming ALC
- -To: Stanislaw Gruszka <sgruszka@redhat.com>
- -Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
- - linux-wireless@vger.kernel.org,
- - Kalle Valo <kvalo@codeaurora.org>
- -
- -Scanning fails if we don't do VCO calibration every time.
- -The vendor driver duplicates the VCO calibration function into the
- -channel switching logic, we can do the same with less duplication.
- -
- -Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- ----
- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++
- - 1 file changed, 2 insertions(+)
- -
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -index 7135519a638c..870bf315f98b 100644
- ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -3407,6 +3407,8 @@ static void rt2800_config_alc(struct rt2x00_dev *rt2x00dev,
- - rt2800_rfcsr_write(rt2x00dev, 42, 0x5b);
- - }
- - rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, mac_sys_ctrl);
- -+
- -+ rt2800_vco_calibration(rt2x00dev);
- - }
- -
- - static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev,
- ---
- -2.12.2
- -
- diff --git a/package/kernel/mac80211/patches/021-03-rt2800-fix-mt7620-vco-calibration-registers.patch b/package/kernel/mac80211/patches/021-03-rt2800-fix-mt7620-vco-calibration-registers.patch
- deleted file mode 100644
- index 708b0b2d31a0276aa9dd3a922e26a1379ec364f4..0000000000000000000000000000000000000000
- --- a/package/kernel/mac80211/patches/021-03-rt2800-fix-mt7620-vco-calibration-registers.patch
- +++ /dev/null
- @@ -1,50 +0,0 @@
- -From 02c452f317b4a4d06c433c294e66896a389731c1 Mon Sep 17 00:00:00 2001
- -From: Daniel Golle <daniel@makrotopia.org>
- -Date: Tue, 18 Apr 2017 11:09:53 +0200
- -Subject: [PATCH] rt2800: fix mt7620 vco calibration registers
- -MIME-Version: 1.0
- -Content-Type: text/plain; charset=UTF-8
- -Content-Transfer-Encoding: 8bit
- -To: Stanislaw Gruszka <sgruszka@redhat.com>
- -Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
- - linux-wireless@vger.kernel.org,
- - Kalle Valo <kvalo@codeaurora.org>,
- - Tom Psyborg <pozega.tomislav@gmail.com>
- -
- -Use register values from init LNA function instead of the ones from
- -restore LNA function. Apply register values based on rx path
- -configuration.
- -
- -Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
- -Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- ----
- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 +++---
- - 1 file changed, 3 insertions(+), 3 deletions(-)
- -
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -index 870bf315f98b..86cffee6876a 100644
- ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -4932,7 +4932,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
- - rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
- -
- - if (rt2x00_rt(rt2x00dev, RT6352)) {
- -- if (rt2x00dev->default_ant.tx_chain_num == 1) {
- -+ if (rt2x00dev->default_ant.rx_chain_num == 1) {
- - rt2800_bbp_write(rt2x00dev, 91, 0x07);
- - rt2800_bbp_write(rt2x00dev, 95, 0x1A);
- - rt2800_bbp_write(rt2x00dev, 195, 128);
- -@@ -4953,8 +4953,8 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
- - }
- -
- - if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
- -- rt2800_bbp_write(rt2x00dev, 75, 0x60);
- -- rt2800_bbp_write(rt2x00dev, 76, 0x44);
- -+ rt2800_bbp_write(rt2x00dev, 75, 0x68);
- -+ rt2800_bbp_write(rt2x00dev, 76, 0x4C);
- - rt2800_bbp_write(rt2x00dev, 79, 0x1C);
- - rt2800_bbp_write(rt2x00dev, 80, 0x0C);
- - rt2800_bbp_write(rt2x00dev, 82, 0xB6);
- ---
- -2.12.2
- -
- diff --git a/package/kernel/mac80211/patches/021-04-rt2800-fix-mt7620-E2-channel-registers.patch b/package/kernel/mac80211/patches/021-04-rt2800-fix-mt7620-E2-channel-registers.patch
- deleted file mode 100644
- index 284a347f256f3499222acff54ebf9df0fa5aecf9..0000000000000000000000000000000000000000
- --- a/package/kernel/mac80211/patches/021-04-rt2800-fix-mt7620-E2-channel-registers.patch
- +++ /dev/null
- @@ -1,41 +0,0 @@
- -From c426cb0ed15ee12dfdc8c53ddd1449ac617023cf Mon Sep 17 00:00:00 2001
- -From: Daniel Golle <daniel@makrotopia.org>
- -Date: Tue, 18 Apr 2017 11:45:37 +0200
- -Subject: [PATCH] rt2800: fix mt7620 E2 channel registers
- -To: Stanislaw Gruszka <sgruszka@redhat.com>
- -Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
- - linux-wireless@vger.kernel.org,
- - Kalle Valo <kvalo@codeaurora.org>,
- - Tom Psyborg <pozega.tomislav@gmail.com>
- -
- -From: Tomislav Požega <pozega.tomislav@gmail.com>
- -
- -update RF register 47 and 54 values according to vendor driver
- -
- -Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
- -Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- ----
- - drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 ++++--
- - 1 file changed, 4 insertions(+), 2 deletions(-)
- -
- -diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -index 86cffee6876a..8585cdc3de53 100644
- ---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -8145,9 +8145,11 @@ static void rt2800_init_rfcsr_6352(struct rt2x00_dev *rt2x00dev)
- - rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xB3);
- - rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xD5);
- - rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x27);
- -- rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x69);
- -+ rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0x67);
- -+ rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0x69);
- - rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xFF);
- -- rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x20);
- -+ rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27);
- -+ rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x20);
- - rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x66);
- - rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xFF);
- - rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x1C);
- ---
- -2.12.2
- -
- diff --git a/package/kernel/mac80211/patches/323-0001-brcmfmac-Use-net_device_stats-from-struct-net_device.patch b/package/kernel/mac80211/patches/323-0001-brcmfmac-Use-net_device_stats-from-struct-net_device.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..81567d87579aa6870b0862758acc692852cd369e
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/323-0001-brcmfmac-Use-net_device_stats-from-struct-net_device.patch
- @@ -0,0 +1,112 @@
- +From 91b632803ee4e47c5a5c4dc3d8bf5abf9c16107a Mon Sep 17 00:00:00 2001
- +From: Tobias Klauser <tklauser@distanz.ch>
- +Date: Mon, 13 Feb 2017 11:14:09 +0100
- +Subject: [PATCH] brcmfmac: Use net_device_stats from struct net_device
- +
- +Instead of using a private copy of struct net_device_stats in struct
- +brcm_if, use stats from struct net_device. Also remove the now
- +unnecessary .ndo_get_stats function.
- +
- +Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
- +Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + .../wireless/broadcom/brcm80211/brcmfmac/core.c | 26 +++++++---------------
- + .../wireless/broadcom/brcm80211/brcmfmac/core.h | 2 --
- + 2 files changed, 8 insertions(+), 20 deletions(-)
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- +@@ -249,10 +249,10 @@ static netdev_tx_t brcmf_netdev_start_xm
- +
- + done:
- + if (ret) {
- +- ifp->stats.tx_dropped++;
- ++ ndev->stats.tx_dropped++;
- + } else {
- +- ifp->stats.tx_packets++;
- +- ifp->stats.tx_bytes += skb->len;
- ++ ndev->stats.tx_packets++;
- ++ ndev->stats.tx_bytes += skb->len;
- + }
- +
- + /* Return ok: we always eat the packet */
- +@@ -296,15 +296,15 @@ void brcmf_txflowblock(struct device *de
- + void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb)
- + {
- + if (skb->pkt_type == PACKET_MULTICAST)
- +- ifp->stats.multicast++;
- ++ ifp->ndev->stats.multicast++;
- +
- + if (!(ifp->ndev->flags & IFF_UP)) {
- + brcmu_pkt_buf_free_skb(skb);
- + return;
- + }
- +
- +- ifp->stats.rx_bytes += skb->len;
- +- ifp->stats.rx_packets++;
- ++ ifp->ndev->stats.rx_bytes += skb->len;
- ++ ifp->ndev->stats.rx_packets++;
- +
- + brcmf_dbg(DATA, "rx proto=0x%X\n", ntohs(skb->protocol));
- + if (in_interrupt())
- +@@ -327,7 +327,7 @@ static int brcmf_rx_hdrpull(struct brcmf
- +
- + if (ret || !(*ifp) || !(*ifp)->ndev) {
- + if (ret != -ENODATA && *ifp)
- +- (*ifp)->stats.rx_errors++;
- ++ (*ifp)->ndev->stats.rx_errors++;
- + brcmu_pkt_buf_free_skb(skb);
- + return -ENODATA;
- + }
- +@@ -388,7 +388,7 @@ void brcmf_txfinalize(struct brcmf_if *i
- + }
- +
- + if (!success)
- +- ifp->stats.tx_errors++;
- ++ ifp->ndev->stats.tx_errors++;
- +
- + brcmu_pkt_buf_free_skb(txp);
- + }
- +@@ -411,15 +411,6 @@ void brcmf_txcomplete(struct device *dev
- + }
- + }
- +
- +-static struct net_device_stats *brcmf_netdev_get_stats(struct net_device *ndev)
- +-{
- +- struct brcmf_if *ifp = netdev_priv(ndev);
- +-
- +- brcmf_dbg(TRACE, "Enter, bsscfgidx=%d\n", ifp->bsscfgidx);
- +-
- +- return &ifp->stats;
- +-}
- +-
- + static void brcmf_ethtool_get_drvinfo(struct net_device *ndev,
- + struct ethtool_drvinfo *info)
- + {
- +@@ -492,7 +483,6 @@ static int brcmf_netdev_open(struct net_
- + static const struct net_device_ops brcmf_netdev_ops_pri = {
- + .ndo_open = brcmf_netdev_open,
- + .ndo_stop = brcmf_netdev_stop,
- +- .ndo_get_stats = brcmf_netdev_get_stats,
- + .ndo_start_xmit = brcmf_netdev_start_xmit,
- + .ndo_set_mac_address = brcmf_netdev_set_mac_address,
- + .ndo_set_rx_mode = brcmf_netdev_set_multicast_list
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
- +@@ -171,7 +171,6 @@ enum brcmf_netif_stop_reason {
- + * @drvr: points to device related information.
- + * @vif: points to cfg80211 specific interface information.
- + * @ndev: associated network device.
- +- * @stats: interface specific network statistics.
- + * @multicast_work: worker object for multicast provisioning.
- + * @ndoffload_work: worker object for neighbor discovery offload configuration.
- + * @fws_desc: interface specific firmware-signalling descriptor.
- +@@ -187,7 +186,6 @@ struct brcmf_if {
- + struct brcmf_pub *drvr;
- + struct brcmf_cfg80211_vif *vif;
- + struct net_device *ndev;
- +- struct net_device_stats stats;
- + struct work_struct multicast_work;
- + struct work_struct ndoffload_work;
- + struct brcmf_fws_mac_descriptor *fws_desc;
- diff --git a/package/kernel/mac80211/patches/323-0002-brcmfmac-always-print-error-when-PSM-s-watchdog-fire.patch b/package/kernel/mac80211/patches/323-0002-brcmfmac-always-print-error-when-PSM-s-watchdog-fire.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..7272b889c0bb829db55faaf32524c5762ddc4efd
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/323-0002-brcmfmac-always-print-error-when-PSM-s-watchdog-fire.patch
- @@ -0,0 +1,148 @@
- +From f1ac3aa212af6dd0a36dc07a63f95f91be6f4935 Mon Sep 17 00:00:00 2001
- +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
- +Date: Fri, 24 Feb 2017 17:32:46 +0100
- +Subject: [PATCH] brcmfmac: always print error when PSM's watchdog fires
- +MIME-Version: 1.0
- +Content-Type: text/plain; charset=UTF-8
- +Content-Transfer-Encoding: 8bit
- +
- +So far we were attaching BRCMF_E_PSM_WATCHDOG event listener in
- +brcmf_debug_attach which gets compiled only with CONFIG_BRCMDBG. This
- +event means something went wrong and firmware / hardware usually can't
- +be expected to work (reliably).
- +
- +Such a problem is significant for user experience so I believe we should
- +print an error unconditionally (even with debugging disabled). What can
- +be indeed optional is dumping bus memory as this is clearly part of
- +debugging process.
- +
- +In the future we may also try to extend this listener by trying to
- +recover from the error or at least signal it to the cfg80211.
- +
- +Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + .../wireless/broadcom/brcm80211/brcmfmac/core.c | 22 ++++++++++++++++++
- + .../wireless/broadcom/brcm80211/brcmfmac/debug.c | 26 +++-------------------
- + .../wireless/broadcom/brcm80211/brcmfmac/debug.h | 9 ++++++++
- + 3 files changed, 34 insertions(+), 23 deletions(-)
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- +@@ -738,6 +738,24 @@ void brcmf_remove_interface(struct brcmf
- + brcmf_del_if(ifp->drvr, ifp->bsscfgidx, rtnl_locked);
- + }
- +
- ++static int brcmf_psm_watchdog_notify(struct brcmf_if *ifp,
- ++ const struct brcmf_event_msg *evtmsg,
- ++ void *data)
- ++{
- ++ int err;
- ++
- ++ brcmf_dbg(TRACE, "enter: bsscfgidx=%d\n", ifp->bsscfgidx);
- ++
- ++ brcmf_err("PSM's watchdog has fired!\n");
- ++
- ++ err = brcmf_debug_create_memdump(ifp->drvr->bus_if, data,
- ++ evtmsg->datalen);
- ++ if (err)
- ++ brcmf_err("Failed to get memory dump, %d\n", err);
- ++
- ++ return err;
- ++}
- ++
- + #ifdef CONFIG_INET
- + #define ARPOL_MAX_ENTRIES 8
- + static int brcmf_inetaddr_changed(struct notifier_block *nb,
- +@@ -917,6 +935,10 @@ int brcmf_attach(struct device *dev, str
- + goto fail;
- + }
- +
- ++ /* Attach to events important for core code */
- ++ brcmf_fweh_register(drvr, BRCMF_E_PSM_WATCHDOG,
- ++ brcmf_psm_watchdog_notify);
- ++
- + /* attach firmware event handler */
- + brcmf_fweh_attach(drvr);
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
- +@@ -27,8 +27,8 @@
- +
- + static struct dentry *root_folder;
- +
- +-static int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
- +- size_t len)
- ++int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
- ++ size_t len)
- + {
- + void *dump;
- + size_t ramsize;
- +@@ -54,24 +54,6 @@ static int brcmf_debug_create_memdump(st
- + return 0;
- + }
- +
- +-static int brcmf_debug_psm_watchdog_notify(struct brcmf_if *ifp,
- +- const struct brcmf_event_msg *evtmsg,
- +- void *data)
- +-{
- +- int err;
- +-
- +- brcmf_dbg(TRACE, "enter: bsscfgidx=%d\n", ifp->bsscfgidx);
- +-
- +- brcmf_err("PSM's watchdog has fired!\n");
- +-
- +- err = brcmf_debug_create_memdump(ifp->drvr->bus_if, data,
- +- evtmsg->datalen);
- +- if (err)
- +- brcmf_err("Failed to get memory dump, %d\n", err);
- +-
- +- return err;
- +-}
- +-
- + void brcmf_debugfs_init(void)
- + {
- + root_folder = debugfs_create_dir(KBUILD_MODNAME, NULL);
- +@@ -99,9 +81,7 @@ int brcmf_debug_attach(struct brcmf_pub
- + if (IS_ERR(drvr->dbgfs_dir))
- + return PTR_ERR(drvr->dbgfs_dir);
- +
- +-
- +- return brcmf_fweh_register(drvr, BRCMF_E_PSM_WATCHDOG,
- +- brcmf_debug_psm_watchdog_notify);
- ++ return 0;
- + }
- +
- + void brcmf_debug_detach(struct brcmf_pub *drvr)
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
- +@@ -99,6 +99,7 @@ do { \
- +
- + extern int brcmf_msg_level;
- +
- ++struct brcmf_bus;
- + struct brcmf_pub;
- + #ifdef DEBUG
- + void brcmf_debugfs_init(void);
- +@@ -108,6 +109,8 @@ void brcmf_debug_detach(struct brcmf_pub
- + struct dentry *brcmf_debugfs_get_devdir(struct brcmf_pub *drvr);
- + int brcmf_debugfs_add_entry(struct brcmf_pub *drvr, const char *fn,
- + int (*read_fn)(struct seq_file *seq, void *data));
- ++int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
- ++ size_t len);
- + #else
- + static inline void brcmf_debugfs_init(void)
- + {
- +@@ -128,6 +131,12 @@ int brcmf_debugfs_add_entry(struct brcmf
- + {
- + return 0;
- + }
- ++static inline
- ++int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
- ++ size_t len)
- ++{
- ++ return 0;
- ++}
- + #endif
- +
- + #endif /* BRCMFMAC_DEBUG_H */
- diff --git a/package/kernel/mac80211/patches/323-0003-brcmfmac-Do-not-print-the-firmware-version-as-an-err.patch b/package/kernel/mac80211/patches/323-0003-brcmfmac-Do-not-print-the-firmware-version-as-an-err.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..3ab9b66e088edc980b4ca9565ecad2ead7bcc679
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/323-0003-brcmfmac-Do-not-print-the-firmware-version-as-an-err.patch
- @@ -0,0 +1,56 @@
- +From d79fe4cb70d8deab7b8dc1de547ed4b915574414 Mon Sep 17 00:00:00 2001
- +From: Hans de Goede <hdegoede@redhat.com>
- +Date: Wed, 8 Mar 2017 14:50:15 +0100
- +Subject: [PATCH] brcmfmac: Do not print the firmware version as an error
- +
- +Using pr_err for things which are not errors is a bad idea. E.g. it
- +will cause the plymouth bootsplash screen to drop back to the text
- +console so that the user can see the error, which is not what we
- +normally want to happen.
- +
- +Instead add a new brcmf_info macro and use that.
- +
- +Signed-off-by: Hans de Goede <hdegoede@redhat.com>
- +Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 2 +-
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h | 9 +++++++++
- + 2 files changed, 10 insertions(+), 1 deletion(-)
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
- +@@ -161,7 +161,7 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
- + strsep(&ptr, "\n");
- +
- + /* Print fw version info */
- +- brcmf_err("Firmware version = %s\n", buf);
- ++ brcmf_info("Firmware version = %s\n", buf);
- +
- + /* locate firmware version number for ethtool */
- + ptr = strrchr(buf, ' ') + 1;
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
- +@@ -59,6 +59,10 @@ void __brcmf_err(const char *func, const
- + } while (0)
- +
- + #if defined(DEBUG) || defined(CPTCFG_BRCM_TRACING)
- ++
- ++/* For debug/tracing purposes treat info messages as errors */
- ++#define brcmf_info brcmf_err
- ++
- + __printf(3, 4)
- + void __brcmf_dbg(u32 level, const char *func, const char *fmt, ...);
- + #define brcmf_dbg(level, fmt, ...) \
- +@@ -77,6 +81,11 @@ do { \
- +
- + #else /* defined(DEBUG) || defined(CPTCFG_BRCM_TRACING) */
- +
- ++#define brcmf_info(fmt, ...) \
- ++ do { \
- ++ pr_info("%s: " fmt, __func__, ##__VA_ARGS__); \
- ++ } while (0)
- ++
- + #define brcmf_dbg(level, fmt, ...) no_printk(fmt, ##__VA_ARGS__)
- +
- + #define BRCMF_DATA_ON() 0
- diff --git a/package/kernel/mac80211/patches/323-0004-brcmfmac-Do-not-complain-about-country-code-00.patch b/package/kernel/mac80211/patches/323-0004-brcmfmac-Do-not-complain-about-country-code-00.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..f4570e71b1177abb92965d099b0dfd67f35b703f
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/323-0004-brcmfmac-Do-not-complain-about-country-code-00.patch
- @@ -0,0 +1,28 @@
- +From 26e537884a8ef451f5c60f6949b1615069931ffa Mon Sep 17 00:00:00 2001
- +From: Hans de Goede <hdegoede@redhat.com>
- +Date: Wed, 8 Mar 2017 14:50:16 +0100
- +Subject: [PATCH] brcmfmac: Do not complain about country code "00"
- +
- +The country code gets set to "00" by default at boot, ignore this
- +rather then logging an error about it.
- +
- +Signed-off-by: Hans de Goede <hdegoede@redhat.com>
- +Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 4 ++++
- + 1 file changed, 4 insertions(+)
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
- +@@ -6736,6 +6736,10 @@ static void brcmf_cfg80211_reg_notifier(
- + s32 err;
- + int i;
- +
- ++ /* The country code gets set to "00" by default at boot, ignore */
- ++ if (req->alpha2[0] == '0' && req->alpha2[1] == '0')
- ++ return;
- ++
- + /* ignore non-ISO3166 country codes */
- + for (i = 0; i < sizeof(req->alpha2); i++)
- + if (req->alpha2[i] < 'A' || req->alpha2[i] > 'Z') {
- diff --git a/package/kernel/mac80211/patches/323-0005-brcmfmac-Handle-status-BRCMF_E_STATUS_ABORT-in-cfg80.patch b/package/kernel/mac80211/patches/323-0005-brcmfmac-Handle-status-BRCMF_E_STATUS_ABORT-in-cfg80.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..0f2d54e1dd1308db876723aee4dc762a5f2e675c
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/323-0005-brcmfmac-Handle-status-BRCMF_E_STATUS_ABORT-in-cfg80.patch
- @@ -0,0 +1,35 @@
- +From b9472a2e3e452c414634b3ccb1ef6c4098878686 Mon Sep 17 00:00:00 2001
- +From: Hans de Goede <hdegoede@redhat.com>
- +Date: Wed, 8 Mar 2017 14:50:17 +0100
- +Subject: [PATCH] brcmfmac: Handle status == BRCMF_E_STATUS_ABORT in
- + cfg80211_escan_handler
- +
- +If a scan gets aborted BRCMF_SCAN_STATUS_BUSY gets cleared in
- +cfg->scan_status and when we receive an abort event from the firmware
- +the BRCMF_SCAN_STATUS_BUSY check in the cfg80211_escan_handler will
- +trigger resulting in multiple errors getting logged.
- +
- +Check for a status of BRCMF_E_STATUS_ABORT and in this case simply
- +cleanly exit the cfg80211_escan_handler. This also avoids a
- +BRCMF_E_STATUS_ABORT event arriving after a new scan has been started
- +causing the new scan to complete prematurely without any data.
- +
- +Signed-off-by: Hans de Goede <hdegoede@redhat.com>
- +Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 3 +++
- + 1 file changed, 3 insertions(+)
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
- +@@ -3097,6 +3097,9 @@ brcmf_cfg80211_escan_handler(struct brcm
- +
- + status = e->status;
- +
- ++ if (status == BRCMF_E_STATUS_ABORT)
- ++ goto exit;
- ++
- + if (!test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) {
- + brcmf_err("scan not ready, bsscfgidx=%d\n", ifp->bsscfgidx);
- + return -EPERM;
- diff --git a/package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch b/package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..b947cd1de91f67084e6978d8f53022544fa2f737
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch
- @@ -0,0 +1,137 @@
- +From 20ec4f57498f8770c7a1a3e2a316fa752a424178 Mon Sep 17 00:00:00 2001
- +From: Franky Lin <franky.lin@broadcom.com>
- +Date: Fri, 10 Mar 2017 21:17:02 +0000
- +Subject: [PATCH] brcmfmac: move brcmf_txflowblock to bcdc layer
- +
- +brcmf_txflowblock is invoked by sdio and usb bus module which are using
- +bcdc protocol. This patch makes it a bcdc API instead of a core module
- +function.
- +
- +Reviewed-by: Arend Van Spriel <arend.vanspriel@broadcom.com>
- +Signed-off-by: Franky Lin <franky.lin@broadcom.com>
- +Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 10 ++++++++++
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h | 1 +
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 2 --
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 10 ----------
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 5 +++--
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 5 +++--
- + 6 files changed, 17 insertions(+), 16 deletions(-)
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
- +@@ -345,6 +345,16 @@ brcmf_proto_bcdc_txdata(struct brcmf_pub
- + return brcmf_bus_txdata(drvr->bus_if, pktbuf);
- + }
- +
- ++void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state)
- ++{
- ++ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
- ++ struct brcmf_pub *drvr = bus_if->drvr;
- ++
- ++ brcmf_dbg(TRACE, "Enter\n");
- ++
- ++ brcmf_fws_bus_blocked(drvr, state);
- ++}
- ++
- + static void
- + brcmf_proto_bcdc_configure_addr_mode(struct brcmf_pub *drvr, int ifidx,
- + enum proto_addr_mode addr_mode)
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h
- +@@ -19,6 +19,7 @@
- + #ifdef CPTCFG_BRCMFMAC_PROTO_BCDC
- + int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr);
- + void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr);
- ++void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state);
- + #else
- + static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { return 0; }
- + static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {}
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
- +@@ -229,8 +229,6 @@ int brcmf_attach(struct device *dev, str
- + void brcmf_detach(struct device *dev);
- + /* Indication from bus module that dongle should be reset */
- + void brcmf_dev_reset(struct device *dev);
- +-/* Indication from bus module to change flow-control state */
- +-void brcmf_txflowblock(struct device *dev, bool state);
- +
- + /* Notify the bus has transferred the tx packet to firmware */
- + void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success);
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- +@@ -283,16 +283,6 @@ void brcmf_txflowblock_if(struct brcmf_i
- + spin_unlock_irqrestore(&ifp->netif_stop_lock, flags);
- + }
- +
- +-void brcmf_txflowblock(struct device *dev, bool state)
- +-{
- +- struct brcmf_bus *bus_if = dev_get_drvdata(dev);
- +- struct brcmf_pub *drvr = bus_if->drvr;
- +-
- +- brcmf_dbg(TRACE, "Enter\n");
- +-
- +- brcmf_fws_bus_blocked(drvr, state);
- +-}
- +-
- + void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb)
- + {
- + if (skb->pkt_type == PACKET_MULTICAST)
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
- +@@ -44,6 +44,7 @@
- + #include "firmware.h"
- + #include "core.h"
- + #include "common.h"
- ++#include "bcdc.h"
- +
- + #define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500)
- + #define CTL_DONE_TIMEOUT msecs_to_jiffies(2500)
- +@@ -2328,7 +2329,7 @@ static uint brcmf_sdio_sendfromq(struct
- + if ((bus->sdiodev->state == BRCMF_SDIOD_DATA) &&
- + bus->txoff && (pktq_len(&bus->txq) < TXLOW)) {
- + bus->txoff = false;
- +- brcmf_txflowblock(bus->sdiodev->dev, false);
- ++ brcmf_proto_bcdc_txflowblock(bus->sdiodev->dev, false);
- + }
- +
- + return cnt;
- +@@ -2753,7 +2754,7 @@ static int brcmf_sdio_bus_txdata(struct
- +
- + if (pktq_len(&bus->txq) >= TXHI) {
- + bus->txoff = true;
- +- brcmf_txflowblock(dev, true);
- ++ brcmf_proto_bcdc_txflowblock(dev, true);
- + }
- + spin_unlock_bh(&bus->txq_lock);
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
- +@@ -29,6 +29,7 @@
- + #include "usb.h"
- + #include "core.h"
- + #include "common.h"
- ++#include "bcdc.h"
- +
- +
- + #define IOCTL_RESP_TIMEOUT msecs_to_jiffies(2000)
- +@@ -488,7 +489,7 @@ static void brcmf_usb_tx_complete(struct
- + spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags);
- + if (devinfo->tx_freecount > devinfo->tx_high_watermark &&
- + devinfo->tx_flowblock) {
- +- brcmf_txflowblock(devinfo->dev, false);
- ++ brcmf_proto_bcdc_txflowblock(devinfo->dev, false);
- + devinfo->tx_flowblock = false;
- + }
- + spin_unlock_irqrestore(&devinfo->tx_flowblock_lock, flags);
- +@@ -635,7 +636,7 @@ static int brcmf_usb_tx(struct device *d
- + spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags);
- + if (devinfo->tx_freecount < devinfo->tx_low_watermark &&
- + !devinfo->tx_flowblock) {
- +- brcmf_txflowblock(dev, true);
- ++ brcmf_proto_bcdc_txflowblock(dev, true);
- + devinfo->tx_flowblock = true;
- + }
- + spin_unlock_irqrestore(&devinfo->tx_flowblock_lock, flags);
- diff --git a/package/kernel/mac80211/patches/323-0007-brcmfmac-move-brcmf_txcomplete-to-bcdc-layer.patch b/package/kernel/mac80211/patches/323-0007-brcmfmac-move-brcmf_txcomplete-to-bcdc-layer.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..9614e53e51b24afd48876ea4e0c805583acf472a
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/323-0007-brcmfmac-move-brcmf_txcomplete-to-bcdc-layer.patch
- @@ -0,0 +1,122 @@
- +From 7b584396b7a760bc77bbde4625f83ef173159d3e Mon Sep 17 00:00:00 2001
- +From: Franky Lin <franky.lin@broadcom.com>
- +Date: Fri, 10 Mar 2017 21:17:03 +0000
- +Subject: [PATCH] brcmfmac: move brcmf_txcomplete to bcdc layer
- +
- +brcmf_txcomplete is invoked by sdio and usb bus module which are using
- +bcdc protocol. So move it from core module into bcdc layer.
- +
- +Signed-off-by: Franky Lin <franky.lin@broadcom.com>
- +Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + .../net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 20 ++++++++++++++++++++
- + .../net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h | 2 ++
- + .../net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 3 ---
- + .../net/wireless/broadcom/brcm80211/brcmfmac/core.c | 18 ------------------
- + .../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 ++-
- + .../net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 2 +-
- + 6 files changed, 25 insertions(+), 23 deletions(-)
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
- +@@ -355,6 +355,26 @@ void brcmf_proto_bcdc_txflowblock(struct
- + brcmf_fws_bus_blocked(drvr, state);
- + }
- +
- ++void
- ++brcmf_proto_bcdc_txcomplete(struct device *dev, struct sk_buff *txp,
- ++ bool success)
- ++{
- ++ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
- ++ struct brcmf_pub *drvr = bus_if->drvr;
- ++ struct brcmf_if *ifp;
- ++
- ++ /* await txstatus signal for firmware if active */
- ++ if (brcmf_fws_fc_active(drvr->fws)) {
- ++ if (!success)
- ++ brcmf_fws_bustxfail(drvr->fws, txp);
- ++ } else {
- ++ if (brcmf_proto_bcdc_hdrpull(drvr, false, txp, &ifp))
- ++ brcmu_pkt_buf_free_skb(txp);
- ++ else
- ++ brcmf_txfinalize(ifp, txp, success);
- ++ }
- ++}
- ++
- + static void
- + brcmf_proto_bcdc_configure_addr_mode(struct brcmf_pub *drvr, int ifidx,
- + enum proto_addr_mode addr_mode)
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h
- +@@ -20,6 +20,8 @@
- + int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr);
- + void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr);
- + void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state);
- ++void brcmf_proto_bcdc_txcomplete(struct device *dev, struct sk_buff *txp,
- ++ bool success);
- + #else
- + static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { return 0; }
- + static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {}
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
- +@@ -230,9 +230,6 @@ void brcmf_detach(struct device *dev);
- + /* Indication from bus module that dongle should be reset */
- + void brcmf_dev_reset(struct device *dev);
- +
- +-/* Notify the bus has transferred the tx packet to firmware */
- +-void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success);
- +-
- + /* Configure the "global" bus state used by upper layers */
- + void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state state);
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- +@@ -383,24 +383,6 @@ void brcmf_txfinalize(struct brcmf_if *i
- + brcmu_pkt_buf_free_skb(txp);
- + }
- +
- +-void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success)
- +-{
- +- struct brcmf_bus *bus_if = dev_get_drvdata(dev);
- +- struct brcmf_pub *drvr = bus_if->drvr;
- +- struct brcmf_if *ifp;
- +-
- +- /* await txstatus signal for firmware if active */
- +- if (brcmf_fws_fc_active(drvr->fws)) {
- +- if (!success)
- +- brcmf_fws_bustxfail(drvr->fws, txp);
- +- } else {
- +- if (brcmf_proto_hdrpull(drvr, false, txp, &ifp))
- +- brcmu_pkt_buf_free_skb(txp);
- +- else
- +- brcmf_txfinalize(ifp, txp, success);
- +- }
- +-}
- +-
- + static void brcmf_ethtool_get_drvinfo(struct net_device *ndev,
- + struct ethtool_drvinfo *info)
- + {
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
- +@@ -2266,7 +2266,8 @@ done:
- + bus->tx_seq = (bus->tx_seq + pktq->qlen) % SDPCM_SEQ_WRAP;
- + skb_queue_walk_safe(pktq, pkt_next, tmp) {
- + __skb_unlink(pkt_next, pktq);
- +- brcmf_txcomplete(bus->sdiodev->dev, pkt_next, ret == 0);
- ++ brcmf_proto_bcdc_txcomplete(bus->sdiodev->dev, pkt_next,
- ++ ret == 0);
- + }
- + return ret;
- + }
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
- +@@ -483,7 +483,7 @@ static void brcmf_usb_tx_complete(struct
- + req->skb);
- + brcmf_usb_del_fromq(devinfo, req);
- +
- +- brcmf_txcomplete(devinfo->dev, req->skb, urb->status == 0);
- ++ brcmf_proto_bcdc_txcomplete(devinfo->dev, req->skb, urb->status == 0);
- + req->skb = NULL;
- + brcmf_usb_enq(devinfo, &devinfo->tx_freeq, req, &devinfo->tx_freecount);
- + spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags);
- diff --git a/package/kernel/mac80211/patches/323-0008-brcmfmac-wrap-brcmf_fws_add_interface-into-bcdc-laye.patch b/package/kernel/mac80211/patches/323-0008-brcmfmac-wrap-brcmf_fws_add_interface-into-bcdc-laye.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..a68c6ab0c33d1a18ff315540cfb1d6be83cb0056
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/323-0008-brcmfmac-wrap-brcmf_fws_add_interface-into-bcdc-laye.patch
- @@ -0,0 +1,95 @@
- +From 9fdc64bbdbe7bd546e0fbcedd2f1c03448c6df42 Mon Sep 17 00:00:00 2001
- +From: Franky Lin <franky.lin@broadcom.com>
- +Date: Fri, 10 Mar 2017 21:17:04 +0000
- +Subject: [PATCH] brcmfmac: wrap brcmf_fws_add_interface into bcdc layer
- +
- +fwsignal is only used by bcdc. Create a new protocol interface function
- +brcmf_proto_add_if for core module to notify protocol layer upon a new
- +interface is created.
- +
- +Signed-off-by: Franky Lin <franky.lin@broadcom.com>
- +Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 7 +++++++
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 +-
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c | 3 ++-
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h | 9 +++++++++
- + 4 files changed, 19 insertions(+), 2 deletions(-)
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
- +@@ -399,6 +399,12 @@ static void brcmf_proto_bcdc_rxreorder(s
- + brcmf_fws_rxreorder(ifp, skb);
- + }
- +
- ++static void
- ++brcmf_proto_bcdc_add_if(struct brcmf_if *ifp)
- ++{
- ++ brcmf_fws_add_interface(ifp);
- ++}
- ++
- + int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr)
- + {
- + struct brcmf_bcdc *bcdc;
- +@@ -422,6 +428,7 @@ int brcmf_proto_bcdc_attach(struct brcmf
- + drvr->proto->delete_peer = brcmf_proto_bcdc_delete_peer;
- + drvr->proto->add_tdls_peer = brcmf_proto_bcdc_add_tdls_peer;
- + drvr->proto->rxreorder = brcmf_proto_bcdc_rxreorder;
- ++ drvr->proto->add_if = brcmf_proto_bcdc_add_if;
- + drvr->proto->pd = bcdc;
- +
- + drvr->hdrlen += BCDC_HEADER_LEN + BRCMF_PROT_FW_SIGNAL_MAX_TXBYTES;
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- +@@ -990,7 +990,7 @@ int brcmf_bus_started(struct device *dev
- + if (ret < 0)
- + goto fail;
- +
- +- brcmf_fws_add_interface(ifp);
- ++ brcmf_proto_add_if(drvr, ifp);
- +
- + drvr->config = brcmf_cfg80211_attach(drvr, bus_if->dev,
- + drvr->settings->p2p_enable);
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
- +@@ -25,6 +25,7 @@
- + #include "fwsignal.h"
- + #include "fweh.h"
- + #include "fwil.h"
- ++#include "proto.h"
- +
- + /**
- + * struct brcmf_fweh_queue_item - event item on event queue.
- +@@ -172,7 +173,7 @@ static void brcmf_fweh_handle_if_event(s
- + if (IS_ERR(ifp))
- + return;
- + if (!is_p2pdev)
- +- brcmf_fws_add_interface(ifp);
- ++ brcmf_proto_add_if(drvr, ifp);
- + if (!drvr->fweh.evt_handler[BRCMF_E_IF])
- + if (brcmf_net_attach(ifp, false) < 0)
- + return;
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
- +@@ -44,6 +44,7 @@ struct brcmf_proto {
- + void (*add_tdls_peer)(struct brcmf_pub *drvr, int ifidx,
- + u8 peer[ETH_ALEN]);
- + void (*rxreorder)(struct brcmf_if *ifp, struct sk_buff *skb);
- ++ void (*add_if)(struct brcmf_if *ifp);
- + void *pd;
- + };
- +
- +@@ -118,4 +119,12 @@ brcmf_proto_rxreorder(struct brcmf_if *i
- + ifp->drvr->proto->rxreorder(ifp, skb);
- + }
- +
- ++static inline void
- ++brcmf_proto_add_if(struct brcmf_pub *drvr, struct brcmf_if *ifp)
- ++{
- ++ if (!drvr->proto->add_if)
- ++ return;
- ++ drvr->proto->add_if(ifp);
- ++}
- ++
- + #endif /* BRCMFMAC_PROTO_H */
- diff --git a/package/kernel/mac80211/patches/323-0009-brcmfmac-wrap-brcmf_fws_del_interface-into-bcdc-laye.patch b/package/kernel/mac80211/patches/323-0009-brcmfmac-wrap-brcmf_fws_del_interface-into-bcdc-laye.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..ded8d7b944de5515912fbae5b1351eb97fc0c59e
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/323-0009-brcmfmac-wrap-brcmf_fws_del_interface-into-bcdc-laye.patch
- @@ -0,0 +1,83 @@
- +From c02a5eb82056f75615cb48aa540bfd245f489b99 Mon Sep 17 00:00:00 2001
- +From: Franky Lin <franky.lin@broadcom.com>
- +Date: Fri, 10 Mar 2017 21:17:05 +0000
- +Subject: [PATCH] brcmfmac: wrap brcmf_fws_del_interface into bcdc layer
- +
- +Create a new protocol interface function brcmf_proto_del_if for core
- +module to notify protocol layer upon interface deletion.
- +
- +Signed-off-by: Franky Lin <franky.lin@broadcom.com>
- +Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 7 +++++++
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 4 ++--
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h | 9 +++++++++
- + 3 files changed, 18 insertions(+), 2 deletions(-)
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
- +@@ -405,6 +405,12 @@ brcmf_proto_bcdc_add_if(struct brcmf_if
- + brcmf_fws_add_interface(ifp);
- + }
- +
- ++static void
- ++brcmf_proto_bcdc_del_if(struct brcmf_if *ifp)
- ++{
- ++ brcmf_fws_del_interface(ifp);
- ++}
- ++
- + int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr)
- + {
- + struct brcmf_bcdc *bcdc;
- +@@ -429,6 +435,7 @@ int brcmf_proto_bcdc_attach(struct brcmf
- + drvr->proto->add_tdls_peer = brcmf_proto_bcdc_add_tdls_peer;
- + drvr->proto->rxreorder = brcmf_proto_bcdc_rxreorder;
- + drvr->proto->add_if = brcmf_proto_bcdc_add_if;
- ++ drvr->proto->del_if = brcmf_proto_bcdc_del_if;
- + drvr->proto->pd = bcdc;
- +
- + drvr->hdrlen += BCDC_HEADER_LEN + BRCMF_PROT_FW_SIGNAL_MAX_TXBYTES;
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- +@@ -706,7 +706,7 @@ void brcmf_remove_interface(struct brcmf
- + return;
- + brcmf_dbg(TRACE, "Enter, bsscfgidx=%d, ifidx=%d\n", ifp->bsscfgidx,
- + ifp->ifidx);
- +- brcmf_fws_del_interface(ifp);
- ++ brcmf_proto_del_if(ifp->drvr, ifp);
- + brcmf_del_if(ifp->drvr, ifp->bsscfgidx, rtnl_locked);
- + }
- +
- +@@ -1035,7 +1035,7 @@ fail:
- + drvr->config = NULL;
- + }
- + if (drvr->fws) {
- +- brcmf_fws_del_interface(ifp);
- ++ brcmf_proto_del_if(ifp->drvr, ifp);
- + brcmf_fws_deinit(drvr);
- + }
- + brcmf_net_detach(ifp->ndev, false);
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
- +@@ -45,6 +45,7 @@ struct brcmf_proto {
- + u8 peer[ETH_ALEN]);
- + void (*rxreorder)(struct brcmf_if *ifp, struct sk_buff *skb);
- + void (*add_if)(struct brcmf_if *ifp);
- ++ void (*del_if)(struct brcmf_if *ifp);
- + void *pd;
- + };
- +
- +@@ -127,4 +128,12 @@ brcmf_proto_add_if(struct brcmf_pub *drv
- + drvr->proto->add_if(ifp);
- + }
- +
- ++static inline void
- ++brcmf_proto_del_if(struct brcmf_pub *drvr, struct brcmf_if *ifp)
- ++{
- ++ if (!drvr->proto->del_if)
- ++ return;
- ++ drvr->proto->del_if(ifp);
- ++}
- ++
- + #endif /* BRCMFMAC_PROTO_H */
- diff --git a/package/kernel/mac80211/patches/323-0010-brcmfmac-wrap-brcmf_fws_reset_interface-into-bcdc-la.patch b/package/kernel/mac80211/patches/323-0010-brcmfmac-wrap-brcmf_fws_reset_interface-into-bcdc-la.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..34e71d8f5cccc550b901890b5619a7f67123335a
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/323-0010-brcmfmac-wrap-brcmf_fws_reset_interface-into-bcdc-la.patch
- @@ -0,0 +1,82 @@
- +From 66ded1f8b33cdd9d6d3e20f5f8dd23615a110e70 Mon Sep 17 00:00:00 2001
- +From: Franky Lin <franky.lin@broadcom.com>
- +Date: Fri, 10 Mar 2017 21:17:06 +0000
- +Subject: [PATCH] brcmfmac: wrap brcmf_fws_reset_interface into bcdc layer
- +
- +Create a new protocol interface function brcmf_proto_reset_if for core
- +module to notify protocol layer when interface role changes.
- +
- +Signed-off-by: Franky Lin <franky.lin@broadcom.com>
- +Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
- +Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
- +---
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 7 +++++++
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c | 3 +--
- + drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h | 9 +++++++++
- + 3 files changed, 17 insertions(+), 2 deletions(-)
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
- +@@ -411,6 +411,12 @@ brcmf_proto_bcdc_del_if(struct brcmf_if
- + brcmf_fws_del_interface(ifp);
- + }
- +
- ++static void
- ++brcmf_proto_bcdc_reset_if(struct brcmf_if *ifp)
- ++{
- ++ brcmf_fws_reset_interface(ifp);
- ++}
- ++
- + int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr)
- + {
- + struct brcmf_bcdc *bcdc;
- +@@ -436,6 +442,7 @@ int brcmf_proto_bcdc_attach(struct brcmf
- + drvr->proto->rxreorder = brcmf_proto_bcdc_rxreorder;
- + drvr->proto->add_if = brcmf_proto_bcdc_add_if;
- + drvr->proto->del_if = brcmf_proto_bcdc_del_if;
- ++ drvr->proto->reset_if = brcmf_proto_bcdc_reset_if;
- + drvr->proto->pd = bcdc;
- +
- + drvr->hdrlen += BCDC_HEADER_LEN + BRCMF_PROT_FW_SIGNAL_MAX_TXBYTES;
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
- +@@ -22,7 +22,6 @@
- + #include "core.h"
- + #include "debug.h"
- + #include "tracepoint.h"
- +-#include "fwsignal.h"
- + #include "fweh.h"
- + #include "fwil.h"
- + #include "proto.h"
- +@@ -180,7 +179,7 @@ static void brcmf_fweh_handle_if_event(s
- + }
- +
- + if (ifp && ifevent->action == BRCMF_E_IF_CHANGE)
- +- brcmf_fws_reset_interface(ifp);
- ++ brcmf_proto_reset_if(drvr, ifp);
- +
- + err = brcmf_fweh_call_event_handler(ifp, emsg->event_code, emsg, data);
- +
- +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
- ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
- +@@ -46,6 +46,7 @@ struct brcmf_proto {
- + void (*rxreorder)(struct brcmf_if *ifp, struct sk_buff *skb);
- + void (*add_if)(struct brcmf_if *ifp);
- + void (*del_if)(struct brcmf_if *ifp);
- ++ void (*reset_if)(struct brcmf_if *ifp);
- + void *pd;
- + };
- +
- +@@ -136,4 +137,12 @@ brcmf_proto_del_if(struct brcmf_pub *drv
- + drvr->proto->del_if(ifp);
- + }
- +
- ++static inline void
- ++brcmf_proto_reset_if(struct brcmf_pub *drvr, struct brcmf_if *ifp)
- ++{
- ++ if (!drvr->proto->reset_if)
- ++ return;
- ++ drvr->proto->reset_if(ifp);
- ++}
- ++
- + #endif /* BRCMFMAC_PROTO_H */
- diff --git a/package/kernel/mac80211/patches/326-ath9k-fix-ar934x-OTP-offsets.patch b/package/kernel/mac80211/patches/326-ath9k-fix-ar934x-OTP-offsets.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..60de2b6d147f0c77b58c3e5992df9d8014a9e17d
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/326-ath9k-fix-ar934x-OTP-offsets.patch
- @@ -0,0 +1,42 @@
- +From: Christian Lamparter <chunkeey@googlemail.com>
- +Date: Tue, 14 Feb 2017 20:10:30 +0100
- +Subject: ath9k: use correct OTP register offsets for the AR9340 and AR9550
- +
- +This patch fixes the OTP register definitions for the AR934x and AR9550
- +WMAC SoC.
- +
- +Previously, the ath9k driver was unable to initialize the integrated
- +WMAC on an Aerohive AP121:
- +
- +| ath: phy0: timeout (1000 us) on reg 0x30018: 0xbadc0ffe & 0x00000007 != 0x00000004
- +| ath: phy0: timeout (1000 us) on reg 0x30018: 0xbadc0ffe & 0x00000007 != 0x00000004
- +| ath: phy0: Unable to initialize hardware; initialization status: -5
- +| ath9k ar934x_wmac: failed to initialize device
- +| ath9k: probe of ar934x_wmac failed with error -5
- +
- +It turns out that the AR9300_OTP_STATUS and AR9300_OTP_DATA
- +definitions contain a typo.
- +
- +Fixes: add295a4afbdf5852d0 "ath9k: use correct OTP register offsets for AR9550"
- +Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
- +Signed-off-by: Chris Blake <chrisrblake93@gmail.com>
- +---
- +
- +--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
- ++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
- +@@ -75,13 +75,13 @@
- + #define AR9300_OTP_BASE \
- + ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x30000 : 0x14000)
- + #define AR9300_OTP_STATUS \
- +- ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x30018 : 0x15f18)
- ++ ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x31018 : 0x15f18)
- + #define AR9300_OTP_STATUS_TYPE 0x7
- + #define AR9300_OTP_STATUS_VALID 0x4
- + #define AR9300_OTP_STATUS_ACCESS_BUSY 0x2
- + #define AR9300_OTP_STATUS_SM_BUSY 0x1
- + #define AR9300_OTP_READ_DATA \
- +- ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x3001c : 0x15f1c)
- ++ ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x3101c : 0x15f1c)
- +
- + enum targetPowerHTRates {
- + HT_TARGET_RATE_0_8_16,
- diff --git a/package/kernel/mac80211/patches/327-ath10k-increase-BMI-timeout.patch b/package/kernel/mac80211/patches/327-ath10k-increase-BMI-timeout.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..c9f493bcd8fe29afe1e08dc31b6370507b95fc72
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/327-ath10k-increase-BMI-timeout.patch
- @@ -0,0 +1,31 @@
- +From: Ben Greear <greearb@candelatech.com>
- +Date: Wed, 31 May 2017 14:21:19 +0300
- +Subject: [PATCH] ath10k: increase BMI timeout
- +
- +When testing a 9888 chipset NIC, I notice it often takes
- +almost 2 seconds, and then many times OTP fails, probably due
- +to the two-second timeout.
- +
- +[ 2269.841842] ath10k_pci 0000:05:00.0: bmi cmd took: 1984 jiffies (HZ: 1000), rv: 0
- +[ 2273.608185] ath10k_pci 0000:05:00.0: bmi cmd took: 1986 jiffies (HZ: 1000), rv: 0
- +[ 2277.294732] ath10k_pci 0000:05:00.0: bmi cmd took: 1989 jiffies (HZ: 1000), rv: 0
- +
- +So, increase the BMI timeout to 3 seconds.
- +
- +Signed-off-by: Ben Greear <greearb@candelatech.com>
- +Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
- +---
- +
- +--- a/drivers/net/wireless/ath/ath10k/bmi.h
- ++++ b/drivers/net/wireless/ath/ath10k/bmi.h
- +@@ -187,8 +187,8 @@ struct bmi_target_info {
- + u32 type;
- + };
- +
- +-/* in msec */
- +-#define BMI_COMMUNICATION_TIMEOUT_HZ (2 * HZ)
- ++/* in jiffies */
- ++#define BMI_COMMUNICATION_TIMEOUT_HZ (3 * HZ)
- +
- + #define BMI_CE_NUM_TO_TARG 0
- + #define BMI_CE_NUM_TO_HOST 1
- diff --git a/package/kernel/mac80211/patches/328-ath10k-log-when-longer-bmi-cmds-happen.patch b/package/kernel/mac80211/patches/328-ath10k-log-when-longer-bmi-cmds-happen.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..500f72ff988b87418ca235354ff33e4e4b96e716
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/328-ath10k-log-when-longer-bmi-cmds-happen.patch
- @@ -0,0 +1,74 @@
- +From: Ben Greear <greearb@candelatech.com>
- +Date: Wed, 31 May 2017 14:21:21 +0300
- +Subject: [PATCH] ath10k: log when longer bmi cmds happen
- +
- +This lets one have a clue that maybe timeouts are happening
- +when we just aren't waiting long enough.
- +
- +Signed-off-by: Ben Greear <greearb@candelatech.com>
- +Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
- +---
- +
- +--- a/drivers/net/wireless/ath/ath10k/pci.c
- ++++ b/drivers/net/wireless/ath/ath10k/pci.c
- +@@ -101,7 +101,8 @@ static int ath10k_pci_init_irq(struct at
- + static int ath10k_pci_deinit_irq(struct ath10k *ar);
- + static int ath10k_pci_request_irq(struct ath10k *ar);
- + static void ath10k_pci_free_irq(struct ath10k *ar);
- +-static int ath10k_pci_bmi_wait(struct ath10k_ce_pipe *tx_pipe,
- ++static int ath10k_pci_bmi_wait(struct ath10k *ar,
- ++ struct ath10k_ce_pipe *tx_pipe,
- + struct ath10k_ce_pipe *rx_pipe,
- + struct bmi_xfer *xfer);
- + static int ath10k_pci_qca99x0_chip_reset(struct ath10k *ar);
- +@@ -1843,7 +1844,7 @@ int ath10k_pci_hif_exchange_bmi_msg(stru
- + if (ret)
- + goto err_resp;
- +
- +- ret = ath10k_pci_bmi_wait(ce_tx, ce_rx, &xfer);
- ++ ret = ath10k_pci_bmi_wait(ar, ce_tx, ce_rx, &xfer);
- + if (ret) {
- + u32 unused_buffer;
- + unsigned int unused_nbytes;
- +@@ -1910,23 +1911,37 @@ static void ath10k_pci_bmi_recv_data(str
- + xfer->rx_done = true;
- + }
- +
- +-static int ath10k_pci_bmi_wait(struct ath10k_ce_pipe *tx_pipe,
- ++static int ath10k_pci_bmi_wait(struct ath10k *ar,
- ++ struct ath10k_ce_pipe *tx_pipe,
- + struct ath10k_ce_pipe *rx_pipe,
- + struct bmi_xfer *xfer)
- + {
- + unsigned long timeout = jiffies + BMI_COMMUNICATION_TIMEOUT_HZ;
- ++ unsigned long started = jiffies;
- ++ unsigned long dur;
- ++ int ret;
- +
- + while (time_before_eq(jiffies, timeout)) {
- + ath10k_pci_bmi_send_done(tx_pipe);
- + ath10k_pci_bmi_recv_data(rx_pipe);
- +
- +- if (xfer->tx_done && (xfer->rx_done == xfer->wait_for_resp))
- +- return 0;
- ++ if (xfer->tx_done && (xfer->rx_done == xfer->wait_for_resp)) {
- ++ ret = 0;
- ++ goto out;
- ++ }
- +
- + schedule();
- + }
- +
- +- return -ETIMEDOUT;
- ++ ret = -ETIMEDOUT;
- ++
- ++out:
- ++ dur = jiffies - started;
- ++ if (dur > HZ)
- ++ ath10k_dbg(ar, ATH10K_DBG_BMI,
- ++ "bmi cmd took %lu jiffies hz %d ret %d\n",
- ++ dur, HZ, ret);
- ++ return ret;
- + }
- +
- + /*
- diff --git a/package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch b/package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..3fcf505e1547b474d87ecf5d42a3f1e2cf08068f
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch
- @@ -0,0 +1,80 @@
- +From: Anilkumar Kolli <akolli@qti.qualcomm.com>
- +Date: Wed, 31 May 2017 14:21:27 +0300
- +Subject: [PATCH] ath10k: add BMI parameters to fix calibration from
- + DT/pre-cal
- +
- +QCA99X0, QCA9888, QCA9984 supports calibration data in
- +either OTP or DT/pre-cal file. Current ath10k supports
- +Calibration data from OTP only.
- +
- +If caldata is loaded from DT/pre-cal file, fetching board id
- +and applying calibration parameters like tx power gets failed.
- +
- +error log:
- +[ 15.733663] ath10k_pci 0000:01:00.0: failed to fetch board file: -2
- +[ 15.741474] ath10k_pci 0000:01:00.0: could not probe fw (-2)
- +
- +This patch adds calibration data support from DT/pre-cal
- +file. Below parameters are used to get board id and
- +applying calibration parameters from cal data.
- +
- + EEPROM[OTP] FLASH[DT/pre-cal file]
- +Cal param 0x700 0x10000
- +Board id 0x10 0x8000
- +
- +Tested on QCA9888 with pre-cal file.
- +
- +Signed-off-by: Anilkumar Kolli <akolli@qti.qualcomm.com>
- +Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
- +---
- +
- +--- a/drivers/net/wireless/ath/ath10k/bmi.h
- ++++ b/drivers/net/wireless/ath/ath10k/bmi.h
- +@@ -83,6 +83,8 @@ enum bmi_cmd_id {
- + #define BMI_NVRAM_SEG_NAME_SZ 16
- +
- + #define BMI_PARAM_GET_EEPROM_BOARD_ID 0x10
- ++#define BMI_PARAM_GET_FLASH_BOARD_ID 0x8000
- ++#define BMI_PARAM_FLASH_SECTION_ALL 0x10000
- +
- + #define ATH10K_BMI_BOARD_ID_FROM_OTP_MASK 0x7c00
- + #define ATH10K_BMI_BOARD_ID_FROM_OTP_LSB 10
- +--- a/drivers/net/wireless/ath/ath10k/core.c
- ++++ b/drivers/net/wireless/ath/ath10k/core.c
- +@@ -657,7 +657,7 @@ static int ath10k_core_get_board_id_from
- + {
- + u32 result, address;
- + u8 board_id, chip_id;
- +- int ret;
- ++ int ret, bmi_board_id_param;
- +
- + address = ar->hw_params.patch_load_addr;
- +
- +@@ -681,8 +681,13 @@ static int ath10k_core_get_board_id_from
- + return ret;
- + }
- +
- +- ret = ath10k_bmi_execute(ar, address, BMI_PARAM_GET_EEPROM_BOARD_ID,
- +- &result);
- ++ if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
- ++ ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE)
- ++ bmi_board_id_param = BMI_PARAM_GET_FLASH_BOARD_ID;
- ++ else
- ++ bmi_board_id_param = BMI_PARAM_GET_EEPROM_BOARD_ID;
- ++
- ++ ret = ath10k_bmi_execute(ar, address, bmi_board_id_param, &result);
- + if (ret) {
- + ath10k_err(ar, "could not execute otp for board id check: %d\n",
- + ret);
- +@@ -810,6 +815,11 @@ static int ath10k_download_and_run_otp(s
- + return ret;
- + }
- +
- ++ /* As of now pre-cal is valid for 10_4 variants */
- ++ if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
- ++ ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE)
- ++ bmi_otp_exe_param = BMI_PARAM_FLASH_SECTION_ALL;
- ++
- + ret = ath10k_bmi_execute(ar, address, bmi_otp_exe_param, &result);
- + if (ret) {
- + ath10k_err(ar, "could not execute otp (%d)\n", ret);
- diff --git a/package/kernel/mac80211/patches/330-ath9k-adjust-tx-power-reduction-for-US-regulatory-do.patch b/package/kernel/mac80211/patches/330-ath9k-adjust-tx-power-reduction-for-US-regulatory-do.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..d799ab4a628881f7f702bed762421befe33f1d59
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/330-ath9k-adjust-tx-power-reduction-for-US-regulatory-do.patch
- @@ -0,0 +1,23 @@
- +From: Felix Fietkau <nbd@nbd.name>
- +Date: Wed, 19 Jul 2017 08:49:31 +0200
- +Subject: [PATCH] ath9k: adjust tx power reduction for US regulatory domain
- +
- +FCC regulatory rules allow for up to 3 dBi antenna gain. Account for
- +this in the EEPROM based tx power reduction code.
- +
- +Signed-off-by: Felix Fietkau <nbd@nbd.name>
- +---
- +
- +--- a/drivers/net/wireless/ath/ath9k/hw.c
- ++++ b/drivers/net/wireless/ath/ath9k/hw.c
- +@@ -2954,6 +2954,10 @@ void ath9k_hw_apply_txpower(struct ath_h
- + if (ant_gain > max_gain)
- + ant_reduction = ant_gain - max_gain;
- +
- ++ /* FCC allows maximum antenna gain of 3 dBi */
- ++ if (reg->region == NL80211_DFS_FCC)
- ++ ant_reduction = max_t(int, ant_reduction - 6, 0);
- ++
- + ah->eep_ops->set_txpower(ah, chan, ctl, ant_reduction, new_pwr, test);
- + }
- +
- diff --git a/package/kernel/mac80211/patches/331-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch b/package/kernel/mac80211/patches/331-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..1e0761eb1547ba7885e79f8444e302f3c424e24f
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/331-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch
- @@ -0,0 +1,40 @@
- +From: Felix Fietkau <nbd@nbd.name>
- +Date: Sun, 23 Jul 2017 14:58:22 +0200
- +Subject: [PATCH] ath9k: fix more-data flag for buffered multicast packets
- +
- +The flag needs to be cleared for the last packet in the list, not the
- +first one. Fixes some issues with multicast packet loss for powersave
- +clients connected to an ath9k AP.
- +
- +Signed-off-by: Felix Fietkau <nbd@nbd.name>
- +---
- +
- +--- a/drivers/net/wireless/ath/ath9k/xmit.c
- ++++ b/drivers/net/wireless/ath/ath9k/xmit.c
- +@@ -2451,7 +2451,6 @@ void ath_tx_cabq(struct ieee80211_hw *hw
- + .txq = sc->beacon.cabq
- + };
- + struct ath_tx_info info = {};
- +- struct ieee80211_hdr *hdr;
- + struct ath_buf *bf_tail = NULL;
- + struct ath_buf *bf;
- + LIST_HEAD(bf_q);
- +@@ -2495,15 +2494,10 @@ void ath_tx_cabq(struct ieee80211_hw *hw
- + if (list_empty(&bf_q))
- + return;
- +
- +- bf = list_first_entry(&bf_q, struct ath_buf, list);
- +- hdr = (struct ieee80211_hdr *) bf->bf_mpdu->data;
- +-
- +- if (hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_MOREDATA)) {
- +- hdr->frame_control &= ~cpu_to_le16(IEEE80211_FCTL_MOREDATA);
- +- dma_sync_single_for_device(sc->dev, bf->bf_buf_addr,
- +- sizeof(*hdr), DMA_TO_DEVICE);
- +- }
- ++ bf = list_last_entry(&bf_q, struct ath_buf, list);
- ++ ath9k_set_moredata(sc, bf, false);
- +
- ++ bf = list_first_entry(&bf_q, struct ath_buf, list);
- + ath_txq_lock(sc, txctl.txq);
- + ath_tx_fill_desc(sc, bf, txctl.txq, 0);
- + ath_tx_txqaddbuf(sc, txctl.txq, &bf_q, false);
- diff --git a/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch b/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch
- index 35d8e8bd42399797d4904f60d61f7118c156ba7c..8ed7ad8a09a13f85e2b0f437020b650cacb89190 100644
- --- a/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch
- +++ b/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch
- @@ -56,16 +56,21 @@
-
- INIT_LIST_HEAD(&sc->leds);
-
- -@@ -144,6 +165,12 @@ void ath_init_leds(struct ath_softc *sc)
- +@@ -134,6 +155,17 @@ void ath_init_leds(struct ath_softc *sc)
-
- - ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger,
- - !sc->sc_ah->config.led_active_high);
- + ath_fill_led_pin(sc);
- +
- ++ if (pdata && pdata->leds && pdata->num_leds)
- ++ for (i = 0; i < pdata->num_leds; i++) {
- ++ if (pdata->leds[i].gpio == sc->sc_ah->led_pin)
- ++ sc->sc_ah->led_pin = -1;
- ++
- ++ ath_create_platform_led(sc, &pdata->leds[i]);
- ++ }
- +
- -+ if (!pdata)
- ++ if (sc->sc_ah->led_pin < 0)
- + return;
- +
- -+ for (i = 0; i < pdata->num_leds; i++)
- -+ ath_create_platform_led(sc, &pdata->leds[i]);
- - }
- - #endif
- + snprintf(led_name, sizeof(led_name), "ath9k-%s",
- + wiphy_name(sc->hw->wiphy));
-
- diff --git a/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch b/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch
- deleted file mode 100644
- index ced72c6c69fe30ebbc1c416c5e60d95dc985d6db..0000000000000000000000000000000000000000
- --- a/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch
- +++ /dev/null
- @@ -1,39 +0,0 @@
- -From: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>
- -Date: Sun, 31 Jan 2016 20:45:57 +0100
- -Subject: [PATCH v4 1/8] mac80211: ath9k: enable platform WLAN LED name
- -
- -Enable platform-supplied WLAN LED name for ath9k device. It replaces generic
- -'ath9k-phy*' label with string set during platform initialization.
- -
- -Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>
- ----
- - drivers/net/wireless/ath/ath9k/gpio.c | 10 +++++++---
- - include/linux/ath9k_platform.h | 1 +
- - 2 files changed, 8 insertions(+), 3 deletions(-)
- -
- ---- a/drivers/net/wireless/ath/ath9k/gpio.c
- -+++ b/drivers/net/wireless/ath/ath9k/gpio.c
- -@@ -155,8 +155,11 @@ void ath_init_leds(struct ath_softc *sc)
- -
- - ath_fill_led_pin(sc);
- -
- -- snprintf(led_name, sizeof(led_name), "ath9k-%s",
- -- wiphy_name(sc->hw->wiphy));
- -+ if (pdata && pdata->led_name)
- -+ strncpy(led_name, pdata->led_name, sizeof(led_name));
- -+ else
- -+ snprintf(led_name, sizeof(led_name), "ath9k-%s",
- -+ wiphy_name(sc->hw->wiphy));
- -
- - if (ath9k_led_blink)
- - trigger = sc->led_default_trigger;
- ---- a/include/linux/ath9k_platform.h
- -+++ b/include/linux/ath9k_platform.h
- -@@ -49,6 +49,7 @@ struct ath9k_platform_data {
- -
- - int num_leds;
- - const struct gpio_led *leds;
- -+ const char *led_name;
- - };
- -
- - #endif /* _LINUX_ATH9K_PLATFORM_H */
- diff --git a/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch b/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch
- index d4269282d960d857cde3f81d1839359cf3447ff2..31dac29ad77b89626d300d9a82ba3bd2cc2210a1 100644
- --- a/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch
- +++ b/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch
- @@ -196,7 +196,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
- return 0;
- }
-
- -@@ -136,12 +264,18 @@ void ath_deinit_leds(struct ath_softc *s
- +@@ -136,17 +264,24 @@ void ath_deinit_leds(struct ath_softc *s
-
- while (!list_empty(&sc->leds)) {
- led = list_first_entry(&sc->leds, struct ath_led, list);
- @@ -215,18 +215,31 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
- }
-
- void ath_init_leds(struct ath_softc *sc)
- -@@ -158,6 +292,8 @@ void ath_init_leds(struct ath_softc *sc)
- + {
- + struct ath9k_platform_data *pdata = sc->dev->platform_data;
- ++ struct device_node *np = sc->dev->of_node;
- + char led_name[32];
- + const char *trigger;
- + int i;
- +@@ -156,6 +291,15 @@ void ath_init_leds(struct ath_softc *sc)
- + if (AR_SREV_9100(sc->sc_ah))
- + return;
-
- ++ if (!np)
- ++ ath9k_register_gpio_chip(sc);
- ++
- ++ /* setup gpio controller only if requested and skip the led_pin setup */
- ++ if (of_property_read_bool(np, "gpio-controller")) {
- ++ ath9k_register_gpio_chip(sc);
- ++ return;
- ++ }
- ++
- ath_fill_led_pin(sc);
-
- -+ ath9k_register_gpio_chip(sc);
- -+
- - if (pdata && pdata->led_name)
- - strncpy(led_name, pdata->led_name, sizeof(led_name));
- - else
- -@@ -178,6 +314,7 @@ void ath_init_leds(struct ath_softc *sc)
- - for (i = 0; i < pdata->num_leds; i++)
- - ath_create_platform_led(sc, &pdata->leds[i]);
- + if (pdata && pdata->leds && pdata->num_leds)
- +@@ -180,6 +324,7 @@ void ath_init_leds(struct ath_softc *sc)
- + ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger,
- + !sc->sc_ah->config.led_active_high);
- }
- +
- #endif
- diff --git a/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch b/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch
- index f40bac93c34660f5d9bb515f79287d768b8d6014..f3fead0a1aef41e05957fda39128b13eaebb9652 100644
- --- a/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch
- +++ b/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch
- @@ -117,29 +117,20 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
- while (!list_empty(&sc->leds)) {
- led = list_first_entry(&sc->leds, struct ath_led, list);
- #ifdef CONFIG_GPIOLIB
- -@@ -293,6 +362,7 @@ void ath_init_leds(struct ath_softc *sc)
- - ath_fill_led_pin(sc);
- +@@ -301,6 +370,7 @@ void ath_init_leds(struct ath_softc *sc)
- + }
-
- - ath9k_register_gpio_chip(sc);
- + ath_fill_led_pin(sc);
- + ath9k_init_buttons(sc);
-
- - if (pdata && pdata->led_name)
- - strncpy(led_name, pdata->led_name, sizeof(led_name));
- -@@ -308,7 +378,7 @@ void ath_init_leds(struct ath_softc *sc)
- - ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger,
- - !sc->sc_ah->config.led_active_high);
- -
- -- if (!pdata)
- -+ if (!pdata || !pdata->leds || !pdata->num_leds)
- - return;
- -
- - for (i = 0; i < pdata->num_leds; i++)
- + if (pdata && pdata->leds && pdata->num_leds)
- + for (i = 0; i < pdata->num_leds; i++) {
- --- a/include/linux/ath9k_platform.h
- +++ b/include/linux/ath9k_platform.h
- -@@ -50,6 +50,10 @@ struct ath9k_platform_data {
- +@@ -49,6 +49,10 @@ struct ath9k_platform_data {
- +
- int num_leds;
- const struct gpio_led *leds;
- - const char *led_name;
- +
- + unsigned num_btns;
- + const struct gpio_keys_button *btns;
- diff --git a/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch b/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch
- index 45284c71eed616bcaa5c875e85c209fbefc738a5..bcb0026a69afdc52b3bf5ba074418435b343d1be 100644
- --- a/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch
- +++ b/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch
- @@ -375,7 +375,7 @@
-
- --- a/include/linux/ath9k_platform.h
- +++ b/include/linux/ath9k_platform.h
- -@@ -54,6 +54,8 @@ struct ath9k_platform_data {
- +@@ -53,6 +53,8 @@ struct ath9k_platform_data {
- unsigned num_btns;
- const struct gpio_keys_button *btns;
- unsigned btn_poll_interval;
- diff --git a/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch b/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch
- index 2325f37670be46d805d9d5a3deb5b3f8322017aa..dc0f19490e88b0f9aba2fbd9e5b97e3e9b0f299d 100644
- --- a/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch
- +++ b/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch
- @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -9379,6 +9379,7 @@ static int rt2800_probe_rt(struct rt2x00
- +@@ -9397,6 +9397,7 @@ static int rt2800_probe_rt(struct rt2x00
- case RT3390:
- case RT3572:
- case RT3593:
- diff --git a/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch b/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch
- index 9775664deb94a087315008637d32a1227a5f488e..45fc9645046bd39f039317bfd4dfd5e7b16e6781 100644
- --- a/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch
- +++ b/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch
- @@ -31,7 +31,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- #define RF5362 0x5362
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -8957,6 +8957,66 @@ static const struct rf_channel rf_vals_3
- +@@ -8975,6 +8975,66 @@ static const struct rf_channel rf_vals_3
- {14, 0xF0, 2, 0x18},
- };
-
- @@ -98,7 +98,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- static const struct rf_channel rf_vals_5592_xtal20[] = {
- /* Channel, N, K, mod, R */
- {1, 482, 4, 10, 3},
- -@@ -9220,6 +9280,11 @@ static int rt2800_probe_hw_mode(struct r
- +@@ -9238,6 +9298,11 @@ static int rt2800_probe_hw_mode(struct r
- spec->channels = rf_vals_3x;
- break;
-
- diff --git a/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch b/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch
- index 5737e015c171d47ff6dc67761de3e7f29080873e..fb32b75d0a63ed0bab62ad8e52b74cde2d6576a4 100644
- --- a/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch
- +++ b/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch
- @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -4855,6 +4855,7 @@ void rt2800_vco_calibration(struct rt2x0
- +@@ -4871,6 +4871,7 @@ void rt2800_vco_calibration(struct rt2x0
- case RF3053:
- case RF3070:
- case RF3290:
- @@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- case RF5350:
- case RF5360:
- case RF5362:
- -@@ -9402,6 +9403,7 @@ static int rt2800_probe_hw_mode(struct r
- +@@ -9420,6 +9421,7 @@ static int rt2800_probe_hw_mode(struct r
- case RF3053:
- case RF3070:
- case RF3290:
- diff --git a/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch b/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch
- index afcb6bdf4a52ab4e941e5bd996a16952935a948e..266a3fba50b15e20ef1f04c7ce32a76ceec51c89 100644
- --- a/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch
- +++ b/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch
- @@ -223,7 +223,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- #define POWER_BOUND 0x27
- #define POWER_BOUND_5G 0x2b
-
- -@@ -3565,6 +3770,9 @@ static void rt2800_config_channel(struct
- +@@ -3567,6 +3772,9 @@ static void rt2800_config_channel(struct
- case RF3322:
- rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
- break;
- diff --git a/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch b/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch
- index 95790165955d06913499f3b583ac90da60a0445f..53e6bbb15512dca668782e079abcd3860b22f1d5 100644
- --- a/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch
- +++ b/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch
- @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -8882,6 +8882,7 @@ static int rt2800_init_eeprom(struct rt2
- +@@ -8900,6 +8900,7 @@ static int rt2800_init_eeprom(struct rt2
- case RF3290:
- case RF3320:
- case RF3322:
- diff --git a/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch b/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch
- index 08b54f67269888abeb9f6ee59b8885966fb116f3..cfa95e56bc949f4bf8c3a05eacada49bcc89abff 100644
- --- a/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch
- +++ b/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch
- @@ -35,7 +35,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- #define RX_FILTER_CFG 0x1400
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -5485,6 +5485,12 @@ static int rt2800_init_registers(struct
- +@@ -5501,6 +5501,12 @@ static int rt2800_init_registers(struct
- rt2800_register_write(rt2x00dev, TX_SW_CFG2,
- 0x00000000);
- }
- @@ -48,7 +48,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- } else if (rt2x00_rt(rt2x00dev, RT5390) ||
- rt2x00_rt(rt2x00dev, RT5392) ||
- rt2x00_rt(rt2x00dev, RT6352)) {
- -@@ -5698,6 +5704,11 @@ static int rt2800_init_registers(struct
- +@@ -5714,6 +5720,11 @@ static int rt2800_init_registers(struct
- reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
- rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg);
-
- diff --git a/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch b/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch
- index ced3645aef4d6df5cc3fba2c444188dc8c92b1f3..6adb9e1cd24a2a1b3e6dfbb63ff7b6cff79fa2e0 100644
- --- a/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch
- +++ b/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch
- @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -6325,6 +6325,47 @@ static void rt2800_init_bbp_3593(struct
- +@@ -6341,6 +6341,47 @@ static void rt2800_init_bbp_3593(struct
- rt2800_bbp_write(rt2x00dev, 103, 0xc0);
- }
-
- @@ -59,7 +59,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev)
- {
- int ant, div_mode;
- -@@ -6769,6 +6810,9 @@ static void rt2800_init_bbp(struct rt2x0
- +@@ -6785,6 +6826,9 @@ static void rt2800_init_bbp(struct rt2x0
- case RT3593:
- rt2800_init_bbp_3593(rt2x00dev);
- return;
- diff --git a/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch b/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch
- index 08e4ffe9ba47893180a23755b132b262932e423d..aa3ead6ee8a397ec6c279e600d841eb3fcb4a863 100644
- --- a/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch
- +++ b/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch
- @@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- #define RFCSR2_TX2_EN_MT7620 FIELD8(0x20)
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -7685,6 +7685,144 @@ static void rt2800_init_rfcsr_5350(struc
- +@@ -7701,6 +7701,144 @@ static void rt2800_init_rfcsr_5350(struc
- rt2800_rfcsr_write(rt2x00dev, 63, 0x00);
- }
-
- @@ -166,7 +166,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
- {
- rt2800_rf_init_calibration(rt2x00dev, 2);
- -@@ -8525,6 +8663,9 @@ static void rt2800_init_rfcsr(struct rt2
- +@@ -8543,6 +8681,9 @@ static void rt2800_init_rfcsr(struct rt2
- case RT3390:
- rt2800_init_rfcsr_3390(rt2x00dev);
- break;
- diff --git a/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch b/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch
- index c03527b4f704c87f1544b6fb6cd894abe9b1f83e..0ac7b040ec81742d32275b7e85ae5f729a61d798 100644
- --- a/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch
- +++ b/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch
- @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -9059,6 +9059,8 @@ static int rt2800_init_eeprom(struct rt2
- +@@ -9077,6 +9077,8 @@ static int rt2800_init_eeprom(struct rt2
- rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
- else if (rt2x00_rt(rt2x00dev, RT3352))
- rf = RF3322;
- diff --git a/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch b/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch
- index 04574db7c18c77ec7e6354ea597a974661bd449a..dc34a96d99c9ab1b214a6dfada39404023fabb5e 100644
- --- a/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch
- +++ b/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch
- @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -3733,6 +3733,36 @@ static char rt2800_txpower_to_dev(struct
- +@@ -3735,6 +3735,36 @@ static char rt2800_txpower_to_dev(struct
- return clamp_t(char, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER);
- }
-
- @@ -47,7 +47,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
- struct ieee80211_conf *conf,
- struct rf_channel *rf,
- -@@ -3751,6 +3781,12 @@ static void rt2800_config_channel(struct
- +@@ -3753,6 +3783,12 @@ static void rt2800_config_channel(struct
- rt2800_txpower_to_dev(rt2x00dev, rf->channel,
- info->default_power3);
-
- @@ -60,7 +60,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- switch (rt2x00dev->chip.rf) {
- case RF2020:
- case RF3020:
- -@@ -3855,6 +3891,15 @@ static void rt2800_config_channel(struct
- +@@ -3857,6 +3893,15 @@ static void rt2800_config_channel(struct
- rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
- rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain);
- rt2800_bbp_write(rt2x00dev, 77, 0x98);
- @@ -76,7 +76,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- } else {
- rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
- rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
- -@@ -3868,6 +3913,7 @@ static void rt2800_config_channel(struct
- +@@ -3870,6 +3915,7 @@ static void rt2800_config_channel(struct
- !rt2x00_rt(rt2x00dev, RT6352)) {
- if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
- rt2800_bbp_write(rt2x00dev, 82, 0x62);
- @@ -84,7 +84,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- rt2800_bbp_write(rt2x00dev, 75, 0x46);
- } else {
- if (rt2x00_rt(rt2x00dev, RT3593))
- -@@ -3876,19 +3922,22 @@ static void rt2800_config_channel(struct
- +@@ -3878,19 +3924,22 @@ static void rt2800_config_channel(struct
- rt2800_bbp_write(rt2x00dev, 82, 0x84);
- rt2800_bbp_write(rt2x00dev, 75, 0x50);
- }
- @@ -110,7 +110,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- rt2800_bbp_write(rt2x00dev, 83, 0x9a);
-
- if (rt2x00_has_cap_external_lna_a(rt2x00dev))
- -@@ -4011,6 +4060,23 @@ static void rt2800_config_channel(struct
- +@@ -4013,6 +4062,23 @@ static void rt2800_config_channel(struct
-
- rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
-
- diff --git a/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch b/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch
- index 3412a3e1334438c45e3780ffac395c6ef041e84f..e93d2dd96f92a23158aeb572642767aeacd22eee 100644
- --- a/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch
- +++ b/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch
- @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -3720,13 +3720,15 @@ static char rt2800_txpower_to_dev(struct
- +@@ -3722,13 +3722,15 @@ static char rt2800_txpower_to_dev(struct
- unsigned int channel,
- char txpower)
- {
- diff --git a/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch b/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch
- index 8d1df8cf77ad955c40ac07bd2c6e7294dc40158d..463346eec4804602a12b399144f91893403e54ec 100644
- --- a/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch
- +++ b/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch
- @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -5085,7 +5085,8 @@ static void rt2800_config_txpower(struct
- +@@ -5101,7 +5101,8 @@ static void rt2800_config_txpower(struct
- struct ieee80211_channel *chan,
- int power_level)
- {
- diff --git a/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch b/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch
- index 9aeb41fe6b167623872cfd6afa06dd8fb7ee2fee..3efac122463b89baa49750942385144fd21ed691 100644
- --- a/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch
- +++ b/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch
- @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -8941,7 +8941,8 @@ static u8 rt2800_get_txmixer_gain_24g(st
- +@@ -8959,7 +8959,8 @@ static u8 rt2800_get_txmixer_gain_24g(st
- {
- u16 word;
-
- @@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- return 0;
-
- rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG, &word);
- -@@ -8955,7 +8956,8 @@ static u8 rt2800_get_txmixer_gain_5g(str
- +@@ -8973,7 +8974,8 @@ static u8 rt2800_get_txmixer_gain_5g(str
- {
- u16 word;
-
- diff --git a/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch b/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch
- index 70c33a1d20431dbc388e39e20501067405c04eea..8c563b89389fcd00d55e916543405a57574f7c7c 100644
- --- a/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch
- +++ b/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch
- @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -5338,7 +5338,8 @@ static u8 rt2800_get_default_vgc(struct
- +@@ -5354,7 +5354,8 @@ static u8 rt2800_get_default_vgc(struct
- else
- vgc = 0x2e + rt2x00dev->lna_gain;
- } else { /* 5GHZ band */
- @@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- vgc = 0x20 + (rt2x00dev->lna_gain * 5) / 3;
- else if (rt2x00_rt(rt2x00dev, RT5592))
- vgc = 0x24 + (2 * rt2x00dev->lna_gain);
- -@@ -5358,7 +5359,8 @@ static inline void rt2800_set_vgc(struct
- +@@ -5374,7 +5375,8 @@ static inline void rt2800_set_vgc(struct
- {
- if (qual->vgc_level != vgc_level) {
- if (rt2x00_rt(rt2x00dev, RT3572) ||
- @@ -30,7 +30,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- rt2800_bbp_write_with_rx_chain(rt2x00dev, 66,
- vgc_level);
- } else if (rt2x00_rt(rt2x00dev, RT5592)) {
- -@@ -5405,6 +5407,11 @@ void rt2800_link_tuner(struct rt2x00_dev
- +@@ -5421,6 +5423,11 @@ void rt2800_link_tuner(struct rt2x00_dev
- }
- break;
-
- diff --git a/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch b/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch
- index a2cfd896ebcf45bc8066c340a0b4833bd3c62d53..6e9ef1071cfa6ca73fd6bf68e2a8377311888dee 100644
- --- a/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch
- +++ b/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch
- @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -9074,7 +9074,8 @@ static int rt2800_validate_eeprom(struct
- +@@ -9092,7 +9092,8 @@ static int rt2800_validate_eeprom(struct
- rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &word);
- if (abs(rt2x00_get_field16(word, EEPROM_RSSI_BG2_OFFSET2)) > 10)
- rt2x00_set_field16(&word, EEPROM_RSSI_BG2_OFFSET2, 0);
- @@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- if (rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0x00 ||
- rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0xff)
- rt2x00_set_field16(&word, EEPROM_RSSI_BG2_LNA_A1,
- -@@ -9094,7 +9095,8 @@ static int rt2800_validate_eeprom(struct
- +@@ -9112,7 +9113,8 @@ static int rt2800_validate_eeprom(struct
- rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &word);
- if (abs(rt2x00_get_field16(word, EEPROM_RSSI_A2_OFFSET2)) > 10)
- rt2x00_set_field16(&word, EEPROM_RSSI_A2_OFFSET2, 0);
- @@ -30,7 +30,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
- if (rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0x00 ||
- rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0xff)
- rt2x00_set_field16(&word, EEPROM_RSSI_A2_LNA_A2,
- -@@ -9102,7 +9104,8 @@ static int rt2800_validate_eeprom(struct
- +@@ -9120,7 +9122,8 @@ static int rt2800_validate_eeprom(struct
- }
- rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word);
-
- diff --git a/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch b/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch
- index ac8b219efdfa66ee01562653c15365f7504097e1..1a8ccbc9bda98f433e03d459031027f30efbca7c 100644
- --- a/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch
- +++ b/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch
- @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
-
- --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- -@@ -4332,6 +4332,9 @@ static u8 rt2800_compensate_txpower(stru
- +@@ -4348,6 +4348,9 @@ static u8 rt2800_compensate_txpower(stru
- if (rt2x00_rt(rt2x00dev, RT3593))
- return min_t(u8, txpower, 0xc);
-
- diff --git a/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch b/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch
- index 0236683d5f3c1eb723a1665c4d052f9bc841841e..51890e0a3bd7acd3eee965525a2ab40806fb4f34 100644
- --- a/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch
- +++ b/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch
- @@ -8,7 +8,7 @@
-
- #include "rt2x00.h"
- #include "rt2800lib.h"
- -@@ -9261,6 +9262,17 @@ static int rt2800_init_eeprom(struct rt2
- +@@ -9279,6 +9280,17 @@ static int rt2800_init_eeprom(struct rt2
- rt2800_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC);
- rt2800_init_led(rt2x00dev, &rt2x00dev->led_qual, LED_TYPE_QUALITY);
-
- diff --git a/package/kernel/mac80211/patches/650-rt2x00-add-support-for-external-PA-on-MT7620.patch b/package/kernel/mac80211/patches/650-rt2x00-add-support-for-external-PA-on-MT7620.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..64a62f4b0792168fb60e3f33b20d0f8a751aa911
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/650-rt2x00-add-support-for-external-PA-on-MT7620.patch
- @@ -0,0 +1,118 @@
- +From 9782a7f7488443568fa4d6088b73c9aff7eb8510 Mon Sep 17 00:00:00 2001
- +From: Daniel Golle <daniel@makrotopia.org>
- +Date: Wed, 19 Apr 2017 16:14:53 +0200
- +Subject: [PATCH] rt2x00: add support for external PA on MT7620
- +To: Stanislaw Gruszka <sgruszka@redhat.com>
- +Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
- + linux-wireless@vger.kernel.org,
- + Kalle Valo <kvalo@codeaurora.org>
- +
- +Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- +---
- + drivers/net/wireless/ralink/rt2x00/rt2800.h | 1 +
- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 70 +++++++++++++++++++++++++-
- + 2 files changed, 70 insertions(+), 1 deletion(-)
- +
- +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
- ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
- +@@ -2749,6 +2749,7 @@ enum rt2800_eeprom_word {
- + #define EEPROM_NIC_CONF2_RX_STREAM FIELD16(0x000f)
- + #define EEPROM_NIC_CONF2_TX_STREAM FIELD16(0x00f0)
- + #define EEPROM_NIC_CONF2_CRYSTAL FIELD16(0x0600)
- ++#define EEPROM_NIC_CONF2_EXTERNAL_PA FIELD16(0xc000)
- +
- + /*
- + * EEPROM LNA
- +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +@@ -4114,6 +4114,61 @@ static void rt2800_config_channel(struct
- + rt2800_iq_calibrate(rt2x00dev, rf->channel);
- + }
- +
- ++ if (rt2x00_rt(rt2x00dev, RT6352)) {
- ++ if (test_bit(CAPABILITY_EXTERNAL_PA_TX0,
- ++ &rt2x00dev->cap_flags)) {
- ++ rt2x00_warn(rt2x00dev, "Using incomplete support for " \
- ++ "external PA\n");
- ++ rt2800_register_read(rt2x00dev, RF_CONTROL3, ®);
- ++ reg |= 0x00000101;
- ++ rt2800_register_write(rt2x00dev, RF_CONTROL3, reg);
- ++
- ++ rt2800_register_read(rt2x00dev, RF_BYPASS3, ®);
- ++ reg |= 0x00000101;
- ++ rt2800_register_write(rt2x00dev, RF_BYPASS3, reg);
- ++
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 43, 0x73);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 43, 0x73);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 44, 0x73);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 44, 0x73);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 45, 0x73);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 45, 0x73);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 46, 0x27);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 46, 0x27);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0xC8);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0xC8);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 48, 0xA4);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 48, 0xA4);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 49, 0x05);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 49, 0x05);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x27);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 55, 0xC8);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 55, 0xC8);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 56, 0xA4);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 56, 0xA4);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 57, 0x05);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 57, 0x05);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 58, 0x27);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 58, 0x27);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 59, 0xC8);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 59, 0xC8);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 60, 0xA4);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 60, 0xA4);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 61, 0x05);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 61, 0x05);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 5, 05, 0x00);
- ++ rt2800_rfcsr_write_bank(rt2x00dev, 7, 05, 0x00);
- ++
- ++ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_CORRECT,
- ++ 0x36303636);
- ++ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_ATTEN,
- ++ 0x6C6C6B6C);
- ++ rt2800_register_write(rt2x00dev, TX1_RF_GAIN_ATTEN,
- ++ 0x6C6C6B6C);
- ++ }
- ++ }
- ++
- + rt2800_bbp_read(rt2x00dev, 4, &bbp);
- + rt2x00_set_field8(&bbp, BBP4_BANDWIDTH, 2 * conf_is_ht40(conf));
- + rt2800_bbp_write(rt2x00dev, 4, bbp);
- +@@ -9308,7 +9363,8 @@ static int rt2800_init_eeprom(struct rt2
- + */
- + rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
- +
- +- if (rt2x00_rt(rt2x00dev, RT3352)) {
- ++ if (rt2x00_rt(rt2x00dev, RT3352) ||
- ++ rt2x00_rt(rt2x00dev, RT6352)) {
- + if (rt2x00_get_field16(eeprom,
- + EEPROM_NIC_CONF1_EXTERNAL_TX0_PA_3352))
- + __set_bit(CAPABILITY_EXTERNAL_PA_TX0,
- +@@ -9319,6 +9375,18 @@ static int rt2800_init_eeprom(struct rt2
- + &rt2x00dev->cap_flags);
- + }
- +
- ++ rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF2, &eeprom);
- ++
- ++ if (rt2x00_rt(rt2x00dev, RT6352) && eeprom != 0 && eeprom != 0xffff) {
- ++ if (rt2x00_get_field16(eeprom,
- ++ EEPROM_NIC_CONF2_EXTERNAL_PA)) {
- ++ __set_bit(CAPABILITY_EXTERNAL_PA_TX0,
- ++ &rt2x00dev->cap_flags);
- ++ __set_bit(CAPABILITY_EXTERNAL_PA_TX1,
- ++ &rt2x00dev->cap_flags);
- ++ }
- ++ }
- ++
- + return 0;
- + }
- +
- diff --git a/package/kernel/mac80211/patches/651-rt2x00-remove-unneccesary-code.patch b/package/kernel/mac80211/patches/651-rt2x00-remove-unneccesary-code.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..b65bd7a73e493a52acb52947462565a9ec43c788
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/651-rt2x00-remove-unneccesary-code.patch
- @@ -0,0 +1,132 @@
- +From pozega.tomislav@gmail.com Thu May 18 12:42:27 2017
- +Return-path: <pozega.tomislav@gmail.com>
- +Envelope-to: daniel@makrotopia.org
- +Delivery-date: Thu, 18 May 2017 12:42:27 +0200
- +Received: from mail by fudo.makrotopia.org with sa-checked (Exim 4.88)
- + (envelope-from <pozega.tomislav@gmail.com>)
- + id 1dBIsy-00088b-PU
- + for daniel@makrotopia.org; Thu, 18 May 2017 12:42:27 +0200
- +X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on fudo.makrotopia.org
- +X-Spam-Level:
- +X-Spam-Status: No, score=-0.8 required=2.5 tests=DKIM_SIGNED,DKIM_VALID,
- + DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW shortcircuit=no
- + autolearn=ham autolearn_force=no version=3.4.1
- +Received: from mail-oi0-x22a.google.com ([2607:f8b0:4003:c06::22a])
- + by fudo.makrotopia.org with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128)
- + (Exim 4.88)
- + (envelope-from <pozega.tomislav@gmail.com>)
- + id 1dBIsv-00088Q-Dq
- + for daniel@makrotopia.org; Thu, 18 May 2017 12:42:24 +0200
- +Received: by mail-oi0-x22a.google.com with SMTP id w10so48782189oif.0
- + for <daniel@makrotopia.org>; Thu, 18 May 2017 03:42:21 -0700 (PDT)
- +DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- + d=gmail.com; s=20161025;
- + h=mime-version:from:date:message-id:subject:to;
- + bh=9dF7PHDassYY74+N6dAhmsL/B9i5oG3SEuMzHuazhJo=;
- + b=cBGJ44v+o4ASyCPmHCBRMmRYnJCv4Gx6lzDiScKn0XqYmNHYpZTPg5cAY1GZFUhHdz
- + 9QT5fzhJKFikBliSuJc/7/pI8KzvyEAdvawiWA7/5fbeiTZ+zjJnzRVGezqkYDKxjR6u
- + 7TsoJxR2/oFwo7bOFlThhee+Nwf7qaX8AVal7JdkqovekX79JQ5vsKAa4LapDp7Cl0wr
- + KCh0WRUHGEgpTLJFyQ3ThPmLqc8bhmu+6/V/LJ53VOY7uksZHMhvaKkk9vDCoOuPnBMK
- + Cj2/c7z9RTErz/xlHg6HxnBe/pPc31XUsuPJUleOEdZASczPsreEEKacKCONVlP1wjAB
- + iOkA==
- +X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- + d=1e100.net; s=20161025;
- + h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
- + bh=9dF7PHDassYY74+N6dAhmsL/B9i5oG3SEuMzHuazhJo=;
- + b=LJAe4ZwS9aNJypROW7j+I9aNfRBWyDYy0c8ABnDbLrIoF9P2AA/Vs/Cli5f7GjaAxr
- + 1JCx602ach+7R7QjQq/nqNmLuhRCfSvB0TGrq4R4v+CJ4ADO541+PddnFiU1dlIXQRP2
- + TE2FOydSO0FGJBMg+kY0eFiidBtYj1T5x7IHAhQzufiuiF6/1xZS8h61CYJjLzt/aR5y
- + JxOxsVvu3W2YQ0T5wKmAPlKtarFH6ZZgs446bRYt1MX5KAWzIoBM1+IPMMv7lSCpCaDR
- + fwH05aDyaJW2IzXH5R9Tq7gGYycYjx/SnO7JupJXJVvOzKgBJxp60JwJhCfqCwESDuuD
- + 8nNA==
- +X-Gm-Message-State: AODbwcDOpdFZgbxAxFsVsqFdCBN3pRGDvEclZ1heVg2byNZ9BuG5kqJg
- + GvZ9x4NGt0v8lVGa3esDw0N1KiJENg==
- +X-Received: by 10.157.17.217 with SMTP id y25mr1310632oty.137.1495104134863;
- + Thu, 18 May 2017 03:42:14 -0700 (PDT)
- +MIME-Version: 1.0
- +Received: by 10.157.0.105 with HTTP; Thu, 18 May 2017 03:42:14 -0700 (PDT)
- +From: Tom Psyborg <pozega.tomislav@gmail.com>
- +Date: Thu, 18 May 2017 12:42:14 +0200
- +Message-ID: <CAKR_QVJBSKw2uCY4RbHZPvbGkMcvnBh+j6F+9t93mG3BakjX3Q@mail.gmail.com>
- +Subject: [PATCH] rt2x00: remove unneccesary code
- +To: linux-wireless <linux-wireless@vger.kernel.org>,
- + Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Arnd Bergmann <arnd@arndb.de>,
- + Jes Sorensen <jes.sorensen@gmail.com>, Stanislaw Gruszka <sgruszka@redhat.com>,
- + David Miller <davem@davemloft.net>, Helmut Schaa <helmut.schaa@googlemail.com>,
- + Kalle Valo <kvalo@codeaurora.org>, Daniel Golle <daniel@makrotopia.org>,
- + Mathias Kresin <dev@kresin.me>, Johannes Berg <johannes.berg@intel.com>,
- + Serge Vasilugin <vasilugin@yandex.ru>, Roman Yeryomin <roman@advem.lv>,
- + Networking <netdev@vger.kernel.org>
- +Content-Type: multipart/alternative; boundary="94eb2c1905d2dc6361054fca0e62"
- +Status: RO
- +Content-Length: 11079
- +Lines: 178
- +
- +--94eb2c1905d2dc6361054fca0e62
- +Content-Type: text/plain; charset="UTF-8"
- +Content-Transfer-Encoding: quoted-printable
- +
- +Use chanreg and dccal helpers to reduce the size of ePA code.
- +
- +Signed-off-by: Tomislav Po=C5=BEega <pozega.tomislav@gmail.com>
- +Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- +[daniel@makrotopia.org: fixed white-space so patch applies]
- +---
- +
- +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
- +@@ -4127,38 +4127,22 @@ static void rt2800_config_channel(struct
- + reg |= 0x00000101;
- + rt2800_register_write(rt2x00dev, RF_BYPASS3, reg);
- +
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 43, 0x73);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 43, 0x73);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 44, 0x73);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 44, 0x73);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 45, 0x73);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 45, 0x73);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 46, 0x27);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 46, 0x27);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0xC8);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0xC8);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 48, 0xA4);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 48, 0xA4);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 49, 0x05);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 49, 0x05);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x27);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 55, 0xC8);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 55, 0xC8);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 56, 0xA4);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 56, 0xA4);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 57, 0x05);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 57, 0x05);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 58, 0x27);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 58, 0x27);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 59, 0xC8);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 59, 0xC8);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 60, 0xA4);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 60, 0xA4);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 4, 61, 0x05);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 6, 61, 0x05);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 5, 05, 0x00);
- +- rt2800_rfcsr_write_bank(rt2x00dev, 7, 05, 0x00);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 43, 0x73);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0x73);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0x73);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x27);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0xC8);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xA4);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 49, 0x05);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x27);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0xC8);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xA4);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x05);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x27);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 59, 0xC8);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0xA4);
- ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 61, 0x05);
- ++ rt2800_rfcsr_write_dccal(rt2x00dev, 05, 0x00);
- +
- + rt2800_register_write(rt2x00dev, TX0_RF_GAIN_CORRECT,
- + 0x36303636);
- diff --git a/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch b/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch
- index d09057f89686a54db350dbeda2fe49a84134a941..91831188ac4a02532d4dd34c694b70efd9c29b42 100644
- --- a/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch
- +++ b/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch
- @@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
-
- --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
- -@@ -1196,6 +1196,7 @@ int __init brcmf_core_init(void)
- +@@ -1180,6 +1180,7 @@ int __init brcmf_core_init(void)
- {
- if (!schedule_work(&brcmf_driver_work))
- return -EBUSY;
- diff --git a/package/kernel/mac80211/patches/921-ath10k_init_devices_synchronously.patch b/package/kernel/mac80211/patches/921-ath10k_init_devices_synchronously.patch
- index 0c34d96847a0110779e59f4572bcfd8a1723417d..b966516e577217d60f732f56d2f3a6cabbd90864 100644
- --- a/package/kernel/mac80211/patches/921-ath10k_init_devices_synchronously.patch
- +++ b/package/kernel/mac80211/patches/921-ath10k_init_devices_synchronously.patch
- @@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
-
- --- a/drivers/net/wireless/ath/ath10k/core.c
- +++ b/drivers/net/wireless/ath/ath10k/core.c
- -@@ -2319,6 +2319,16 @@ int ath10k_core_register(struct ath10k *
- +@@ -2329,6 +2329,16 @@ int ath10k_core_register(struct ath10k *
- ar->chip_id = chip_id;
- queue_work(ar->workqueue, &ar->register_work);
-
- diff --git a/package/kernel/mac80211/patches/936-ath10k-fix-otp-failure-result.patch b/package/kernel/mac80211/patches/936-ath10k-fix-otp-failure-result.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..d302a7d2a3ad7b32db3d83c0438cb606f9d85c99
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/936-ath10k-fix-otp-failure-result.patch
- @@ -0,0 +1,11 @@
- +--- a/drivers/net/wireless/ath/ath10k/core.c
- ++++ b/drivers/net/wireless/ath/ath10k/core.c
- +@@ -691,7 +691,7 @@ static int ath10k_core_get_board_id_from
- + if (ret) {
- + ath10k_err(ar, "could not execute otp for board id check: %d\n",
- + ret);
- +- return ret;
- ++ return -EOPNOTSUPP;
- + }
- +
- + board_id = MS(result, ATH10K_BMI_BOARD_ID_FROM_OTP);
- diff --git a/package/kernel/mac80211/patches/936-ath10k_skip_otp_check.patch b/package/kernel/mac80211/patches/936-ath10k_skip_otp_check.patch
- deleted file mode 100644
- index 057995c55acf9015c64291013738e95b18df75a2..0000000000000000000000000000000000000000
- --- a/package/kernel/mac80211/patches/936-ath10k_skip_otp_check.patch
- +++ /dev/null
- @@ -1,51 +0,0 @@
- ---- a/drivers/net/wireless/ath/ath10k/core.c
- -+++ b/drivers/net/wireless/ath/ath10k/core.c
- -@@ -1362,9 +1362,6 @@ static int ath10k_core_fetch_firmware_fi
- - {
- - int ret;
- -
- -- /* calibration file is optional, don't check for any errors */
- -- ath10k_fetch_cal_file(ar);
- --
- - ar->fw_api = 5;
- - ath10k_dbg(ar, ATH10K_DBG_BOOT, "trying fw api %d\n", ar->fw_api);
- -
- -@@ -2149,7 +2146,7 @@ EXPORT_SYMBOL(ath10k_core_stop);
- - static int ath10k_core_probe_fw(struct ath10k *ar)
- - {
- - struct bmi_target_info target_info;
- -- int ret = 0;
- -+ int calret, ret = 0;
- -
- - ret = ath10k_hif_power_up(ar);
- - if (ret) {
- -@@ -2173,6 +2170,9 @@ static int ath10k_core_probe_fw(struct a
- - goto err_power_down;
- - }
- -
- -+ /* calibration file is optional, don't check for any errors */
- -+ calret = ath10k_fetch_cal_file(ar);
- -+
- - ret = ath10k_core_fetch_firmware_files(ar);
- - if (ret) {
- - ath10k_err(ar, "could not fetch firmware files (%d)\n", ret);
- -@@ -2195,11 +2195,14 @@ static int ath10k_core_probe_fw(struct a
- - "could not load pre cal data: %d\n", ret);
- - }
- -
- -- ret = ath10k_core_get_board_id_from_otp(ar);
- -- if (ret && ret != -EOPNOTSUPP) {
- -- ath10k_err(ar, "failed to get board id from otp: %d\n",
- -- ret);
- -- goto err_free_firmware_files;
- -+ /* otp and board file not needed if calibration data is present */
- -+ if (calret) {
- -+ ret = ath10k_core_get_board_id_from_otp(ar);
- -+ if (ret && ret != -EOPNOTSUPP) {
- -+ ath10k_err(ar, "failed to get board id from otp: %d\n",
- -+ ret);
- -+ goto err_free_firmware_files;
- -+ }
- - }
- -
- - ret = ath10k_core_check_smbios(ar);
- diff --git a/package/kernel/mac80211/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch b/package/kernel/mac80211/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..d49be4df703e8039509ecea23de8b5bd8e590765
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch
- @@ -0,0 +1,11 @@
- +--- a/drivers/net/wireless/ath/ath10k/htt.h
- ++++ b/drivers/net/wireless/ath/ath10k/htt.h
- +@@ -199,7 +199,7 @@ enum htt_rx_ring_flags {
- + };
- +
- + #define HTT_RX_RING_SIZE_MIN 128
- +-#define HTT_RX_RING_SIZE_MAX 2048
- ++#define HTT_RX_RING_SIZE_MAX 512
- +
- + struct htt_rx_ring_setup_ring {
- + __le32 fw_idx_shadow_reg_paddr;
- diff --git a/package/kernel/mac80211/patches/960-0011-ath10k-limit-pci-buffer-size.patch b/package/kernel/mac80211/patches/960-0011-ath10k-limit-pci-buffer-size.patch
- new file mode 100644
- index 0000000000000000000000000000000000000000..a101282d074aeba592b042dcc9944c2a260e40ba
- --- /dev/null
- +++ b/package/kernel/mac80211/patches/960-0011-ath10k-limit-pci-buffer-size.patch
- @@ -0,0 +1,38 @@
- +--- a/drivers/net/wireless/ath/ath10k/pci.c
- ++++ b/drivers/net/wireless/ath/ath10k/pci.c
- +@@ -128,7 +128,7 @@ static struct ce_attr host_ce_config_wla
- + .flags = CE_ATTR_FLAGS,
- + .src_nentries = 0,
- + .src_sz_max = 2048,
- +- .dest_nentries = 512,
- ++ .dest_nentries = 128,
- + .recv_cb = ath10k_pci_htt_htc_rx_cb,
- + },
- +
- +@@ -137,7 +137,7 @@ static struct ce_attr host_ce_config_wla
- + .flags = CE_ATTR_FLAGS,
- + .src_nentries = 0,
- + .src_sz_max = 2048,
- +- .dest_nentries = 128,
- ++ .dest_nentries = 64,
- + .recv_cb = ath10k_pci_htc_rx_cb,
- + },
- +
- +@@ -164,7 +164,7 @@ static struct ce_attr host_ce_config_wla
- + .flags = CE_ATTR_FLAGS,
- + .src_nentries = 0,
- + .src_sz_max = 512,
- +- .dest_nentries = 512,
- ++ .dest_nentries = 128,
- + .recv_cb = ath10k_pci_htt_rx_cb,
- + },
- +
- +@@ -189,7 +189,7 @@ static struct ce_attr host_ce_config_wla
- + .flags = CE_ATTR_FLAGS,
- + .src_nentries = 0,
- + .src_sz_max = 2048,
- +- .dest_nentries = 128,
- ++ .dest_nentries = 96,
- + .recv_cb = ath10k_pci_pktlog_rx_cb,
- + },
- +
- diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile
- index 8a6e414e10c35557b2fc6b89f80bec6c2297ee59..8fa3267180c897aaad07466111a1273d72dbceae 100644
- --- a/package/kernel/mt76/Makefile
- +++ b/package/kernel/mt76/Makefile
- @@ -1,16 +1,16 @@
- include $(TOPDIR)/rules.mk
-
- PKG_NAME:=mt76
- -PKG_RELEASE=2
- +PKG_RELEASE=1
-
- PKG_LICENSE:=GPLv2
- PKG_LICENSE_FILES:=
-
- PKG_SOURCE_URL:=https://github.com/openwrt/mt76
- PKG_SOURCE_PROTO:=git
- -PKG_SOURCE_DATE:=2017-01-31
- -PKG_SOURCE_VERSION:=3c8caafc5e150db79f714b958a51cee8f242f309
- -PKG_MIRROR_HASH:=c03c166466cb7ea825e52cd085511045e3847d927ba2bde2b8fb46595a3ed13a
- +PKG_SOURCE_DATE:=2017-07-17
- +PKG_SOURCE_VERSION:=3c4c9a647e4feff3a42ee94d477041fdcf26c463
- +PKG_MIRROR_HASH:=7ed7ef6356fafc2525cb6204ca2a3d584c1b83340ef5a1f7c581052f3a1982b1
-
- PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
- PKG_BUILD_PARALLEL:=1
- diff --git a/target/linux/generic/files/include/linux/ath9k_platform.h b/target/linux/generic/files/include/linux/ath9k_platform.h
- index 558445ff63a0f7f7bfff35286c39f89e243156de..f1f2ad419c752fc4a6a07c6b7fe366bf0ae8e38f 100644
- --- a/target/linux/generic/files/include/linux/ath9k_platform.h
- +++ b/target/linux/generic/files/include/linux/ath9k_platform.h
- @@ -49,7 +49,6 @@ struct ath9k_platform_data {
-
- int num_leds;
- const struct gpio_led *leds;
- - const char *led_name;
-
- unsigned num_btns;
- const struct gpio_keys_button *btns;
|