qed_hsi.h 450 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814
  1. /* QLogic qed NIC Driver
  2. * Copyright (c) 2015-2017 QLogic Corporation
  3. *
  4. * This software is available to you under a choice of one of two
  5. * licenses. You may choose to be licensed under the terms of the GNU
  6. * General Public License (GPL) Version 2, available from the file
  7. * COPYING in the main directory of this source tree, or the
  8. * OpenIB.org BSD license below:
  9. *
  10. * Redistribution and use in source and binary forms, with or
  11. * without modification, are permitted provided that the following
  12. * conditions are met:
  13. *
  14. * - Redistributions of source code must retain the above
  15. * copyright notice, this list of conditions and the following
  16. * disclaimer.
  17. *
  18. * - Redistributions in binary form must reproduce the above
  19. * copyright notice, this list of conditions and the following
  20. * disclaimer in the documentation and /or other materials
  21. * provided with the distribution.
  22. *
  23. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  24. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  25. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  26. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  27. * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  28. * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  29. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  30. * SOFTWARE.
  31. */
  32. #ifndef _QED_HSI_H
  33. #define _QED_HSI_H
  34. #include <linux/types.h>
  35. #include <linux/io.h>
  36. #include <linux/bitops.h>
  37. #include <linux/delay.h>
  38. #include <linux/kernel.h>
  39. #include <linux/list.h>
  40. #include <linux/slab.h>
  41. #include <linux/qed/common_hsi.h>
  42. #include <linux/qed/storage_common.h>
  43. #include <linux/qed/tcp_common.h>
  44. #include <linux/qed/fcoe_common.h>
  45. #include <linux/qed/eth_common.h>
  46. #include <linux/qed/iscsi_common.h>
  47. #include <linux/qed/iwarp_common.h>
  48. #include <linux/qed/rdma_common.h>
  49. #include <linux/qed/roce_common.h>
  50. #include <linux/qed/qed_fcoe_if.h>
  51. struct qed_hwfn;
  52. struct qed_ptt;
  53. /* Opcodes for the event ring */
  54. enum common_event_opcode {
  55. COMMON_EVENT_PF_START,
  56. COMMON_EVENT_PF_STOP,
  57. COMMON_EVENT_VF_START,
  58. COMMON_EVENT_VF_STOP,
  59. COMMON_EVENT_VF_PF_CHANNEL,
  60. COMMON_EVENT_VF_FLR,
  61. COMMON_EVENT_PF_UPDATE,
  62. COMMON_EVENT_MALICIOUS_VF,
  63. COMMON_EVENT_RL_UPDATE,
  64. COMMON_EVENT_EMPTY,
  65. MAX_COMMON_EVENT_OPCODE
  66. };
  67. /* Common Ramrod Command IDs */
  68. enum common_ramrod_cmd_id {
  69. COMMON_RAMROD_UNUSED,
  70. COMMON_RAMROD_PF_START,
  71. COMMON_RAMROD_PF_STOP,
  72. COMMON_RAMROD_VF_START,
  73. COMMON_RAMROD_VF_STOP,
  74. COMMON_RAMROD_PF_UPDATE,
  75. COMMON_RAMROD_RL_UPDATE,
  76. COMMON_RAMROD_EMPTY,
  77. MAX_COMMON_RAMROD_CMD_ID
  78. };
  79. /* How ll2 should deal with packet upon errors */
  80. enum core_error_handle {
  81. LL2_DROP_PACKET,
  82. LL2_DO_NOTHING,
  83. LL2_ASSERT,
  84. MAX_CORE_ERROR_HANDLE
  85. };
  86. /* Opcodes for the event ring */
  87. enum core_event_opcode {
  88. CORE_EVENT_TX_QUEUE_START,
  89. CORE_EVENT_TX_QUEUE_STOP,
  90. CORE_EVENT_RX_QUEUE_START,
  91. CORE_EVENT_RX_QUEUE_STOP,
  92. CORE_EVENT_RX_QUEUE_FLUSH,
  93. CORE_EVENT_TX_QUEUE_UPDATE,
  94. MAX_CORE_EVENT_OPCODE
  95. };
  96. /* The L4 pseudo checksum mode for Core */
  97. enum core_l4_pseudo_checksum_mode {
  98. CORE_L4_PSEUDO_CSUM_CORRECT_LENGTH,
  99. CORE_L4_PSEUDO_CSUM_ZERO_LENGTH,
  100. MAX_CORE_L4_PSEUDO_CHECKSUM_MODE
  101. };
  102. /* Light-L2 RX Producers in Tstorm RAM */
  103. struct core_ll2_port_stats {
  104. struct regpair gsi_invalid_hdr;
  105. struct regpair gsi_invalid_pkt_length;
  106. struct regpair gsi_unsupported_pkt_typ;
  107. struct regpair gsi_crcchksm_error;
  108. };
  109. /* Ethernet TX Per Queue Stats */
  110. struct core_ll2_pstorm_per_queue_stat {
  111. struct regpair sent_ucast_bytes;
  112. struct regpair sent_mcast_bytes;
  113. struct regpair sent_bcast_bytes;
  114. struct regpair sent_ucast_pkts;
  115. struct regpair sent_mcast_pkts;
  116. struct regpair sent_bcast_pkts;
  117. };
  118. /* Light-L2 RX Producers in Tstorm RAM */
  119. struct core_ll2_rx_prod {
  120. __le16 bd_prod;
  121. __le16 cqe_prod;
  122. __le32 reserved;
  123. };
  124. struct core_ll2_tstorm_per_queue_stat {
  125. struct regpair packet_too_big_discard;
  126. struct regpair no_buff_discard;
  127. };
  128. struct core_ll2_ustorm_per_queue_stat {
  129. struct regpair rcv_ucast_bytes;
  130. struct regpair rcv_mcast_bytes;
  131. struct regpair rcv_bcast_bytes;
  132. struct regpair rcv_ucast_pkts;
  133. struct regpair rcv_mcast_pkts;
  134. struct regpair rcv_bcast_pkts;
  135. };
  136. /* Core Ramrod Command IDs (light L2) */
  137. enum core_ramrod_cmd_id {
  138. CORE_RAMROD_UNUSED,
  139. CORE_RAMROD_RX_QUEUE_START,
  140. CORE_RAMROD_TX_QUEUE_START,
  141. CORE_RAMROD_RX_QUEUE_STOP,
  142. CORE_RAMROD_TX_QUEUE_STOP,
  143. CORE_RAMROD_RX_QUEUE_FLUSH,
  144. CORE_RAMROD_TX_QUEUE_UPDATE,
  145. MAX_CORE_RAMROD_CMD_ID
  146. };
  147. /* Core RX CQE Type for Light L2 */
  148. enum core_roce_flavor_type {
  149. CORE_ROCE,
  150. CORE_RROCE,
  151. MAX_CORE_ROCE_FLAVOR_TYPE
  152. };
  153. /* Specifies how ll2 should deal with packets errors: packet_too_big and
  154. * no_buff.
  155. */
  156. struct core_rx_action_on_error {
  157. u8 error_type;
  158. #define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_MASK 0x3
  159. #define CORE_RX_ACTION_ON_ERROR_PACKET_TOO_BIG_SHIFT 0
  160. #define CORE_RX_ACTION_ON_ERROR_NO_BUFF_MASK 0x3
  161. #define CORE_RX_ACTION_ON_ERROR_NO_BUFF_SHIFT 2
  162. #define CORE_RX_ACTION_ON_ERROR_RESERVED_MASK 0xF
  163. #define CORE_RX_ACTION_ON_ERROR_RESERVED_SHIFT 4
  164. };
  165. /* Core RX BD for Light L2 */
  166. struct core_rx_bd {
  167. struct regpair addr;
  168. __le16 reserved[4];
  169. };
  170. /* Core RX CM offload BD for Light L2 */
  171. struct core_rx_bd_with_buff_len {
  172. struct regpair addr;
  173. __le16 buff_length;
  174. __le16 reserved[3];
  175. };
  176. /* Core RX CM offload BD for Light L2 */
  177. union core_rx_bd_union {
  178. struct core_rx_bd rx_bd;
  179. struct core_rx_bd_with_buff_len rx_bd_with_len;
  180. };
  181. /* Opaque Data for Light L2 RX CQE */
  182. struct core_rx_cqe_opaque_data {
  183. __le32 data[2];
  184. };
  185. /* Core RX CQE Type for Light L2 */
  186. enum core_rx_cqe_type {
  187. CORE_RX_CQE_ILLEGAL_TYPE,
  188. CORE_RX_CQE_TYPE_REGULAR,
  189. CORE_RX_CQE_TYPE_GSI_OFFLOAD,
  190. CORE_RX_CQE_TYPE_SLOW_PATH,
  191. MAX_CORE_RX_CQE_TYPE
  192. };
  193. /* Core RX CQE for Light L2 */
  194. struct core_rx_fast_path_cqe {
  195. u8 type;
  196. u8 placement_offset;
  197. struct parsing_and_err_flags parse_flags;
  198. __le16 packet_length;
  199. __le16 vlan;
  200. struct core_rx_cqe_opaque_data opaque_data;
  201. struct parsing_err_flags err_flags;
  202. __le16 reserved0;
  203. __le32 reserved1[3];
  204. };
  205. /* Core Rx CM offload CQE */
  206. struct core_rx_gsi_offload_cqe {
  207. u8 type;
  208. u8 data_length_error;
  209. struct parsing_and_err_flags parse_flags;
  210. __le16 data_length;
  211. __le16 vlan;
  212. __le32 src_mac_addrhi;
  213. __le16 src_mac_addrlo;
  214. __le16 qp_id;
  215. __le32 src_qp;
  216. __le32 reserved[3];
  217. };
  218. /* Core RX CQE for Light L2 */
  219. struct core_rx_slow_path_cqe {
  220. u8 type;
  221. u8 ramrod_cmd_id;
  222. __le16 echo;
  223. struct core_rx_cqe_opaque_data opaque_data;
  224. __le32 reserved1[5];
  225. };
  226. /* Core RX CM offload BD for Light L2 */
  227. union core_rx_cqe_union {
  228. struct core_rx_fast_path_cqe rx_cqe_fp;
  229. struct core_rx_gsi_offload_cqe rx_cqe_gsi;
  230. struct core_rx_slow_path_cqe rx_cqe_sp;
  231. };
  232. /* Ramrod data for rx queue start ramrod */
  233. struct core_rx_start_ramrod_data {
  234. struct regpair bd_base;
  235. struct regpair cqe_pbl_addr;
  236. __le16 mtu;
  237. __le16 sb_id;
  238. u8 sb_index;
  239. u8 complete_cqe_flg;
  240. u8 complete_event_flg;
  241. u8 drop_ttl0_flg;
  242. __le16 num_of_pbl_pages;
  243. u8 inner_vlan_stripping_en;
  244. u8 report_outer_vlan;
  245. u8 queue_id;
  246. u8 main_func_queue;
  247. u8 mf_si_bcast_accept_all;
  248. u8 mf_si_mcast_accept_all;
  249. struct core_rx_action_on_error action_on_error;
  250. u8 gsi_offload_flag;
  251. u8 reserved[6];
  252. };
  253. /* Ramrod data for rx queue stop ramrod */
  254. struct core_rx_stop_ramrod_data {
  255. u8 complete_cqe_flg;
  256. u8 complete_event_flg;
  257. u8 queue_id;
  258. u8 reserved1;
  259. __le16 reserved2[2];
  260. };
  261. /* Flags for Core TX BD */
  262. struct core_tx_bd_data {
  263. __le16 as_bitfield;
  264. #define CORE_TX_BD_DATA_FORCE_VLAN_MODE_MASK 0x1
  265. #define CORE_TX_BD_DATA_FORCE_VLAN_MODE_SHIFT 0
  266. #define CORE_TX_BD_DATA_VLAN_INSERTION_MASK 0x1
  267. #define CORE_TX_BD_DATA_VLAN_INSERTION_SHIFT 1
  268. #define CORE_TX_BD_DATA_START_BD_MASK 0x1
  269. #define CORE_TX_BD_DATA_START_BD_SHIFT 2
  270. #define CORE_TX_BD_DATA_IP_CSUM_MASK 0x1
  271. #define CORE_TX_BD_DATA_IP_CSUM_SHIFT 3
  272. #define CORE_TX_BD_DATA_L4_CSUM_MASK 0x1
  273. #define CORE_TX_BD_DATA_L4_CSUM_SHIFT 4
  274. #define CORE_TX_BD_DATA_IPV6_EXT_MASK 0x1
  275. #define CORE_TX_BD_DATA_IPV6_EXT_SHIFT 5
  276. #define CORE_TX_BD_DATA_L4_PROTOCOL_MASK 0x1
  277. #define CORE_TX_BD_DATA_L4_PROTOCOL_SHIFT 6
  278. #define CORE_TX_BD_DATA_L4_PSEUDO_CSUM_MODE_MASK 0x1
  279. #define CORE_TX_BD_DATA_L4_PSEUDO_CSUM_MODE_SHIFT 7
  280. #define CORE_TX_BD_DATA_NBDS_MASK 0xF
  281. #define CORE_TX_BD_DATA_NBDS_SHIFT 8
  282. #define CORE_TX_BD_DATA_ROCE_FLAV_MASK 0x1
  283. #define CORE_TX_BD_DATA_ROCE_FLAV_SHIFT 12
  284. #define CORE_TX_BD_DATA_IP_LEN_MASK 0x1
  285. #define CORE_TX_BD_DATA_IP_LEN_SHIFT 13
  286. #define CORE_TX_BD_DATA_DISABLE_STAG_INSERTION_MASK 0x1
  287. #define CORE_TX_BD_DATA_DISABLE_STAG_INSERTION_SHIFT 14
  288. #define CORE_TX_BD_DATA_RESERVED0_MASK 0x1
  289. #define CORE_TX_BD_DATA_RESERVED0_SHIFT 15
  290. };
  291. /* Core TX BD for Light L2 */
  292. struct core_tx_bd {
  293. struct regpair addr;
  294. __le16 nbytes;
  295. __le16 nw_vlan_or_lb_echo;
  296. struct core_tx_bd_data bd_data;
  297. __le16 bitfield1;
  298. #define CORE_TX_BD_L4_HDR_OFFSET_W_MASK 0x3FFF
  299. #define CORE_TX_BD_L4_HDR_OFFSET_W_SHIFT 0
  300. #define CORE_TX_BD_TX_DST_MASK 0x3
  301. #define CORE_TX_BD_TX_DST_SHIFT 14
  302. };
  303. /* Light L2 TX Destination */
  304. enum core_tx_dest {
  305. CORE_TX_DEST_NW,
  306. CORE_TX_DEST_LB,
  307. CORE_TX_DEST_RESERVED,
  308. CORE_TX_DEST_DROP,
  309. MAX_CORE_TX_DEST
  310. };
  311. /* Ramrod data for tx queue start ramrod */
  312. struct core_tx_start_ramrod_data {
  313. struct regpair pbl_base_addr;
  314. __le16 mtu;
  315. __le16 sb_id;
  316. u8 sb_index;
  317. u8 stats_en;
  318. u8 stats_id;
  319. u8 conn_type;
  320. __le16 pbl_size;
  321. __le16 qm_pq_id;
  322. u8 gsi_offload_flag;
  323. u8 resrved[3];
  324. };
  325. /* Ramrod data for tx queue stop ramrod */
  326. struct core_tx_stop_ramrod_data {
  327. __le32 reserved0[2];
  328. };
  329. /* Ramrod data for tx queue update ramrod */
  330. struct core_tx_update_ramrod_data {
  331. u8 update_qm_pq_id_flg;
  332. u8 reserved0;
  333. __le16 qm_pq_id;
  334. __le32 reserved1[1];
  335. };
  336. /* Enum flag for what type of dcb data to update */
  337. enum dcb_dscp_update_mode {
  338. DONT_UPDATE_DCB_DSCP,
  339. UPDATE_DCB,
  340. UPDATE_DSCP,
  341. UPDATE_DCB_DSCP,
  342. MAX_DCB_DSCP_UPDATE_MODE
  343. };
  344. /* The core storm context for the Ystorm */
  345. struct ystorm_core_conn_st_ctx {
  346. __le32 reserved[4];
  347. };
  348. /* The core storm context for the Pstorm */
  349. struct pstorm_core_conn_st_ctx {
  350. __le32 reserved[4];
  351. };
  352. /* Core Slowpath Connection storm context of Xstorm */
  353. struct xstorm_core_conn_st_ctx {
  354. __le32 spq_base_lo;
  355. __le32 spq_base_hi;
  356. struct regpair consolid_base_addr;
  357. __le16 spq_cons;
  358. __le16 consolid_cons;
  359. __le32 reserved0[55];
  360. };
  361. struct e4_xstorm_core_conn_ag_ctx {
  362. u8 reserved0;
  363. u8 state;
  364. u8 flags0;
  365. #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  366. #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  367. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED1_MASK 0x1
  368. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED1_SHIFT 1
  369. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED2_MASK 0x1
  370. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED2_SHIFT 2
  371. #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  372. #define E4_XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  373. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED3_MASK 0x1
  374. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED3_SHIFT 4
  375. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED4_MASK 0x1
  376. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED4_SHIFT 5
  377. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED5_MASK 0x1
  378. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED5_SHIFT 6
  379. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED6_MASK 0x1
  380. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED6_SHIFT 7
  381. u8 flags1;
  382. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED7_MASK 0x1
  383. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED7_SHIFT 0
  384. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED8_MASK 0x1
  385. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED8_SHIFT 1
  386. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED9_MASK 0x1
  387. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED9_SHIFT 2
  388. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT11_MASK 0x1
  389. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT11_SHIFT 3
  390. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT12_MASK 0x1
  391. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT12_SHIFT 4
  392. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT13_MASK 0x1
  393. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT13_SHIFT 5
  394. #define E4_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1
  395. #define E4_XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6
  396. #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1
  397. #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7
  398. u8 flags2;
  399. #define E4_XSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3
  400. #define E4_XSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 0
  401. #define E4_XSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3
  402. #define E4_XSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 2
  403. #define E4_XSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3
  404. #define E4_XSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 4
  405. #define E4_XSTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3
  406. #define E4_XSTORM_CORE_CONN_AG_CTX_CF3_SHIFT 6
  407. u8 flags3;
  408. #define E4_XSTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3
  409. #define E4_XSTORM_CORE_CONN_AG_CTX_CF4_SHIFT 0
  410. #define E4_XSTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3
  411. #define E4_XSTORM_CORE_CONN_AG_CTX_CF5_SHIFT 2
  412. #define E4_XSTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3
  413. #define E4_XSTORM_CORE_CONN_AG_CTX_CF6_SHIFT 4
  414. #define E4_XSTORM_CORE_CONN_AG_CTX_CF7_MASK 0x3
  415. #define E4_XSTORM_CORE_CONN_AG_CTX_CF7_SHIFT 6
  416. u8 flags4;
  417. #define E4_XSTORM_CORE_CONN_AG_CTX_CF8_MASK 0x3
  418. #define E4_XSTORM_CORE_CONN_AG_CTX_CF8_SHIFT 0
  419. #define E4_XSTORM_CORE_CONN_AG_CTX_CF9_MASK 0x3
  420. #define E4_XSTORM_CORE_CONN_AG_CTX_CF9_SHIFT 2
  421. #define E4_XSTORM_CORE_CONN_AG_CTX_CF10_MASK 0x3
  422. #define E4_XSTORM_CORE_CONN_AG_CTX_CF10_SHIFT 4
  423. #define E4_XSTORM_CORE_CONN_AG_CTX_CF11_MASK 0x3
  424. #define E4_XSTORM_CORE_CONN_AG_CTX_CF11_SHIFT 6
  425. u8 flags5;
  426. #define E4_XSTORM_CORE_CONN_AG_CTX_CF12_MASK 0x3
  427. #define E4_XSTORM_CORE_CONN_AG_CTX_CF12_SHIFT 0
  428. #define E4_XSTORM_CORE_CONN_AG_CTX_CF13_MASK 0x3
  429. #define E4_XSTORM_CORE_CONN_AG_CTX_CF13_SHIFT 2
  430. #define E4_XSTORM_CORE_CONN_AG_CTX_CF14_MASK 0x3
  431. #define E4_XSTORM_CORE_CONN_AG_CTX_CF14_SHIFT 4
  432. #define E4_XSTORM_CORE_CONN_AG_CTX_CF15_MASK 0x3
  433. #define E4_XSTORM_CORE_CONN_AG_CTX_CF15_SHIFT 6
  434. u8 flags6;
  435. #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_MASK 0x3
  436. #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_SHIFT 0
  437. #define E4_XSTORM_CORE_CONN_AG_CTX_CF17_MASK 0x3
  438. #define E4_XSTORM_CORE_CONN_AG_CTX_CF17_SHIFT 2
  439. #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_MASK 0x3
  440. #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_SHIFT 4
  441. #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_MASK 0x3
  442. #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_SHIFT 6
  443. u8 flags7;
  444. #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
  445. #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
  446. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED10_MASK 0x3
  447. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED10_SHIFT 2
  448. #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_MASK 0x3
  449. #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  450. #define E4_XSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1
  451. #define E4_XSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 6
  452. #define E4_XSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1
  453. #define E4_XSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 7
  454. u8 flags8;
  455. #define E4_XSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1
  456. #define E4_XSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 0
  457. #define E4_XSTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1
  458. #define E4_XSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 1
  459. #define E4_XSTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1
  460. #define E4_XSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 2
  461. #define E4_XSTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1
  462. #define E4_XSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 3
  463. #define E4_XSTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1
  464. #define E4_XSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 4
  465. #define E4_XSTORM_CORE_CONN_AG_CTX_CF7EN_MASK 0x1
  466. #define E4_XSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT 5
  467. #define E4_XSTORM_CORE_CONN_AG_CTX_CF8EN_MASK 0x1
  468. #define E4_XSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT 6
  469. #define E4_XSTORM_CORE_CONN_AG_CTX_CF9EN_MASK 0x1
  470. #define E4_XSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT 7
  471. u8 flags9;
  472. #define E4_XSTORM_CORE_CONN_AG_CTX_CF10EN_MASK 0x1
  473. #define E4_XSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT 0
  474. #define E4_XSTORM_CORE_CONN_AG_CTX_CF11EN_MASK 0x1
  475. #define E4_XSTORM_CORE_CONN_AG_CTX_CF11EN_SHIFT 1
  476. #define E4_XSTORM_CORE_CONN_AG_CTX_CF12EN_MASK 0x1
  477. #define E4_XSTORM_CORE_CONN_AG_CTX_CF12EN_SHIFT 2
  478. #define E4_XSTORM_CORE_CONN_AG_CTX_CF13EN_MASK 0x1
  479. #define E4_XSTORM_CORE_CONN_AG_CTX_CF13EN_SHIFT 3
  480. #define E4_XSTORM_CORE_CONN_AG_CTX_CF14EN_MASK 0x1
  481. #define E4_XSTORM_CORE_CONN_AG_CTX_CF14EN_SHIFT 4
  482. #define E4_XSTORM_CORE_CONN_AG_CTX_CF15EN_MASK 0x1
  483. #define E4_XSTORM_CORE_CONN_AG_CTX_CF15EN_SHIFT 5
  484. #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_MASK 0x1
  485. #define E4_XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_SHIFT 6
  486. #define E4_XSTORM_CORE_CONN_AG_CTX_CF17EN_MASK 0x1
  487. #define E4_XSTORM_CORE_CONN_AG_CTX_CF17EN_SHIFT 7
  488. u8 flags10;
  489. #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_MASK 0x1
  490. #define E4_XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_SHIFT 0
  491. #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1
  492. #define E4_XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1
  493. #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
  494. #define E4_XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
  495. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED11_MASK 0x1
  496. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED11_SHIFT 3
  497. #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
  498. #define E4_XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  499. #define E4_XSTORM_CORE_CONN_AG_CTX_CF23EN_MASK 0x1
  500. #define E4_XSTORM_CORE_CONN_AG_CTX_CF23EN_SHIFT 5
  501. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED12_MASK 0x1
  502. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED12_SHIFT 6
  503. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED13_MASK 0x1
  504. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED13_SHIFT 7
  505. u8 flags11;
  506. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED14_MASK 0x1
  507. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED14_SHIFT 0
  508. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED15_MASK 0x1
  509. #define E4_XSTORM_CORE_CONN_AG_CTX_RESERVED15_SHIFT 1
  510. #define E4_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1
  511. #define E4_XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2
  512. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1
  513. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 3
  514. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1
  515. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 4
  516. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1
  517. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 5
  518. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
  519. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  520. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE9EN_MASK 0x1
  521. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE9EN_SHIFT 7
  522. u8 flags12;
  523. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE10EN_MASK 0x1
  524. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE10EN_SHIFT 0
  525. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE11EN_MASK 0x1
  526. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE11EN_SHIFT 1
  527. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
  528. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  529. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
  530. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  531. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE14EN_MASK 0x1
  532. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE14EN_SHIFT 4
  533. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE15EN_MASK 0x1
  534. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE15EN_SHIFT 5
  535. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE16EN_MASK 0x1
  536. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE16EN_SHIFT 6
  537. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE17EN_MASK 0x1
  538. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE17EN_SHIFT 7
  539. u8 flags13;
  540. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE18EN_MASK 0x1
  541. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE18EN_SHIFT 0
  542. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE19EN_MASK 0x1
  543. #define E4_XSTORM_CORE_CONN_AG_CTX_RULE19EN_SHIFT 1
  544. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
  545. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
  546. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
  547. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
  548. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
  549. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  550. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
  551. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
  552. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
  553. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  554. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
  555. #define E4_XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  556. u8 flags14;
  557. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT16_MASK 0x1
  558. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT16_SHIFT 0
  559. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT17_MASK 0x1
  560. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT17_SHIFT 1
  561. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT18_MASK 0x1
  562. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT18_SHIFT 2
  563. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT19_MASK 0x1
  564. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT19_SHIFT 3
  565. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT20_MASK 0x1
  566. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT20_SHIFT 4
  567. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT21_MASK 0x1
  568. #define E4_XSTORM_CORE_CONN_AG_CTX_BIT21_SHIFT 5
  569. #define E4_XSTORM_CORE_CONN_AG_CTX_CF23_MASK 0x3
  570. #define E4_XSTORM_CORE_CONN_AG_CTX_CF23_SHIFT 6
  571. u8 byte2;
  572. __le16 physical_q0;
  573. __le16 consolid_prod;
  574. __le16 reserved16;
  575. __le16 tx_bd_cons;
  576. __le16 tx_bd_or_spq_prod;
  577. __le16 updated_qm_pq_id;
  578. __le16 conn_dpi;
  579. u8 byte3;
  580. u8 byte4;
  581. u8 byte5;
  582. u8 byte6;
  583. __le32 reg0;
  584. __le32 reg1;
  585. __le32 reg2;
  586. __le32 reg3;
  587. __le32 reg4;
  588. __le32 reg5;
  589. __le32 reg6;
  590. __le16 word7;
  591. __le16 word8;
  592. __le16 word9;
  593. __le16 word10;
  594. __le32 reg7;
  595. __le32 reg8;
  596. __le32 reg9;
  597. u8 byte7;
  598. u8 byte8;
  599. u8 byte9;
  600. u8 byte10;
  601. u8 byte11;
  602. u8 byte12;
  603. u8 byte13;
  604. u8 byte14;
  605. u8 byte15;
  606. u8 e5_reserved;
  607. __le16 word11;
  608. __le32 reg10;
  609. __le32 reg11;
  610. __le32 reg12;
  611. __le32 reg13;
  612. __le32 reg14;
  613. __le32 reg15;
  614. __le32 reg16;
  615. __le32 reg17;
  616. __le32 reg18;
  617. __le32 reg19;
  618. __le16 word12;
  619. __le16 word13;
  620. __le16 word14;
  621. __le16 word15;
  622. };
  623. struct e4_tstorm_core_conn_ag_ctx {
  624. u8 byte0;
  625. u8 byte1;
  626. u8 flags0;
  627. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1
  628. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0
  629. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1
  630. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1
  631. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT2_MASK 0x1
  632. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT2_SHIFT 2
  633. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT3_MASK 0x1
  634. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT3_SHIFT 3
  635. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT4_MASK 0x1
  636. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT4_SHIFT 4
  637. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT5_MASK 0x1
  638. #define E4_TSTORM_CORE_CONN_AG_CTX_BIT5_SHIFT 5
  639. #define E4_TSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3
  640. #define E4_TSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 6
  641. u8 flags1;
  642. #define E4_TSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3
  643. #define E4_TSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 0
  644. #define E4_TSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3
  645. #define E4_TSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 2
  646. #define E4_TSTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3
  647. #define E4_TSTORM_CORE_CONN_AG_CTX_CF3_SHIFT 4
  648. #define E4_TSTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3
  649. #define E4_TSTORM_CORE_CONN_AG_CTX_CF4_SHIFT 6
  650. u8 flags2;
  651. #define E4_TSTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3
  652. #define E4_TSTORM_CORE_CONN_AG_CTX_CF5_SHIFT 0
  653. #define E4_TSTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3
  654. #define E4_TSTORM_CORE_CONN_AG_CTX_CF6_SHIFT 2
  655. #define E4_TSTORM_CORE_CONN_AG_CTX_CF7_MASK 0x3
  656. #define E4_TSTORM_CORE_CONN_AG_CTX_CF7_SHIFT 4
  657. #define E4_TSTORM_CORE_CONN_AG_CTX_CF8_MASK 0x3
  658. #define E4_TSTORM_CORE_CONN_AG_CTX_CF8_SHIFT 6
  659. u8 flags3;
  660. #define E4_TSTORM_CORE_CONN_AG_CTX_CF9_MASK 0x3
  661. #define E4_TSTORM_CORE_CONN_AG_CTX_CF9_SHIFT 0
  662. #define E4_TSTORM_CORE_CONN_AG_CTX_CF10_MASK 0x3
  663. #define E4_TSTORM_CORE_CONN_AG_CTX_CF10_SHIFT 2
  664. #define E4_TSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1
  665. #define E4_TSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 4
  666. #define E4_TSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1
  667. #define E4_TSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 5
  668. #define E4_TSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1
  669. #define E4_TSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 6
  670. #define E4_TSTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1
  671. #define E4_TSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 7
  672. u8 flags4;
  673. #define E4_TSTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1
  674. #define E4_TSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 0
  675. #define E4_TSTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1
  676. #define E4_TSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 1
  677. #define E4_TSTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1
  678. #define E4_TSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 2
  679. #define E4_TSTORM_CORE_CONN_AG_CTX_CF7EN_MASK 0x1
  680. #define E4_TSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT 3
  681. #define E4_TSTORM_CORE_CONN_AG_CTX_CF8EN_MASK 0x1
  682. #define E4_TSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT 4
  683. #define E4_TSTORM_CORE_CONN_AG_CTX_CF9EN_MASK 0x1
  684. #define E4_TSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT 5
  685. #define E4_TSTORM_CORE_CONN_AG_CTX_CF10EN_MASK 0x1
  686. #define E4_TSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT 6
  687. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1
  688. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7
  689. u8 flags5;
  690. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1
  691. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0
  692. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1
  693. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1
  694. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1
  695. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2
  696. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1
  697. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3
  698. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1
  699. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4
  700. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1
  701. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5
  702. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1
  703. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6
  704. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE8EN_MASK 0x1
  705. #define E4_TSTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7
  706. __le32 reg0;
  707. __le32 reg1;
  708. __le32 reg2;
  709. __le32 reg3;
  710. __le32 reg4;
  711. __le32 reg5;
  712. __le32 reg6;
  713. __le32 reg7;
  714. __le32 reg8;
  715. u8 byte2;
  716. u8 byte3;
  717. __le16 word0;
  718. u8 byte4;
  719. u8 byte5;
  720. __le16 word1;
  721. __le16 word2;
  722. __le16 word3;
  723. __le32 reg9;
  724. __le32 reg10;
  725. };
  726. struct e4_ustorm_core_conn_ag_ctx {
  727. u8 reserved;
  728. u8 byte1;
  729. u8 flags0;
  730. #define E4_USTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1
  731. #define E4_USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0
  732. #define E4_USTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1
  733. #define E4_USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1
  734. #define E4_USTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3
  735. #define E4_USTORM_CORE_CONN_AG_CTX_CF0_SHIFT 2
  736. #define E4_USTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3
  737. #define E4_USTORM_CORE_CONN_AG_CTX_CF1_SHIFT 4
  738. #define E4_USTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3
  739. #define E4_USTORM_CORE_CONN_AG_CTX_CF2_SHIFT 6
  740. u8 flags1;
  741. #define E4_USTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3
  742. #define E4_USTORM_CORE_CONN_AG_CTX_CF3_SHIFT 0
  743. #define E4_USTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3
  744. #define E4_USTORM_CORE_CONN_AG_CTX_CF4_SHIFT 2
  745. #define E4_USTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3
  746. #define E4_USTORM_CORE_CONN_AG_CTX_CF5_SHIFT 4
  747. #define E4_USTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3
  748. #define E4_USTORM_CORE_CONN_AG_CTX_CF6_SHIFT 6
  749. u8 flags2;
  750. #define E4_USTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1
  751. #define E4_USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 0
  752. #define E4_USTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1
  753. #define E4_USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 1
  754. #define E4_USTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1
  755. #define E4_USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 2
  756. #define E4_USTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1
  757. #define E4_USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 3
  758. #define E4_USTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1
  759. #define E4_USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 4
  760. #define E4_USTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1
  761. #define E4_USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 5
  762. #define E4_USTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1
  763. #define E4_USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 6
  764. #define E4_USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1
  765. #define E4_USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7
  766. u8 flags3;
  767. #define E4_USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1
  768. #define E4_USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0
  769. #define E4_USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1
  770. #define E4_USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1
  771. #define E4_USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1
  772. #define E4_USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2
  773. #define E4_USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1
  774. #define E4_USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3
  775. #define E4_USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1
  776. #define E4_USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4
  777. #define E4_USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1
  778. #define E4_USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5
  779. #define E4_USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1
  780. #define E4_USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6
  781. #define E4_USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK 0x1
  782. #define E4_USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7
  783. u8 byte2;
  784. u8 byte3;
  785. __le16 word0;
  786. __le16 word1;
  787. __le32 rx_producers;
  788. __le32 reg1;
  789. __le32 reg2;
  790. __le32 reg3;
  791. __le16 word2;
  792. __le16 word3;
  793. };
  794. /* The core storm context for the Mstorm */
  795. struct mstorm_core_conn_st_ctx {
  796. __le32 reserved[24];
  797. };
  798. /* The core storm context for the Ustorm */
  799. struct ustorm_core_conn_st_ctx {
  800. __le32 reserved[4];
  801. };
  802. /* core connection context */
  803. struct e4_core_conn_context {
  804. struct ystorm_core_conn_st_ctx ystorm_st_context;
  805. struct regpair ystorm_st_padding[2];
  806. struct pstorm_core_conn_st_ctx pstorm_st_context;
  807. struct regpair pstorm_st_padding[2];
  808. struct xstorm_core_conn_st_ctx xstorm_st_context;
  809. struct e4_xstorm_core_conn_ag_ctx xstorm_ag_context;
  810. struct e4_tstorm_core_conn_ag_ctx tstorm_ag_context;
  811. struct e4_ustorm_core_conn_ag_ctx ustorm_ag_context;
  812. struct mstorm_core_conn_st_ctx mstorm_st_context;
  813. struct ustorm_core_conn_st_ctx ustorm_st_context;
  814. struct regpair ustorm_st_padding[2];
  815. };
  816. struct eth_mstorm_per_pf_stat {
  817. struct regpair gre_discard_pkts;
  818. struct regpair vxlan_discard_pkts;
  819. struct regpair geneve_discard_pkts;
  820. struct regpair lb_discard_pkts;
  821. };
  822. struct eth_mstorm_per_queue_stat {
  823. struct regpair ttl0_discard;
  824. struct regpair packet_too_big_discard;
  825. struct regpair no_buff_discard;
  826. struct regpair not_active_discard;
  827. struct regpair tpa_coalesced_pkts;
  828. struct regpair tpa_coalesced_events;
  829. struct regpair tpa_aborts_num;
  830. struct regpair tpa_coalesced_bytes;
  831. };
  832. /* Ethernet TX Per PF */
  833. struct eth_pstorm_per_pf_stat {
  834. struct regpair sent_lb_ucast_bytes;
  835. struct regpair sent_lb_mcast_bytes;
  836. struct regpair sent_lb_bcast_bytes;
  837. struct regpair sent_lb_ucast_pkts;
  838. struct regpair sent_lb_mcast_pkts;
  839. struct regpair sent_lb_bcast_pkts;
  840. struct regpair sent_gre_bytes;
  841. struct regpair sent_vxlan_bytes;
  842. struct regpair sent_geneve_bytes;
  843. struct regpair sent_gre_pkts;
  844. struct regpair sent_vxlan_pkts;
  845. struct regpair sent_geneve_pkts;
  846. struct regpair gre_drop_pkts;
  847. struct regpair vxlan_drop_pkts;
  848. struct regpair geneve_drop_pkts;
  849. };
  850. /* Ethernet TX Per Queue Stats */
  851. struct eth_pstorm_per_queue_stat {
  852. struct regpair sent_ucast_bytes;
  853. struct regpair sent_mcast_bytes;
  854. struct regpair sent_bcast_bytes;
  855. struct regpair sent_ucast_pkts;
  856. struct regpair sent_mcast_pkts;
  857. struct regpair sent_bcast_pkts;
  858. struct regpair error_drop_pkts;
  859. };
  860. /* ETH Rx producers data */
  861. struct eth_rx_rate_limit {
  862. __le16 mult;
  863. __le16 cnst;
  864. u8 add_sub_cnst;
  865. u8 reserved0;
  866. __le16 reserved1;
  867. };
  868. struct eth_ustorm_per_pf_stat {
  869. struct regpair rcv_lb_ucast_bytes;
  870. struct regpair rcv_lb_mcast_bytes;
  871. struct regpair rcv_lb_bcast_bytes;
  872. struct regpair rcv_lb_ucast_pkts;
  873. struct regpair rcv_lb_mcast_pkts;
  874. struct regpair rcv_lb_bcast_pkts;
  875. struct regpair rcv_gre_bytes;
  876. struct regpair rcv_vxlan_bytes;
  877. struct regpair rcv_geneve_bytes;
  878. struct regpair rcv_gre_pkts;
  879. struct regpair rcv_vxlan_pkts;
  880. struct regpair rcv_geneve_pkts;
  881. };
  882. struct eth_ustorm_per_queue_stat {
  883. struct regpair rcv_ucast_bytes;
  884. struct regpair rcv_mcast_bytes;
  885. struct regpair rcv_bcast_bytes;
  886. struct regpair rcv_ucast_pkts;
  887. struct regpair rcv_mcast_pkts;
  888. struct regpair rcv_bcast_pkts;
  889. };
  890. /* Event Ring VF-PF Channel data */
  891. struct vf_pf_channel_eqe_data {
  892. struct regpair msg_addr;
  893. };
  894. /* Event Ring malicious VF data */
  895. struct malicious_vf_eqe_data {
  896. u8 vf_id;
  897. u8 err_id;
  898. __le16 reserved[3];
  899. };
  900. /* Event Ring initial cleanup data */
  901. struct initial_cleanup_eqe_data {
  902. u8 vf_id;
  903. u8 reserved[7];
  904. };
  905. /* Event Data Union */
  906. union event_ring_data {
  907. u8 bytes[8];
  908. struct vf_pf_channel_eqe_data vf_pf_channel;
  909. struct iscsi_eqe_data iscsi_info;
  910. struct iscsi_connect_done_results iscsi_conn_done_info;
  911. union rdma_eqe_data rdma_data;
  912. struct malicious_vf_eqe_data malicious_vf;
  913. struct initial_cleanup_eqe_data vf_init_cleanup;
  914. };
  915. /* Event Ring Entry */
  916. struct event_ring_entry {
  917. u8 protocol_id;
  918. u8 opcode;
  919. __le16 reserved0;
  920. __le16 echo;
  921. u8 fw_return_code;
  922. u8 flags;
  923. #define EVENT_RING_ENTRY_ASYNC_MASK 0x1
  924. #define EVENT_RING_ENTRY_ASYNC_SHIFT 0
  925. #define EVENT_RING_ENTRY_RESERVED1_MASK 0x7F
  926. #define EVENT_RING_ENTRY_RESERVED1_SHIFT 1
  927. union event_ring_data data;
  928. };
  929. /* Event Ring Next Page Address */
  930. struct event_ring_next_addr {
  931. struct regpair addr;
  932. __le32 reserved[2];
  933. };
  934. /* Event Ring Element */
  935. union event_ring_element {
  936. struct event_ring_entry entry;
  937. struct event_ring_next_addr next_addr;
  938. };
  939. /* Ports mode */
  940. enum fw_flow_ctrl_mode {
  941. flow_ctrl_pause,
  942. flow_ctrl_pfc,
  943. MAX_FW_FLOW_CTRL_MODE
  944. };
  945. /* GFT profile type */
  946. enum gft_profile_type {
  947. GFT_PROFILE_TYPE_4_TUPLE,
  948. GFT_PROFILE_TYPE_L4_DST_PORT,
  949. GFT_PROFILE_TYPE_IP_DST_ADDR,
  950. GFT_PROFILE_TYPE_IP_SRC_ADDR,
  951. GFT_PROFILE_TYPE_TUNNEL_TYPE,
  952. MAX_GFT_PROFILE_TYPE
  953. };
  954. /* Major and Minor hsi Versions */
  955. struct hsi_fp_ver_struct {
  956. u8 minor_ver_arr[2];
  957. u8 major_ver_arr[2];
  958. };
  959. enum iwarp_ll2_tx_queues {
  960. IWARP_LL2_IN_ORDER_TX_QUEUE = 1,
  961. IWARP_LL2_ALIGNED_TX_QUEUE,
  962. IWARP_LL2_ALIGNED_RIGHT_TRIMMED_TX_QUEUE,
  963. IWARP_LL2_ERROR,
  964. MAX_IWARP_LL2_TX_QUEUES
  965. };
  966. /* Malicious VF error ID */
  967. enum malicious_vf_error_id {
  968. MALICIOUS_VF_NO_ERROR,
  969. VF_PF_CHANNEL_NOT_READY,
  970. VF_ZONE_MSG_NOT_VALID,
  971. VF_ZONE_FUNC_NOT_ENABLED,
  972. ETH_PACKET_TOO_SMALL,
  973. ETH_ILLEGAL_VLAN_MODE,
  974. ETH_MTU_VIOLATION,
  975. ETH_ILLEGAL_INBAND_TAGS,
  976. ETH_VLAN_INSERT_AND_INBAND_VLAN,
  977. ETH_ILLEGAL_NBDS,
  978. ETH_FIRST_BD_WO_SOP,
  979. ETH_INSUFFICIENT_BDS,
  980. ETH_ILLEGAL_LSO_HDR_NBDS,
  981. ETH_ILLEGAL_LSO_MSS,
  982. ETH_ZERO_SIZE_BD,
  983. ETH_ILLEGAL_LSO_HDR_LEN,
  984. ETH_INSUFFICIENT_PAYLOAD,
  985. ETH_EDPM_OUT_OF_SYNC,
  986. ETH_TUNN_IPV6_EXT_NBD_ERR,
  987. ETH_CONTROL_PACKET_VIOLATION,
  988. ETH_ANTI_SPOOFING_ERR,
  989. ETH_PACKET_SIZE_TOO_LARGE,
  990. MAX_MALICIOUS_VF_ERROR_ID
  991. };
  992. /* Mstorm non-triggering VF zone */
  993. struct mstorm_non_trigger_vf_zone {
  994. struct eth_mstorm_per_queue_stat eth_queue_stat;
  995. struct eth_rx_prod_data eth_rx_queue_producers[ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD];
  996. };
  997. /* Mstorm VF zone */
  998. struct mstorm_vf_zone {
  999. struct mstorm_non_trigger_vf_zone non_trigger;
  1000. };
  1001. /* vlan header including TPID and TCI fields */
  1002. struct vlan_header {
  1003. __le16 tpid;
  1004. __le16 tci;
  1005. };
  1006. /* outer tag configurations */
  1007. struct outer_tag_config_struct {
  1008. u8 enable_stag_pri_change;
  1009. u8 pri_map_valid;
  1010. u8 reserved[2];
  1011. struct vlan_header outer_tag;
  1012. u8 inner_to_outer_pri_map[8];
  1013. };
  1014. /* personality per PF */
  1015. enum personality_type {
  1016. BAD_PERSONALITY_TYP,
  1017. PERSONALITY_ISCSI,
  1018. PERSONALITY_FCOE,
  1019. PERSONALITY_RDMA_AND_ETH,
  1020. PERSONALITY_RDMA,
  1021. PERSONALITY_CORE,
  1022. PERSONALITY_ETH,
  1023. PERSONALITY_RESERVED,
  1024. MAX_PERSONALITY_TYPE
  1025. };
  1026. /* tunnel configuration */
  1027. struct pf_start_tunnel_config {
  1028. u8 set_vxlan_udp_port_flg;
  1029. u8 set_geneve_udp_port_flg;
  1030. u8 tunnel_clss_vxlan;
  1031. u8 tunnel_clss_l2geneve;
  1032. u8 tunnel_clss_ipgeneve;
  1033. u8 tunnel_clss_l2gre;
  1034. u8 tunnel_clss_ipgre;
  1035. u8 reserved;
  1036. __le16 vxlan_udp_port;
  1037. __le16 geneve_udp_port;
  1038. };
  1039. /* Ramrod data for PF start ramrod */
  1040. struct pf_start_ramrod_data {
  1041. struct regpair event_ring_pbl_addr;
  1042. struct regpair consolid_q_pbl_addr;
  1043. struct pf_start_tunnel_config tunnel_config;
  1044. __le16 event_ring_sb_id;
  1045. u8 base_vf_id;
  1046. u8 num_vfs;
  1047. u8 event_ring_num_pages;
  1048. u8 event_ring_sb_index;
  1049. u8 path_id;
  1050. u8 warning_as_error;
  1051. u8 dont_log_ramrods;
  1052. u8 personality;
  1053. __le16 log_type_mask;
  1054. u8 mf_mode;
  1055. u8 integ_phase;
  1056. u8 allow_npar_tx_switching;
  1057. u8 reserved0;
  1058. struct hsi_fp_ver_struct hsi_fp_ver;
  1059. struct outer_tag_config_struct outer_tag_config;
  1060. };
  1061. /* Data for port update ramrod */
  1062. struct protocol_dcb_data {
  1063. u8 dcb_enable_flag;
  1064. u8 dscp_enable_flag;
  1065. u8 dcb_priority;
  1066. u8 dcb_tc;
  1067. u8 dscp_val;
  1068. u8 dcb_dont_add_vlan0;
  1069. };
  1070. /* Update tunnel configuration */
  1071. struct pf_update_tunnel_config {
  1072. u8 update_rx_pf_clss;
  1073. u8 update_rx_def_ucast_clss;
  1074. u8 update_rx_def_non_ucast_clss;
  1075. u8 set_vxlan_udp_port_flg;
  1076. u8 set_geneve_udp_port_flg;
  1077. u8 tunnel_clss_vxlan;
  1078. u8 tunnel_clss_l2geneve;
  1079. u8 tunnel_clss_ipgeneve;
  1080. u8 tunnel_clss_l2gre;
  1081. u8 tunnel_clss_ipgre;
  1082. __le16 vxlan_udp_port;
  1083. __le16 geneve_udp_port;
  1084. __le16 reserved;
  1085. };
  1086. /* Data for port update ramrod */
  1087. struct pf_update_ramrod_data {
  1088. u8 update_eth_dcb_data_mode;
  1089. u8 update_fcoe_dcb_data_mode;
  1090. u8 update_iscsi_dcb_data_mode;
  1091. u8 update_roce_dcb_data_mode;
  1092. u8 update_rroce_dcb_data_mode;
  1093. u8 update_iwarp_dcb_data_mode;
  1094. u8 update_mf_vlan_flag;
  1095. u8 update_enable_stag_pri_change;
  1096. struct protocol_dcb_data eth_dcb_data;
  1097. struct protocol_dcb_data fcoe_dcb_data;
  1098. struct protocol_dcb_data iscsi_dcb_data;
  1099. struct protocol_dcb_data roce_dcb_data;
  1100. struct protocol_dcb_data rroce_dcb_data;
  1101. struct protocol_dcb_data iwarp_dcb_data;
  1102. __le16 mf_vlan;
  1103. u8 enable_stag_pri_change;
  1104. u8 reserved;
  1105. struct pf_update_tunnel_config tunnel_config;
  1106. };
  1107. /* Ports mode */
  1108. enum ports_mode {
  1109. ENGX2_PORTX1,
  1110. ENGX2_PORTX2,
  1111. ENGX1_PORTX1,
  1112. ENGX1_PORTX2,
  1113. ENGX1_PORTX4,
  1114. MAX_PORTS_MODE
  1115. };
  1116. /* use to index in hsi_fp_[major|minor]_ver_arr per protocol */
  1117. enum protocol_version_array_key {
  1118. ETH_VER_KEY = 0,
  1119. ROCE_VER_KEY,
  1120. MAX_PROTOCOL_VERSION_ARRAY_KEY
  1121. };
  1122. /* RDMA TX Stats */
  1123. struct rdma_sent_stats {
  1124. struct regpair sent_bytes;
  1125. struct regpair sent_pkts;
  1126. };
  1127. /* Pstorm non-triggering VF zone */
  1128. struct pstorm_non_trigger_vf_zone {
  1129. struct eth_pstorm_per_queue_stat eth_queue_stat;
  1130. struct rdma_sent_stats rdma_stats;
  1131. };
  1132. /* Pstorm VF zone */
  1133. struct pstorm_vf_zone {
  1134. struct pstorm_non_trigger_vf_zone non_trigger;
  1135. struct regpair reserved[7];
  1136. };
  1137. /* Ramrod Header of SPQE */
  1138. struct ramrod_header {
  1139. __le32 cid;
  1140. u8 cmd_id;
  1141. u8 protocol_id;
  1142. __le16 echo;
  1143. };
  1144. /* RDMA RX Stats */
  1145. struct rdma_rcv_stats {
  1146. struct regpair rcv_bytes;
  1147. struct regpair rcv_pkts;
  1148. };
  1149. /* Data for update QCN/DCQCN RL ramrod */
  1150. struct rl_update_ramrod_data {
  1151. u8 qcn_update_param_flg;
  1152. u8 dcqcn_update_param_flg;
  1153. u8 rl_init_flg;
  1154. u8 rl_start_flg;
  1155. u8 rl_stop_flg;
  1156. u8 rl_id_first;
  1157. u8 rl_id_last;
  1158. u8 rl_dc_qcn_flg;
  1159. __le32 rl_bc_rate;
  1160. __le16 rl_max_rate;
  1161. __le16 rl_r_ai;
  1162. __le16 rl_r_hai;
  1163. __le16 dcqcn_g;
  1164. __le32 dcqcn_k_us;
  1165. __le32 dcqcn_timeuot_us;
  1166. __le32 qcn_timeuot_us;
  1167. __le32 reserved[2];
  1168. };
  1169. /* Slowpath Element (SPQE) */
  1170. struct slow_path_element {
  1171. struct ramrod_header hdr;
  1172. struct regpair data_ptr;
  1173. };
  1174. /* Tstorm non-triggering VF zone */
  1175. struct tstorm_non_trigger_vf_zone {
  1176. struct rdma_rcv_stats rdma_stats;
  1177. };
  1178. struct tstorm_per_port_stat {
  1179. struct regpair trunc_error_discard;
  1180. struct regpair mac_error_discard;
  1181. struct regpair mftag_filter_discard;
  1182. struct regpair eth_mac_filter_discard;
  1183. struct regpair ll2_mac_filter_discard;
  1184. struct regpair ll2_conn_disabled_discard;
  1185. struct regpair iscsi_irregular_pkt;
  1186. struct regpair fcoe_irregular_pkt;
  1187. struct regpair roce_irregular_pkt;
  1188. struct regpair iwarp_irregular_pkt;
  1189. struct regpair eth_irregular_pkt;
  1190. struct regpair toe_irregular_pkt;
  1191. struct regpair preroce_irregular_pkt;
  1192. struct regpair eth_gre_tunn_filter_discard;
  1193. struct regpair eth_vxlan_tunn_filter_discard;
  1194. struct regpair eth_geneve_tunn_filter_discard;
  1195. struct regpair eth_gft_drop_pkt;
  1196. };
  1197. /* Tstorm VF zone */
  1198. struct tstorm_vf_zone {
  1199. struct tstorm_non_trigger_vf_zone non_trigger;
  1200. };
  1201. /* Tunnel classification scheme */
  1202. enum tunnel_clss {
  1203. TUNNEL_CLSS_MAC_VLAN = 0,
  1204. TUNNEL_CLSS_MAC_VNI,
  1205. TUNNEL_CLSS_INNER_MAC_VLAN,
  1206. TUNNEL_CLSS_INNER_MAC_VNI,
  1207. TUNNEL_CLSS_MAC_VLAN_DUAL_STAGE,
  1208. MAX_TUNNEL_CLSS
  1209. };
  1210. /* Ustorm non-triggering VF zone */
  1211. struct ustorm_non_trigger_vf_zone {
  1212. struct eth_ustorm_per_queue_stat eth_queue_stat;
  1213. struct regpair vf_pf_msg_addr;
  1214. };
  1215. /* Ustorm triggering VF zone */
  1216. struct ustorm_trigger_vf_zone {
  1217. u8 vf_pf_msg_valid;
  1218. u8 reserved[7];
  1219. };
  1220. /* Ustorm VF zone */
  1221. struct ustorm_vf_zone {
  1222. struct ustorm_non_trigger_vf_zone non_trigger;
  1223. struct ustorm_trigger_vf_zone trigger;
  1224. };
  1225. /* VF-PF channel data */
  1226. struct vf_pf_channel_data {
  1227. __le32 ready;
  1228. u8 valid;
  1229. u8 reserved0;
  1230. __le16 reserved1;
  1231. };
  1232. /* Ramrod data for VF start ramrod */
  1233. struct vf_start_ramrod_data {
  1234. u8 vf_id;
  1235. u8 enable_flr_ack;
  1236. __le16 opaque_fid;
  1237. u8 personality;
  1238. u8 reserved[7];
  1239. struct hsi_fp_ver_struct hsi_fp_ver;
  1240. };
  1241. /* Ramrod data for VF start ramrod */
  1242. struct vf_stop_ramrod_data {
  1243. u8 vf_id;
  1244. u8 reserved0;
  1245. __le16 reserved1;
  1246. __le32 reserved2;
  1247. };
  1248. /* VF zone size mode */
  1249. enum vf_zone_size_mode {
  1250. VF_ZONE_SIZE_MODE_DEFAULT,
  1251. VF_ZONE_SIZE_MODE_DOUBLE,
  1252. VF_ZONE_SIZE_MODE_QUAD,
  1253. MAX_VF_ZONE_SIZE_MODE
  1254. };
  1255. /* Attentions status block */
  1256. struct atten_status_block {
  1257. __le32 atten_bits;
  1258. __le32 atten_ack;
  1259. __le16 reserved0;
  1260. __le16 sb_index;
  1261. __le32 reserved1;
  1262. };
  1263. /* DMAE command */
  1264. struct dmae_cmd {
  1265. __le32 opcode;
  1266. #define DMAE_CMD_SRC_MASK 0x1
  1267. #define DMAE_CMD_SRC_SHIFT 0
  1268. #define DMAE_CMD_DST_MASK 0x3
  1269. #define DMAE_CMD_DST_SHIFT 1
  1270. #define DMAE_CMD_C_DST_MASK 0x1
  1271. #define DMAE_CMD_C_DST_SHIFT 3
  1272. #define DMAE_CMD_CRC_RESET_MASK 0x1
  1273. #define DMAE_CMD_CRC_RESET_SHIFT 4
  1274. #define DMAE_CMD_SRC_ADDR_RESET_MASK 0x1
  1275. #define DMAE_CMD_SRC_ADDR_RESET_SHIFT 5
  1276. #define DMAE_CMD_DST_ADDR_RESET_MASK 0x1
  1277. #define DMAE_CMD_DST_ADDR_RESET_SHIFT 6
  1278. #define DMAE_CMD_COMP_FUNC_MASK 0x1
  1279. #define DMAE_CMD_COMP_FUNC_SHIFT 7
  1280. #define DMAE_CMD_COMP_WORD_EN_MASK 0x1
  1281. #define DMAE_CMD_COMP_WORD_EN_SHIFT 8
  1282. #define DMAE_CMD_COMP_CRC_EN_MASK 0x1
  1283. #define DMAE_CMD_COMP_CRC_EN_SHIFT 9
  1284. #define DMAE_CMD_COMP_CRC_OFFSET_MASK 0x7
  1285. #define DMAE_CMD_COMP_CRC_OFFSET_SHIFT 10
  1286. #define DMAE_CMD_RESERVED1_MASK 0x1
  1287. #define DMAE_CMD_RESERVED1_SHIFT 13
  1288. #define DMAE_CMD_ENDIANITY_MODE_MASK 0x3
  1289. #define DMAE_CMD_ENDIANITY_MODE_SHIFT 14
  1290. #define DMAE_CMD_ERR_HANDLING_MASK 0x3
  1291. #define DMAE_CMD_ERR_HANDLING_SHIFT 16
  1292. #define DMAE_CMD_PORT_ID_MASK 0x3
  1293. #define DMAE_CMD_PORT_ID_SHIFT 18
  1294. #define DMAE_CMD_SRC_PF_ID_MASK 0xF
  1295. #define DMAE_CMD_SRC_PF_ID_SHIFT 20
  1296. #define DMAE_CMD_DST_PF_ID_MASK 0xF
  1297. #define DMAE_CMD_DST_PF_ID_SHIFT 24
  1298. #define DMAE_CMD_SRC_VF_ID_VALID_MASK 0x1
  1299. #define DMAE_CMD_SRC_VF_ID_VALID_SHIFT 28
  1300. #define DMAE_CMD_DST_VF_ID_VALID_MASK 0x1
  1301. #define DMAE_CMD_DST_VF_ID_VALID_SHIFT 29
  1302. #define DMAE_CMD_RESERVED2_MASK 0x3
  1303. #define DMAE_CMD_RESERVED2_SHIFT 30
  1304. __le32 src_addr_lo;
  1305. __le32 src_addr_hi;
  1306. __le32 dst_addr_lo;
  1307. __le32 dst_addr_hi;
  1308. __le16 length_dw;
  1309. __le16 opcode_b;
  1310. #define DMAE_CMD_SRC_VF_ID_MASK 0xFF
  1311. #define DMAE_CMD_SRC_VF_ID_SHIFT 0
  1312. #define DMAE_CMD_DST_VF_ID_MASK 0xFF
  1313. #define DMAE_CMD_DST_VF_ID_SHIFT 8
  1314. __le32 comp_addr_lo;
  1315. __le32 comp_addr_hi;
  1316. __le32 comp_val;
  1317. __le32 crc32;
  1318. __le32 crc_32_c;
  1319. __le16 crc16;
  1320. __le16 crc16_c;
  1321. __le16 crc10;
  1322. __le16 reserved;
  1323. __le16 xsum16;
  1324. __le16 xsum8;
  1325. };
  1326. enum dmae_cmd_comp_crc_en_enum {
  1327. dmae_cmd_comp_crc_disabled,
  1328. dmae_cmd_comp_crc_enabled,
  1329. MAX_DMAE_CMD_COMP_CRC_EN_ENUM
  1330. };
  1331. enum dmae_cmd_comp_func_enum {
  1332. dmae_cmd_comp_func_to_src,
  1333. dmae_cmd_comp_func_to_dst,
  1334. MAX_DMAE_CMD_COMP_FUNC_ENUM
  1335. };
  1336. enum dmae_cmd_comp_word_en_enum {
  1337. dmae_cmd_comp_word_disabled,
  1338. dmae_cmd_comp_word_enabled,
  1339. MAX_DMAE_CMD_COMP_WORD_EN_ENUM
  1340. };
  1341. enum dmae_cmd_c_dst_enum {
  1342. dmae_cmd_c_dst_pcie,
  1343. dmae_cmd_c_dst_grc,
  1344. MAX_DMAE_CMD_C_DST_ENUM
  1345. };
  1346. enum dmae_cmd_dst_enum {
  1347. dmae_cmd_dst_none_0,
  1348. dmae_cmd_dst_pcie,
  1349. dmae_cmd_dst_grc,
  1350. dmae_cmd_dst_none_3,
  1351. MAX_DMAE_CMD_DST_ENUM
  1352. };
  1353. enum dmae_cmd_error_handling_enum {
  1354. dmae_cmd_error_handling_send_regular_comp,
  1355. dmae_cmd_error_handling_send_comp_with_err,
  1356. dmae_cmd_error_handling_dont_send_comp,
  1357. MAX_DMAE_CMD_ERROR_HANDLING_ENUM
  1358. };
  1359. enum dmae_cmd_src_enum {
  1360. dmae_cmd_src_pcie,
  1361. dmae_cmd_src_grc,
  1362. MAX_DMAE_CMD_SRC_ENUM
  1363. };
  1364. struct e4_mstorm_core_conn_ag_ctx {
  1365. u8 byte0;
  1366. u8 byte1;
  1367. u8 flags0;
  1368. #define E4_MSTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1
  1369. #define E4_MSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0
  1370. #define E4_MSTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1
  1371. #define E4_MSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1
  1372. #define E4_MSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3
  1373. #define E4_MSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 2
  1374. #define E4_MSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3
  1375. #define E4_MSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 4
  1376. #define E4_MSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3
  1377. #define E4_MSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 6
  1378. u8 flags1;
  1379. #define E4_MSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1
  1380. #define E4_MSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 0
  1381. #define E4_MSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1
  1382. #define E4_MSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 1
  1383. #define E4_MSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1
  1384. #define E4_MSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 2
  1385. #define E4_MSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1
  1386. #define E4_MSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3
  1387. #define E4_MSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1
  1388. #define E4_MSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4
  1389. #define E4_MSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1
  1390. #define E4_MSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5
  1391. #define E4_MSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1
  1392. #define E4_MSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6
  1393. #define E4_MSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1
  1394. #define E4_MSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7
  1395. __le16 word0;
  1396. __le16 word1;
  1397. __le32 reg0;
  1398. __le32 reg1;
  1399. };
  1400. struct e4_ystorm_core_conn_ag_ctx {
  1401. u8 byte0;
  1402. u8 byte1;
  1403. u8 flags0;
  1404. #define E4_YSTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1
  1405. #define E4_YSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0
  1406. #define E4_YSTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1
  1407. #define E4_YSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1
  1408. #define E4_YSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3
  1409. #define E4_YSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 2
  1410. #define E4_YSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3
  1411. #define E4_YSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 4
  1412. #define E4_YSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3
  1413. #define E4_YSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 6
  1414. u8 flags1;
  1415. #define E4_YSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1
  1416. #define E4_YSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 0
  1417. #define E4_YSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1
  1418. #define E4_YSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 1
  1419. #define E4_YSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1
  1420. #define E4_YSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 2
  1421. #define E4_YSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1
  1422. #define E4_YSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 3
  1423. #define E4_YSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1
  1424. #define E4_YSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 4
  1425. #define E4_YSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1
  1426. #define E4_YSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 5
  1427. #define E4_YSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1
  1428. #define E4_YSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 6
  1429. #define E4_YSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1
  1430. #define E4_YSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 7
  1431. u8 byte2;
  1432. u8 byte3;
  1433. __le16 word0;
  1434. __le32 reg0;
  1435. __le32 reg1;
  1436. __le16 word1;
  1437. __le16 word2;
  1438. __le16 word3;
  1439. __le16 word4;
  1440. __le32 reg2;
  1441. __le32 reg3;
  1442. };
  1443. /* IGU cleanup command */
  1444. struct igu_cleanup {
  1445. __le32 sb_id_and_flags;
  1446. #define IGU_CLEANUP_RESERVED0_MASK 0x7FFFFFF
  1447. #define IGU_CLEANUP_RESERVED0_SHIFT 0
  1448. #define IGU_CLEANUP_CLEANUP_SET_MASK 0x1
  1449. #define IGU_CLEANUP_CLEANUP_SET_SHIFT 27
  1450. #define IGU_CLEANUP_CLEANUP_TYPE_MASK 0x7
  1451. #define IGU_CLEANUP_CLEANUP_TYPE_SHIFT 28
  1452. #define IGU_CLEANUP_COMMAND_TYPE_MASK 0x1
  1453. #define IGU_CLEANUP_COMMAND_TYPE_SHIFT 31
  1454. __le32 reserved1;
  1455. };
  1456. /* IGU firmware driver command */
  1457. union igu_command {
  1458. struct igu_prod_cons_update prod_cons_update;
  1459. struct igu_cleanup cleanup;
  1460. };
  1461. /* IGU firmware driver command */
  1462. struct igu_command_reg_ctrl {
  1463. __le16 opaque_fid;
  1464. __le16 igu_command_reg_ctrl_fields;
  1465. #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_MASK 0xFFF
  1466. #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_SHIFT 0
  1467. #define IGU_COMMAND_REG_CTRL_RESERVED_MASK 0x7
  1468. #define IGU_COMMAND_REG_CTRL_RESERVED_SHIFT 12
  1469. #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_MASK 0x1
  1470. #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_SHIFT 15
  1471. };
  1472. /* IGU mapping line structure */
  1473. struct igu_mapping_line {
  1474. __le32 igu_mapping_line_fields;
  1475. #define IGU_MAPPING_LINE_VALID_MASK 0x1
  1476. #define IGU_MAPPING_LINE_VALID_SHIFT 0
  1477. #define IGU_MAPPING_LINE_VECTOR_NUMBER_MASK 0xFF
  1478. #define IGU_MAPPING_LINE_VECTOR_NUMBER_SHIFT 1
  1479. #define IGU_MAPPING_LINE_FUNCTION_NUMBER_MASK 0xFF
  1480. #define IGU_MAPPING_LINE_FUNCTION_NUMBER_SHIFT 9
  1481. #define IGU_MAPPING_LINE_PF_VALID_MASK 0x1
  1482. #define IGU_MAPPING_LINE_PF_VALID_SHIFT 17
  1483. #define IGU_MAPPING_LINE_IPS_GROUP_MASK 0x3F
  1484. #define IGU_MAPPING_LINE_IPS_GROUP_SHIFT 18
  1485. #define IGU_MAPPING_LINE_RESERVED_MASK 0xFF
  1486. #define IGU_MAPPING_LINE_RESERVED_SHIFT 24
  1487. };
  1488. /* IGU MSIX line structure */
  1489. struct igu_msix_vector {
  1490. struct regpair address;
  1491. __le32 data;
  1492. __le32 msix_vector_fields;
  1493. #define IGU_MSIX_VECTOR_MASK_BIT_MASK 0x1
  1494. #define IGU_MSIX_VECTOR_MASK_BIT_SHIFT 0
  1495. #define IGU_MSIX_VECTOR_RESERVED0_MASK 0x7FFF
  1496. #define IGU_MSIX_VECTOR_RESERVED0_SHIFT 1
  1497. #define IGU_MSIX_VECTOR_STEERING_TAG_MASK 0xFF
  1498. #define IGU_MSIX_VECTOR_STEERING_TAG_SHIFT 16
  1499. #define IGU_MSIX_VECTOR_RESERVED1_MASK 0xFF
  1500. #define IGU_MSIX_VECTOR_RESERVED1_SHIFT 24
  1501. };
  1502. /* per encapsulation type enabling flags */
  1503. struct prs_reg_encapsulation_type_en {
  1504. u8 flags;
  1505. #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_MASK 0x1
  1506. #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_SHIFT 0
  1507. #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_MASK 0x1
  1508. #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_SHIFT 1
  1509. #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_MASK 0x1
  1510. #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_SHIFT 2
  1511. #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_MASK 0x1
  1512. #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_SHIFT 3
  1513. #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_MASK 0x1
  1514. #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_SHIFT 4
  1515. #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_MASK 0x1
  1516. #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_SHIFT 5
  1517. #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_MASK 0x3
  1518. #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_SHIFT 6
  1519. };
  1520. enum pxp_tph_st_hint {
  1521. TPH_ST_HINT_BIDIR,
  1522. TPH_ST_HINT_REQUESTER,
  1523. TPH_ST_HINT_TARGET,
  1524. TPH_ST_HINT_TARGET_PRIO,
  1525. MAX_PXP_TPH_ST_HINT
  1526. };
  1527. /* QM hardware structure of enable bypass credit mask */
  1528. struct qm_rf_bypass_mask {
  1529. u8 flags;
  1530. #define QM_RF_BYPASS_MASK_LINEVOQ_MASK 0x1
  1531. #define QM_RF_BYPASS_MASK_LINEVOQ_SHIFT 0
  1532. #define QM_RF_BYPASS_MASK_RESERVED0_MASK 0x1
  1533. #define QM_RF_BYPASS_MASK_RESERVED0_SHIFT 1
  1534. #define QM_RF_BYPASS_MASK_PFWFQ_MASK 0x1
  1535. #define QM_RF_BYPASS_MASK_PFWFQ_SHIFT 2
  1536. #define QM_RF_BYPASS_MASK_VPWFQ_MASK 0x1
  1537. #define QM_RF_BYPASS_MASK_VPWFQ_SHIFT 3
  1538. #define QM_RF_BYPASS_MASK_PFRL_MASK 0x1
  1539. #define QM_RF_BYPASS_MASK_PFRL_SHIFT 4
  1540. #define QM_RF_BYPASS_MASK_VPQCNRL_MASK 0x1
  1541. #define QM_RF_BYPASS_MASK_VPQCNRL_SHIFT 5
  1542. #define QM_RF_BYPASS_MASK_FWPAUSE_MASK 0x1
  1543. #define QM_RF_BYPASS_MASK_FWPAUSE_SHIFT 6
  1544. #define QM_RF_BYPASS_MASK_RESERVED1_MASK 0x1
  1545. #define QM_RF_BYPASS_MASK_RESERVED1_SHIFT 7
  1546. };
  1547. /* QM hardware structure of opportunistic credit mask */
  1548. struct qm_rf_opportunistic_mask {
  1549. __le16 flags;
  1550. #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_MASK 0x1
  1551. #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_SHIFT 0
  1552. #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_MASK 0x1
  1553. #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_SHIFT 1
  1554. #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_MASK 0x1
  1555. #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_SHIFT 2
  1556. #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_MASK 0x1
  1557. #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_SHIFT 3
  1558. #define QM_RF_OPPORTUNISTIC_MASK_PFRL_MASK 0x1
  1559. #define QM_RF_OPPORTUNISTIC_MASK_PFRL_SHIFT 4
  1560. #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_MASK 0x1
  1561. #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_SHIFT 5
  1562. #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_MASK 0x1
  1563. #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_SHIFT 6
  1564. #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_MASK 0x1
  1565. #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_SHIFT 7
  1566. #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_MASK 0x1
  1567. #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_SHIFT 8
  1568. #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_MASK 0x7F
  1569. #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_SHIFT 9
  1570. };
  1571. /* QM hardware structure of QM map memory */
  1572. struct qm_rf_pq_map_e4 {
  1573. __le32 reg;
  1574. #define QM_RF_PQ_MAP_E4_PQ_VALID_MASK 0x1
  1575. #define QM_RF_PQ_MAP_E4_PQ_VALID_SHIFT 0
  1576. #define QM_RF_PQ_MAP_E4_RL_ID_MASK 0xFF
  1577. #define QM_RF_PQ_MAP_E4_RL_ID_SHIFT 1
  1578. #define QM_RF_PQ_MAP_E4_VP_PQ_ID_MASK 0x1FF
  1579. #define QM_RF_PQ_MAP_E4_VP_PQ_ID_SHIFT 9
  1580. #define QM_RF_PQ_MAP_E4_VOQ_MASK 0x1F
  1581. #define QM_RF_PQ_MAP_E4_VOQ_SHIFT 18
  1582. #define QM_RF_PQ_MAP_E4_WRR_WEIGHT_GROUP_MASK 0x3
  1583. #define QM_RF_PQ_MAP_E4_WRR_WEIGHT_GROUP_SHIFT 23
  1584. #define QM_RF_PQ_MAP_E4_RL_VALID_MASK 0x1
  1585. #define QM_RF_PQ_MAP_E4_RL_VALID_SHIFT 25
  1586. #define QM_RF_PQ_MAP_E4_RESERVED_MASK 0x3F
  1587. #define QM_RF_PQ_MAP_E4_RESERVED_SHIFT 26
  1588. };
  1589. /* Completion params for aggregated interrupt completion */
  1590. struct sdm_agg_int_comp_params {
  1591. __le16 params;
  1592. #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_MASK 0x3F
  1593. #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_SHIFT 0
  1594. #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_MASK 0x1
  1595. #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_SHIFT 6
  1596. #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_MASK 0x1FF
  1597. #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_SHIFT 7
  1598. };
  1599. /* SDM operation gen command (generate aggregative interrupt) */
  1600. struct sdm_op_gen {
  1601. __le32 command;
  1602. #define SDM_OP_GEN_COMP_PARAM_MASK 0xFFFF
  1603. #define SDM_OP_GEN_COMP_PARAM_SHIFT 0
  1604. #define SDM_OP_GEN_COMP_TYPE_MASK 0xF
  1605. #define SDM_OP_GEN_COMP_TYPE_SHIFT 16
  1606. #define SDM_OP_GEN_RESERVED_MASK 0xFFF
  1607. #define SDM_OP_GEN_RESERVED_SHIFT 20
  1608. };
  1609. /****************************************/
  1610. /* Debug Tools HSI constants and macros */
  1611. /****************************************/
  1612. enum block_addr {
  1613. GRCBASE_GRC = 0x50000,
  1614. GRCBASE_MISCS = 0x9000,
  1615. GRCBASE_MISC = 0x8000,
  1616. GRCBASE_DBU = 0xa000,
  1617. GRCBASE_PGLUE_B = 0x2a8000,
  1618. GRCBASE_CNIG = 0x218000,
  1619. GRCBASE_CPMU = 0x30000,
  1620. GRCBASE_NCSI = 0x40000,
  1621. GRCBASE_OPTE = 0x53000,
  1622. GRCBASE_BMB = 0x540000,
  1623. GRCBASE_PCIE = 0x54000,
  1624. GRCBASE_MCP = 0xe00000,
  1625. GRCBASE_MCP2 = 0x52000,
  1626. GRCBASE_PSWHST = 0x2a0000,
  1627. GRCBASE_PSWHST2 = 0x29e000,
  1628. GRCBASE_PSWRD = 0x29c000,
  1629. GRCBASE_PSWRD2 = 0x29d000,
  1630. GRCBASE_PSWWR = 0x29a000,
  1631. GRCBASE_PSWWR2 = 0x29b000,
  1632. GRCBASE_PSWRQ = 0x280000,
  1633. GRCBASE_PSWRQ2 = 0x240000,
  1634. GRCBASE_PGLCS = 0x0,
  1635. GRCBASE_DMAE = 0xc000,
  1636. GRCBASE_PTU = 0x560000,
  1637. GRCBASE_TCM = 0x1180000,
  1638. GRCBASE_MCM = 0x1200000,
  1639. GRCBASE_UCM = 0x1280000,
  1640. GRCBASE_XCM = 0x1000000,
  1641. GRCBASE_YCM = 0x1080000,
  1642. GRCBASE_PCM = 0x1100000,
  1643. GRCBASE_QM = 0x2f0000,
  1644. GRCBASE_TM = 0x2c0000,
  1645. GRCBASE_DORQ = 0x100000,
  1646. GRCBASE_BRB = 0x340000,
  1647. GRCBASE_SRC = 0x238000,
  1648. GRCBASE_PRS = 0x1f0000,
  1649. GRCBASE_TSDM = 0xfb0000,
  1650. GRCBASE_MSDM = 0xfc0000,
  1651. GRCBASE_USDM = 0xfd0000,
  1652. GRCBASE_XSDM = 0xf80000,
  1653. GRCBASE_YSDM = 0xf90000,
  1654. GRCBASE_PSDM = 0xfa0000,
  1655. GRCBASE_TSEM = 0x1700000,
  1656. GRCBASE_MSEM = 0x1800000,
  1657. GRCBASE_USEM = 0x1900000,
  1658. GRCBASE_XSEM = 0x1400000,
  1659. GRCBASE_YSEM = 0x1500000,
  1660. GRCBASE_PSEM = 0x1600000,
  1661. GRCBASE_RSS = 0x238800,
  1662. GRCBASE_TMLD = 0x4d0000,
  1663. GRCBASE_MULD = 0x4e0000,
  1664. GRCBASE_YULD = 0x4c8000,
  1665. GRCBASE_XYLD = 0x4c0000,
  1666. GRCBASE_PTLD = 0x5a0000,
  1667. GRCBASE_YPLD = 0x5c0000,
  1668. GRCBASE_PRM = 0x230000,
  1669. GRCBASE_PBF_PB1 = 0xda0000,
  1670. GRCBASE_PBF_PB2 = 0xda4000,
  1671. GRCBASE_RPB = 0x23c000,
  1672. GRCBASE_BTB = 0xdb0000,
  1673. GRCBASE_PBF = 0xd80000,
  1674. GRCBASE_RDIF = 0x300000,
  1675. GRCBASE_TDIF = 0x310000,
  1676. GRCBASE_CDU = 0x580000,
  1677. GRCBASE_CCFC = 0x2e0000,
  1678. GRCBASE_TCFC = 0x2d0000,
  1679. GRCBASE_IGU = 0x180000,
  1680. GRCBASE_CAU = 0x1c0000,
  1681. GRCBASE_RGFS = 0xf00000,
  1682. GRCBASE_RGSRC = 0x320000,
  1683. GRCBASE_TGFS = 0xd00000,
  1684. GRCBASE_TGSRC = 0x322000,
  1685. GRCBASE_UMAC = 0x51000,
  1686. GRCBASE_XMAC = 0x210000,
  1687. GRCBASE_DBG = 0x10000,
  1688. GRCBASE_NIG = 0x500000,
  1689. GRCBASE_WOL = 0x600000,
  1690. GRCBASE_BMBN = 0x610000,
  1691. GRCBASE_IPC = 0x20000,
  1692. GRCBASE_NWM = 0x800000,
  1693. GRCBASE_NWS = 0x700000,
  1694. GRCBASE_MS = 0x6a0000,
  1695. GRCBASE_PHY_PCIE = 0x620000,
  1696. GRCBASE_LED = 0x6b8000,
  1697. GRCBASE_AVS_WRAP = 0x6b0000,
  1698. GRCBASE_PXPREQBUS = 0x56000,
  1699. GRCBASE_MISC_AEU = 0x8000,
  1700. GRCBASE_BAR0_MAP = 0x1c00000,
  1701. MAX_BLOCK_ADDR
  1702. };
  1703. enum block_id {
  1704. BLOCK_GRC,
  1705. BLOCK_MISCS,
  1706. BLOCK_MISC,
  1707. BLOCK_DBU,
  1708. BLOCK_PGLUE_B,
  1709. BLOCK_CNIG,
  1710. BLOCK_CPMU,
  1711. BLOCK_NCSI,
  1712. BLOCK_OPTE,
  1713. BLOCK_BMB,
  1714. BLOCK_PCIE,
  1715. BLOCK_MCP,
  1716. BLOCK_MCP2,
  1717. BLOCK_PSWHST,
  1718. BLOCK_PSWHST2,
  1719. BLOCK_PSWRD,
  1720. BLOCK_PSWRD2,
  1721. BLOCK_PSWWR,
  1722. BLOCK_PSWWR2,
  1723. BLOCK_PSWRQ,
  1724. BLOCK_PSWRQ2,
  1725. BLOCK_PGLCS,
  1726. BLOCK_DMAE,
  1727. BLOCK_PTU,
  1728. BLOCK_TCM,
  1729. BLOCK_MCM,
  1730. BLOCK_UCM,
  1731. BLOCK_XCM,
  1732. BLOCK_YCM,
  1733. BLOCK_PCM,
  1734. BLOCK_QM,
  1735. BLOCK_TM,
  1736. BLOCK_DORQ,
  1737. BLOCK_BRB,
  1738. BLOCK_SRC,
  1739. BLOCK_PRS,
  1740. BLOCK_TSDM,
  1741. BLOCK_MSDM,
  1742. BLOCK_USDM,
  1743. BLOCK_XSDM,
  1744. BLOCK_YSDM,
  1745. BLOCK_PSDM,
  1746. BLOCK_TSEM,
  1747. BLOCK_MSEM,
  1748. BLOCK_USEM,
  1749. BLOCK_XSEM,
  1750. BLOCK_YSEM,
  1751. BLOCK_PSEM,
  1752. BLOCK_RSS,
  1753. BLOCK_TMLD,
  1754. BLOCK_MULD,
  1755. BLOCK_YULD,
  1756. BLOCK_XYLD,
  1757. BLOCK_PTLD,
  1758. BLOCK_YPLD,
  1759. BLOCK_PRM,
  1760. BLOCK_PBF_PB1,
  1761. BLOCK_PBF_PB2,
  1762. BLOCK_RPB,
  1763. BLOCK_BTB,
  1764. BLOCK_PBF,
  1765. BLOCK_RDIF,
  1766. BLOCK_TDIF,
  1767. BLOCK_CDU,
  1768. BLOCK_CCFC,
  1769. BLOCK_TCFC,
  1770. BLOCK_IGU,
  1771. BLOCK_CAU,
  1772. BLOCK_RGFS,
  1773. BLOCK_RGSRC,
  1774. BLOCK_TGFS,
  1775. BLOCK_TGSRC,
  1776. BLOCK_UMAC,
  1777. BLOCK_XMAC,
  1778. BLOCK_DBG,
  1779. BLOCK_NIG,
  1780. BLOCK_WOL,
  1781. BLOCK_BMBN,
  1782. BLOCK_IPC,
  1783. BLOCK_NWM,
  1784. BLOCK_NWS,
  1785. BLOCK_MS,
  1786. BLOCK_PHY_PCIE,
  1787. BLOCK_LED,
  1788. BLOCK_AVS_WRAP,
  1789. BLOCK_PXPREQBUS,
  1790. BLOCK_MISC_AEU,
  1791. BLOCK_BAR0_MAP,
  1792. MAX_BLOCK_ID
  1793. };
  1794. /* binary debug buffer types */
  1795. enum bin_dbg_buffer_type {
  1796. BIN_BUF_DBG_MODE_TREE,
  1797. BIN_BUF_DBG_DUMP_REG,
  1798. BIN_BUF_DBG_DUMP_MEM,
  1799. BIN_BUF_DBG_IDLE_CHK_REGS,
  1800. BIN_BUF_DBG_IDLE_CHK_IMMS,
  1801. BIN_BUF_DBG_IDLE_CHK_RULES,
  1802. BIN_BUF_DBG_IDLE_CHK_PARSING_DATA,
  1803. BIN_BUF_DBG_ATTN_BLOCKS,
  1804. BIN_BUF_DBG_ATTN_REGS,
  1805. BIN_BUF_DBG_ATTN_INDEXES,
  1806. BIN_BUF_DBG_ATTN_NAME_OFFSETS,
  1807. BIN_BUF_DBG_BUS_BLOCKS,
  1808. BIN_BUF_DBG_BUS_LINES,
  1809. BIN_BUF_DBG_BUS_BLOCKS_USER_DATA,
  1810. BIN_BUF_DBG_BUS_LINE_NAME_OFFSETS,
  1811. BIN_BUF_DBG_PARSING_STRINGS,
  1812. MAX_BIN_DBG_BUFFER_TYPE
  1813. };
  1814. /* Attention bit mapping */
  1815. struct dbg_attn_bit_mapping {
  1816. u16 data;
  1817. #define DBG_ATTN_BIT_MAPPING_VAL_MASK 0x7FFF
  1818. #define DBG_ATTN_BIT_MAPPING_VAL_SHIFT 0
  1819. #define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_MASK 0x1
  1820. #define DBG_ATTN_BIT_MAPPING_IS_UNUSED_BIT_CNT_SHIFT 15
  1821. };
  1822. /* Attention block per-type data */
  1823. struct dbg_attn_block_type_data {
  1824. u16 names_offset;
  1825. u16 reserved1;
  1826. u8 num_regs;
  1827. u8 reserved2;
  1828. u16 regs_offset;
  1829. };
  1830. /* Block attentions */
  1831. struct dbg_attn_block {
  1832. struct dbg_attn_block_type_data per_type_data[2];
  1833. };
  1834. /* Attention register result */
  1835. struct dbg_attn_reg_result {
  1836. u32 data;
  1837. #define DBG_ATTN_REG_RESULT_STS_ADDRESS_MASK 0xFFFFFF
  1838. #define DBG_ATTN_REG_RESULT_STS_ADDRESS_SHIFT 0
  1839. #define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_MASK 0xFF
  1840. #define DBG_ATTN_REG_RESULT_NUM_REG_ATTN_SHIFT 24
  1841. u16 block_attn_offset;
  1842. u16 reserved;
  1843. u32 sts_val;
  1844. u32 mask_val;
  1845. };
  1846. /* Attention block result */
  1847. struct dbg_attn_block_result {
  1848. u8 block_id;
  1849. u8 data;
  1850. #define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_MASK 0x3
  1851. #define DBG_ATTN_BLOCK_RESULT_ATTN_TYPE_SHIFT 0
  1852. #define DBG_ATTN_BLOCK_RESULT_NUM_REGS_MASK 0x3F
  1853. #define DBG_ATTN_BLOCK_RESULT_NUM_REGS_SHIFT 2
  1854. u16 names_offset;
  1855. struct dbg_attn_reg_result reg_results[15];
  1856. };
  1857. /* Mode header */
  1858. struct dbg_mode_hdr {
  1859. u16 data;
  1860. #define DBG_MODE_HDR_EVAL_MODE_MASK 0x1
  1861. #define DBG_MODE_HDR_EVAL_MODE_SHIFT 0
  1862. #define DBG_MODE_HDR_MODES_BUF_OFFSET_MASK 0x7FFF
  1863. #define DBG_MODE_HDR_MODES_BUF_OFFSET_SHIFT 1
  1864. };
  1865. /* Attention register */
  1866. struct dbg_attn_reg {
  1867. struct dbg_mode_hdr mode;
  1868. u16 block_attn_offset;
  1869. u32 data;
  1870. #define DBG_ATTN_REG_STS_ADDRESS_MASK 0xFFFFFF
  1871. #define DBG_ATTN_REG_STS_ADDRESS_SHIFT 0
  1872. #define DBG_ATTN_REG_NUM_REG_ATTN_MASK 0xFF
  1873. #define DBG_ATTN_REG_NUM_REG_ATTN_SHIFT 24
  1874. u32 sts_clr_address;
  1875. u32 mask_address;
  1876. };
  1877. /* Attention types */
  1878. enum dbg_attn_type {
  1879. ATTN_TYPE_INTERRUPT,
  1880. ATTN_TYPE_PARITY,
  1881. MAX_DBG_ATTN_TYPE
  1882. };
  1883. /* Debug Bus block data */
  1884. struct dbg_bus_block {
  1885. u8 num_of_lines;
  1886. u8 has_latency_events;
  1887. u16 lines_offset;
  1888. };
  1889. /* Debug Bus block user data */
  1890. struct dbg_bus_block_user_data {
  1891. u8 num_of_lines;
  1892. u8 has_latency_events;
  1893. u16 names_offset;
  1894. };
  1895. /* Block Debug line data */
  1896. struct dbg_bus_line {
  1897. u8 data;
  1898. #define DBG_BUS_LINE_NUM_OF_GROUPS_MASK 0xF
  1899. #define DBG_BUS_LINE_NUM_OF_GROUPS_SHIFT 0
  1900. #define DBG_BUS_LINE_IS_256B_MASK 0x1
  1901. #define DBG_BUS_LINE_IS_256B_SHIFT 4
  1902. #define DBG_BUS_LINE_RESERVED_MASK 0x7
  1903. #define DBG_BUS_LINE_RESERVED_SHIFT 5
  1904. u8 group_sizes;
  1905. };
  1906. /* Condition header for registers dump */
  1907. struct dbg_dump_cond_hdr {
  1908. struct dbg_mode_hdr mode; /* Mode header */
  1909. u8 block_id; /* block ID */
  1910. u8 data_size; /* size in dwords of the data following this header */
  1911. };
  1912. /* Memory data for registers dump */
  1913. struct dbg_dump_mem {
  1914. u32 dword0;
  1915. #define DBG_DUMP_MEM_ADDRESS_MASK 0xFFFFFF
  1916. #define DBG_DUMP_MEM_ADDRESS_SHIFT 0
  1917. #define DBG_DUMP_MEM_MEM_GROUP_ID_MASK 0xFF
  1918. #define DBG_DUMP_MEM_MEM_GROUP_ID_SHIFT 24
  1919. u32 dword1;
  1920. #define DBG_DUMP_MEM_LENGTH_MASK 0xFFFFFF
  1921. #define DBG_DUMP_MEM_LENGTH_SHIFT 0
  1922. #define DBG_DUMP_MEM_WIDE_BUS_MASK 0x1
  1923. #define DBG_DUMP_MEM_WIDE_BUS_SHIFT 24
  1924. #define DBG_DUMP_MEM_RESERVED_MASK 0x7F
  1925. #define DBG_DUMP_MEM_RESERVED_SHIFT 25
  1926. };
  1927. /* Register data for registers dump */
  1928. struct dbg_dump_reg {
  1929. u32 data;
  1930. #define DBG_DUMP_REG_ADDRESS_MASK 0x7FFFFF
  1931. #define DBG_DUMP_REG_ADDRESS_SHIFT 0
  1932. #define DBG_DUMP_REG_WIDE_BUS_MASK 0x1
  1933. #define DBG_DUMP_REG_WIDE_BUS_SHIFT 23
  1934. #define DBG_DUMP_REG_LENGTH_MASK 0xFF
  1935. #define DBG_DUMP_REG_LENGTH_SHIFT 24
  1936. };
  1937. /* Split header for registers dump */
  1938. struct dbg_dump_split_hdr {
  1939. u32 hdr;
  1940. #define DBG_DUMP_SPLIT_HDR_DATA_SIZE_MASK 0xFFFFFF
  1941. #define DBG_DUMP_SPLIT_HDR_DATA_SIZE_SHIFT 0
  1942. #define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_MASK 0xFF
  1943. #define DBG_DUMP_SPLIT_HDR_SPLIT_TYPE_ID_SHIFT 24
  1944. };
  1945. /* Condition header for idle check */
  1946. struct dbg_idle_chk_cond_hdr {
  1947. struct dbg_mode_hdr mode; /* Mode header */
  1948. u16 data_size; /* size in dwords of the data following this header */
  1949. };
  1950. /* Idle Check condition register */
  1951. struct dbg_idle_chk_cond_reg {
  1952. u32 data;
  1953. #define DBG_IDLE_CHK_COND_REG_ADDRESS_MASK 0x7FFFFF
  1954. #define DBG_IDLE_CHK_COND_REG_ADDRESS_SHIFT 0
  1955. #define DBG_IDLE_CHK_COND_REG_WIDE_BUS_MASK 0x1
  1956. #define DBG_IDLE_CHK_COND_REG_WIDE_BUS_SHIFT 23
  1957. #define DBG_IDLE_CHK_COND_REG_BLOCK_ID_MASK 0xFF
  1958. #define DBG_IDLE_CHK_COND_REG_BLOCK_ID_SHIFT 24
  1959. u16 num_entries;
  1960. u8 entry_size;
  1961. u8 start_entry;
  1962. };
  1963. /* Idle Check info register */
  1964. struct dbg_idle_chk_info_reg {
  1965. u32 data;
  1966. #define DBG_IDLE_CHK_INFO_REG_ADDRESS_MASK 0x7FFFFF
  1967. #define DBG_IDLE_CHK_INFO_REG_ADDRESS_SHIFT 0
  1968. #define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_MASK 0x1
  1969. #define DBG_IDLE_CHK_INFO_REG_WIDE_BUS_SHIFT 23
  1970. #define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_MASK 0xFF
  1971. #define DBG_IDLE_CHK_INFO_REG_BLOCK_ID_SHIFT 24
  1972. u16 size; /* register size in dwords */
  1973. struct dbg_mode_hdr mode; /* Mode header */
  1974. };
  1975. /* Idle Check register */
  1976. union dbg_idle_chk_reg {
  1977. struct dbg_idle_chk_cond_reg cond_reg; /* condition register */
  1978. struct dbg_idle_chk_info_reg info_reg; /* info register */
  1979. };
  1980. /* Idle Check result header */
  1981. struct dbg_idle_chk_result_hdr {
  1982. u16 rule_id; /* Failing rule index */
  1983. u16 mem_entry_id; /* Failing memory entry index */
  1984. u8 num_dumped_cond_regs; /* number of dumped condition registers */
  1985. u8 num_dumped_info_regs; /* number of dumped condition registers */
  1986. u8 severity; /* from dbg_idle_chk_severity_types enum */
  1987. u8 reserved;
  1988. };
  1989. /* Idle Check result register header */
  1990. struct dbg_idle_chk_result_reg_hdr {
  1991. u8 data;
  1992. #define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_MASK 0x1
  1993. #define DBG_IDLE_CHK_RESULT_REG_HDR_IS_MEM_SHIFT 0
  1994. #define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_MASK 0x7F
  1995. #define DBG_IDLE_CHK_RESULT_REG_HDR_REG_ID_SHIFT 1
  1996. u8 start_entry; /* index of the first checked entry */
  1997. u16 size; /* register size in dwords */
  1998. };
  1999. /* Idle Check rule */
  2000. struct dbg_idle_chk_rule {
  2001. u16 rule_id; /* Idle Check rule ID */
  2002. u8 severity; /* value from dbg_idle_chk_severity_types enum */
  2003. u8 cond_id; /* Condition ID */
  2004. u8 num_cond_regs; /* number of condition registers */
  2005. u8 num_info_regs; /* number of info registers */
  2006. u8 num_imms; /* number of immediates in the condition */
  2007. u8 reserved1;
  2008. u16 reg_offset; /* offset of this rules registers in the idle check
  2009. * register array (in dbg_idle_chk_reg units).
  2010. */
  2011. u16 imm_offset; /* offset of this rules immediate values in the
  2012. * immediate values array (in dwords).
  2013. */
  2014. };
  2015. /* Idle Check rule parsing data */
  2016. struct dbg_idle_chk_rule_parsing_data {
  2017. u32 data;
  2018. #define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_MASK 0x1
  2019. #define DBG_IDLE_CHK_RULE_PARSING_DATA_HAS_FW_MSG_SHIFT 0
  2020. #define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_MASK 0x7FFFFFFF
  2021. #define DBG_IDLE_CHK_RULE_PARSING_DATA_STR_OFFSET_SHIFT 1
  2022. };
  2023. /* Idle check severity types */
  2024. enum dbg_idle_chk_severity_types {
  2025. /* idle check failure should cause an error */
  2026. IDLE_CHK_SEVERITY_ERROR,
  2027. /* idle check failure should cause an error only if theres no traffic */
  2028. IDLE_CHK_SEVERITY_ERROR_NO_TRAFFIC,
  2029. /* idle check failure should cause a warning */
  2030. IDLE_CHK_SEVERITY_WARNING,
  2031. MAX_DBG_IDLE_CHK_SEVERITY_TYPES
  2032. };
  2033. /* Debug Bus block data */
  2034. struct dbg_bus_block_data {
  2035. u16 data;
  2036. #define DBG_BUS_BLOCK_DATA_ENABLE_MASK_MASK 0xF
  2037. #define DBG_BUS_BLOCK_DATA_ENABLE_MASK_SHIFT 0
  2038. #define DBG_BUS_BLOCK_DATA_RIGHT_SHIFT_MASK 0xF
  2039. #define DBG_BUS_BLOCK_DATA_RIGHT_SHIFT_SHIFT 4
  2040. #define DBG_BUS_BLOCK_DATA_FORCE_VALID_MASK_MASK 0xF
  2041. #define DBG_BUS_BLOCK_DATA_FORCE_VALID_MASK_SHIFT 8
  2042. #define DBG_BUS_BLOCK_DATA_FORCE_FRAME_MASK_MASK 0xF
  2043. #define DBG_BUS_BLOCK_DATA_FORCE_FRAME_MASK_SHIFT 12
  2044. u8 line_num;
  2045. u8 hw_id;
  2046. };
  2047. /* Debug Bus Clients */
  2048. enum dbg_bus_clients {
  2049. DBG_BUS_CLIENT_RBCN,
  2050. DBG_BUS_CLIENT_RBCP,
  2051. DBG_BUS_CLIENT_RBCR,
  2052. DBG_BUS_CLIENT_RBCT,
  2053. DBG_BUS_CLIENT_RBCU,
  2054. DBG_BUS_CLIENT_RBCF,
  2055. DBG_BUS_CLIENT_RBCX,
  2056. DBG_BUS_CLIENT_RBCS,
  2057. DBG_BUS_CLIENT_RBCH,
  2058. DBG_BUS_CLIENT_RBCZ,
  2059. DBG_BUS_CLIENT_OTHER_ENGINE,
  2060. DBG_BUS_CLIENT_TIMESTAMP,
  2061. DBG_BUS_CLIENT_CPU,
  2062. DBG_BUS_CLIENT_RBCY,
  2063. DBG_BUS_CLIENT_RBCQ,
  2064. DBG_BUS_CLIENT_RBCM,
  2065. DBG_BUS_CLIENT_RBCB,
  2066. DBG_BUS_CLIENT_RBCW,
  2067. DBG_BUS_CLIENT_RBCV,
  2068. MAX_DBG_BUS_CLIENTS
  2069. };
  2070. /* Debug Bus constraint operation types */
  2071. enum dbg_bus_constraint_ops {
  2072. DBG_BUS_CONSTRAINT_OP_EQ,
  2073. DBG_BUS_CONSTRAINT_OP_NE,
  2074. DBG_BUS_CONSTRAINT_OP_LT,
  2075. DBG_BUS_CONSTRAINT_OP_LTC,
  2076. DBG_BUS_CONSTRAINT_OP_LE,
  2077. DBG_BUS_CONSTRAINT_OP_LEC,
  2078. DBG_BUS_CONSTRAINT_OP_GT,
  2079. DBG_BUS_CONSTRAINT_OP_GTC,
  2080. DBG_BUS_CONSTRAINT_OP_GE,
  2081. DBG_BUS_CONSTRAINT_OP_GEC,
  2082. MAX_DBG_BUS_CONSTRAINT_OPS
  2083. };
  2084. /* Debug Bus trigger state data */
  2085. struct dbg_bus_trigger_state_data {
  2086. u8 data;
  2087. #define DBG_BUS_TRIGGER_STATE_DATA_BLOCK_SHIFTED_ENABLE_MASK_MASK 0xF
  2088. #define DBG_BUS_TRIGGER_STATE_DATA_BLOCK_SHIFTED_ENABLE_MASK_SHIFT 0
  2089. #define DBG_BUS_TRIGGER_STATE_DATA_CONSTRAINT_DWORD_MASK_MASK 0xF
  2090. #define DBG_BUS_TRIGGER_STATE_DATA_CONSTRAINT_DWORD_MASK_SHIFT 4
  2091. };
  2092. /* Debug Bus memory address */
  2093. struct dbg_bus_mem_addr {
  2094. u32 lo;
  2095. u32 hi;
  2096. };
  2097. /* Debug Bus PCI buffer data */
  2098. struct dbg_bus_pci_buf_data {
  2099. struct dbg_bus_mem_addr phys_addr; /* PCI buffer physical address */
  2100. struct dbg_bus_mem_addr virt_addr; /* PCI buffer virtual address */
  2101. u32 size; /* PCI buffer size in bytes */
  2102. };
  2103. /* Debug Bus Storm EID range filter params */
  2104. struct dbg_bus_storm_eid_range_params {
  2105. u8 min; /* Minimal event ID to filter on */
  2106. u8 max; /* Maximal event ID to filter on */
  2107. };
  2108. /* Debug Bus Storm EID mask filter params */
  2109. struct dbg_bus_storm_eid_mask_params {
  2110. u8 val; /* Event ID value */
  2111. u8 mask; /* Event ID mask. 1s in the mask = dont care bits. */
  2112. };
  2113. /* Debug Bus Storm EID filter params */
  2114. union dbg_bus_storm_eid_params {
  2115. struct dbg_bus_storm_eid_range_params range;
  2116. struct dbg_bus_storm_eid_mask_params mask;
  2117. };
  2118. /* Debug Bus Storm data */
  2119. struct dbg_bus_storm_data {
  2120. u8 enabled;
  2121. u8 mode;
  2122. u8 hw_id;
  2123. u8 eid_filter_en;
  2124. u8 eid_range_not_mask;
  2125. u8 cid_filter_en;
  2126. union dbg_bus_storm_eid_params eid_filter_params;
  2127. u32 cid;
  2128. };
  2129. /* Debug Bus data */
  2130. struct dbg_bus_data {
  2131. u32 app_version;
  2132. u8 state;
  2133. u8 hw_dwords;
  2134. u16 hw_id_mask;
  2135. u8 num_enabled_blocks;
  2136. u8 num_enabled_storms;
  2137. u8 target;
  2138. u8 one_shot_en;
  2139. u8 grc_input_en;
  2140. u8 timestamp_input_en;
  2141. u8 filter_en;
  2142. u8 adding_filter;
  2143. u8 filter_pre_trigger;
  2144. u8 filter_post_trigger;
  2145. u16 reserved;
  2146. u8 trigger_en;
  2147. struct dbg_bus_trigger_state_data trigger_states[3];
  2148. u8 next_trigger_state;
  2149. u8 next_constraint_id;
  2150. u8 unify_inputs;
  2151. u8 rcv_from_other_engine;
  2152. struct dbg_bus_pci_buf_data pci_buf;
  2153. struct dbg_bus_block_data blocks[88];
  2154. struct dbg_bus_storm_data storms[6];
  2155. };
  2156. /* Debug bus filter types */
  2157. enum dbg_bus_filter_types {
  2158. DBG_BUS_FILTER_TYPE_OFF,
  2159. DBG_BUS_FILTER_TYPE_PRE,
  2160. DBG_BUS_FILTER_TYPE_POST,
  2161. DBG_BUS_FILTER_TYPE_ON,
  2162. MAX_DBG_BUS_FILTER_TYPES
  2163. };
  2164. /* Debug bus frame modes */
  2165. enum dbg_bus_frame_modes {
  2166. DBG_BUS_FRAME_MODE_0HW_4ST = 0, /* 0 HW dwords, 4 Storm dwords */
  2167. DBG_BUS_FRAME_MODE_4HW_0ST = 3, /* 4 HW dwords, 0 Storm dwords */
  2168. DBG_BUS_FRAME_MODE_8HW_0ST = 4, /* 8 HW dwords, 0 Storm dwords */
  2169. MAX_DBG_BUS_FRAME_MODES
  2170. };
  2171. /* Debug bus other engine mode */
  2172. enum dbg_bus_other_engine_modes {
  2173. DBG_BUS_OTHER_ENGINE_MODE_NONE,
  2174. DBG_BUS_OTHER_ENGINE_MODE_DOUBLE_BW_TX,
  2175. DBG_BUS_OTHER_ENGINE_MODE_DOUBLE_BW_RX,
  2176. DBG_BUS_OTHER_ENGINE_MODE_CROSS_ENGINE_TX,
  2177. DBG_BUS_OTHER_ENGINE_MODE_CROSS_ENGINE_RX,
  2178. MAX_DBG_BUS_OTHER_ENGINE_MODES
  2179. };
  2180. /* Debug bus post-trigger recording types */
  2181. enum dbg_bus_post_trigger_types {
  2182. DBG_BUS_POST_TRIGGER_RECORD,
  2183. DBG_BUS_POST_TRIGGER_DROP,
  2184. MAX_DBG_BUS_POST_TRIGGER_TYPES
  2185. };
  2186. /* Debug bus pre-trigger recording types */
  2187. enum dbg_bus_pre_trigger_types {
  2188. DBG_BUS_PRE_TRIGGER_START_FROM_ZERO,
  2189. DBG_BUS_PRE_TRIGGER_NUM_CHUNKS,
  2190. DBG_BUS_PRE_TRIGGER_DROP,
  2191. MAX_DBG_BUS_PRE_TRIGGER_TYPES
  2192. };
  2193. /* Debug bus SEMI frame modes */
  2194. enum dbg_bus_semi_frame_modes {
  2195. DBG_BUS_SEMI_FRAME_MODE_0SLOW_4FAST = 0,
  2196. DBG_BUS_SEMI_FRAME_MODE_4SLOW_0FAST = 3,
  2197. MAX_DBG_BUS_SEMI_FRAME_MODES
  2198. };
  2199. /* Debug bus states */
  2200. enum dbg_bus_states {
  2201. DBG_BUS_STATE_IDLE,
  2202. DBG_BUS_STATE_READY,
  2203. DBG_BUS_STATE_RECORDING,
  2204. DBG_BUS_STATE_STOPPED,
  2205. MAX_DBG_BUS_STATES
  2206. };
  2207. /* Debug Bus Storm modes */
  2208. enum dbg_bus_storm_modes {
  2209. DBG_BUS_STORM_MODE_PRINTF,
  2210. DBG_BUS_STORM_MODE_PRAM_ADDR,
  2211. DBG_BUS_STORM_MODE_DRA_RW,
  2212. DBG_BUS_STORM_MODE_DRA_W,
  2213. DBG_BUS_STORM_MODE_LD_ST_ADDR,
  2214. DBG_BUS_STORM_MODE_DRA_FSM,
  2215. DBG_BUS_STORM_MODE_RH,
  2216. DBG_BUS_STORM_MODE_FOC,
  2217. DBG_BUS_STORM_MODE_EXT_STORE,
  2218. MAX_DBG_BUS_STORM_MODES
  2219. };
  2220. /* Debug bus target IDs */
  2221. enum dbg_bus_targets {
  2222. DBG_BUS_TARGET_ID_INT_BUF,
  2223. DBG_BUS_TARGET_ID_NIG,
  2224. DBG_BUS_TARGET_ID_PCI,
  2225. MAX_DBG_BUS_TARGETS
  2226. };
  2227. /* GRC Dump data */
  2228. struct dbg_grc_data {
  2229. u8 params_initialized;
  2230. u8 reserved1;
  2231. u16 reserved2;
  2232. u32 param_val[48];
  2233. };
  2234. /* Debug GRC params */
  2235. enum dbg_grc_params {
  2236. DBG_GRC_PARAM_DUMP_TSTORM,
  2237. DBG_GRC_PARAM_DUMP_MSTORM,
  2238. DBG_GRC_PARAM_DUMP_USTORM,
  2239. DBG_GRC_PARAM_DUMP_XSTORM,
  2240. DBG_GRC_PARAM_DUMP_YSTORM,
  2241. DBG_GRC_PARAM_DUMP_PSTORM,
  2242. DBG_GRC_PARAM_DUMP_REGS,
  2243. DBG_GRC_PARAM_DUMP_RAM,
  2244. DBG_GRC_PARAM_DUMP_PBUF,
  2245. DBG_GRC_PARAM_DUMP_IOR,
  2246. DBG_GRC_PARAM_DUMP_VFC,
  2247. DBG_GRC_PARAM_DUMP_CM_CTX,
  2248. DBG_GRC_PARAM_DUMP_PXP,
  2249. DBG_GRC_PARAM_DUMP_RSS,
  2250. DBG_GRC_PARAM_DUMP_CAU,
  2251. DBG_GRC_PARAM_DUMP_QM,
  2252. DBG_GRC_PARAM_DUMP_MCP,
  2253. DBG_GRC_PARAM_MCP_TRACE_META_SIZE,
  2254. DBG_GRC_PARAM_DUMP_CFC,
  2255. DBG_GRC_PARAM_DUMP_IGU,
  2256. DBG_GRC_PARAM_DUMP_BRB,
  2257. DBG_GRC_PARAM_DUMP_BTB,
  2258. DBG_GRC_PARAM_DUMP_BMB,
  2259. DBG_GRC_PARAM_DUMP_NIG,
  2260. DBG_GRC_PARAM_DUMP_MULD,
  2261. DBG_GRC_PARAM_DUMP_PRS,
  2262. DBG_GRC_PARAM_DUMP_DMAE,
  2263. DBG_GRC_PARAM_DUMP_TM,
  2264. DBG_GRC_PARAM_DUMP_SDM,
  2265. DBG_GRC_PARAM_DUMP_DIF,
  2266. DBG_GRC_PARAM_DUMP_STATIC,
  2267. DBG_GRC_PARAM_UNSTALL,
  2268. DBG_GRC_PARAM_NUM_LCIDS,
  2269. DBG_GRC_PARAM_NUM_LTIDS,
  2270. DBG_GRC_PARAM_EXCLUDE_ALL,
  2271. DBG_GRC_PARAM_CRASH,
  2272. DBG_GRC_PARAM_PARITY_SAFE,
  2273. DBG_GRC_PARAM_DUMP_CM,
  2274. DBG_GRC_PARAM_DUMP_PHY,
  2275. DBG_GRC_PARAM_NO_MCP,
  2276. DBG_GRC_PARAM_NO_FW_VER,
  2277. MAX_DBG_GRC_PARAMS
  2278. };
  2279. /* Debug reset registers */
  2280. enum dbg_reset_regs {
  2281. DBG_RESET_REG_MISCS_PL_UA,
  2282. DBG_RESET_REG_MISCS_PL_HV,
  2283. DBG_RESET_REG_MISCS_PL_HV_2,
  2284. DBG_RESET_REG_MISC_PL_UA,
  2285. DBG_RESET_REG_MISC_PL_HV,
  2286. DBG_RESET_REG_MISC_PL_PDA_VMAIN_1,
  2287. DBG_RESET_REG_MISC_PL_PDA_VMAIN_2,
  2288. DBG_RESET_REG_MISC_PL_PDA_VAUX,
  2289. MAX_DBG_RESET_REGS
  2290. };
  2291. /* Debug status codes */
  2292. enum dbg_status {
  2293. DBG_STATUS_OK,
  2294. DBG_STATUS_APP_VERSION_NOT_SET,
  2295. DBG_STATUS_UNSUPPORTED_APP_VERSION,
  2296. DBG_STATUS_DBG_BLOCK_NOT_RESET,
  2297. DBG_STATUS_INVALID_ARGS,
  2298. DBG_STATUS_OUTPUT_ALREADY_SET,
  2299. DBG_STATUS_INVALID_PCI_BUF_SIZE,
  2300. DBG_STATUS_PCI_BUF_ALLOC_FAILED,
  2301. DBG_STATUS_PCI_BUF_NOT_ALLOCATED,
  2302. DBG_STATUS_TOO_MANY_INPUTS,
  2303. DBG_STATUS_INPUT_OVERLAP,
  2304. DBG_STATUS_HW_ONLY_RECORDING,
  2305. DBG_STATUS_STORM_ALREADY_ENABLED,
  2306. DBG_STATUS_STORM_NOT_ENABLED,
  2307. DBG_STATUS_BLOCK_ALREADY_ENABLED,
  2308. DBG_STATUS_BLOCK_NOT_ENABLED,
  2309. DBG_STATUS_NO_INPUT_ENABLED,
  2310. DBG_STATUS_NO_FILTER_TRIGGER_64B,
  2311. DBG_STATUS_FILTER_ALREADY_ENABLED,
  2312. DBG_STATUS_TRIGGER_ALREADY_ENABLED,
  2313. DBG_STATUS_TRIGGER_NOT_ENABLED,
  2314. DBG_STATUS_CANT_ADD_CONSTRAINT,
  2315. DBG_STATUS_TOO_MANY_TRIGGER_STATES,
  2316. DBG_STATUS_TOO_MANY_CONSTRAINTS,
  2317. DBG_STATUS_RECORDING_NOT_STARTED,
  2318. DBG_STATUS_DATA_DIDNT_TRIGGER,
  2319. DBG_STATUS_NO_DATA_RECORDED,
  2320. DBG_STATUS_DUMP_BUF_TOO_SMALL,
  2321. DBG_STATUS_DUMP_NOT_CHUNK_ALIGNED,
  2322. DBG_STATUS_UNKNOWN_CHIP,
  2323. DBG_STATUS_VIRT_MEM_ALLOC_FAILED,
  2324. DBG_STATUS_BLOCK_IN_RESET,
  2325. DBG_STATUS_INVALID_TRACE_SIGNATURE,
  2326. DBG_STATUS_INVALID_NVRAM_BUNDLE,
  2327. DBG_STATUS_NVRAM_GET_IMAGE_FAILED,
  2328. DBG_STATUS_NON_ALIGNED_NVRAM_IMAGE,
  2329. DBG_STATUS_NVRAM_READ_FAILED,
  2330. DBG_STATUS_IDLE_CHK_PARSE_FAILED,
  2331. DBG_STATUS_MCP_TRACE_BAD_DATA,
  2332. DBG_STATUS_MCP_TRACE_NO_META,
  2333. DBG_STATUS_MCP_COULD_NOT_HALT,
  2334. DBG_STATUS_MCP_COULD_NOT_RESUME,
  2335. DBG_STATUS_RESERVED2,
  2336. DBG_STATUS_SEMI_FIFO_NOT_EMPTY,
  2337. DBG_STATUS_IGU_FIFO_BAD_DATA,
  2338. DBG_STATUS_MCP_COULD_NOT_MASK_PRTY,
  2339. DBG_STATUS_FW_ASSERTS_PARSE_FAILED,
  2340. DBG_STATUS_REG_FIFO_BAD_DATA,
  2341. DBG_STATUS_PROTECTION_OVERRIDE_BAD_DATA,
  2342. DBG_STATUS_DBG_ARRAY_NOT_SET,
  2343. DBG_STATUS_FILTER_BUG,
  2344. DBG_STATUS_NON_MATCHING_LINES,
  2345. DBG_STATUS_INVALID_TRIGGER_DWORD_OFFSET,
  2346. DBG_STATUS_DBG_BUS_IN_USE,
  2347. MAX_DBG_STATUS
  2348. };
  2349. /* Debug Storms IDs */
  2350. enum dbg_storms {
  2351. DBG_TSTORM_ID,
  2352. DBG_MSTORM_ID,
  2353. DBG_USTORM_ID,
  2354. DBG_XSTORM_ID,
  2355. DBG_YSTORM_ID,
  2356. DBG_PSTORM_ID,
  2357. MAX_DBG_STORMS
  2358. };
  2359. /* Idle Check data */
  2360. struct idle_chk_data {
  2361. u32 buf_size;
  2362. u8 buf_size_set;
  2363. u8 reserved1;
  2364. u16 reserved2;
  2365. };
  2366. /* Debug Tools data (per HW function) */
  2367. struct dbg_tools_data {
  2368. struct dbg_grc_data grc;
  2369. struct dbg_bus_data bus;
  2370. struct idle_chk_data idle_chk;
  2371. u8 mode_enable[40];
  2372. u8 block_in_reset[88];
  2373. u8 chip_id;
  2374. u8 platform_id;
  2375. u8 initialized;
  2376. u8 use_dmae;
  2377. u32 num_regs_read;
  2378. };
  2379. /********************************/
  2380. /* HSI Init Functions constants */
  2381. /********************************/
  2382. /* Number of VLAN priorities */
  2383. #define NUM_OF_VLAN_PRIORITIES 8
  2384. /* BRB RAM init requirements */
  2385. struct init_brb_ram_req {
  2386. u32 guranteed_per_tc;
  2387. u32 headroom_per_tc;
  2388. u32 min_pkt_size;
  2389. u32 max_ports_per_engine;
  2390. u8 num_active_tcs[MAX_NUM_PORTS];
  2391. };
  2392. /* ETS per-TC init requirements */
  2393. struct init_ets_tc_req {
  2394. u8 use_sp;
  2395. u8 use_wfq;
  2396. u16 weight;
  2397. };
  2398. /* ETS init requirements */
  2399. struct init_ets_req {
  2400. u32 mtu;
  2401. struct init_ets_tc_req tc_req[NUM_OF_TCS];
  2402. };
  2403. /* NIG LB RL init requirements */
  2404. struct init_nig_lb_rl_req {
  2405. u16 lb_mac_rate;
  2406. u16 lb_rate;
  2407. u32 mtu;
  2408. u16 tc_rate[NUM_OF_PHYS_TCS];
  2409. };
  2410. /* NIG TC mapping for each priority */
  2411. struct init_nig_pri_tc_map_entry {
  2412. u8 tc_id;
  2413. u8 valid;
  2414. };
  2415. /* NIG priority to TC map init requirements */
  2416. struct init_nig_pri_tc_map_req {
  2417. struct init_nig_pri_tc_map_entry pri[NUM_OF_VLAN_PRIORITIES];
  2418. };
  2419. /* QM per-port init parameters */
  2420. struct init_qm_port_params {
  2421. u8 active;
  2422. u8 active_phys_tcs;
  2423. u16 num_pbf_cmd_lines;
  2424. u16 num_btb_blocks;
  2425. u16 reserved;
  2426. };
  2427. /* QM per-PQ init parameters */
  2428. struct init_qm_pq_params {
  2429. u8 vport_id;
  2430. u8 tc_id;
  2431. u8 wrr_group;
  2432. u8 rl_valid;
  2433. u8 port_id;
  2434. u8 reserved0;
  2435. u16 reserved1;
  2436. };
  2437. /* QM per-vport init parameters */
  2438. struct init_qm_vport_params {
  2439. u32 vport_rl;
  2440. u16 vport_wfq;
  2441. u16 first_tx_pq_id[NUM_OF_TCS];
  2442. };
  2443. /**************************************/
  2444. /* Init Tool HSI constants and macros */
  2445. /**************************************/
  2446. /* Width of GRC address in bits (addresses are specified in dwords) */
  2447. #define GRC_ADDR_BITS 23
  2448. #define MAX_GRC_ADDR (BIT(GRC_ADDR_BITS) - 1)
  2449. /* indicates an init that should be applied to any phase ID */
  2450. #define ANY_PHASE_ID 0xffff
  2451. /* Max size in dwords of a zipped array */
  2452. #define MAX_ZIPPED_SIZE 8192
  2453. enum chip_ids {
  2454. CHIP_BB,
  2455. CHIP_K2,
  2456. CHIP_RESERVED,
  2457. MAX_CHIP_IDS
  2458. };
  2459. struct fw_asserts_ram_section {
  2460. u16 section_ram_line_offset;
  2461. u16 section_ram_line_size;
  2462. u8 list_dword_offset;
  2463. u8 list_element_dword_size;
  2464. u8 list_num_elements;
  2465. u8 list_next_index_dword_offset;
  2466. };
  2467. struct fw_ver_num {
  2468. u8 major;
  2469. u8 minor;
  2470. u8 rev;
  2471. u8 eng;
  2472. };
  2473. struct fw_ver_info {
  2474. __le16 tools_ver;
  2475. u8 image_id;
  2476. u8 reserved1;
  2477. struct fw_ver_num num;
  2478. __le32 timestamp;
  2479. __le32 reserved2;
  2480. };
  2481. struct fw_info {
  2482. struct fw_ver_info ver;
  2483. struct fw_asserts_ram_section fw_asserts_section;
  2484. };
  2485. struct fw_info_location {
  2486. __le32 grc_addr;
  2487. __le32 size;
  2488. };
  2489. enum init_modes {
  2490. MODE_RESERVED,
  2491. MODE_BB,
  2492. MODE_K2,
  2493. MODE_ASIC,
  2494. MODE_RESERVED2,
  2495. MODE_RESERVED3,
  2496. MODE_RESERVED4,
  2497. MODE_RESERVED5,
  2498. MODE_SF,
  2499. MODE_MF_SD,
  2500. MODE_MF_SI,
  2501. MODE_PORTS_PER_ENG_1,
  2502. MODE_PORTS_PER_ENG_2,
  2503. MODE_PORTS_PER_ENG_4,
  2504. MODE_100G,
  2505. MODE_RESERVED6,
  2506. MAX_INIT_MODES
  2507. };
  2508. enum init_phases {
  2509. PHASE_ENGINE,
  2510. PHASE_PORT,
  2511. PHASE_PF,
  2512. PHASE_VF,
  2513. PHASE_QM_PF,
  2514. MAX_INIT_PHASES
  2515. };
  2516. enum init_split_types {
  2517. SPLIT_TYPE_NONE,
  2518. SPLIT_TYPE_PORT,
  2519. SPLIT_TYPE_PF,
  2520. SPLIT_TYPE_PORT_PF,
  2521. SPLIT_TYPE_VF,
  2522. MAX_INIT_SPLIT_TYPES
  2523. };
  2524. /* Binary buffer header */
  2525. struct bin_buffer_hdr {
  2526. u32 offset;
  2527. u32 length;
  2528. };
  2529. /* Binary init buffer types */
  2530. enum bin_init_buffer_type {
  2531. BIN_BUF_INIT_FW_VER_INFO,
  2532. BIN_BUF_INIT_CMD,
  2533. BIN_BUF_INIT_VAL,
  2534. BIN_BUF_INIT_MODE_TREE,
  2535. BIN_BUF_INIT_IRO,
  2536. MAX_BIN_INIT_BUFFER_TYPE
  2537. };
  2538. /* init array header: raw */
  2539. struct init_array_raw_hdr {
  2540. u32 data;
  2541. #define INIT_ARRAY_RAW_HDR_TYPE_MASK 0xF
  2542. #define INIT_ARRAY_RAW_HDR_TYPE_SHIFT 0
  2543. #define INIT_ARRAY_RAW_HDR_PARAMS_MASK 0xFFFFFFF
  2544. #define INIT_ARRAY_RAW_HDR_PARAMS_SHIFT 4
  2545. };
  2546. /* init array header: standard */
  2547. struct init_array_standard_hdr {
  2548. u32 data;
  2549. #define INIT_ARRAY_STANDARD_HDR_TYPE_MASK 0xF
  2550. #define INIT_ARRAY_STANDARD_HDR_TYPE_SHIFT 0
  2551. #define INIT_ARRAY_STANDARD_HDR_SIZE_MASK 0xFFFFFFF
  2552. #define INIT_ARRAY_STANDARD_HDR_SIZE_SHIFT 4
  2553. };
  2554. /* init array header: zipped */
  2555. struct init_array_zipped_hdr {
  2556. u32 data;
  2557. #define INIT_ARRAY_ZIPPED_HDR_TYPE_MASK 0xF
  2558. #define INIT_ARRAY_ZIPPED_HDR_TYPE_SHIFT 0
  2559. #define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_MASK 0xFFFFFFF
  2560. #define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_SHIFT 4
  2561. };
  2562. /* init array header: pattern */
  2563. struct init_array_pattern_hdr {
  2564. u32 data;
  2565. #define INIT_ARRAY_PATTERN_HDR_TYPE_MASK 0xF
  2566. #define INIT_ARRAY_PATTERN_HDR_TYPE_SHIFT 0
  2567. #define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_MASK 0xF
  2568. #define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_SHIFT 4
  2569. #define INIT_ARRAY_PATTERN_HDR_REPETITIONS_MASK 0xFFFFFF
  2570. #define INIT_ARRAY_PATTERN_HDR_REPETITIONS_SHIFT 8
  2571. };
  2572. /* init array header union */
  2573. union init_array_hdr {
  2574. struct init_array_raw_hdr raw;
  2575. struct init_array_standard_hdr standard;
  2576. struct init_array_zipped_hdr zipped;
  2577. struct init_array_pattern_hdr pattern;
  2578. };
  2579. /* init array types */
  2580. enum init_array_types {
  2581. INIT_ARR_STANDARD,
  2582. INIT_ARR_ZIPPED,
  2583. INIT_ARR_PATTERN,
  2584. MAX_INIT_ARRAY_TYPES
  2585. };
  2586. /* init operation: callback */
  2587. struct init_callback_op {
  2588. u32 op_data;
  2589. #define INIT_CALLBACK_OP_OP_MASK 0xF
  2590. #define INIT_CALLBACK_OP_OP_SHIFT 0
  2591. #define INIT_CALLBACK_OP_RESERVED_MASK 0xFFFFFFF
  2592. #define INIT_CALLBACK_OP_RESERVED_SHIFT 4
  2593. u16 callback_id;
  2594. u16 block_id;
  2595. };
  2596. /* init operation: delay */
  2597. struct init_delay_op {
  2598. u32 op_data;
  2599. #define INIT_DELAY_OP_OP_MASK 0xF
  2600. #define INIT_DELAY_OP_OP_SHIFT 0
  2601. #define INIT_DELAY_OP_RESERVED_MASK 0xFFFFFFF
  2602. #define INIT_DELAY_OP_RESERVED_SHIFT 4
  2603. u32 delay;
  2604. };
  2605. /* init operation: if_mode */
  2606. struct init_if_mode_op {
  2607. u32 op_data;
  2608. #define INIT_IF_MODE_OP_OP_MASK 0xF
  2609. #define INIT_IF_MODE_OP_OP_SHIFT 0
  2610. #define INIT_IF_MODE_OP_RESERVED1_MASK 0xFFF
  2611. #define INIT_IF_MODE_OP_RESERVED1_SHIFT 4
  2612. #define INIT_IF_MODE_OP_CMD_OFFSET_MASK 0xFFFF
  2613. #define INIT_IF_MODE_OP_CMD_OFFSET_SHIFT 16
  2614. u16 reserved2;
  2615. u16 modes_buf_offset;
  2616. };
  2617. /* init operation: if_phase */
  2618. struct init_if_phase_op {
  2619. u32 op_data;
  2620. #define INIT_IF_PHASE_OP_OP_MASK 0xF
  2621. #define INIT_IF_PHASE_OP_OP_SHIFT 0
  2622. #define INIT_IF_PHASE_OP_DMAE_ENABLE_MASK 0x1
  2623. #define INIT_IF_PHASE_OP_DMAE_ENABLE_SHIFT 4
  2624. #define INIT_IF_PHASE_OP_RESERVED1_MASK 0x7FF
  2625. #define INIT_IF_PHASE_OP_RESERVED1_SHIFT 5
  2626. #define INIT_IF_PHASE_OP_CMD_OFFSET_MASK 0xFFFF
  2627. #define INIT_IF_PHASE_OP_CMD_OFFSET_SHIFT 16
  2628. u32 phase_data;
  2629. #define INIT_IF_PHASE_OP_PHASE_MASK 0xFF
  2630. #define INIT_IF_PHASE_OP_PHASE_SHIFT 0
  2631. #define INIT_IF_PHASE_OP_RESERVED2_MASK 0xFF
  2632. #define INIT_IF_PHASE_OP_RESERVED2_SHIFT 8
  2633. #define INIT_IF_PHASE_OP_PHASE_ID_MASK 0xFFFF
  2634. #define INIT_IF_PHASE_OP_PHASE_ID_SHIFT 16
  2635. };
  2636. /* init mode operators */
  2637. enum init_mode_ops {
  2638. INIT_MODE_OP_NOT,
  2639. INIT_MODE_OP_OR,
  2640. INIT_MODE_OP_AND,
  2641. MAX_INIT_MODE_OPS
  2642. };
  2643. /* init operation: raw */
  2644. struct init_raw_op {
  2645. u32 op_data;
  2646. #define INIT_RAW_OP_OP_MASK 0xF
  2647. #define INIT_RAW_OP_OP_SHIFT 0
  2648. #define INIT_RAW_OP_PARAM1_MASK 0xFFFFFFF
  2649. #define INIT_RAW_OP_PARAM1_SHIFT 4
  2650. u32 param2;
  2651. };
  2652. /* init array params */
  2653. struct init_op_array_params {
  2654. u16 size;
  2655. u16 offset;
  2656. };
  2657. /* Write init operation arguments */
  2658. union init_write_args {
  2659. u32 inline_val;
  2660. u32 zeros_count;
  2661. u32 array_offset;
  2662. struct init_op_array_params runtime;
  2663. };
  2664. /* init operation: write */
  2665. struct init_write_op {
  2666. u32 data;
  2667. #define INIT_WRITE_OP_OP_MASK 0xF
  2668. #define INIT_WRITE_OP_OP_SHIFT 0
  2669. #define INIT_WRITE_OP_SOURCE_MASK 0x7
  2670. #define INIT_WRITE_OP_SOURCE_SHIFT 4
  2671. #define INIT_WRITE_OP_RESERVED_MASK 0x1
  2672. #define INIT_WRITE_OP_RESERVED_SHIFT 7
  2673. #define INIT_WRITE_OP_WIDE_BUS_MASK 0x1
  2674. #define INIT_WRITE_OP_WIDE_BUS_SHIFT 8
  2675. #define INIT_WRITE_OP_ADDRESS_MASK 0x7FFFFF
  2676. #define INIT_WRITE_OP_ADDRESS_SHIFT 9
  2677. union init_write_args args;
  2678. };
  2679. /* init operation: read */
  2680. struct init_read_op {
  2681. u32 op_data;
  2682. #define INIT_READ_OP_OP_MASK 0xF
  2683. #define INIT_READ_OP_OP_SHIFT 0
  2684. #define INIT_READ_OP_POLL_TYPE_MASK 0xF
  2685. #define INIT_READ_OP_POLL_TYPE_SHIFT 4
  2686. #define INIT_READ_OP_RESERVED_MASK 0x1
  2687. #define INIT_READ_OP_RESERVED_SHIFT 8
  2688. #define INIT_READ_OP_ADDRESS_MASK 0x7FFFFF
  2689. #define INIT_READ_OP_ADDRESS_SHIFT 9
  2690. u32 expected_val;
  2691. };
  2692. /* Init operations union */
  2693. union init_op {
  2694. struct init_raw_op raw;
  2695. struct init_write_op write;
  2696. struct init_read_op read;
  2697. struct init_if_mode_op if_mode;
  2698. struct init_if_phase_op if_phase;
  2699. struct init_callback_op callback;
  2700. struct init_delay_op delay;
  2701. };
  2702. /* Init command operation types */
  2703. enum init_op_types {
  2704. INIT_OP_READ,
  2705. INIT_OP_WRITE,
  2706. INIT_OP_IF_MODE,
  2707. INIT_OP_IF_PHASE,
  2708. INIT_OP_DELAY,
  2709. INIT_OP_CALLBACK,
  2710. MAX_INIT_OP_TYPES
  2711. };
  2712. /* init polling types */
  2713. enum init_poll_types {
  2714. INIT_POLL_NONE,
  2715. INIT_POLL_EQ,
  2716. INIT_POLL_OR,
  2717. INIT_POLL_AND,
  2718. MAX_INIT_POLL_TYPES
  2719. };
  2720. /* init source types */
  2721. enum init_source_types {
  2722. INIT_SRC_INLINE,
  2723. INIT_SRC_ZEROS,
  2724. INIT_SRC_ARRAY,
  2725. INIT_SRC_RUNTIME,
  2726. MAX_INIT_SOURCE_TYPES
  2727. };
  2728. /* Internal RAM Offsets macro data */
  2729. struct iro {
  2730. u32 base;
  2731. u16 m1;
  2732. u16 m2;
  2733. u16 m3;
  2734. u16 size;
  2735. };
  2736. /***************************** Public Functions *******************************/
  2737. /**
  2738. * @brief qed_dbg_set_bin_ptr - Sets a pointer to the binary data with debug
  2739. * arrays.
  2740. *
  2741. * @param bin_ptr - a pointer to the binary data with debug arrays.
  2742. */
  2743. enum dbg_status qed_dbg_set_bin_ptr(const u8 * const bin_ptr);
  2744. /**
  2745. * @brief qed_read_regs - Reads registers into a buffer (using GRC).
  2746. *
  2747. * @param p_hwfn - HW device data
  2748. * @param p_ptt - Ptt window used for writing the registers.
  2749. * @param buf - Destination buffer.
  2750. * @param addr - Source GRC address in dwords.
  2751. * @param len - Number of registers to read.
  2752. */
  2753. void qed_read_regs(struct qed_hwfn *p_hwfn,
  2754. struct qed_ptt *p_ptt, u32 *buf, u32 addr, u32 len);
  2755. /**
  2756. * @brief qed_dbg_grc_set_params_default - Reverts all GRC parameters to their
  2757. * default value.
  2758. *
  2759. * @param p_hwfn - HW device data
  2760. */
  2761. void qed_dbg_grc_set_params_default(struct qed_hwfn *p_hwfn);
  2762. /**
  2763. * @brief qed_dbg_grc_get_dump_buf_size - Returns the required buffer size for
  2764. * GRC Dump.
  2765. *
  2766. * @param p_hwfn - HW device data
  2767. * @param p_ptt - Ptt window used for writing the registers.
  2768. * @param buf_size - OUT: required buffer size (in dwords) for the GRC Dump
  2769. * data.
  2770. *
  2771. * @return error if one of the following holds:
  2772. * - the version wasn't set
  2773. * Otherwise, returns ok.
  2774. */
  2775. enum dbg_status qed_dbg_grc_get_dump_buf_size(struct qed_hwfn *p_hwfn,
  2776. struct qed_ptt *p_ptt,
  2777. u32 *buf_size);
  2778. /**
  2779. * @brief qed_dbg_grc_dump - Dumps GRC data into the specified buffer.
  2780. *
  2781. * @param p_hwfn - HW device data
  2782. * @param p_ptt - Ptt window used for writing the registers.
  2783. * @param dump_buf - Pointer to write the collected GRC data into.
  2784. * @param buf_size_in_dwords - Size of the specified buffer in dwords.
  2785. * @param num_dumped_dwords - OUT: number of dumped dwords.
  2786. *
  2787. * @return error if one of the following holds:
  2788. * - the version wasn't set
  2789. * - the specified dump buffer is too small
  2790. * Otherwise, returns ok.
  2791. */
  2792. enum dbg_status qed_dbg_grc_dump(struct qed_hwfn *p_hwfn,
  2793. struct qed_ptt *p_ptt,
  2794. u32 *dump_buf,
  2795. u32 buf_size_in_dwords,
  2796. u32 *num_dumped_dwords);
  2797. /**
  2798. * @brief qed_dbg_idle_chk_get_dump_buf_size - Returns the required buffer size
  2799. * for idle check results.
  2800. *
  2801. * @param p_hwfn - HW device data
  2802. * @param p_ptt - Ptt window used for writing the registers.
  2803. * @param buf_size - OUT: required buffer size (in dwords) for the idle check
  2804. * data.
  2805. *
  2806. * @return error if one of the following holds:
  2807. * - the version wasn't set
  2808. * Otherwise, returns ok.
  2809. */
  2810. enum dbg_status qed_dbg_idle_chk_get_dump_buf_size(struct qed_hwfn *p_hwfn,
  2811. struct qed_ptt *p_ptt,
  2812. u32 *buf_size);
  2813. /**
  2814. * @brief qed_dbg_idle_chk_dump - Performs idle check and writes the results
  2815. * into the specified buffer.
  2816. *
  2817. * @param p_hwfn - HW device data
  2818. * @param p_ptt - Ptt window used for writing the registers.
  2819. * @param dump_buf - Pointer to write the idle check data into.
  2820. * @param buf_size_in_dwords - Size of the specified buffer in dwords.
  2821. * @param num_dumped_dwords - OUT: number of dumped dwords.
  2822. *
  2823. * @return error if one of the following holds:
  2824. * - the version wasn't set
  2825. * - the specified buffer is too small
  2826. * Otherwise, returns ok.
  2827. */
  2828. enum dbg_status qed_dbg_idle_chk_dump(struct qed_hwfn *p_hwfn,
  2829. struct qed_ptt *p_ptt,
  2830. u32 *dump_buf,
  2831. u32 buf_size_in_dwords,
  2832. u32 *num_dumped_dwords);
  2833. /**
  2834. * @brief qed_dbg_mcp_trace_get_dump_buf_size - Returns the required buffer size
  2835. * for mcp trace results.
  2836. *
  2837. * @param p_hwfn - HW device data
  2838. * @param p_ptt - Ptt window used for writing the registers.
  2839. * @param buf_size - OUT: required buffer size (in dwords) for mcp trace data.
  2840. *
  2841. * @return error if one of the following holds:
  2842. * - the version wasn't set
  2843. * - the trace data in MCP scratchpad contain an invalid signature
  2844. * - the bundle ID in NVRAM is invalid
  2845. * - the trace meta data cannot be found (in NVRAM or image file)
  2846. * Otherwise, returns ok.
  2847. */
  2848. enum dbg_status qed_dbg_mcp_trace_get_dump_buf_size(struct qed_hwfn *p_hwfn,
  2849. struct qed_ptt *p_ptt,
  2850. u32 *buf_size);
  2851. /**
  2852. * @brief qed_dbg_mcp_trace_dump - Performs mcp trace and writes the results
  2853. * into the specified buffer.
  2854. *
  2855. * @param p_hwfn - HW device data
  2856. * @param p_ptt - Ptt window used for writing the registers.
  2857. * @param dump_buf - Pointer to write the mcp trace data into.
  2858. * @param buf_size_in_dwords - Size of the specified buffer in dwords.
  2859. * @param num_dumped_dwords - OUT: number of dumped dwords.
  2860. *
  2861. * @return error if one of the following holds:
  2862. * - the version wasn't set
  2863. * - the specified buffer is too small
  2864. * - the trace data in MCP scratchpad contain an invalid signature
  2865. * - the bundle ID in NVRAM is invalid
  2866. * - the trace meta data cannot be found (in NVRAM or image file)
  2867. * - the trace meta data cannot be read (from NVRAM or image file)
  2868. * Otherwise, returns ok.
  2869. */
  2870. enum dbg_status qed_dbg_mcp_trace_dump(struct qed_hwfn *p_hwfn,
  2871. struct qed_ptt *p_ptt,
  2872. u32 *dump_buf,
  2873. u32 buf_size_in_dwords,
  2874. u32 *num_dumped_dwords);
  2875. /**
  2876. * @brief qed_dbg_reg_fifo_get_dump_buf_size - Returns the required buffer size
  2877. * for grc trace fifo results.
  2878. *
  2879. * @param p_hwfn - HW device data
  2880. * @param p_ptt - Ptt window used for writing the registers.
  2881. * @param buf_size - OUT: required buffer size (in dwords) for reg fifo data.
  2882. *
  2883. * @return error if one of the following holds:
  2884. * - the version wasn't set
  2885. * Otherwise, returns ok.
  2886. */
  2887. enum dbg_status qed_dbg_reg_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn,
  2888. struct qed_ptt *p_ptt,
  2889. u32 *buf_size);
  2890. /**
  2891. * @brief qed_dbg_reg_fifo_dump - Reads the reg fifo and writes the results into
  2892. * the specified buffer.
  2893. *
  2894. * @param p_hwfn - HW device data
  2895. * @param p_ptt - Ptt window used for writing the registers.
  2896. * @param dump_buf - Pointer to write the reg fifo data into.
  2897. * @param buf_size_in_dwords - Size of the specified buffer in dwords.
  2898. * @param num_dumped_dwords - OUT: number of dumped dwords.
  2899. *
  2900. * @return error if one of the following holds:
  2901. * - the version wasn't set
  2902. * - the specified buffer is too small
  2903. * - DMAE transaction failed
  2904. * Otherwise, returns ok.
  2905. */
  2906. enum dbg_status qed_dbg_reg_fifo_dump(struct qed_hwfn *p_hwfn,
  2907. struct qed_ptt *p_ptt,
  2908. u32 *dump_buf,
  2909. u32 buf_size_in_dwords,
  2910. u32 *num_dumped_dwords);
  2911. /**
  2912. * @brief qed_dbg_igu_fifo_get_dump_buf_size - Returns the required buffer size
  2913. * for the IGU fifo results.
  2914. *
  2915. * @param p_hwfn - HW device data
  2916. * @param p_ptt - Ptt window used for writing the registers.
  2917. * @param buf_size - OUT: required buffer size (in dwords) for the IGU fifo
  2918. * data.
  2919. *
  2920. * @return error if one of the following holds:
  2921. * - the version wasn't set
  2922. * Otherwise, returns ok.
  2923. */
  2924. enum dbg_status qed_dbg_igu_fifo_get_dump_buf_size(struct qed_hwfn *p_hwfn,
  2925. struct qed_ptt *p_ptt,
  2926. u32 *buf_size);
  2927. /**
  2928. * @brief qed_dbg_igu_fifo_dump - Reads the IGU fifo and writes the results into
  2929. * the specified buffer.
  2930. *
  2931. * @param p_hwfn - HW device data
  2932. * @param p_ptt - Ptt window used for writing the registers.
  2933. * @param dump_buf - Pointer to write the IGU fifo data into.
  2934. * @param buf_size_in_dwords - Size of the specified buffer in dwords.
  2935. * @param num_dumped_dwords - OUT: number of dumped dwords.
  2936. *
  2937. * @return error if one of the following holds:
  2938. * - the version wasn't set
  2939. * - the specified buffer is too small
  2940. * - DMAE transaction failed
  2941. * Otherwise, returns ok.
  2942. */
  2943. enum dbg_status qed_dbg_igu_fifo_dump(struct qed_hwfn *p_hwfn,
  2944. struct qed_ptt *p_ptt,
  2945. u32 *dump_buf,
  2946. u32 buf_size_in_dwords,
  2947. u32 *num_dumped_dwords);
  2948. /**
  2949. * @brief qed_dbg_protection_override_get_dump_buf_size - Returns the required
  2950. * buffer size for protection override window results.
  2951. *
  2952. * @param p_hwfn - HW device data
  2953. * @param p_ptt - Ptt window used for writing the registers.
  2954. * @param buf_size - OUT: required buffer size (in dwords) for protection
  2955. * override data.
  2956. *
  2957. * @return error if one of the following holds:
  2958. * - the version wasn't set
  2959. * Otherwise, returns ok.
  2960. */
  2961. enum dbg_status
  2962. qed_dbg_protection_override_get_dump_buf_size(struct qed_hwfn *p_hwfn,
  2963. struct qed_ptt *p_ptt,
  2964. u32 *buf_size);
  2965. /**
  2966. * @brief qed_dbg_protection_override_dump - Reads protection override window
  2967. * entries and writes the results into the specified buffer.
  2968. *
  2969. * @param p_hwfn - HW device data
  2970. * @param p_ptt - Ptt window used for writing the registers.
  2971. * @param dump_buf - Pointer to write the protection override data into.
  2972. * @param buf_size_in_dwords - Size of the specified buffer in dwords.
  2973. * @param num_dumped_dwords - OUT: number of dumped dwords.
  2974. *
  2975. * @return error if one of the following holds:
  2976. * - the version wasn't set
  2977. * - the specified buffer is too small
  2978. * - DMAE transaction failed
  2979. * Otherwise, returns ok.
  2980. */
  2981. enum dbg_status qed_dbg_protection_override_dump(struct qed_hwfn *p_hwfn,
  2982. struct qed_ptt *p_ptt,
  2983. u32 *dump_buf,
  2984. u32 buf_size_in_dwords,
  2985. u32 *num_dumped_dwords);
  2986. /**
  2987. * @brief qed_dbg_fw_asserts_get_dump_buf_size - Returns the required buffer
  2988. * size for FW Asserts results.
  2989. *
  2990. * @param p_hwfn - HW device data
  2991. * @param p_ptt - Ptt window used for writing the registers.
  2992. * @param buf_size - OUT: required buffer size (in dwords) for FW Asserts data.
  2993. *
  2994. * @return error if one of the following holds:
  2995. * - the version wasn't set
  2996. * Otherwise, returns ok.
  2997. */
  2998. enum dbg_status qed_dbg_fw_asserts_get_dump_buf_size(struct qed_hwfn *p_hwfn,
  2999. struct qed_ptt *p_ptt,
  3000. u32 *buf_size);
  3001. /**
  3002. * @brief qed_dbg_fw_asserts_dump - Reads the FW Asserts and writes the results
  3003. * into the specified buffer.
  3004. *
  3005. * @param p_hwfn - HW device data
  3006. * @param p_ptt - Ptt window used for writing the registers.
  3007. * @param dump_buf - Pointer to write the FW Asserts data into.
  3008. * @param buf_size_in_dwords - Size of the specified buffer in dwords.
  3009. * @param num_dumped_dwords - OUT: number of dumped dwords.
  3010. *
  3011. * @return error if one of the following holds:
  3012. * - the version wasn't set
  3013. * - the specified buffer is too small
  3014. * Otherwise, returns ok.
  3015. */
  3016. enum dbg_status qed_dbg_fw_asserts_dump(struct qed_hwfn *p_hwfn,
  3017. struct qed_ptt *p_ptt,
  3018. u32 *dump_buf,
  3019. u32 buf_size_in_dwords,
  3020. u32 *num_dumped_dwords);
  3021. /**
  3022. * @brief qed_dbg_read_attn - Reads the attention registers of the specified
  3023. * block and type, and writes the results into the specified buffer.
  3024. *
  3025. * @param p_hwfn - HW device data
  3026. * @param p_ptt - Ptt window used for writing the registers.
  3027. * @param block - Block ID.
  3028. * @param attn_type - Attention type.
  3029. * @param clear_status - Indicates if the attention status should be cleared.
  3030. * @param results - OUT: Pointer to write the read results into
  3031. *
  3032. * @return error if one of the following holds:
  3033. * - the version wasn't set
  3034. * Otherwise, returns ok.
  3035. */
  3036. enum dbg_status qed_dbg_read_attn(struct qed_hwfn *p_hwfn,
  3037. struct qed_ptt *p_ptt,
  3038. enum block_id block,
  3039. enum dbg_attn_type attn_type,
  3040. bool clear_status,
  3041. struct dbg_attn_block_result *results);
  3042. /**
  3043. * @brief qed_dbg_print_attn - Prints attention registers values in the
  3044. * specified results struct.
  3045. *
  3046. * @param p_hwfn
  3047. * @param results - Pointer to the attention read results
  3048. *
  3049. * @return error if one of the following holds:
  3050. * - the version wasn't set
  3051. * Otherwise, returns ok.
  3052. */
  3053. enum dbg_status qed_dbg_print_attn(struct qed_hwfn *p_hwfn,
  3054. struct dbg_attn_block_result *results);
  3055. /******************************** Constants **********************************/
  3056. #define MAX_NAME_LEN 16
  3057. /***************************** Public Functions *******************************/
  3058. /**
  3059. * @brief qed_dbg_user_set_bin_ptr - Sets a pointer to the binary data with
  3060. * debug arrays.
  3061. *
  3062. * @param bin_ptr - a pointer to the binary data with debug arrays.
  3063. */
  3064. enum dbg_status qed_dbg_user_set_bin_ptr(const u8 * const bin_ptr);
  3065. /**
  3066. * @brief qed_dbg_get_status_str - Returns a string for the specified status.
  3067. *
  3068. * @param status - a debug status code.
  3069. *
  3070. * @return a string for the specified status
  3071. */
  3072. const char *qed_dbg_get_status_str(enum dbg_status status);
  3073. /**
  3074. * @brief qed_get_idle_chk_results_buf_size - Returns the required buffer size
  3075. * for idle check results (in bytes).
  3076. *
  3077. * @param p_hwfn - HW device data
  3078. * @param dump_buf - idle check dump buffer.
  3079. * @param num_dumped_dwords - number of dwords that were dumped.
  3080. * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
  3081. * results.
  3082. *
  3083. * @return error if the parsing fails, ok otherwise.
  3084. */
  3085. enum dbg_status qed_get_idle_chk_results_buf_size(struct qed_hwfn *p_hwfn,
  3086. u32 *dump_buf,
  3087. u32 num_dumped_dwords,
  3088. u32 *results_buf_size);
  3089. /**
  3090. * @brief qed_print_idle_chk_results - Prints idle check results
  3091. *
  3092. * @param p_hwfn - HW device data
  3093. * @param dump_buf - idle check dump buffer.
  3094. * @param num_dumped_dwords - number of dwords that were dumped.
  3095. * @param results_buf - buffer for printing the idle check results.
  3096. * @param num_errors - OUT: number of errors found in idle check.
  3097. * @param num_warnings - OUT: number of warnings found in idle check.
  3098. *
  3099. * @return error if the parsing fails, ok otherwise.
  3100. */
  3101. enum dbg_status qed_print_idle_chk_results(struct qed_hwfn *p_hwfn,
  3102. u32 *dump_buf,
  3103. u32 num_dumped_dwords,
  3104. char *results_buf,
  3105. u32 *num_errors,
  3106. u32 *num_warnings);
  3107. /**
  3108. * @brief qed_dbg_mcp_trace_set_meta_data - Sets a pointer to the MCP Trace
  3109. * meta data.
  3110. *
  3111. * Needed in case the MCP Trace dump doesn't contain the meta data (e.g. due to
  3112. * no NVRAM access).
  3113. *
  3114. * @param data - pointer to MCP Trace meta data
  3115. * @param size - size of MCP Trace meta data in dwords
  3116. */
  3117. void qed_dbg_mcp_trace_set_meta_data(u32 *data, u32 size);
  3118. /**
  3119. * @brief qed_get_mcp_trace_results_buf_size - Returns the required buffer size
  3120. * for MCP Trace results (in bytes).
  3121. *
  3122. * @param p_hwfn - HW device data
  3123. * @param dump_buf - MCP Trace dump buffer.
  3124. * @param num_dumped_dwords - number of dwords that were dumped.
  3125. * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
  3126. * results.
  3127. *
  3128. * @return error if the parsing fails, ok otherwise.
  3129. */
  3130. enum dbg_status qed_get_mcp_trace_results_buf_size(struct qed_hwfn *p_hwfn,
  3131. u32 *dump_buf,
  3132. u32 num_dumped_dwords,
  3133. u32 *results_buf_size);
  3134. /**
  3135. * @brief qed_print_mcp_trace_results - Prints MCP Trace results
  3136. *
  3137. * @param p_hwfn - HW device data
  3138. * @param dump_buf - mcp trace dump buffer, starting from the header.
  3139. * @param num_dumped_dwords - number of dwords that were dumped.
  3140. * @param results_buf - buffer for printing the mcp trace results.
  3141. *
  3142. * @return error if the parsing fails, ok otherwise.
  3143. */
  3144. enum dbg_status qed_print_mcp_trace_results(struct qed_hwfn *p_hwfn,
  3145. u32 *dump_buf,
  3146. u32 num_dumped_dwords,
  3147. char *results_buf);
  3148. /**
  3149. * @brief print_mcp_trace_line - Prints MCP Trace results for a single line
  3150. *
  3151. * @param dump_buf - mcp trace dump buffer, starting from the header.
  3152. * @param num_dumped_bytes - number of bytes that were dumped.
  3153. * @param results_buf - buffer for printing the mcp trace results.
  3154. *
  3155. * @return error if the parsing fails, ok otherwise.
  3156. */
  3157. enum dbg_status qed_print_mcp_trace_line(u8 *dump_buf,
  3158. u32 num_dumped_bytes,
  3159. char *results_buf);
  3160. /**
  3161. * @brief qed_get_reg_fifo_results_buf_size - Returns the required buffer size
  3162. * for reg_fifo results (in bytes).
  3163. *
  3164. * @param p_hwfn - HW device data
  3165. * @param dump_buf - reg fifo dump buffer.
  3166. * @param num_dumped_dwords - number of dwords that were dumped.
  3167. * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
  3168. * results.
  3169. *
  3170. * @return error if the parsing fails, ok otherwise.
  3171. */
  3172. enum dbg_status qed_get_reg_fifo_results_buf_size(struct qed_hwfn *p_hwfn,
  3173. u32 *dump_buf,
  3174. u32 num_dumped_dwords,
  3175. u32 *results_buf_size);
  3176. /**
  3177. * @brief qed_print_reg_fifo_results - Prints reg fifo results
  3178. *
  3179. * @param p_hwfn - HW device data
  3180. * @param dump_buf - reg fifo dump buffer, starting from the header.
  3181. * @param num_dumped_dwords - number of dwords that were dumped.
  3182. * @param results_buf - buffer for printing the reg fifo results.
  3183. *
  3184. * @return error if the parsing fails, ok otherwise.
  3185. */
  3186. enum dbg_status qed_print_reg_fifo_results(struct qed_hwfn *p_hwfn,
  3187. u32 *dump_buf,
  3188. u32 num_dumped_dwords,
  3189. char *results_buf);
  3190. /**
  3191. * @brief qed_get_igu_fifo_results_buf_size - Returns the required buffer size
  3192. * for igu_fifo results (in bytes).
  3193. *
  3194. * @param p_hwfn - HW device data
  3195. * @param dump_buf - IGU fifo dump buffer.
  3196. * @param num_dumped_dwords - number of dwords that were dumped.
  3197. * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
  3198. * results.
  3199. *
  3200. * @return error if the parsing fails, ok otherwise.
  3201. */
  3202. enum dbg_status qed_get_igu_fifo_results_buf_size(struct qed_hwfn *p_hwfn,
  3203. u32 *dump_buf,
  3204. u32 num_dumped_dwords,
  3205. u32 *results_buf_size);
  3206. /**
  3207. * @brief qed_print_igu_fifo_results - Prints IGU fifo results
  3208. *
  3209. * @param p_hwfn - HW device data
  3210. * @param dump_buf - IGU fifo dump buffer, starting from the header.
  3211. * @param num_dumped_dwords - number of dwords that were dumped.
  3212. * @param results_buf - buffer for printing the IGU fifo results.
  3213. *
  3214. * @return error if the parsing fails, ok otherwise.
  3215. */
  3216. enum dbg_status qed_print_igu_fifo_results(struct qed_hwfn *p_hwfn,
  3217. u32 *dump_buf,
  3218. u32 num_dumped_dwords,
  3219. char *results_buf);
  3220. /**
  3221. * @brief qed_get_protection_override_results_buf_size - Returns the required
  3222. * buffer size for protection override results (in bytes).
  3223. *
  3224. * @param p_hwfn - HW device data
  3225. * @param dump_buf - protection override dump buffer.
  3226. * @param num_dumped_dwords - number of dwords that were dumped.
  3227. * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
  3228. * results.
  3229. *
  3230. * @return error if the parsing fails, ok otherwise.
  3231. */
  3232. enum dbg_status
  3233. qed_get_protection_override_results_buf_size(struct qed_hwfn *p_hwfn,
  3234. u32 *dump_buf,
  3235. u32 num_dumped_dwords,
  3236. u32 *results_buf_size);
  3237. /**
  3238. * @brief qed_print_protection_override_results - Prints protection override
  3239. * results.
  3240. *
  3241. * @param p_hwfn - HW device data
  3242. * @param dump_buf - protection override dump buffer, starting from the header.
  3243. * @param num_dumped_dwords - number of dwords that were dumped.
  3244. * @param results_buf - buffer for printing the reg fifo results.
  3245. *
  3246. * @return error if the parsing fails, ok otherwise.
  3247. */
  3248. enum dbg_status qed_print_protection_override_results(struct qed_hwfn *p_hwfn,
  3249. u32 *dump_buf,
  3250. u32 num_dumped_dwords,
  3251. char *results_buf);
  3252. /**
  3253. * @brief qed_get_fw_asserts_results_buf_size - Returns the required buffer size
  3254. * for FW Asserts results (in bytes).
  3255. *
  3256. * @param p_hwfn - HW device data
  3257. * @param dump_buf - FW Asserts dump buffer.
  3258. * @param num_dumped_dwords - number of dwords that were dumped.
  3259. * @param results_buf_size - OUT: required buffer size (in bytes) for the parsed
  3260. * results.
  3261. *
  3262. * @return error if the parsing fails, ok otherwise.
  3263. */
  3264. enum dbg_status qed_get_fw_asserts_results_buf_size(struct qed_hwfn *p_hwfn,
  3265. u32 *dump_buf,
  3266. u32 num_dumped_dwords,
  3267. u32 *results_buf_size);
  3268. /**
  3269. * @brief qed_print_fw_asserts_results - Prints FW Asserts results
  3270. *
  3271. * @param p_hwfn - HW device data
  3272. * @param dump_buf - FW Asserts dump buffer, starting from the header.
  3273. * @param num_dumped_dwords - number of dwords that were dumped.
  3274. * @param results_buf - buffer for printing the FW Asserts results.
  3275. *
  3276. * @return error if the parsing fails, ok otherwise.
  3277. */
  3278. enum dbg_status qed_print_fw_asserts_results(struct qed_hwfn *p_hwfn,
  3279. u32 *dump_buf,
  3280. u32 num_dumped_dwords,
  3281. char *results_buf);
  3282. /**
  3283. * @brief qed_dbg_parse_attn - Parses and prints attention registers values in
  3284. * the specified results struct.
  3285. *
  3286. * @param p_hwfn - HW device data
  3287. * @param results - Pointer to the attention read results
  3288. *
  3289. * @return error if one of the following holds:
  3290. * - the version wasn't set
  3291. * Otherwise, returns ok.
  3292. */
  3293. enum dbg_status qed_dbg_parse_attn(struct qed_hwfn *p_hwfn,
  3294. struct dbg_attn_block_result *results);
  3295. /* Debug Bus blocks */
  3296. static const u32 dbg_bus_blocks[] = {
  3297. 0x0000000f, /* grc, bb, 15 lines */
  3298. 0x0000000f, /* grc, k2, 15 lines */
  3299. 0x00000000,
  3300. 0x00000000, /* miscs, bb, 0 lines */
  3301. 0x00000000, /* miscs, k2, 0 lines */
  3302. 0x00000000,
  3303. 0x00000000, /* misc, bb, 0 lines */
  3304. 0x00000000, /* misc, k2, 0 lines */
  3305. 0x00000000,
  3306. 0x00000000, /* dbu, bb, 0 lines */
  3307. 0x00000000, /* dbu, k2, 0 lines */
  3308. 0x00000000,
  3309. 0x000f0127, /* pglue_b, bb, 39 lines */
  3310. 0x0036012a, /* pglue_b, k2, 42 lines */
  3311. 0x00000000,
  3312. 0x00000000, /* cnig, bb, 0 lines */
  3313. 0x00120102, /* cnig, k2, 2 lines */
  3314. 0x00000000,
  3315. 0x00000000, /* cpmu, bb, 0 lines */
  3316. 0x00000000, /* cpmu, k2, 0 lines */
  3317. 0x00000000,
  3318. 0x00000001, /* ncsi, bb, 1 lines */
  3319. 0x00000001, /* ncsi, k2, 1 lines */
  3320. 0x00000000,
  3321. 0x00000000, /* opte, bb, 0 lines */
  3322. 0x00000000, /* opte, k2, 0 lines */
  3323. 0x00000000,
  3324. 0x00600085, /* bmb, bb, 133 lines */
  3325. 0x00600085, /* bmb, k2, 133 lines */
  3326. 0x00000000,
  3327. 0x00000000, /* pcie, bb, 0 lines */
  3328. 0x00e50033, /* pcie, k2, 51 lines */
  3329. 0x00000000,
  3330. 0x00000000, /* mcp, bb, 0 lines */
  3331. 0x00000000, /* mcp, k2, 0 lines */
  3332. 0x00000000,
  3333. 0x01180009, /* mcp2, bb, 9 lines */
  3334. 0x01180009, /* mcp2, k2, 9 lines */
  3335. 0x00000000,
  3336. 0x01210104, /* pswhst, bb, 4 lines */
  3337. 0x01210104, /* pswhst, k2, 4 lines */
  3338. 0x00000000,
  3339. 0x01250103, /* pswhst2, bb, 3 lines */
  3340. 0x01250103, /* pswhst2, k2, 3 lines */
  3341. 0x00000000,
  3342. 0x00340101, /* pswrd, bb, 1 lines */
  3343. 0x00340101, /* pswrd, k2, 1 lines */
  3344. 0x00000000,
  3345. 0x01280119, /* pswrd2, bb, 25 lines */
  3346. 0x01280119, /* pswrd2, k2, 25 lines */
  3347. 0x00000000,
  3348. 0x01410109, /* pswwr, bb, 9 lines */
  3349. 0x01410109, /* pswwr, k2, 9 lines */
  3350. 0x00000000,
  3351. 0x00000000, /* pswwr2, bb, 0 lines */
  3352. 0x00000000, /* pswwr2, k2, 0 lines */
  3353. 0x00000000,
  3354. 0x001c0001, /* pswrq, bb, 1 lines */
  3355. 0x001c0001, /* pswrq, k2, 1 lines */
  3356. 0x00000000,
  3357. 0x014a0015, /* pswrq2, bb, 21 lines */
  3358. 0x014a0015, /* pswrq2, k2, 21 lines */
  3359. 0x00000000,
  3360. 0x00000000, /* pglcs, bb, 0 lines */
  3361. 0x00120006, /* pglcs, k2, 6 lines */
  3362. 0x00000000,
  3363. 0x00100001, /* dmae, bb, 1 lines */
  3364. 0x00100001, /* dmae, k2, 1 lines */
  3365. 0x00000000,
  3366. 0x015f0105, /* ptu, bb, 5 lines */
  3367. 0x015f0105, /* ptu, k2, 5 lines */
  3368. 0x00000000,
  3369. 0x01640120, /* tcm, bb, 32 lines */
  3370. 0x01640120, /* tcm, k2, 32 lines */
  3371. 0x00000000,
  3372. 0x01640120, /* mcm, bb, 32 lines */
  3373. 0x01640120, /* mcm, k2, 32 lines */
  3374. 0x00000000,
  3375. 0x01640120, /* ucm, bb, 32 lines */
  3376. 0x01640120, /* ucm, k2, 32 lines */
  3377. 0x00000000,
  3378. 0x01640120, /* xcm, bb, 32 lines */
  3379. 0x01640120, /* xcm, k2, 32 lines */
  3380. 0x00000000,
  3381. 0x01640120, /* ycm, bb, 32 lines */
  3382. 0x01640120, /* ycm, k2, 32 lines */
  3383. 0x00000000,
  3384. 0x01640120, /* pcm, bb, 32 lines */
  3385. 0x01640120, /* pcm, k2, 32 lines */
  3386. 0x00000000,
  3387. 0x01840062, /* qm, bb, 98 lines */
  3388. 0x01840062, /* qm, k2, 98 lines */
  3389. 0x00000000,
  3390. 0x01e60021, /* tm, bb, 33 lines */
  3391. 0x01e60021, /* tm, k2, 33 lines */
  3392. 0x00000000,
  3393. 0x02070107, /* dorq, bb, 7 lines */
  3394. 0x02070107, /* dorq, k2, 7 lines */
  3395. 0x00000000,
  3396. 0x00600185, /* brb, bb, 133 lines */
  3397. 0x00600185, /* brb, k2, 133 lines */
  3398. 0x00000000,
  3399. 0x020e0019, /* src, bb, 25 lines */
  3400. 0x020c001a, /* src, k2, 26 lines */
  3401. 0x00000000,
  3402. 0x02270104, /* prs, bb, 4 lines */
  3403. 0x02270104, /* prs, k2, 4 lines */
  3404. 0x00000000,
  3405. 0x022b0133, /* tsdm, bb, 51 lines */
  3406. 0x022b0133, /* tsdm, k2, 51 lines */
  3407. 0x00000000,
  3408. 0x022b0133, /* msdm, bb, 51 lines */
  3409. 0x022b0133, /* msdm, k2, 51 lines */
  3410. 0x00000000,
  3411. 0x022b0133, /* usdm, bb, 51 lines */
  3412. 0x022b0133, /* usdm, k2, 51 lines */
  3413. 0x00000000,
  3414. 0x022b0133, /* xsdm, bb, 51 lines */
  3415. 0x022b0133, /* xsdm, k2, 51 lines */
  3416. 0x00000000,
  3417. 0x022b0133, /* ysdm, bb, 51 lines */
  3418. 0x022b0133, /* ysdm, k2, 51 lines */
  3419. 0x00000000,
  3420. 0x022b0133, /* psdm, bb, 51 lines */
  3421. 0x022b0133, /* psdm, k2, 51 lines */
  3422. 0x00000000,
  3423. 0x025e010c, /* tsem, bb, 12 lines */
  3424. 0x025e010c, /* tsem, k2, 12 lines */
  3425. 0x00000000,
  3426. 0x025e010c, /* msem, bb, 12 lines */
  3427. 0x025e010c, /* msem, k2, 12 lines */
  3428. 0x00000000,
  3429. 0x025e010c, /* usem, bb, 12 lines */
  3430. 0x025e010c, /* usem, k2, 12 lines */
  3431. 0x00000000,
  3432. 0x025e010c, /* xsem, bb, 12 lines */
  3433. 0x025e010c, /* xsem, k2, 12 lines */
  3434. 0x00000000,
  3435. 0x025e010c, /* ysem, bb, 12 lines */
  3436. 0x025e010c, /* ysem, k2, 12 lines */
  3437. 0x00000000,
  3438. 0x025e010c, /* psem, bb, 12 lines */
  3439. 0x025e010c, /* psem, k2, 12 lines */
  3440. 0x00000000,
  3441. 0x026a000d, /* rss, bb, 13 lines */
  3442. 0x026a000d, /* rss, k2, 13 lines */
  3443. 0x00000000,
  3444. 0x02770106, /* tmld, bb, 6 lines */
  3445. 0x02770106, /* tmld, k2, 6 lines */
  3446. 0x00000000,
  3447. 0x027d0106, /* muld, bb, 6 lines */
  3448. 0x027d0106, /* muld, k2, 6 lines */
  3449. 0x00000000,
  3450. 0x02770005, /* yuld, bb, 5 lines */
  3451. 0x02770005, /* yuld, k2, 5 lines */
  3452. 0x00000000,
  3453. 0x02830107, /* xyld, bb, 7 lines */
  3454. 0x027d0107, /* xyld, k2, 7 lines */
  3455. 0x00000000,
  3456. 0x00000000, /* ptld, bb, 0 lines */
  3457. 0x00000000, /* ptld, k2, 0 lines */
  3458. 0x00000000,
  3459. 0x00000000, /* ypld, bb, 0 lines */
  3460. 0x00000000, /* ypld, k2, 0 lines */
  3461. 0x00000000,
  3462. 0x028a010e, /* prm, bb, 14 lines */
  3463. 0x02980110, /* prm, k2, 16 lines */
  3464. 0x00000000,
  3465. 0x02a8000d, /* pbf_pb1, bb, 13 lines */
  3466. 0x02a8000d, /* pbf_pb1, k2, 13 lines */
  3467. 0x00000000,
  3468. 0x02a8000d, /* pbf_pb2, bb, 13 lines */
  3469. 0x02a8000d, /* pbf_pb2, k2, 13 lines */
  3470. 0x00000000,
  3471. 0x02a8000d, /* rpb, bb, 13 lines */
  3472. 0x02a8000d, /* rpb, k2, 13 lines */
  3473. 0x00000000,
  3474. 0x00600185, /* btb, bb, 133 lines */
  3475. 0x00600185, /* btb, k2, 133 lines */
  3476. 0x00000000,
  3477. 0x02b50117, /* pbf, bb, 23 lines */
  3478. 0x02b50117, /* pbf, k2, 23 lines */
  3479. 0x00000000,
  3480. 0x02cc0006, /* rdif, bb, 6 lines */
  3481. 0x02cc0006, /* rdif, k2, 6 lines */
  3482. 0x00000000,
  3483. 0x02d20006, /* tdif, bb, 6 lines */
  3484. 0x02d20006, /* tdif, k2, 6 lines */
  3485. 0x00000000,
  3486. 0x02d80003, /* cdu, bb, 3 lines */
  3487. 0x02db000e, /* cdu, k2, 14 lines */
  3488. 0x00000000,
  3489. 0x02e9010d, /* ccfc, bb, 13 lines */
  3490. 0x02f60117, /* ccfc, k2, 23 lines */
  3491. 0x00000000,
  3492. 0x02e9010d, /* tcfc, bb, 13 lines */
  3493. 0x02f60117, /* tcfc, k2, 23 lines */
  3494. 0x00000000,
  3495. 0x030d0133, /* igu, bb, 51 lines */
  3496. 0x030d0133, /* igu, k2, 51 lines */
  3497. 0x00000000,
  3498. 0x03400106, /* cau, bb, 6 lines */
  3499. 0x03400106, /* cau, k2, 6 lines */
  3500. 0x00000000,
  3501. 0x00000000, /* rgfs, bb, 0 lines */
  3502. 0x00000000, /* rgfs, k2, 0 lines */
  3503. 0x00000000,
  3504. 0x00000000, /* rgsrc, bb, 0 lines */
  3505. 0x00000000, /* rgsrc, k2, 0 lines */
  3506. 0x00000000,
  3507. 0x00000000, /* tgfs, bb, 0 lines */
  3508. 0x00000000, /* tgfs, k2, 0 lines */
  3509. 0x00000000,
  3510. 0x00000000, /* tgsrc, bb, 0 lines */
  3511. 0x00000000, /* tgsrc, k2, 0 lines */
  3512. 0x00000000,
  3513. 0x00000000, /* umac, bb, 0 lines */
  3514. 0x00120006, /* umac, k2, 6 lines */
  3515. 0x00000000,
  3516. 0x00000000, /* xmac, bb, 0 lines */
  3517. 0x00000000, /* xmac, k2, 0 lines */
  3518. 0x00000000,
  3519. 0x00000000, /* dbg, bb, 0 lines */
  3520. 0x00000000, /* dbg, k2, 0 lines */
  3521. 0x00000000,
  3522. 0x0346012b, /* nig, bb, 43 lines */
  3523. 0x0346011d, /* nig, k2, 29 lines */
  3524. 0x00000000,
  3525. 0x00000000, /* wol, bb, 0 lines */
  3526. 0x001c0002, /* wol, k2, 2 lines */
  3527. 0x00000000,
  3528. 0x00000000, /* bmbn, bb, 0 lines */
  3529. 0x00210008, /* bmbn, k2, 8 lines */
  3530. 0x00000000,
  3531. 0x00000000, /* ipc, bb, 0 lines */
  3532. 0x00000000, /* ipc, k2, 0 lines */
  3533. 0x00000000,
  3534. 0x00000000, /* nwm, bb, 0 lines */
  3535. 0x0371000b, /* nwm, k2, 11 lines */
  3536. 0x00000000,
  3537. 0x00000000, /* nws, bb, 0 lines */
  3538. 0x037c0009, /* nws, k2, 9 lines */
  3539. 0x00000000,
  3540. 0x00000000, /* ms, bb, 0 lines */
  3541. 0x00120004, /* ms, k2, 4 lines */
  3542. 0x00000000,
  3543. 0x00000000, /* phy_pcie, bb, 0 lines */
  3544. 0x00e5001a, /* phy_pcie, k2, 26 lines */
  3545. 0x00000000,
  3546. 0x00000000, /* led, bb, 0 lines */
  3547. 0x00000000, /* led, k2, 0 lines */
  3548. 0x00000000,
  3549. 0x00000000, /* avs_wrap, bb, 0 lines */
  3550. 0x00000000, /* avs_wrap, k2, 0 lines */
  3551. 0x00000000,
  3552. 0x00000000, /* bar0_map, bb, 0 lines */
  3553. 0x00000000, /* bar0_map, k2, 0 lines */
  3554. 0x00000000,
  3555. 0x00000000, /* bar0_map, bb, 0 lines */
  3556. 0x00000000, /* bar0_map, k2, 0 lines */
  3557. 0x00000000,
  3558. };
  3559. /* Win 2 */
  3560. #define GTT_BAR0_MAP_REG_IGU_CMD 0x00f000UL
  3561. /* Win 3 */
  3562. #define GTT_BAR0_MAP_REG_TSDM_RAM 0x010000UL
  3563. /* Win 4 */
  3564. #define GTT_BAR0_MAP_REG_MSDM_RAM 0x011000UL
  3565. /* Win 5 */
  3566. #define GTT_BAR0_MAP_REG_MSDM_RAM_1024 0x012000UL
  3567. /* Win 6 */
  3568. #define GTT_BAR0_MAP_REG_USDM_RAM 0x013000UL
  3569. /* Win 7 */
  3570. #define GTT_BAR0_MAP_REG_USDM_RAM_1024 0x014000UL
  3571. /* Win 8 */
  3572. #define GTT_BAR0_MAP_REG_USDM_RAM_2048 0x015000UL
  3573. /* Win 9 */
  3574. #define GTT_BAR0_MAP_REG_XSDM_RAM 0x016000UL
  3575. /* Win 10 */
  3576. #define GTT_BAR0_MAP_REG_YSDM_RAM 0x017000UL
  3577. /* Win 11 */
  3578. #define GTT_BAR0_MAP_REG_PSDM_RAM 0x018000UL
  3579. /**
  3580. * @brief qed_qm_pf_mem_size - prepare QM ILT sizes
  3581. *
  3582. * Returns the required host memory size in 4KB units.
  3583. * Must be called before all QM init HSI functions.
  3584. *
  3585. * @param num_pf_cids - number of connections used by this PF
  3586. * @param num_vf_cids - number of connections used by VFs of this PF
  3587. * @param num_tids - number of tasks used by this PF
  3588. * @param num_pf_pqs - number of PQs used by this PF
  3589. * @param num_vf_pqs - number of PQs used by VFs of this PF
  3590. *
  3591. * @return The required host memory size in 4KB units.
  3592. */
  3593. u32 qed_qm_pf_mem_size(u32 num_pf_cids,
  3594. u32 num_vf_cids,
  3595. u32 num_tids, u16 num_pf_pqs, u16 num_vf_pqs);
  3596. struct qed_qm_common_rt_init_params {
  3597. u8 max_ports_per_engine;
  3598. u8 max_phys_tcs_per_port;
  3599. bool pf_rl_en;
  3600. bool pf_wfq_en;
  3601. bool vport_rl_en;
  3602. bool vport_wfq_en;
  3603. struct init_qm_port_params *port_params;
  3604. };
  3605. int qed_qm_common_rt_init(struct qed_hwfn *p_hwfn,
  3606. struct qed_qm_common_rt_init_params *p_params);
  3607. struct qed_qm_pf_rt_init_params {
  3608. u8 port_id;
  3609. u8 pf_id;
  3610. u8 max_phys_tcs_per_port;
  3611. bool is_pf_loading;
  3612. u32 num_pf_cids;
  3613. u32 num_vf_cids;
  3614. u32 num_tids;
  3615. u16 start_pq;
  3616. u16 num_pf_pqs;
  3617. u16 num_vf_pqs;
  3618. u8 start_vport;
  3619. u8 num_vports;
  3620. u16 pf_wfq;
  3621. u32 pf_rl;
  3622. u32 link_speed;
  3623. struct init_qm_pq_params *pq_params;
  3624. struct init_qm_vport_params *vport_params;
  3625. };
  3626. int qed_qm_pf_rt_init(struct qed_hwfn *p_hwfn,
  3627. struct qed_ptt *p_ptt,
  3628. struct qed_qm_pf_rt_init_params *p_params);
  3629. /**
  3630. * @brief qed_init_pf_wfq - Initializes the WFQ weight of the specified PF
  3631. *
  3632. * @param p_hwfn
  3633. * @param p_ptt - ptt window used for writing the registers
  3634. * @param pf_id - PF ID
  3635. * @param pf_wfq - WFQ weight. Must be non-zero.
  3636. *
  3637. * @return 0 on success, -1 on error.
  3638. */
  3639. int qed_init_pf_wfq(struct qed_hwfn *p_hwfn,
  3640. struct qed_ptt *p_ptt, u8 pf_id, u16 pf_wfq);
  3641. /**
  3642. * @brief qed_init_pf_rl - Initializes the rate limit of the specified PF
  3643. *
  3644. * @param p_hwfn
  3645. * @param p_ptt - ptt window used for writing the registers
  3646. * @param pf_id - PF ID
  3647. * @param pf_rl - rate limit in Mb/sec units
  3648. *
  3649. * @return 0 on success, -1 on error.
  3650. */
  3651. int qed_init_pf_rl(struct qed_hwfn *p_hwfn,
  3652. struct qed_ptt *p_ptt, u8 pf_id, u32 pf_rl);
  3653. /**
  3654. * @brief qed_init_vport_wfq Initializes the WFQ weight of the specified VPORT
  3655. *
  3656. * @param p_hwfn
  3657. * @param p_ptt - ptt window used for writing the registers
  3658. * @param first_tx_pq_id- An array containing the first Tx PQ ID associated
  3659. * with the VPORT for each TC. This array is filled by
  3660. * qed_qm_pf_rt_init
  3661. * @param vport_wfq - WFQ weight. Must be non-zero.
  3662. *
  3663. * @return 0 on success, -1 on error.
  3664. */
  3665. int qed_init_vport_wfq(struct qed_hwfn *p_hwfn,
  3666. struct qed_ptt *p_ptt,
  3667. u16 first_tx_pq_id[NUM_OF_TCS], u16 vport_wfq);
  3668. /**
  3669. * @brief qed_init_vport_rl - Initializes the rate limit of the specified VPORT
  3670. *
  3671. * @param p_hwfn
  3672. * @param p_ptt - ptt window used for writing the registers
  3673. * @param vport_id - VPORT ID
  3674. * @param vport_rl - rate limit in Mb/sec units
  3675. * @param link_speed - link speed in Mbps.
  3676. *
  3677. * @return 0 on success, -1 on error.
  3678. */
  3679. int qed_init_vport_rl(struct qed_hwfn *p_hwfn,
  3680. struct qed_ptt *p_ptt,
  3681. u8 vport_id, u32 vport_rl, u32 link_speed);
  3682. /**
  3683. * @brief qed_send_qm_stop_cmd Sends a stop command to the QM
  3684. *
  3685. * @param p_hwfn
  3686. * @param p_ptt
  3687. * @param is_release_cmd - true for release, false for stop.
  3688. * @param is_tx_pq - true for Tx PQs, false for Other PQs.
  3689. * @param start_pq - first PQ ID to stop
  3690. * @param num_pqs - Number of PQs to stop, starting from start_pq.
  3691. *
  3692. * @return bool, true if successful, false if timeout occurred while waiting for
  3693. * QM command done.
  3694. */
  3695. bool qed_send_qm_stop_cmd(struct qed_hwfn *p_hwfn,
  3696. struct qed_ptt *p_ptt,
  3697. bool is_release_cmd,
  3698. bool is_tx_pq, u16 start_pq, u16 num_pqs);
  3699. /**
  3700. * @brief qed_set_vxlan_dest_port - initializes vxlan tunnel destination udp port
  3701. *
  3702. * @param p_hwfn
  3703. * @param p_ptt - ptt window used for writing the registers.
  3704. * @param dest_port - vxlan destination udp port.
  3705. */
  3706. void qed_set_vxlan_dest_port(struct qed_hwfn *p_hwfn,
  3707. struct qed_ptt *p_ptt, u16 dest_port);
  3708. /**
  3709. * @brief qed_set_vxlan_enable - enable or disable VXLAN tunnel in HW
  3710. *
  3711. * @param p_hwfn
  3712. * @param p_ptt - ptt window used for writing the registers.
  3713. * @param vxlan_enable - vxlan enable flag.
  3714. */
  3715. void qed_set_vxlan_enable(struct qed_hwfn *p_hwfn,
  3716. struct qed_ptt *p_ptt, bool vxlan_enable);
  3717. /**
  3718. * @brief qed_set_gre_enable - enable or disable GRE tunnel in HW
  3719. *
  3720. * @param p_hwfn
  3721. * @param p_ptt - ptt window used for writing the registers.
  3722. * @param eth_gre_enable - eth GRE enable enable flag.
  3723. * @param ip_gre_enable - IP GRE enable enable flag.
  3724. */
  3725. void qed_set_gre_enable(struct qed_hwfn *p_hwfn,
  3726. struct qed_ptt *p_ptt,
  3727. bool eth_gre_enable, bool ip_gre_enable);
  3728. /**
  3729. * @brief qed_set_geneve_dest_port - initializes geneve tunnel destination udp port
  3730. *
  3731. * @param p_hwfn
  3732. * @param p_ptt - ptt window used for writing the registers.
  3733. * @param dest_port - geneve destination udp port.
  3734. */
  3735. void qed_set_geneve_dest_port(struct qed_hwfn *p_hwfn,
  3736. struct qed_ptt *p_ptt, u16 dest_port);
  3737. /**
  3738. * @brief qed_set_gre_enable - enable or disable GRE tunnel in HW
  3739. *
  3740. * @param p_ptt - ptt window used for writing the registers.
  3741. * @param eth_geneve_enable - eth GENEVE enable enable flag.
  3742. * @param ip_geneve_enable - IP GENEVE enable enable flag.
  3743. */
  3744. void qed_set_geneve_enable(struct qed_hwfn *p_hwfn,
  3745. struct qed_ptt *p_ptt,
  3746. bool eth_geneve_enable, bool ip_geneve_enable);
  3747. void qed_set_vxlan_no_l2_enable(struct qed_hwfn *p_hwfn,
  3748. struct qed_ptt *p_ptt, bool enable);
  3749. /**
  3750. * @brief qed_gft_disable - Disable GFT
  3751. *
  3752. * @param p_hwfn
  3753. * @param p_ptt - ptt window used for writing the registers.
  3754. * @param pf_id - pf on which to disable GFT.
  3755. */
  3756. void qed_gft_disable(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt, u16 pf_id);
  3757. /**
  3758. * @brief qed_gft_config - Enable and configure HW for GFT
  3759. *
  3760. * @param p_hwfn
  3761. * @param p_ptt - ptt window used for writing the registers.
  3762. * @param pf_id - pf on which to enable GFT.
  3763. * @param tcp - set profile tcp packets.
  3764. * @param udp - set profile udp packet.
  3765. * @param ipv4 - set profile ipv4 packet.
  3766. * @param ipv6 - set profile ipv6 packet.
  3767. * @param profile_type - define packet same fields. Use enum gft_profile_type.
  3768. */
  3769. void qed_gft_config(struct qed_hwfn *p_hwfn,
  3770. struct qed_ptt *p_ptt,
  3771. u16 pf_id,
  3772. bool tcp,
  3773. bool udp,
  3774. bool ipv4, bool ipv6, enum gft_profile_type profile_type);
  3775. /**
  3776. * @brief qed_enable_context_validation - Enable and configure context
  3777. * validation.
  3778. *
  3779. * @param p_hwfn
  3780. * @param p_ptt - ptt window used for writing the registers.
  3781. */
  3782. void qed_enable_context_validation(struct qed_hwfn *p_hwfn,
  3783. struct qed_ptt *p_ptt);
  3784. /**
  3785. * @brief qed_calc_session_ctx_validation - Calcualte validation byte for
  3786. * session context.
  3787. *
  3788. * @param p_ctx_mem - pointer to context memory.
  3789. * @param ctx_size - context size.
  3790. * @param ctx_type - context type.
  3791. * @param cid - context cid.
  3792. */
  3793. void qed_calc_session_ctx_validation(void *p_ctx_mem,
  3794. u16 ctx_size, u8 ctx_type, u32 cid);
  3795. /**
  3796. * @brief qed_calc_task_ctx_validation - Calcualte validation byte for task
  3797. * context.
  3798. *
  3799. * @param p_ctx_mem - pointer to context memory.
  3800. * @param ctx_size - context size.
  3801. * @param ctx_type - context type.
  3802. * @param tid - context tid.
  3803. */
  3804. void qed_calc_task_ctx_validation(void *p_ctx_mem,
  3805. u16 ctx_size, u8 ctx_type, u32 tid);
  3806. /**
  3807. * @brief qed_memset_session_ctx - Memset session context to 0 while
  3808. * preserving validation bytes.
  3809. *
  3810. * @param p_hwfn -
  3811. * @param p_ctx_mem - pointer to context memory.
  3812. * @param ctx_size - size to initialzie.
  3813. * @param ctx_type - context type.
  3814. */
  3815. void qed_memset_session_ctx(void *p_ctx_mem, u32 ctx_size, u8 ctx_type);
  3816. /**
  3817. * @brief qed_memset_task_ctx - Memset task context to 0 while preserving
  3818. * validation bytes.
  3819. *
  3820. * @param p_ctx_mem - pointer to context memory.
  3821. * @param ctx_size - size to initialzie.
  3822. * @param ctx_type - context type.
  3823. */
  3824. void qed_memset_task_ctx(void *p_ctx_mem, u32 ctx_size, u8 ctx_type);
  3825. /* Ystorm flow control mode. Use enum fw_flow_ctrl_mode */
  3826. #define YSTORM_FLOW_CONTROL_MODE_OFFSET (IRO[0].base)
  3827. #define YSTORM_FLOW_CONTROL_MODE_SIZE (IRO[0].size)
  3828. /* Tstorm port statistics */
  3829. #define TSTORM_PORT_STAT_OFFSET(port_id) \
  3830. (IRO[1].base + ((port_id) * IRO[1].m1))
  3831. #define TSTORM_PORT_STAT_SIZE (IRO[1].size)
  3832. /* Tstorm ll2 port statistics */
  3833. #define TSTORM_LL2_PORT_STAT_OFFSET(port_id) \
  3834. (IRO[2].base + ((port_id) * IRO[2].m1))
  3835. #define TSTORM_LL2_PORT_STAT_SIZE (IRO[2].size)
  3836. /* Ustorm VF-PF Channel ready flag */
  3837. #define USTORM_VF_PF_CHANNEL_READY_OFFSET(vf_id) \
  3838. (IRO[3].base + ((vf_id) * IRO[3].m1))
  3839. #define USTORM_VF_PF_CHANNEL_READY_SIZE (IRO[3].size)
  3840. /* Ustorm Final flr cleanup ack */
  3841. #define USTORM_FLR_FINAL_ACK_OFFSET(pf_id) \
  3842. (IRO[4].base + ((pf_id) * IRO[4].m1))
  3843. #define USTORM_FLR_FINAL_ACK_SIZE (IRO[4].size)
  3844. /* Ustorm Event ring consumer */
  3845. #define USTORM_EQE_CONS_OFFSET(pf_id) \
  3846. (IRO[5].base + ((pf_id) * IRO[5].m1))
  3847. #define USTORM_EQE_CONS_SIZE (IRO[5].size)
  3848. /* Ustorm eth queue zone */
  3849. #define USTORM_ETH_QUEUE_ZONE_OFFSET(queue_zone_id) \
  3850. (IRO[6].base + ((queue_zone_id) * IRO[6].m1))
  3851. #define USTORM_ETH_QUEUE_ZONE_SIZE (IRO[6].size)
  3852. /* Ustorm Common Queue ring consumer */
  3853. #define USTORM_COMMON_QUEUE_CONS_OFFSET(queue_zone_id) \
  3854. (IRO[7].base + ((queue_zone_id) * IRO[7].m1))
  3855. #define USTORM_COMMON_QUEUE_CONS_SIZE (IRO[7].size)
  3856. /* Xstorm Integration Test Data */
  3857. #define XSTORM_INTEG_TEST_DATA_OFFSET (IRO[8].base)
  3858. #define XSTORM_INTEG_TEST_DATA_SIZE (IRO[8].size)
  3859. /* Ystorm Integration Test Data */
  3860. #define YSTORM_INTEG_TEST_DATA_OFFSET (IRO[9].base)
  3861. #define YSTORM_INTEG_TEST_DATA_SIZE (IRO[9].size)
  3862. /* Pstorm Integration Test Data */
  3863. #define PSTORM_INTEG_TEST_DATA_OFFSET (IRO[10].base)
  3864. #define PSTORM_INTEG_TEST_DATA_SIZE (IRO[10].size)
  3865. /* Tstorm Integration Test Data */
  3866. #define TSTORM_INTEG_TEST_DATA_OFFSET (IRO[11].base)
  3867. #define TSTORM_INTEG_TEST_DATA_SIZE (IRO[11].size)
  3868. /* Mstorm Integration Test Data */
  3869. #define MSTORM_INTEG_TEST_DATA_OFFSET (IRO[12].base)
  3870. #define MSTORM_INTEG_TEST_DATA_SIZE (IRO[12].size)
  3871. /* Ustorm Integration Test Data */
  3872. #define USTORM_INTEG_TEST_DATA_OFFSET (IRO[13].base)
  3873. #define USTORM_INTEG_TEST_DATA_SIZE (IRO[13].size)
  3874. /* Tstorm producers */
  3875. #define TSTORM_LL2_RX_PRODS_OFFSET(core_rx_queue_id) \
  3876. (IRO[14].base + ((core_rx_queue_id) * IRO[14].m1))
  3877. #define TSTORM_LL2_RX_PRODS_SIZE (IRO[14].size)
  3878. /* Tstorm LightL2 queue statistics */
  3879. #define CORE_LL2_TSTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \
  3880. (IRO[15].base + ((core_rx_queue_id) * IRO[15].m1))
  3881. #define CORE_LL2_TSTORM_PER_QUEUE_STAT_SIZE (IRO[15].size)
  3882. /* Ustorm LiteL2 queue statistics */
  3883. #define CORE_LL2_USTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \
  3884. (IRO[16].base + ((core_rx_queue_id) * IRO[16].m1))
  3885. #define CORE_LL2_USTORM_PER_QUEUE_STAT_SIZE (IRO[16].size)
  3886. /* Pstorm LiteL2 queue statistics */
  3887. #define CORE_LL2_PSTORM_PER_QUEUE_STAT_OFFSET(core_tx_stats_id) \
  3888. (IRO[17].base + ((core_tx_stats_id) * IRO[17].m1))
  3889. #define CORE_LL2_PSTORM_PER_QUEUE_STAT_SIZE (IRO[17].size)
  3890. /* Mstorm queue statistics */
  3891. #define MSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
  3892. (IRO[18].base + ((stat_counter_id) * IRO[18].m1))
  3893. #define MSTORM_QUEUE_STAT_SIZE (IRO[18].size)
  3894. /* Mstorm ETH PF queues producers */
  3895. #define MSTORM_ETH_PF_PRODS_OFFSET(queue_id) \
  3896. (IRO[19].base + ((queue_id) * IRO[19].m1))
  3897. #define MSTORM_ETH_PF_PRODS_SIZE (IRO[19].size)
  3898. /* Mstorm ETH VF queues producers offset in RAM. Used in default VF zone size
  3899. * mode.
  3900. */
  3901. #define MSTORM_ETH_VF_PRODS_OFFSET(vf_id, vf_queue_id) \
  3902. (IRO[20].base + ((vf_id) * IRO[20].m1) + ((vf_queue_id) * IRO[20].m2))
  3903. #define MSTORM_ETH_VF_PRODS_SIZE (IRO[20].size)
  3904. /* TPA agregation timeout in us resolution (on ASIC) */
  3905. #define MSTORM_TPA_TIMEOUT_US_OFFSET (IRO[21].base)
  3906. #define MSTORM_TPA_TIMEOUT_US_SIZE (IRO[21].size)
  3907. /* Mstorm pf statistics */
  3908. #define MSTORM_ETH_PF_STAT_OFFSET(pf_id) \
  3909. (IRO[22].base + ((pf_id) * IRO[22].m1))
  3910. #define MSTORM_ETH_PF_STAT_SIZE (IRO[22].size)
  3911. /* Ustorm queue statistics */
  3912. #define USTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
  3913. (IRO[23].base + ((stat_counter_id) * IRO[23].m1))
  3914. #define USTORM_QUEUE_STAT_SIZE (IRO[23].size)
  3915. /* Ustorm pf statistics */
  3916. #define USTORM_ETH_PF_STAT_OFFSET(pf_id)\
  3917. (IRO[24].base + ((pf_id) * IRO[24].m1))
  3918. #define USTORM_ETH_PF_STAT_SIZE (IRO[24].size)
  3919. /* Pstorm queue statistics */
  3920. #define PSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
  3921. (IRO[25].base + ((stat_counter_id) * IRO[25].m1))
  3922. #define PSTORM_QUEUE_STAT_SIZE (IRO[25].size)
  3923. /* Pstorm pf statistics */
  3924. #define PSTORM_ETH_PF_STAT_OFFSET(pf_id) \
  3925. (IRO[26].base + ((pf_id) * IRO[26].m1))
  3926. #define PSTORM_ETH_PF_STAT_SIZE (IRO[26].size)
  3927. /* Control frame's EthType configuration for TX control frame security */
  3928. #define PSTORM_CTL_FRAME_ETHTYPE_OFFSET(eth_type_id) \
  3929. (IRO[27].base + ((eth_type_id) * IRO[27].m1))
  3930. #define PSTORM_CTL_FRAME_ETHTYPE_SIZE (IRO[27].size)
  3931. /* Tstorm last parser message */
  3932. #define TSTORM_ETH_PRS_INPUT_OFFSET (IRO[28].base)
  3933. #define TSTORM_ETH_PRS_INPUT_SIZE (IRO[28].size)
  3934. /* Tstorm Eth limit Rx rate */
  3935. #define ETH_RX_RATE_LIMIT_OFFSET(pf_id) \
  3936. (IRO[29].base + ((pf_id) * IRO[29].m1))
  3937. #define ETH_RX_RATE_LIMIT_SIZE (IRO[29].size)
  3938. /* Xstorm queue zone */
  3939. #define XSTORM_ETH_QUEUE_ZONE_OFFSET(queue_id) \
  3940. (IRO[30].base + ((queue_id) * IRO[30].m1))
  3941. #define XSTORM_ETH_QUEUE_ZONE_SIZE (IRO[30].size)
  3942. /* Ystorm cqe producer */
  3943. #define YSTORM_TOE_CQ_PROD_OFFSET(rss_id) \
  3944. (IRO[31].base + ((rss_id) * IRO[31].m1))
  3945. #define YSTORM_TOE_CQ_PROD_SIZE (IRO[31].size)
  3946. /* Ustorm cqe producer */
  3947. #define USTORM_TOE_CQ_PROD_OFFSET(rss_id) \
  3948. (IRO[32].base + ((rss_id) * IRO[32].m1))
  3949. #define USTORM_TOE_CQ_PROD_SIZE (IRO[32].size)
  3950. /* Ustorm grq producer */
  3951. #define USTORM_TOE_GRQ_PROD_OFFSET(pf_id) \
  3952. (IRO[33].base + ((pf_id) * IRO[33].m1))
  3953. #define USTORM_TOE_GRQ_PROD_SIZE (IRO[33].size)
  3954. /* Tstorm cmdq-cons of given command queue-id */
  3955. #define TSTORM_SCSI_CMDQ_CONS_OFFSET(cmdq_queue_id) \
  3956. (IRO[34].base + ((cmdq_queue_id) * IRO[34].m1))
  3957. #define TSTORM_SCSI_CMDQ_CONS_SIZE (IRO[34].size)
  3958. /* Tstorm (reflects M-Storm) bdq-external-producer of given function ID,
  3959. * BDqueue-id.
  3960. */
  3961. #define TSTORM_SCSI_BDQ_EXT_PROD_OFFSET(func_id, bdq_id) \
  3962. (IRO[35].base + ((func_id) * IRO[35].m1) + ((bdq_id) * IRO[35].m2))
  3963. #define TSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[35].size)
  3964. /* Mstorm bdq-external-producer of given BDQ resource ID, BDqueue-id */
  3965. #define MSTORM_SCSI_BDQ_EXT_PROD_OFFSET(func_id, bdq_id) \
  3966. (IRO[36].base + ((func_id) * IRO[36].m1) + ((bdq_id) * IRO[36].m2))
  3967. #define MSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[36].size)
  3968. /* Tstorm iSCSI RX stats */
  3969. #define TSTORM_ISCSI_RX_STATS_OFFSET(pf_id) \
  3970. (IRO[37].base + ((pf_id) * IRO[37].m1))
  3971. #define TSTORM_ISCSI_RX_STATS_SIZE (IRO[37].size)
  3972. /* Mstorm iSCSI RX stats */
  3973. #define MSTORM_ISCSI_RX_STATS_OFFSET(pf_id) \
  3974. (IRO[38].base + ((pf_id) * IRO[38].m1))
  3975. #define MSTORM_ISCSI_RX_STATS_SIZE (IRO[38].size)
  3976. /* Ustorm iSCSI RX stats */
  3977. #define USTORM_ISCSI_RX_STATS_OFFSET(pf_id) \
  3978. (IRO[39].base + ((pf_id) * IRO[39].m1))
  3979. #define USTORM_ISCSI_RX_STATS_SIZE (IRO[39].size)
  3980. /* Xstorm iSCSI TX stats */
  3981. #define XSTORM_ISCSI_TX_STATS_OFFSET(pf_id) \
  3982. (IRO[40].base + ((pf_id) * IRO[40].m1))
  3983. #define XSTORM_ISCSI_TX_STATS_SIZE (IRO[40].size)
  3984. /* Ystorm iSCSI TX stats */
  3985. #define YSTORM_ISCSI_TX_STATS_OFFSET(pf_id) \
  3986. (IRO[41].base + ((pf_id) * IRO[41].m1))
  3987. #define YSTORM_ISCSI_TX_STATS_SIZE (IRO[41].size)
  3988. /* Pstorm iSCSI TX stats */
  3989. #define PSTORM_ISCSI_TX_STATS_OFFSET(pf_id) \
  3990. (IRO[42].base + ((pf_id) * IRO[42].m1))
  3991. #define PSTORM_ISCSI_TX_STATS_SIZE (IRO[42].size)
  3992. /* Tstorm FCoE RX stats */
  3993. #define TSTORM_FCOE_RX_STATS_OFFSET(pf_id) \
  3994. (IRO[43].base + ((pf_id) * IRO[43].m1))
  3995. #define TSTORM_FCOE_RX_STATS_SIZE (IRO[43].size)
  3996. /* Pstorm FCoE TX stats */
  3997. #define PSTORM_FCOE_TX_STATS_OFFSET(pf_id) \
  3998. (IRO[44].base + ((pf_id) * IRO[44].m1))
  3999. #define PSTORM_FCOE_TX_STATS_SIZE (IRO[44].size)
  4000. /* Pstorm RDMA queue statistics */
  4001. #define PSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \
  4002. (IRO[45].base + ((rdma_stat_counter_id) * IRO[45].m1))
  4003. #define PSTORM_RDMA_QUEUE_STAT_SIZE (IRO[45].size)
  4004. /* Tstorm RDMA queue statistics */
  4005. #define TSTORM_RDMA_QUEUE_STAT_OFFSET(rdma_stat_counter_id) \
  4006. (IRO[46].base + ((rdma_stat_counter_id) * IRO[46].m1))
  4007. #define TSTORM_RDMA_QUEUE_STAT_SIZE (IRO[46].size)
  4008. /* Xstorm iWARP rxmit stats */
  4009. #define XSTORM_IWARP_RXMIT_STATS_OFFSET(pf_id) \
  4010. (IRO[47].base + ((pf_id) * IRO[47].m1))
  4011. #define XSTORM_IWARP_RXMIT_STATS_SIZE (IRO[47].size)
  4012. /* Tstorm RoCE Event Statistics */
  4013. #define TSTORM_ROCE_EVENTS_STAT_OFFSET(roce_pf_id) \
  4014. (IRO[48].base + ((roce_pf_id) * IRO[48].m1))
  4015. #define TSTORM_ROCE_EVENTS_STAT_SIZE (IRO[48].size)
  4016. /* DCQCN Received Statistics */
  4017. #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_OFFSET(roce_pf_id) \
  4018. (IRO[49].base + ((roce_pf_id) * IRO[49].m1))
  4019. #define YSTORM_ROCE_DCQCN_RECEIVED_STATS_SIZE (IRO[49].size)
  4020. /* DCQCN Sent Statistics */
  4021. #define PSTORM_ROCE_DCQCN_SENT_STATS_OFFSET(roce_pf_id) \
  4022. (IRO[50].base + ((roce_pf_id) * IRO[50].m1))
  4023. #define PSTORM_ROCE_DCQCN_SENT_STATS_SIZE (IRO[50].size)
  4024. static const struct iro iro_arr[51] = {
  4025. {0x0, 0x0, 0x0, 0x0, 0x8},
  4026. {0x4cb8, 0x88, 0x0, 0x0, 0x88},
  4027. {0x6530, 0x20, 0x0, 0x0, 0x20},
  4028. {0xb00, 0x8, 0x0, 0x0, 0x4},
  4029. {0xa80, 0x8, 0x0, 0x0, 0x4},
  4030. {0x0, 0x8, 0x0, 0x0, 0x2},
  4031. {0x80, 0x8, 0x0, 0x0, 0x4},
  4032. {0x84, 0x8, 0x0, 0x0, 0x2},
  4033. {0x4c48, 0x0, 0x0, 0x0, 0x78},
  4034. {0x3e38, 0x0, 0x0, 0x0, 0x78},
  4035. {0x2b78, 0x0, 0x0, 0x0, 0x78},
  4036. {0x4c40, 0x0, 0x0, 0x0, 0x78},
  4037. {0x4998, 0x0, 0x0, 0x0, 0x78},
  4038. {0x7f50, 0x0, 0x0, 0x0, 0x78},
  4039. {0xa28, 0x8, 0x0, 0x0, 0x8},
  4040. {0x6210, 0x10, 0x0, 0x0, 0x10},
  4041. {0xb820, 0x30, 0x0, 0x0, 0x30},
  4042. {0x96c0, 0x30, 0x0, 0x0, 0x30},
  4043. {0x4b68, 0x80, 0x0, 0x0, 0x40},
  4044. {0x1f8, 0x4, 0x0, 0x0, 0x4},
  4045. {0x53a8, 0x80, 0x4, 0x0, 0x4},
  4046. {0xc7d0, 0x0, 0x0, 0x0, 0x4},
  4047. {0x4ba8, 0x80, 0x0, 0x0, 0x20},
  4048. {0x8158, 0x40, 0x0, 0x0, 0x30},
  4049. {0xe770, 0x60, 0x0, 0x0, 0x60},
  4050. {0x2d10, 0x80, 0x0, 0x0, 0x38},
  4051. {0xf2b8, 0x78, 0x0, 0x0, 0x78},
  4052. {0x1f8, 0x4, 0x0, 0x0, 0x4},
  4053. {0xaf20, 0x0, 0x0, 0x0, 0xf0},
  4054. {0xb010, 0x8, 0x0, 0x0, 0x8},
  4055. {0x1f8, 0x8, 0x0, 0x0, 0x8},
  4056. {0xac0, 0x8, 0x0, 0x0, 0x8},
  4057. {0x2578, 0x8, 0x0, 0x0, 0x8},
  4058. {0x24f8, 0x8, 0x0, 0x0, 0x8},
  4059. {0x0, 0x8, 0x0, 0x0, 0x8},
  4060. {0x400, 0x18, 0x8, 0x0, 0x8},
  4061. {0xb78, 0x18, 0x8, 0x0, 0x2},
  4062. {0xd898, 0x50, 0x0, 0x0, 0x3c},
  4063. {0x12908, 0x18, 0x0, 0x0, 0x10},
  4064. {0x11aa8, 0x40, 0x0, 0x0, 0x18},
  4065. {0xa588, 0x50, 0x0, 0x0, 0x20},
  4066. {0x8700, 0x40, 0x0, 0x0, 0x28},
  4067. {0x10300, 0x18, 0x0, 0x0, 0x10},
  4068. {0xde48, 0x48, 0x0, 0x0, 0x38},
  4069. {0x10768, 0x20, 0x0, 0x0, 0x20},
  4070. {0x2d48, 0x80, 0x0, 0x0, 0x10},
  4071. {0x5048, 0x10, 0x0, 0x0, 0x10},
  4072. {0xc9b8, 0x30, 0x0, 0x0, 0x10},
  4073. {0xed90, 0x10, 0x0, 0x0, 0x10},
  4074. {0xa3a0, 0x10, 0x0, 0x0, 0x10},
  4075. {0x13108, 0x8, 0x0, 0x0, 0x8},
  4076. };
  4077. /* Runtime array offsets */
  4078. #define DORQ_REG_PF_MAX_ICID_0_RT_OFFSET 0
  4079. #define DORQ_REG_PF_MAX_ICID_1_RT_OFFSET 1
  4080. #define DORQ_REG_PF_MAX_ICID_2_RT_OFFSET 2
  4081. #define DORQ_REG_PF_MAX_ICID_3_RT_OFFSET 3
  4082. #define DORQ_REG_PF_MAX_ICID_4_RT_OFFSET 4
  4083. #define DORQ_REG_PF_MAX_ICID_5_RT_OFFSET 5
  4084. #define DORQ_REG_PF_MAX_ICID_6_RT_OFFSET 6
  4085. #define DORQ_REG_PF_MAX_ICID_7_RT_OFFSET 7
  4086. #define DORQ_REG_VF_MAX_ICID_0_RT_OFFSET 8
  4087. #define DORQ_REG_VF_MAX_ICID_1_RT_OFFSET 9
  4088. #define DORQ_REG_VF_MAX_ICID_2_RT_OFFSET 10
  4089. #define DORQ_REG_VF_MAX_ICID_3_RT_OFFSET 11
  4090. #define DORQ_REG_VF_MAX_ICID_4_RT_OFFSET 12
  4091. #define DORQ_REG_VF_MAX_ICID_5_RT_OFFSET 13
  4092. #define DORQ_REG_VF_MAX_ICID_6_RT_OFFSET 14
  4093. #define DORQ_REG_VF_MAX_ICID_7_RT_OFFSET 15
  4094. #define DORQ_REG_PF_WAKE_ALL_RT_OFFSET 16
  4095. #define DORQ_REG_TAG1_ETHERTYPE_RT_OFFSET 17
  4096. #define DORQ_REG_GLB_MAX_ICID_0_RT_OFFSET 18
  4097. #define DORQ_REG_GLB_MAX_ICID_1_RT_OFFSET 19
  4098. #define DORQ_REG_GLB_RANGE2CONN_TYPE_0_RT_OFFSET 20
  4099. #define DORQ_REG_GLB_RANGE2CONN_TYPE_1_RT_OFFSET 21
  4100. #define DORQ_REG_PRV_PF_MAX_ICID_2_RT_OFFSET 22
  4101. #define DORQ_REG_PRV_PF_MAX_ICID_3_RT_OFFSET 23
  4102. #define DORQ_REG_PRV_PF_MAX_ICID_4_RT_OFFSET 24
  4103. #define DORQ_REG_PRV_PF_MAX_ICID_5_RT_OFFSET 25
  4104. #define DORQ_REG_PRV_VF_MAX_ICID_2_RT_OFFSET 26
  4105. #define DORQ_REG_PRV_VF_MAX_ICID_3_RT_OFFSET 27
  4106. #define DORQ_REG_PRV_VF_MAX_ICID_4_RT_OFFSET 28
  4107. #define DORQ_REG_PRV_VF_MAX_ICID_5_RT_OFFSET 29
  4108. #define DORQ_REG_PRV_PF_RANGE2CONN_TYPE_2_RT_OFFSET 30
  4109. #define DORQ_REG_PRV_PF_RANGE2CONN_TYPE_3_RT_OFFSET 31
  4110. #define DORQ_REG_PRV_PF_RANGE2CONN_TYPE_4_RT_OFFSET 32
  4111. #define DORQ_REG_PRV_PF_RANGE2CONN_TYPE_5_RT_OFFSET 33
  4112. #define DORQ_REG_PRV_VF_RANGE2CONN_TYPE_2_RT_OFFSET 34
  4113. #define DORQ_REG_PRV_VF_RANGE2CONN_TYPE_3_RT_OFFSET 35
  4114. #define DORQ_REG_PRV_VF_RANGE2CONN_TYPE_4_RT_OFFSET 36
  4115. #define DORQ_REG_PRV_VF_RANGE2CONN_TYPE_5_RT_OFFSET 37
  4116. #define IGU_REG_PF_CONFIGURATION_RT_OFFSET 38
  4117. #define IGU_REG_VF_CONFIGURATION_RT_OFFSET 39
  4118. #define IGU_REG_ATTN_MSG_ADDR_L_RT_OFFSET 40
  4119. #define IGU_REG_ATTN_MSG_ADDR_H_RT_OFFSET 41
  4120. #define IGU_REG_LEADING_EDGE_LATCH_RT_OFFSET 42
  4121. #define IGU_REG_TRAILING_EDGE_LATCH_RT_OFFSET 43
  4122. #define CAU_REG_CQE_AGG_UNIT_SIZE_RT_OFFSET 44
  4123. #define CAU_REG_SB_VAR_MEMORY_RT_OFFSET 45
  4124. #define CAU_REG_SB_VAR_MEMORY_RT_SIZE 1024
  4125. #define CAU_REG_SB_ADDR_MEMORY_RT_OFFSET 1069
  4126. #define CAU_REG_SB_ADDR_MEMORY_RT_SIZE 1024
  4127. #define CAU_REG_PI_MEMORY_RT_OFFSET 2093
  4128. #define CAU_REG_PI_MEMORY_RT_SIZE 4416
  4129. #define PRS_REG_SEARCH_RESP_INITIATOR_TYPE_RT_OFFSET 6509
  4130. #define PRS_REG_TASK_ID_MAX_INITIATOR_PF_RT_OFFSET 6510
  4131. #define PRS_REG_TASK_ID_MAX_INITIATOR_VF_RT_OFFSET 6511
  4132. #define PRS_REG_TASK_ID_MAX_TARGET_PF_RT_OFFSET 6512
  4133. #define PRS_REG_TASK_ID_MAX_TARGET_VF_RT_OFFSET 6513
  4134. #define PRS_REG_SEARCH_TCP_RT_OFFSET 6514
  4135. #define PRS_REG_SEARCH_FCOE_RT_OFFSET 6515
  4136. #define PRS_REG_SEARCH_ROCE_RT_OFFSET 6516
  4137. #define PRS_REG_ROCE_DEST_QP_MAX_VF_RT_OFFSET 6517
  4138. #define PRS_REG_ROCE_DEST_QP_MAX_PF_RT_OFFSET 6518
  4139. #define PRS_REG_SEARCH_OPENFLOW_RT_OFFSET 6519
  4140. #define PRS_REG_SEARCH_NON_IP_AS_OPENFLOW_RT_OFFSET 6520
  4141. #define PRS_REG_OPENFLOW_SUPPORT_ONLY_KNOWN_OVER_IP_RT_OFFSET 6521
  4142. #define PRS_REG_OPENFLOW_SEARCH_KEY_MASK_RT_OFFSET 6522
  4143. #define PRS_REG_TAG_ETHERTYPE_0_RT_OFFSET 6523
  4144. #define PRS_REG_LIGHT_L2_ETHERTYPE_EN_RT_OFFSET 6524
  4145. #define SRC_REG_FIRSTFREE_RT_OFFSET 6525
  4146. #define SRC_REG_FIRSTFREE_RT_SIZE 2
  4147. #define SRC_REG_LASTFREE_RT_OFFSET 6527
  4148. #define SRC_REG_LASTFREE_RT_SIZE 2
  4149. #define SRC_REG_COUNTFREE_RT_OFFSET 6529
  4150. #define SRC_REG_NUMBER_HASH_BITS_RT_OFFSET 6530
  4151. #define PSWRQ2_REG_CDUT_P_SIZE_RT_OFFSET 6531
  4152. #define PSWRQ2_REG_CDUC_P_SIZE_RT_OFFSET 6532
  4153. #define PSWRQ2_REG_TM_P_SIZE_RT_OFFSET 6533
  4154. #define PSWRQ2_REG_QM_P_SIZE_RT_OFFSET 6534
  4155. #define PSWRQ2_REG_SRC_P_SIZE_RT_OFFSET 6535
  4156. #define PSWRQ2_REG_TSDM_P_SIZE_RT_OFFSET 6536
  4157. #define PSWRQ2_REG_TM_FIRST_ILT_RT_OFFSET 6537
  4158. #define PSWRQ2_REG_TM_LAST_ILT_RT_OFFSET 6538
  4159. #define PSWRQ2_REG_QM_FIRST_ILT_RT_OFFSET 6539
  4160. #define PSWRQ2_REG_QM_LAST_ILT_RT_OFFSET 6540
  4161. #define PSWRQ2_REG_SRC_FIRST_ILT_RT_OFFSET 6541
  4162. #define PSWRQ2_REG_SRC_LAST_ILT_RT_OFFSET 6542
  4163. #define PSWRQ2_REG_CDUC_FIRST_ILT_RT_OFFSET 6543
  4164. #define PSWRQ2_REG_CDUC_LAST_ILT_RT_OFFSET 6544
  4165. #define PSWRQ2_REG_CDUT_FIRST_ILT_RT_OFFSET 6545
  4166. #define PSWRQ2_REG_CDUT_LAST_ILT_RT_OFFSET 6546
  4167. #define PSWRQ2_REG_TSDM_FIRST_ILT_RT_OFFSET 6547
  4168. #define PSWRQ2_REG_TSDM_LAST_ILT_RT_OFFSET 6548
  4169. #define PSWRQ2_REG_TM_NUMBER_OF_PF_BLOCKS_RT_OFFSET 6549
  4170. #define PSWRQ2_REG_CDUT_NUMBER_OF_PF_BLOCKS_RT_OFFSET 6550
  4171. #define PSWRQ2_REG_CDUC_NUMBER_OF_PF_BLOCKS_RT_OFFSET 6551
  4172. #define PSWRQ2_REG_TM_VF_BLOCKS_RT_OFFSET 6552
  4173. #define PSWRQ2_REG_CDUT_VF_BLOCKS_RT_OFFSET 6553
  4174. #define PSWRQ2_REG_CDUC_VF_BLOCKS_RT_OFFSET 6554
  4175. #define PSWRQ2_REG_TM_BLOCKS_FACTOR_RT_OFFSET 6555
  4176. #define PSWRQ2_REG_CDUT_BLOCKS_FACTOR_RT_OFFSET 6556
  4177. #define PSWRQ2_REG_CDUC_BLOCKS_FACTOR_RT_OFFSET 6557
  4178. #define PSWRQ2_REG_VF_BASE_RT_OFFSET 6558
  4179. #define PSWRQ2_REG_VF_LAST_ILT_RT_OFFSET 6559
  4180. #define PSWRQ2_REG_DRAM_ALIGN_WR_RT_OFFSET 6560
  4181. #define PSWRQ2_REG_DRAM_ALIGN_RD_RT_OFFSET 6561
  4182. #define PSWRQ2_REG_TGSRC_FIRST_ILT_RT_OFFSET 6562
  4183. #define PSWRQ2_REG_RGSRC_FIRST_ILT_RT_OFFSET 6563
  4184. #define PSWRQ2_REG_TGSRC_LAST_ILT_RT_OFFSET 6564
  4185. #define PSWRQ2_REG_RGSRC_LAST_ILT_RT_OFFSET 6565
  4186. #define PSWRQ2_REG_ILT_MEMORY_RT_OFFSET 6566
  4187. #define PSWRQ2_REG_ILT_MEMORY_RT_SIZE 26414
  4188. #define PGLUE_REG_B_VF_BASE_RT_OFFSET 32980
  4189. #define PGLUE_REG_B_MSDM_OFFSET_MASK_B_RT_OFFSET 32981
  4190. #define PGLUE_REG_B_MSDM_VF_SHIFT_B_RT_OFFSET 32982
  4191. #define PGLUE_REG_B_CACHE_LINE_SIZE_RT_OFFSET 32983
  4192. #define PGLUE_REG_B_PF_BAR0_SIZE_RT_OFFSET 32984
  4193. #define PGLUE_REG_B_PF_BAR1_SIZE_RT_OFFSET 32985
  4194. #define PGLUE_REG_B_VF_BAR1_SIZE_RT_OFFSET 32986
  4195. #define TM_REG_VF_ENABLE_CONN_RT_OFFSET 32987
  4196. #define TM_REG_PF_ENABLE_CONN_RT_OFFSET 32988
  4197. #define TM_REG_PF_ENABLE_TASK_RT_OFFSET 32989
  4198. #define TM_REG_GROUP_SIZE_RESOLUTION_CONN_RT_OFFSET 32990
  4199. #define TM_REG_GROUP_SIZE_RESOLUTION_TASK_RT_OFFSET 32991
  4200. #define TM_REG_CONFIG_CONN_MEM_RT_OFFSET 32992
  4201. #define TM_REG_CONFIG_CONN_MEM_RT_SIZE 416
  4202. #define TM_REG_CONFIG_TASK_MEM_RT_OFFSET 33408
  4203. #define TM_REG_CONFIG_TASK_MEM_RT_SIZE 608
  4204. #define QM_REG_MAXPQSIZE_0_RT_OFFSET 34016
  4205. #define QM_REG_MAXPQSIZE_1_RT_OFFSET 34017
  4206. #define QM_REG_MAXPQSIZE_2_RT_OFFSET 34018
  4207. #define QM_REG_MAXPQSIZETXSEL_0_RT_OFFSET 34019
  4208. #define QM_REG_MAXPQSIZETXSEL_1_RT_OFFSET 34020
  4209. #define QM_REG_MAXPQSIZETXSEL_2_RT_OFFSET 34021
  4210. #define QM_REG_MAXPQSIZETXSEL_3_RT_OFFSET 34022
  4211. #define QM_REG_MAXPQSIZETXSEL_4_RT_OFFSET 34023
  4212. #define QM_REG_MAXPQSIZETXSEL_5_RT_OFFSET 34024
  4213. #define QM_REG_MAXPQSIZETXSEL_6_RT_OFFSET 34025
  4214. #define QM_REG_MAXPQSIZETXSEL_7_RT_OFFSET 34026
  4215. #define QM_REG_MAXPQSIZETXSEL_8_RT_OFFSET 34027
  4216. #define QM_REG_MAXPQSIZETXSEL_9_RT_OFFSET 34028
  4217. #define QM_REG_MAXPQSIZETXSEL_10_RT_OFFSET 34029
  4218. #define QM_REG_MAXPQSIZETXSEL_11_RT_OFFSET 34030
  4219. #define QM_REG_MAXPQSIZETXSEL_12_RT_OFFSET 34031
  4220. #define QM_REG_MAXPQSIZETXSEL_13_RT_OFFSET 34032
  4221. #define QM_REG_MAXPQSIZETXSEL_14_RT_OFFSET 34033
  4222. #define QM_REG_MAXPQSIZETXSEL_15_RT_OFFSET 34034
  4223. #define QM_REG_MAXPQSIZETXSEL_16_RT_OFFSET 34035
  4224. #define QM_REG_MAXPQSIZETXSEL_17_RT_OFFSET 34036
  4225. #define QM_REG_MAXPQSIZETXSEL_18_RT_OFFSET 34037
  4226. #define QM_REG_MAXPQSIZETXSEL_19_RT_OFFSET 34038
  4227. #define QM_REG_MAXPQSIZETXSEL_20_RT_OFFSET 34039
  4228. #define QM_REG_MAXPQSIZETXSEL_21_RT_OFFSET 34040
  4229. #define QM_REG_MAXPQSIZETXSEL_22_RT_OFFSET 34041
  4230. #define QM_REG_MAXPQSIZETXSEL_23_RT_OFFSET 34042
  4231. #define QM_REG_MAXPQSIZETXSEL_24_RT_OFFSET 34043
  4232. #define QM_REG_MAXPQSIZETXSEL_25_RT_OFFSET 34044
  4233. #define QM_REG_MAXPQSIZETXSEL_26_RT_OFFSET 34045
  4234. #define QM_REG_MAXPQSIZETXSEL_27_RT_OFFSET 34046
  4235. #define QM_REG_MAXPQSIZETXSEL_28_RT_OFFSET 34047
  4236. #define QM_REG_MAXPQSIZETXSEL_29_RT_OFFSET 34048
  4237. #define QM_REG_MAXPQSIZETXSEL_30_RT_OFFSET 34049
  4238. #define QM_REG_MAXPQSIZETXSEL_31_RT_OFFSET 34050
  4239. #define QM_REG_MAXPQSIZETXSEL_32_RT_OFFSET 34051
  4240. #define QM_REG_MAXPQSIZETXSEL_33_RT_OFFSET 34052
  4241. #define QM_REG_MAXPQSIZETXSEL_34_RT_OFFSET 34053
  4242. #define QM_REG_MAXPQSIZETXSEL_35_RT_OFFSET 34054
  4243. #define QM_REG_MAXPQSIZETXSEL_36_RT_OFFSET 34055
  4244. #define QM_REG_MAXPQSIZETXSEL_37_RT_OFFSET 34056
  4245. #define QM_REG_MAXPQSIZETXSEL_38_RT_OFFSET 34057
  4246. #define QM_REG_MAXPQSIZETXSEL_39_RT_OFFSET 34058
  4247. #define QM_REG_MAXPQSIZETXSEL_40_RT_OFFSET 34059
  4248. #define QM_REG_MAXPQSIZETXSEL_41_RT_OFFSET 34060
  4249. #define QM_REG_MAXPQSIZETXSEL_42_RT_OFFSET 34061
  4250. #define QM_REG_MAXPQSIZETXSEL_43_RT_OFFSET 34062
  4251. #define QM_REG_MAXPQSIZETXSEL_44_RT_OFFSET 34063
  4252. #define QM_REG_MAXPQSIZETXSEL_45_RT_OFFSET 34064
  4253. #define QM_REG_MAXPQSIZETXSEL_46_RT_OFFSET 34065
  4254. #define QM_REG_MAXPQSIZETXSEL_47_RT_OFFSET 34066
  4255. #define QM_REG_MAXPQSIZETXSEL_48_RT_OFFSET 34067
  4256. #define QM_REG_MAXPQSIZETXSEL_49_RT_OFFSET 34068
  4257. #define QM_REG_MAXPQSIZETXSEL_50_RT_OFFSET 34069
  4258. #define QM_REG_MAXPQSIZETXSEL_51_RT_OFFSET 34070
  4259. #define QM_REG_MAXPQSIZETXSEL_52_RT_OFFSET 34071
  4260. #define QM_REG_MAXPQSIZETXSEL_53_RT_OFFSET 34072
  4261. #define QM_REG_MAXPQSIZETXSEL_54_RT_OFFSET 34073
  4262. #define QM_REG_MAXPQSIZETXSEL_55_RT_OFFSET 34074
  4263. #define QM_REG_MAXPQSIZETXSEL_56_RT_OFFSET 34075
  4264. #define QM_REG_MAXPQSIZETXSEL_57_RT_OFFSET 34076
  4265. #define QM_REG_MAXPQSIZETXSEL_58_RT_OFFSET 34077
  4266. #define QM_REG_MAXPQSIZETXSEL_59_RT_OFFSET 34078
  4267. #define QM_REG_MAXPQSIZETXSEL_60_RT_OFFSET 34079
  4268. #define QM_REG_MAXPQSIZETXSEL_61_RT_OFFSET 34080
  4269. #define QM_REG_MAXPQSIZETXSEL_62_RT_OFFSET 34081
  4270. #define QM_REG_MAXPQSIZETXSEL_63_RT_OFFSET 34082
  4271. #define QM_REG_BASEADDROTHERPQ_RT_OFFSET 34083
  4272. #define QM_REG_BASEADDROTHERPQ_RT_SIZE 128
  4273. #define QM_REG_PTRTBLOTHER_RT_OFFSET 34211
  4274. #define QM_REG_PTRTBLOTHER_RT_SIZE 256
  4275. #define QM_REG_AFULLQMBYPTHRPFWFQ_RT_OFFSET 34467
  4276. #define QM_REG_AFULLQMBYPTHRVPWFQ_RT_OFFSET 34468
  4277. #define QM_REG_AFULLQMBYPTHRPFRL_RT_OFFSET 34469
  4278. #define QM_REG_AFULLQMBYPTHRGLBLRL_RT_OFFSET 34470
  4279. #define QM_REG_AFULLOPRTNSTCCRDMASK_RT_OFFSET 34471
  4280. #define QM_REG_WRROTHERPQGRP_0_RT_OFFSET 34472
  4281. #define QM_REG_WRROTHERPQGRP_1_RT_OFFSET 34473
  4282. #define QM_REG_WRROTHERPQGRP_2_RT_OFFSET 34474
  4283. #define QM_REG_WRROTHERPQGRP_3_RT_OFFSET 34475
  4284. #define QM_REG_WRROTHERPQGRP_4_RT_OFFSET 34476
  4285. #define QM_REG_WRROTHERPQGRP_5_RT_OFFSET 34477
  4286. #define QM_REG_WRROTHERPQGRP_6_RT_OFFSET 34478
  4287. #define QM_REG_WRROTHERPQGRP_7_RT_OFFSET 34479
  4288. #define QM_REG_WRROTHERPQGRP_8_RT_OFFSET 34480
  4289. #define QM_REG_WRROTHERPQGRP_9_RT_OFFSET 34481
  4290. #define QM_REG_WRROTHERPQGRP_10_RT_OFFSET 34482
  4291. #define QM_REG_WRROTHERPQGRP_11_RT_OFFSET 34483
  4292. #define QM_REG_WRROTHERPQGRP_12_RT_OFFSET 34484
  4293. #define QM_REG_WRROTHERPQGRP_13_RT_OFFSET 34485
  4294. #define QM_REG_WRROTHERPQGRP_14_RT_OFFSET 34486
  4295. #define QM_REG_WRROTHERPQGRP_15_RT_OFFSET 34487
  4296. #define QM_REG_WRROTHERGRPWEIGHT_0_RT_OFFSET 34488
  4297. #define QM_REG_WRROTHERGRPWEIGHT_1_RT_OFFSET 34489
  4298. #define QM_REG_WRROTHERGRPWEIGHT_2_RT_OFFSET 34490
  4299. #define QM_REG_WRROTHERGRPWEIGHT_3_RT_OFFSET 34491
  4300. #define QM_REG_WRRTXGRPWEIGHT_0_RT_OFFSET 34492
  4301. #define QM_REG_WRRTXGRPWEIGHT_1_RT_OFFSET 34493
  4302. #define QM_REG_PQTX2PF_0_RT_OFFSET 34494
  4303. #define QM_REG_PQTX2PF_1_RT_OFFSET 34495
  4304. #define QM_REG_PQTX2PF_2_RT_OFFSET 34496
  4305. #define QM_REG_PQTX2PF_3_RT_OFFSET 34497
  4306. #define QM_REG_PQTX2PF_4_RT_OFFSET 34498
  4307. #define QM_REG_PQTX2PF_5_RT_OFFSET 34499
  4308. #define QM_REG_PQTX2PF_6_RT_OFFSET 34500
  4309. #define QM_REG_PQTX2PF_7_RT_OFFSET 34501
  4310. #define QM_REG_PQTX2PF_8_RT_OFFSET 34502
  4311. #define QM_REG_PQTX2PF_9_RT_OFFSET 34503
  4312. #define QM_REG_PQTX2PF_10_RT_OFFSET 34504
  4313. #define QM_REG_PQTX2PF_11_RT_OFFSET 34505
  4314. #define QM_REG_PQTX2PF_12_RT_OFFSET 34506
  4315. #define QM_REG_PQTX2PF_13_RT_OFFSET 34507
  4316. #define QM_REG_PQTX2PF_14_RT_OFFSET 34508
  4317. #define QM_REG_PQTX2PF_15_RT_OFFSET 34509
  4318. #define QM_REG_PQTX2PF_16_RT_OFFSET 34510
  4319. #define QM_REG_PQTX2PF_17_RT_OFFSET 34511
  4320. #define QM_REG_PQTX2PF_18_RT_OFFSET 34512
  4321. #define QM_REG_PQTX2PF_19_RT_OFFSET 34513
  4322. #define QM_REG_PQTX2PF_20_RT_OFFSET 34514
  4323. #define QM_REG_PQTX2PF_21_RT_OFFSET 34515
  4324. #define QM_REG_PQTX2PF_22_RT_OFFSET 34516
  4325. #define QM_REG_PQTX2PF_23_RT_OFFSET 34517
  4326. #define QM_REG_PQTX2PF_24_RT_OFFSET 34518
  4327. #define QM_REG_PQTX2PF_25_RT_OFFSET 34519
  4328. #define QM_REG_PQTX2PF_26_RT_OFFSET 34520
  4329. #define QM_REG_PQTX2PF_27_RT_OFFSET 34521
  4330. #define QM_REG_PQTX2PF_28_RT_OFFSET 34522
  4331. #define QM_REG_PQTX2PF_29_RT_OFFSET 34523
  4332. #define QM_REG_PQTX2PF_30_RT_OFFSET 34524
  4333. #define QM_REG_PQTX2PF_31_RT_OFFSET 34525
  4334. #define QM_REG_PQTX2PF_32_RT_OFFSET 34526
  4335. #define QM_REG_PQTX2PF_33_RT_OFFSET 34527
  4336. #define QM_REG_PQTX2PF_34_RT_OFFSET 34528
  4337. #define QM_REG_PQTX2PF_35_RT_OFFSET 34529
  4338. #define QM_REG_PQTX2PF_36_RT_OFFSET 34530
  4339. #define QM_REG_PQTX2PF_37_RT_OFFSET 34531
  4340. #define QM_REG_PQTX2PF_38_RT_OFFSET 34532
  4341. #define QM_REG_PQTX2PF_39_RT_OFFSET 34533
  4342. #define QM_REG_PQTX2PF_40_RT_OFFSET 34534
  4343. #define QM_REG_PQTX2PF_41_RT_OFFSET 34535
  4344. #define QM_REG_PQTX2PF_42_RT_OFFSET 34536
  4345. #define QM_REG_PQTX2PF_43_RT_OFFSET 34537
  4346. #define QM_REG_PQTX2PF_44_RT_OFFSET 34538
  4347. #define QM_REG_PQTX2PF_45_RT_OFFSET 34539
  4348. #define QM_REG_PQTX2PF_46_RT_OFFSET 34540
  4349. #define QM_REG_PQTX2PF_47_RT_OFFSET 34541
  4350. #define QM_REG_PQTX2PF_48_RT_OFFSET 34542
  4351. #define QM_REG_PQTX2PF_49_RT_OFFSET 34543
  4352. #define QM_REG_PQTX2PF_50_RT_OFFSET 34544
  4353. #define QM_REG_PQTX2PF_51_RT_OFFSET 34545
  4354. #define QM_REG_PQTX2PF_52_RT_OFFSET 34546
  4355. #define QM_REG_PQTX2PF_53_RT_OFFSET 34547
  4356. #define QM_REG_PQTX2PF_54_RT_OFFSET 34548
  4357. #define QM_REG_PQTX2PF_55_RT_OFFSET 34549
  4358. #define QM_REG_PQTX2PF_56_RT_OFFSET 34550
  4359. #define QM_REG_PQTX2PF_57_RT_OFFSET 34551
  4360. #define QM_REG_PQTX2PF_58_RT_OFFSET 34552
  4361. #define QM_REG_PQTX2PF_59_RT_OFFSET 34553
  4362. #define QM_REG_PQTX2PF_60_RT_OFFSET 34554
  4363. #define QM_REG_PQTX2PF_61_RT_OFFSET 34555
  4364. #define QM_REG_PQTX2PF_62_RT_OFFSET 34556
  4365. #define QM_REG_PQTX2PF_63_RT_OFFSET 34557
  4366. #define QM_REG_PQOTHER2PF_0_RT_OFFSET 34558
  4367. #define QM_REG_PQOTHER2PF_1_RT_OFFSET 34559
  4368. #define QM_REG_PQOTHER2PF_2_RT_OFFSET 34560
  4369. #define QM_REG_PQOTHER2PF_3_RT_OFFSET 34561
  4370. #define QM_REG_PQOTHER2PF_4_RT_OFFSET 34562
  4371. #define QM_REG_PQOTHER2PF_5_RT_OFFSET 34563
  4372. #define QM_REG_PQOTHER2PF_6_RT_OFFSET 34564
  4373. #define QM_REG_PQOTHER2PF_7_RT_OFFSET 34565
  4374. #define QM_REG_PQOTHER2PF_8_RT_OFFSET 34566
  4375. #define QM_REG_PQOTHER2PF_9_RT_OFFSET 34567
  4376. #define QM_REG_PQOTHER2PF_10_RT_OFFSET 34568
  4377. #define QM_REG_PQOTHER2PF_11_RT_OFFSET 34569
  4378. #define QM_REG_PQOTHER2PF_12_RT_OFFSET 34570
  4379. #define QM_REG_PQOTHER2PF_13_RT_OFFSET 34571
  4380. #define QM_REG_PQOTHER2PF_14_RT_OFFSET 34572
  4381. #define QM_REG_PQOTHER2PF_15_RT_OFFSET 34573
  4382. #define QM_REG_RLGLBLPERIOD_0_RT_OFFSET 34574
  4383. #define QM_REG_RLGLBLPERIOD_1_RT_OFFSET 34575
  4384. #define QM_REG_RLGLBLPERIODTIMER_0_RT_OFFSET 34576
  4385. #define QM_REG_RLGLBLPERIODTIMER_1_RT_OFFSET 34577
  4386. #define QM_REG_RLGLBLPERIODSEL_0_RT_OFFSET 34578
  4387. #define QM_REG_RLGLBLPERIODSEL_1_RT_OFFSET 34579
  4388. #define QM_REG_RLGLBLPERIODSEL_2_RT_OFFSET 34580
  4389. #define QM_REG_RLGLBLPERIODSEL_3_RT_OFFSET 34581
  4390. #define QM_REG_RLGLBLPERIODSEL_4_RT_OFFSET 34582
  4391. #define QM_REG_RLGLBLPERIODSEL_5_RT_OFFSET 34583
  4392. #define QM_REG_RLGLBLPERIODSEL_6_RT_OFFSET 34584
  4393. #define QM_REG_RLGLBLPERIODSEL_7_RT_OFFSET 34585
  4394. #define QM_REG_RLGLBLINCVAL_RT_OFFSET 34586
  4395. #define QM_REG_RLGLBLINCVAL_RT_SIZE 256
  4396. #define QM_REG_RLGLBLUPPERBOUND_RT_OFFSET 34842
  4397. #define QM_REG_RLGLBLUPPERBOUND_RT_SIZE 256
  4398. #define QM_REG_RLGLBLCRD_RT_OFFSET 35098
  4399. #define QM_REG_RLGLBLCRD_RT_SIZE 256
  4400. #define QM_REG_RLGLBLENABLE_RT_OFFSET 35354
  4401. #define QM_REG_RLPFPERIOD_RT_OFFSET 35355
  4402. #define QM_REG_RLPFPERIODTIMER_RT_OFFSET 35356
  4403. #define QM_REG_RLPFINCVAL_RT_OFFSET 35357
  4404. #define QM_REG_RLPFINCVAL_RT_SIZE 16
  4405. #define QM_REG_RLPFUPPERBOUND_RT_OFFSET 35373
  4406. #define QM_REG_RLPFUPPERBOUND_RT_SIZE 16
  4407. #define QM_REG_RLPFCRD_RT_OFFSET 35389
  4408. #define QM_REG_RLPFCRD_RT_SIZE 16
  4409. #define QM_REG_RLPFENABLE_RT_OFFSET 35405
  4410. #define QM_REG_RLPFVOQENABLE_RT_OFFSET 35406
  4411. #define QM_REG_WFQPFWEIGHT_RT_OFFSET 35407
  4412. #define QM_REG_WFQPFWEIGHT_RT_SIZE 16
  4413. #define QM_REG_WFQPFUPPERBOUND_RT_OFFSET 35423
  4414. #define QM_REG_WFQPFUPPERBOUND_RT_SIZE 16
  4415. #define QM_REG_WFQPFCRD_RT_OFFSET 35439
  4416. #define QM_REG_WFQPFCRD_RT_SIZE 256
  4417. #define QM_REG_WFQPFENABLE_RT_OFFSET 35695
  4418. #define QM_REG_WFQVPENABLE_RT_OFFSET 35696
  4419. #define QM_REG_BASEADDRTXPQ_RT_OFFSET 35697
  4420. #define QM_REG_BASEADDRTXPQ_RT_SIZE 512
  4421. #define QM_REG_TXPQMAP_RT_OFFSET 36209
  4422. #define QM_REG_TXPQMAP_RT_SIZE 512
  4423. #define QM_REG_WFQVPWEIGHT_RT_OFFSET 36721
  4424. #define QM_REG_WFQVPWEIGHT_RT_SIZE 512
  4425. #define QM_REG_WFQVPCRD_RT_OFFSET 37233
  4426. #define QM_REG_WFQVPCRD_RT_SIZE 512
  4427. #define QM_REG_WFQVPMAP_RT_OFFSET 37745
  4428. #define QM_REG_WFQVPMAP_RT_SIZE 512
  4429. #define QM_REG_PTRTBLTX_RT_OFFSET 38257
  4430. #define QM_REG_PTRTBLTX_RT_SIZE 1024
  4431. #define QM_REG_WFQPFCRD_MSB_RT_OFFSET 39281
  4432. #define QM_REG_WFQPFCRD_MSB_RT_SIZE 320
  4433. #define QM_REG_VOQCRDLINE_RT_OFFSET 39601
  4434. #define QM_REG_VOQCRDLINE_RT_SIZE 36
  4435. #define QM_REG_VOQINITCRDLINE_RT_OFFSET 39637
  4436. #define QM_REG_VOQINITCRDLINE_RT_SIZE 36
  4437. #define QM_REG_RLPFVOQENABLE_MSB_RT_OFFSET 39673
  4438. #define NIG_REG_TAG_ETHERTYPE_0_RT_OFFSET 39674
  4439. #define NIG_REG_BRB_GATE_DNTFWD_PORT_RT_OFFSET 39675
  4440. #define NIG_REG_OUTER_TAG_VALUE_LIST0_RT_OFFSET 39676
  4441. #define NIG_REG_OUTER_TAG_VALUE_LIST1_RT_OFFSET 39677
  4442. #define NIG_REG_OUTER_TAG_VALUE_LIST2_RT_OFFSET 39678
  4443. #define NIG_REG_OUTER_TAG_VALUE_LIST3_RT_OFFSET 39679
  4444. #define NIG_REG_LLH_FUNC_TAGMAC_CLS_TYPE_RT_OFFSET 39680
  4445. #define NIG_REG_LLH_FUNC_TAG_EN_RT_OFFSET 39681
  4446. #define NIG_REG_LLH_FUNC_TAG_EN_RT_SIZE 4
  4447. #define NIG_REG_LLH_FUNC_TAG_VALUE_RT_OFFSET 39685
  4448. #define NIG_REG_LLH_FUNC_TAG_VALUE_RT_SIZE 4
  4449. #define NIG_REG_LLH_FUNC_FILTER_VALUE_RT_OFFSET 39689
  4450. #define NIG_REG_LLH_FUNC_FILTER_VALUE_RT_SIZE 32
  4451. #define NIG_REG_LLH_FUNC_FILTER_EN_RT_OFFSET 39721
  4452. #define NIG_REG_LLH_FUNC_FILTER_EN_RT_SIZE 16
  4453. #define NIG_REG_LLH_FUNC_FILTER_MODE_RT_OFFSET 39737
  4454. #define NIG_REG_LLH_FUNC_FILTER_MODE_RT_SIZE 16
  4455. #define NIG_REG_LLH_FUNC_FILTER_PROTOCOL_TYPE_RT_OFFSET 39753
  4456. #define NIG_REG_LLH_FUNC_FILTER_PROTOCOL_TYPE_RT_SIZE 16
  4457. #define NIG_REG_LLH_FUNC_FILTER_HDR_SEL_RT_OFFSET 39769
  4458. #define NIG_REG_LLH_FUNC_FILTER_HDR_SEL_RT_SIZE 16
  4459. #define NIG_REG_TX_EDPM_CTRL_RT_OFFSET 39785
  4460. #define NIG_REG_ROCE_DUPLICATE_TO_HOST_RT_OFFSET 39786
  4461. #define NIG_REG_PPF_TO_ENGINE_SEL_RT_OFFSET 39787
  4462. #define NIG_REG_PPF_TO_ENGINE_SEL_RT_SIZE 8
  4463. #define NIG_REG_LLH_PF_CLS_FUNC_FILTER_VALUE_RT_OFFSET 39795
  4464. #define NIG_REG_LLH_PF_CLS_FUNC_FILTER_VALUE_RT_SIZE 1024
  4465. #define NIG_REG_LLH_PF_CLS_FUNC_FILTER_EN_RT_OFFSET 40819
  4466. #define NIG_REG_LLH_PF_CLS_FUNC_FILTER_EN_RT_SIZE 512
  4467. #define NIG_REG_LLH_PF_CLS_FUNC_FILTER_MODE_RT_OFFSET 41331
  4468. #define NIG_REG_LLH_PF_CLS_FUNC_FILTER_MODE_RT_SIZE 512
  4469. #define NIG_REG_LLH_PF_CLS_FUNC_FILTER_PROTOCOL_TYPE_RT_OFFSET 41843
  4470. #define NIG_REG_LLH_PF_CLS_FUNC_FILTER_PROTOCOL_TYPE_RT_SIZE 512
  4471. #define NIG_REG_LLH_PF_CLS_FUNC_FILTER_HDR_SEL_RT_OFFSET 42355
  4472. #define NIG_REG_LLH_PF_CLS_FUNC_FILTER_HDR_SEL_RT_SIZE 512
  4473. #define NIG_REG_LLH_PF_CLS_FILTERS_MAP_RT_OFFSET 42867
  4474. #define NIG_REG_LLH_PF_CLS_FILTERS_MAP_RT_SIZE 32
  4475. #define CDU_REG_CID_ADDR_PARAMS_RT_OFFSET 42899
  4476. #define CDU_REG_SEGMENT0_PARAMS_RT_OFFSET 42900
  4477. #define CDU_REG_SEGMENT1_PARAMS_RT_OFFSET 42901
  4478. #define CDU_REG_PF_SEG0_TYPE_OFFSET_RT_OFFSET 42902
  4479. #define CDU_REG_PF_SEG1_TYPE_OFFSET_RT_OFFSET 42903
  4480. #define CDU_REG_PF_SEG2_TYPE_OFFSET_RT_OFFSET 42904
  4481. #define CDU_REG_PF_SEG3_TYPE_OFFSET_RT_OFFSET 42905
  4482. #define CDU_REG_PF_FL_SEG0_TYPE_OFFSET_RT_OFFSET 42906
  4483. #define CDU_REG_PF_FL_SEG1_TYPE_OFFSET_RT_OFFSET 42907
  4484. #define CDU_REG_PF_FL_SEG2_TYPE_OFFSET_RT_OFFSET 42908
  4485. #define CDU_REG_PF_FL_SEG3_TYPE_OFFSET_RT_OFFSET 42909
  4486. #define CDU_REG_VF_SEG_TYPE_OFFSET_RT_OFFSET 42910
  4487. #define CDU_REG_VF_FL_SEG_TYPE_OFFSET_RT_OFFSET 42911
  4488. #define PBF_REG_TAG_ETHERTYPE_0_RT_OFFSET 42912
  4489. #define PBF_REG_BTB_SHARED_AREA_SIZE_RT_OFFSET 42913
  4490. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ0_RT_OFFSET 42914
  4491. #define PBF_REG_BTB_GUARANTEED_VOQ0_RT_OFFSET 42915
  4492. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ0_RT_OFFSET 42916
  4493. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ1_RT_OFFSET 42917
  4494. #define PBF_REG_BTB_GUARANTEED_VOQ1_RT_OFFSET 42918
  4495. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ1_RT_OFFSET 42919
  4496. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ2_RT_OFFSET 42920
  4497. #define PBF_REG_BTB_GUARANTEED_VOQ2_RT_OFFSET 42921
  4498. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ2_RT_OFFSET 42922
  4499. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ3_RT_OFFSET 42923
  4500. #define PBF_REG_BTB_GUARANTEED_VOQ3_RT_OFFSET 42924
  4501. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ3_RT_OFFSET 42925
  4502. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ4_RT_OFFSET 42926
  4503. #define PBF_REG_BTB_GUARANTEED_VOQ4_RT_OFFSET 42927
  4504. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ4_RT_OFFSET 42928
  4505. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ5_RT_OFFSET 42929
  4506. #define PBF_REG_BTB_GUARANTEED_VOQ5_RT_OFFSET 42930
  4507. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ5_RT_OFFSET 42931
  4508. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ6_RT_OFFSET 42932
  4509. #define PBF_REG_BTB_GUARANTEED_VOQ6_RT_OFFSET 42933
  4510. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ6_RT_OFFSET 42934
  4511. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ7_RT_OFFSET 42935
  4512. #define PBF_REG_BTB_GUARANTEED_VOQ7_RT_OFFSET 42936
  4513. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ7_RT_OFFSET 42937
  4514. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ8_RT_OFFSET 42938
  4515. #define PBF_REG_BTB_GUARANTEED_VOQ8_RT_OFFSET 42939
  4516. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ8_RT_OFFSET 42940
  4517. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ9_RT_OFFSET 42941
  4518. #define PBF_REG_BTB_GUARANTEED_VOQ9_RT_OFFSET 42942
  4519. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ9_RT_OFFSET 42943
  4520. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ10_RT_OFFSET 42944
  4521. #define PBF_REG_BTB_GUARANTEED_VOQ10_RT_OFFSET 42945
  4522. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ10_RT_OFFSET 42946
  4523. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ11_RT_OFFSET 42947
  4524. #define PBF_REG_BTB_GUARANTEED_VOQ11_RT_OFFSET 42948
  4525. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ11_RT_OFFSET 42949
  4526. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ12_RT_OFFSET 42950
  4527. #define PBF_REG_BTB_GUARANTEED_VOQ12_RT_OFFSET 42951
  4528. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ12_RT_OFFSET 42952
  4529. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ13_RT_OFFSET 42953
  4530. #define PBF_REG_BTB_GUARANTEED_VOQ13_RT_OFFSET 42954
  4531. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ13_RT_OFFSET 42955
  4532. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ14_RT_OFFSET 42956
  4533. #define PBF_REG_BTB_GUARANTEED_VOQ14_RT_OFFSET 42957
  4534. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ14_RT_OFFSET 42958
  4535. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ15_RT_OFFSET 42959
  4536. #define PBF_REG_BTB_GUARANTEED_VOQ15_RT_OFFSET 42960
  4537. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ15_RT_OFFSET 42961
  4538. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ16_RT_OFFSET 42962
  4539. #define PBF_REG_BTB_GUARANTEED_VOQ16_RT_OFFSET 42963
  4540. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ16_RT_OFFSET 42964
  4541. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ17_RT_OFFSET 42965
  4542. #define PBF_REG_BTB_GUARANTEED_VOQ17_RT_OFFSET 42966
  4543. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ17_RT_OFFSET 42967
  4544. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ18_RT_OFFSET 42968
  4545. #define PBF_REG_BTB_GUARANTEED_VOQ18_RT_OFFSET 42969
  4546. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ18_RT_OFFSET 42970
  4547. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ19_RT_OFFSET 42971
  4548. #define PBF_REG_BTB_GUARANTEED_VOQ19_RT_OFFSET 42972
  4549. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ19_RT_OFFSET 42973
  4550. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ20_RT_OFFSET 42974
  4551. #define PBF_REG_BTB_GUARANTEED_VOQ20_RT_OFFSET 42975
  4552. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ20_RT_OFFSET 42976
  4553. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ21_RT_OFFSET 42977
  4554. #define PBF_REG_BTB_GUARANTEED_VOQ21_RT_OFFSET 42978
  4555. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ21_RT_OFFSET 42979
  4556. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ22_RT_OFFSET 42980
  4557. #define PBF_REG_BTB_GUARANTEED_VOQ22_RT_OFFSET 42981
  4558. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ22_RT_OFFSET 42982
  4559. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ23_RT_OFFSET 42983
  4560. #define PBF_REG_BTB_GUARANTEED_VOQ23_RT_OFFSET 42984
  4561. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ23_RT_OFFSET 42985
  4562. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ24_RT_OFFSET 42986
  4563. #define PBF_REG_BTB_GUARANTEED_VOQ24_RT_OFFSET 42987
  4564. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ24_RT_OFFSET 42988
  4565. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ25_RT_OFFSET 42989
  4566. #define PBF_REG_BTB_GUARANTEED_VOQ25_RT_OFFSET 42990
  4567. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ25_RT_OFFSET 42991
  4568. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ26_RT_OFFSET 42992
  4569. #define PBF_REG_BTB_GUARANTEED_VOQ26_RT_OFFSET 42993
  4570. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ26_RT_OFFSET 42994
  4571. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ27_RT_OFFSET 42995
  4572. #define PBF_REG_BTB_GUARANTEED_VOQ27_RT_OFFSET 42996
  4573. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ27_RT_OFFSET 42997
  4574. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ28_RT_OFFSET 42998
  4575. #define PBF_REG_BTB_GUARANTEED_VOQ28_RT_OFFSET 42999
  4576. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ28_RT_OFFSET 43000
  4577. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ29_RT_OFFSET 43001
  4578. #define PBF_REG_BTB_GUARANTEED_VOQ29_RT_OFFSET 43002
  4579. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ29_RT_OFFSET 43003
  4580. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ30_RT_OFFSET 43004
  4581. #define PBF_REG_BTB_GUARANTEED_VOQ30_RT_OFFSET 43005
  4582. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ30_RT_OFFSET 43006
  4583. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ31_RT_OFFSET 43007
  4584. #define PBF_REG_BTB_GUARANTEED_VOQ31_RT_OFFSET 43008
  4585. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ31_RT_OFFSET 43009
  4586. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ32_RT_OFFSET 43010
  4587. #define PBF_REG_BTB_GUARANTEED_VOQ32_RT_OFFSET 43011
  4588. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ32_RT_OFFSET 43012
  4589. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ33_RT_OFFSET 43013
  4590. #define PBF_REG_BTB_GUARANTEED_VOQ33_RT_OFFSET 43014
  4591. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ33_RT_OFFSET 43015
  4592. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ34_RT_OFFSET 43016
  4593. #define PBF_REG_BTB_GUARANTEED_VOQ34_RT_OFFSET 43017
  4594. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ34_RT_OFFSET 43018
  4595. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ35_RT_OFFSET 43019
  4596. #define PBF_REG_BTB_GUARANTEED_VOQ35_RT_OFFSET 43020
  4597. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ35_RT_OFFSET 43021
  4598. #define XCM_REG_CON_PHY_Q3_RT_OFFSET 43022
  4599. #define RUNTIME_ARRAY_SIZE 43023
  4600. /* Init Callbacks */
  4601. #define DMAE_READY_CB 0
  4602. /* The eth storm context for the Tstorm */
  4603. struct tstorm_eth_conn_st_ctx {
  4604. __le32 reserved[4];
  4605. };
  4606. /* The eth storm context for the Pstorm */
  4607. struct pstorm_eth_conn_st_ctx {
  4608. __le32 reserved[8];
  4609. };
  4610. /* The eth storm context for the Xstorm */
  4611. struct xstorm_eth_conn_st_ctx {
  4612. __le32 reserved[60];
  4613. };
  4614. struct e4_xstorm_eth_conn_ag_ctx {
  4615. u8 reserved0;
  4616. u8 state;
  4617. u8 flags0;
  4618. #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  4619. #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  4620. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED1_MASK 0x1
  4621. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED1_SHIFT 1
  4622. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED2_MASK 0x1
  4623. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED2_SHIFT 2
  4624. #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  4625. #define E4_XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  4626. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED3_MASK 0x1
  4627. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED3_SHIFT 4
  4628. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED4_MASK 0x1
  4629. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED4_SHIFT 5
  4630. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED5_MASK 0x1
  4631. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED5_SHIFT 6
  4632. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED6_MASK 0x1
  4633. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED6_SHIFT 7
  4634. u8 flags1;
  4635. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED7_MASK 0x1
  4636. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED7_SHIFT 0
  4637. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED8_MASK 0x1
  4638. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED8_SHIFT 1
  4639. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED9_MASK 0x1
  4640. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED9_SHIFT 2
  4641. #define E4_XSTORM_ETH_CONN_AG_CTX_BIT11_MASK 0x1
  4642. #define E4_XSTORM_ETH_CONN_AG_CTX_BIT11_SHIFT 3
  4643. #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_MASK 0x1
  4644. #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED2_SHIFT 4
  4645. #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_MASK 0x1
  4646. #define E4_XSTORM_ETH_CONN_AG_CTX_E5_RESERVED3_SHIFT 5
  4647. #define E4_XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1
  4648. #define E4_XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6
  4649. #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1
  4650. #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7
  4651. u8 flags2;
  4652. #define E4_XSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3
  4653. #define E4_XSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 0
  4654. #define E4_XSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3
  4655. #define E4_XSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 2
  4656. #define E4_XSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3
  4657. #define E4_XSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 4
  4658. #define E4_XSTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3
  4659. #define E4_XSTORM_ETH_CONN_AG_CTX_CF3_SHIFT 6
  4660. u8 flags3;
  4661. #define E4_XSTORM_ETH_CONN_AG_CTX_CF4_MASK 0x3
  4662. #define E4_XSTORM_ETH_CONN_AG_CTX_CF4_SHIFT 0
  4663. #define E4_XSTORM_ETH_CONN_AG_CTX_CF5_MASK 0x3
  4664. #define E4_XSTORM_ETH_CONN_AG_CTX_CF5_SHIFT 2
  4665. #define E4_XSTORM_ETH_CONN_AG_CTX_CF6_MASK 0x3
  4666. #define E4_XSTORM_ETH_CONN_AG_CTX_CF6_SHIFT 4
  4667. #define E4_XSTORM_ETH_CONN_AG_CTX_CF7_MASK 0x3
  4668. #define E4_XSTORM_ETH_CONN_AG_CTX_CF7_SHIFT 6
  4669. u8 flags4;
  4670. #define E4_XSTORM_ETH_CONN_AG_CTX_CF8_MASK 0x3
  4671. #define E4_XSTORM_ETH_CONN_AG_CTX_CF8_SHIFT 0
  4672. #define E4_XSTORM_ETH_CONN_AG_CTX_CF9_MASK 0x3
  4673. #define E4_XSTORM_ETH_CONN_AG_CTX_CF9_SHIFT 2
  4674. #define E4_XSTORM_ETH_CONN_AG_CTX_CF10_MASK 0x3
  4675. #define E4_XSTORM_ETH_CONN_AG_CTX_CF10_SHIFT 4
  4676. #define E4_XSTORM_ETH_CONN_AG_CTX_CF11_MASK 0x3
  4677. #define E4_XSTORM_ETH_CONN_AG_CTX_CF11_SHIFT 6
  4678. u8 flags5;
  4679. #define E4_XSTORM_ETH_CONN_AG_CTX_CF12_MASK 0x3
  4680. #define E4_XSTORM_ETH_CONN_AG_CTX_CF12_SHIFT 0
  4681. #define E4_XSTORM_ETH_CONN_AG_CTX_CF13_MASK 0x3
  4682. #define E4_XSTORM_ETH_CONN_AG_CTX_CF13_SHIFT 2
  4683. #define E4_XSTORM_ETH_CONN_AG_CTX_CF14_MASK 0x3
  4684. #define E4_XSTORM_ETH_CONN_AG_CTX_CF14_SHIFT 4
  4685. #define E4_XSTORM_ETH_CONN_AG_CTX_CF15_MASK 0x3
  4686. #define E4_XSTORM_ETH_CONN_AG_CTX_CF15_SHIFT 6
  4687. u8 flags6;
  4688. #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK 0x3
  4689. #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT 0
  4690. #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_MASK 0x3
  4691. #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT 2
  4692. #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_MASK 0x3
  4693. #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_SHIFT 4
  4694. #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_MASK 0x3
  4695. #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_SHIFT 6
  4696. u8 flags7;
  4697. #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
  4698. #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
  4699. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED10_MASK 0x3
  4700. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED10_SHIFT 2
  4701. #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_MASK 0x3
  4702. #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  4703. #define E4_XSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1
  4704. #define E4_XSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 6
  4705. #define E4_XSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1
  4706. #define E4_XSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 7
  4707. u8 flags8;
  4708. #define E4_XSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1
  4709. #define E4_XSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 0
  4710. #define E4_XSTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1
  4711. #define E4_XSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 1
  4712. #define E4_XSTORM_ETH_CONN_AG_CTX_CF4EN_MASK 0x1
  4713. #define E4_XSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT 2
  4714. #define E4_XSTORM_ETH_CONN_AG_CTX_CF5EN_MASK 0x1
  4715. #define E4_XSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT 3
  4716. #define E4_XSTORM_ETH_CONN_AG_CTX_CF6EN_MASK 0x1
  4717. #define E4_XSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT 4
  4718. #define E4_XSTORM_ETH_CONN_AG_CTX_CF7EN_MASK 0x1
  4719. #define E4_XSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT 5
  4720. #define E4_XSTORM_ETH_CONN_AG_CTX_CF8EN_MASK 0x1
  4721. #define E4_XSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT 6
  4722. #define E4_XSTORM_ETH_CONN_AG_CTX_CF9EN_MASK 0x1
  4723. #define E4_XSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT 7
  4724. u8 flags9;
  4725. #define E4_XSTORM_ETH_CONN_AG_CTX_CF10EN_MASK 0x1
  4726. #define E4_XSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT 0
  4727. #define E4_XSTORM_ETH_CONN_AG_CTX_CF11EN_MASK 0x1
  4728. #define E4_XSTORM_ETH_CONN_AG_CTX_CF11EN_SHIFT 1
  4729. #define E4_XSTORM_ETH_CONN_AG_CTX_CF12EN_MASK 0x1
  4730. #define E4_XSTORM_ETH_CONN_AG_CTX_CF12EN_SHIFT 2
  4731. #define E4_XSTORM_ETH_CONN_AG_CTX_CF13EN_MASK 0x1
  4732. #define E4_XSTORM_ETH_CONN_AG_CTX_CF13EN_SHIFT 3
  4733. #define E4_XSTORM_ETH_CONN_AG_CTX_CF14EN_MASK 0x1
  4734. #define E4_XSTORM_ETH_CONN_AG_CTX_CF14EN_SHIFT 4
  4735. #define E4_XSTORM_ETH_CONN_AG_CTX_CF15EN_MASK 0x1
  4736. #define E4_XSTORM_ETH_CONN_AG_CTX_CF15EN_SHIFT 5
  4737. #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK 0x1
  4738. #define E4_XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT 6
  4739. #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK 0x1
  4740. #define E4_XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT 7
  4741. u8 flags10;
  4742. #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_MASK 0x1
  4743. #define E4_XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_SHIFT 0
  4744. #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1
  4745. #define E4_XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1
  4746. #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
  4747. #define E4_XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
  4748. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED11_MASK 0x1
  4749. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED11_SHIFT 3
  4750. #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
  4751. #define E4_XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  4752. #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK 0x1
  4753. #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5
  4754. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED12_MASK 0x1
  4755. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED12_SHIFT 6
  4756. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED13_MASK 0x1
  4757. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED13_SHIFT 7
  4758. u8 flags11;
  4759. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED14_MASK 0x1
  4760. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED14_SHIFT 0
  4761. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED15_MASK 0x1
  4762. #define E4_XSTORM_ETH_CONN_AG_CTX_RESERVED15_SHIFT 1
  4763. #define E4_XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1
  4764. #define E4_XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2
  4765. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1
  4766. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 3
  4767. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE6EN_MASK 0x1
  4768. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT 4
  4769. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1
  4770. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 5
  4771. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
  4772. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  4773. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE9EN_MASK 0x1
  4774. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE9EN_SHIFT 7
  4775. u8 flags12;
  4776. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE10EN_MASK 0x1
  4777. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE10EN_SHIFT 0
  4778. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE11EN_MASK 0x1
  4779. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE11EN_SHIFT 1
  4780. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
  4781. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  4782. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
  4783. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  4784. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE14EN_MASK 0x1
  4785. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE14EN_SHIFT 4
  4786. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE15EN_MASK 0x1
  4787. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE15EN_SHIFT 5
  4788. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE16EN_MASK 0x1
  4789. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE16EN_SHIFT 6
  4790. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE17EN_MASK 0x1
  4791. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE17EN_SHIFT 7
  4792. u8 flags13;
  4793. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE18EN_MASK 0x1
  4794. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE18EN_SHIFT 0
  4795. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE19EN_MASK 0x1
  4796. #define E4_XSTORM_ETH_CONN_AG_CTX_RULE19EN_SHIFT 1
  4797. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
  4798. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
  4799. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
  4800. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
  4801. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
  4802. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  4803. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
  4804. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
  4805. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
  4806. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  4807. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
  4808. #define E4_XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  4809. u8 flags14;
  4810. #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK 0x1
  4811. #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT 0
  4812. #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK 0x1
  4813. #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT 1
  4814. #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK 0x1
  4815. #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT 2
  4816. #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK 0x1
  4817. #define E4_XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT 3
  4818. #define E4_XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_MASK 0x1
  4819. #define E4_XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT 4
  4820. #define E4_XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1
  4821. #define E4_XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5
  4822. #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_MASK 0x3
  4823. #define E4_XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_SHIFT 6
  4824. u8 edpm_event_id;
  4825. __le16 physical_q0;
  4826. __le16 e5_reserved1;
  4827. __le16 edpm_num_bds;
  4828. __le16 tx_bd_cons;
  4829. __le16 tx_bd_prod;
  4830. __le16 updated_qm_pq_id;
  4831. __le16 conn_dpi;
  4832. u8 byte3;
  4833. u8 byte4;
  4834. u8 byte5;
  4835. u8 byte6;
  4836. __le32 reg0;
  4837. __le32 reg1;
  4838. __le32 reg2;
  4839. __le32 reg3;
  4840. __le32 reg4;
  4841. __le32 reg5;
  4842. __le32 reg6;
  4843. __le16 word7;
  4844. __le16 word8;
  4845. __le16 word9;
  4846. __le16 word10;
  4847. __le32 reg7;
  4848. __le32 reg8;
  4849. __le32 reg9;
  4850. u8 byte7;
  4851. u8 byte8;
  4852. u8 byte9;
  4853. u8 byte10;
  4854. u8 byte11;
  4855. u8 byte12;
  4856. u8 byte13;
  4857. u8 byte14;
  4858. u8 byte15;
  4859. u8 e5_reserved;
  4860. __le16 word11;
  4861. __le32 reg10;
  4862. __le32 reg11;
  4863. __le32 reg12;
  4864. __le32 reg13;
  4865. __le32 reg14;
  4866. __le32 reg15;
  4867. __le32 reg16;
  4868. __le32 reg17;
  4869. __le32 reg18;
  4870. __le32 reg19;
  4871. __le16 word12;
  4872. __le16 word13;
  4873. __le16 word14;
  4874. __le16 word15;
  4875. };
  4876. /* The eth storm context for the Ystorm */
  4877. struct ystorm_eth_conn_st_ctx {
  4878. __le32 reserved[8];
  4879. };
  4880. struct e4_ystorm_eth_conn_ag_ctx {
  4881. u8 byte0;
  4882. u8 state;
  4883. u8 flags0;
  4884. #define E4_YSTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1
  4885. #define E4_YSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0
  4886. #define E4_YSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1
  4887. #define E4_YSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
  4888. #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK 0x3
  4889. #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT 2
  4890. #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_MASK 0x3
  4891. #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_SHIFT 4
  4892. #define E4_YSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3
  4893. #define E4_YSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6
  4894. u8 flags1;
  4895. #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK 0x1
  4896. #define E4_YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT 0
  4897. #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_MASK 0x1
  4898. #define E4_YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_SHIFT 1
  4899. #define E4_YSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1
  4900. #define E4_YSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2
  4901. #define E4_YSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1
  4902. #define E4_YSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 3
  4903. #define E4_YSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1
  4904. #define E4_YSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 4
  4905. #define E4_YSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1
  4906. #define E4_YSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 5
  4907. #define E4_YSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1
  4908. #define E4_YSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 6
  4909. #define E4_YSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1
  4910. #define E4_YSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 7
  4911. u8 tx_q0_int_coallecing_timeset;
  4912. u8 byte3;
  4913. __le16 word0;
  4914. __le32 terminate_spqe;
  4915. __le32 reg1;
  4916. __le16 tx_bd_cons_upd;
  4917. __le16 word2;
  4918. __le16 word3;
  4919. __le16 word4;
  4920. __le32 reg2;
  4921. __le32 reg3;
  4922. };
  4923. struct e4_tstorm_eth_conn_ag_ctx {
  4924. u8 byte0;
  4925. u8 byte1;
  4926. u8 flags0;
  4927. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1
  4928. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0
  4929. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1
  4930. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
  4931. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT2_MASK 0x1
  4932. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT2_SHIFT 2
  4933. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT3_MASK 0x1
  4934. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT3_SHIFT 3
  4935. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT4_MASK 0x1
  4936. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT4_SHIFT 4
  4937. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT5_MASK 0x1
  4938. #define E4_TSTORM_ETH_CONN_AG_CTX_BIT5_SHIFT 5
  4939. #define E4_TSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3
  4940. #define E4_TSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 6
  4941. u8 flags1;
  4942. #define E4_TSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3
  4943. #define E4_TSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 0
  4944. #define E4_TSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3
  4945. #define E4_TSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 2
  4946. #define E4_TSTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3
  4947. #define E4_TSTORM_ETH_CONN_AG_CTX_CF3_SHIFT 4
  4948. #define E4_TSTORM_ETH_CONN_AG_CTX_CF4_MASK 0x3
  4949. #define E4_TSTORM_ETH_CONN_AG_CTX_CF4_SHIFT 6
  4950. u8 flags2;
  4951. #define E4_TSTORM_ETH_CONN_AG_CTX_CF5_MASK 0x3
  4952. #define E4_TSTORM_ETH_CONN_AG_CTX_CF5_SHIFT 0
  4953. #define E4_TSTORM_ETH_CONN_AG_CTX_CF6_MASK 0x3
  4954. #define E4_TSTORM_ETH_CONN_AG_CTX_CF6_SHIFT 2
  4955. #define E4_TSTORM_ETH_CONN_AG_CTX_CF7_MASK 0x3
  4956. #define E4_TSTORM_ETH_CONN_AG_CTX_CF7_SHIFT 4
  4957. #define E4_TSTORM_ETH_CONN_AG_CTX_CF8_MASK 0x3
  4958. #define E4_TSTORM_ETH_CONN_AG_CTX_CF8_SHIFT 6
  4959. u8 flags3;
  4960. #define E4_TSTORM_ETH_CONN_AG_CTX_CF9_MASK 0x3
  4961. #define E4_TSTORM_ETH_CONN_AG_CTX_CF9_SHIFT 0
  4962. #define E4_TSTORM_ETH_CONN_AG_CTX_CF10_MASK 0x3
  4963. #define E4_TSTORM_ETH_CONN_AG_CTX_CF10_SHIFT 2
  4964. #define E4_TSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1
  4965. #define E4_TSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 4
  4966. #define E4_TSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1
  4967. #define E4_TSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 5
  4968. #define E4_TSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1
  4969. #define E4_TSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 6
  4970. #define E4_TSTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1
  4971. #define E4_TSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 7
  4972. u8 flags4;
  4973. #define E4_TSTORM_ETH_CONN_AG_CTX_CF4EN_MASK 0x1
  4974. #define E4_TSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT 0
  4975. #define E4_TSTORM_ETH_CONN_AG_CTX_CF5EN_MASK 0x1
  4976. #define E4_TSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT 1
  4977. #define E4_TSTORM_ETH_CONN_AG_CTX_CF6EN_MASK 0x1
  4978. #define E4_TSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT 2
  4979. #define E4_TSTORM_ETH_CONN_AG_CTX_CF7EN_MASK 0x1
  4980. #define E4_TSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT 3
  4981. #define E4_TSTORM_ETH_CONN_AG_CTX_CF8EN_MASK 0x1
  4982. #define E4_TSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT 4
  4983. #define E4_TSTORM_ETH_CONN_AG_CTX_CF9EN_MASK 0x1
  4984. #define E4_TSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT 5
  4985. #define E4_TSTORM_ETH_CONN_AG_CTX_CF10EN_MASK 0x1
  4986. #define E4_TSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT 6
  4987. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1
  4988. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 7
  4989. u8 flags5;
  4990. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1
  4991. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 0
  4992. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1
  4993. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 1
  4994. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1
  4995. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 2
  4996. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1
  4997. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 3
  4998. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1
  4999. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 4
  5000. #define E4_TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_MASK 0x1
  5001. #define E4_TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_SHIFT 5
  5002. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1
  5003. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 6
  5004. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE8EN_MASK 0x1
  5005. #define E4_TSTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT 7
  5006. __le32 reg0;
  5007. __le32 reg1;
  5008. __le32 reg2;
  5009. __le32 reg3;
  5010. __le32 reg4;
  5011. __le32 reg5;
  5012. __le32 reg6;
  5013. __le32 reg7;
  5014. __le32 reg8;
  5015. u8 byte2;
  5016. u8 byte3;
  5017. __le16 rx_bd_cons;
  5018. u8 byte4;
  5019. u8 byte5;
  5020. __le16 rx_bd_prod;
  5021. __le16 word2;
  5022. __le16 word3;
  5023. __le32 reg9;
  5024. __le32 reg10;
  5025. };
  5026. struct e4_ustorm_eth_conn_ag_ctx {
  5027. u8 byte0;
  5028. u8 byte1;
  5029. u8 flags0;
  5030. #define E4_USTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1
  5031. #define E4_USTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0
  5032. #define E4_USTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1
  5033. #define E4_USTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
  5034. #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_MASK 0x3
  5035. #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_SHIFT 2
  5036. #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_MASK 0x3
  5037. #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_SHIFT 4
  5038. #define E4_USTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3
  5039. #define E4_USTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6
  5040. u8 flags1;
  5041. #define E4_USTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3
  5042. #define E4_USTORM_ETH_CONN_AG_CTX_CF3_SHIFT 0
  5043. #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_MASK 0x3
  5044. #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_SHIFT 2
  5045. #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_MASK 0x3
  5046. #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_SHIFT 4
  5047. #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK 0x3
  5048. #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT 6
  5049. u8 flags2;
  5050. #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_MASK 0x1
  5051. #define E4_USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_SHIFT 0
  5052. #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_MASK 0x1
  5053. #define E4_USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_SHIFT 1
  5054. #define E4_USTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1
  5055. #define E4_USTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2
  5056. #define E4_USTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1
  5057. #define E4_USTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 3
  5058. #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_MASK 0x1
  5059. #define E4_USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_SHIFT 4
  5060. #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_MASK 0x1
  5061. #define E4_USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_SHIFT 5
  5062. #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK 0x1
  5063. #define E4_USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT 6
  5064. #define E4_USTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1
  5065. #define E4_USTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 7
  5066. u8 flags3;
  5067. #define E4_USTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1
  5068. #define E4_USTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 0
  5069. #define E4_USTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1
  5070. #define E4_USTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 1
  5071. #define E4_USTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1
  5072. #define E4_USTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 2
  5073. #define E4_USTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1
  5074. #define E4_USTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 3
  5075. #define E4_USTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1
  5076. #define E4_USTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 4
  5077. #define E4_USTORM_ETH_CONN_AG_CTX_RULE6EN_MASK 0x1
  5078. #define E4_USTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT 5
  5079. #define E4_USTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1
  5080. #define E4_USTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 6
  5081. #define E4_USTORM_ETH_CONN_AG_CTX_RULE8EN_MASK 0x1
  5082. #define E4_USTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT 7
  5083. u8 byte2;
  5084. u8 byte3;
  5085. __le16 word0;
  5086. __le16 tx_bd_cons;
  5087. __le32 reg0;
  5088. __le32 reg1;
  5089. __le32 reg2;
  5090. __le32 tx_int_coallecing_timeset;
  5091. __le16 tx_drv_bd_cons;
  5092. __le16 rx_drv_cqe_cons;
  5093. };
  5094. /* The eth storm context for the Ustorm */
  5095. struct ustorm_eth_conn_st_ctx {
  5096. __le32 reserved[40];
  5097. };
  5098. /* The eth storm context for the Mstorm */
  5099. struct mstorm_eth_conn_st_ctx {
  5100. __le32 reserved[8];
  5101. };
  5102. /* eth connection context */
  5103. struct e4_eth_conn_context {
  5104. struct tstorm_eth_conn_st_ctx tstorm_st_context;
  5105. struct regpair tstorm_st_padding[2];
  5106. struct pstorm_eth_conn_st_ctx pstorm_st_context;
  5107. struct xstorm_eth_conn_st_ctx xstorm_st_context;
  5108. struct e4_xstorm_eth_conn_ag_ctx xstorm_ag_context;
  5109. struct ystorm_eth_conn_st_ctx ystorm_st_context;
  5110. struct e4_ystorm_eth_conn_ag_ctx ystorm_ag_context;
  5111. struct e4_tstorm_eth_conn_ag_ctx tstorm_ag_context;
  5112. struct e4_ustorm_eth_conn_ag_ctx ustorm_ag_context;
  5113. struct ustorm_eth_conn_st_ctx ustorm_st_context;
  5114. struct mstorm_eth_conn_st_ctx mstorm_st_context;
  5115. };
  5116. /* Ethernet filter types: mac/vlan/pair */
  5117. enum eth_error_code {
  5118. ETH_OK = 0x00,
  5119. ETH_FILTERS_MAC_ADD_FAIL_FULL,
  5120. ETH_FILTERS_MAC_ADD_FAIL_FULL_MTT2,
  5121. ETH_FILTERS_MAC_ADD_FAIL_DUP_MTT2,
  5122. ETH_FILTERS_MAC_ADD_FAIL_DUP_STT2,
  5123. ETH_FILTERS_MAC_DEL_FAIL_NOF,
  5124. ETH_FILTERS_MAC_DEL_FAIL_NOF_MTT2,
  5125. ETH_FILTERS_MAC_DEL_FAIL_NOF_STT2,
  5126. ETH_FILTERS_MAC_ADD_FAIL_ZERO_MAC,
  5127. ETH_FILTERS_VLAN_ADD_FAIL_FULL,
  5128. ETH_FILTERS_VLAN_ADD_FAIL_DUP,
  5129. ETH_FILTERS_VLAN_DEL_FAIL_NOF,
  5130. ETH_FILTERS_VLAN_DEL_FAIL_NOF_TT1,
  5131. ETH_FILTERS_PAIR_ADD_FAIL_DUP,
  5132. ETH_FILTERS_PAIR_ADD_FAIL_FULL,
  5133. ETH_FILTERS_PAIR_ADD_FAIL_FULL_MAC,
  5134. ETH_FILTERS_PAIR_DEL_FAIL_NOF,
  5135. ETH_FILTERS_PAIR_DEL_FAIL_NOF_TT1,
  5136. ETH_FILTERS_PAIR_ADD_FAIL_ZERO_MAC,
  5137. ETH_FILTERS_VNI_ADD_FAIL_FULL,
  5138. ETH_FILTERS_VNI_ADD_FAIL_DUP,
  5139. ETH_FILTERS_GFT_UPDATE_FAIL,
  5140. MAX_ETH_ERROR_CODE
  5141. };
  5142. /* Opcodes for the event ring */
  5143. enum eth_event_opcode {
  5144. ETH_EVENT_UNUSED,
  5145. ETH_EVENT_VPORT_START,
  5146. ETH_EVENT_VPORT_UPDATE,
  5147. ETH_EVENT_VPORT_STOP,
  5148. ETH_EVENT_TX_QUEUE_START,
  5149. ETH_EVENT_TX_QUEUE_STOP,
  5150. ETH_EVENT_RX_QUEUE_START,
  5151. ETH_EVENT_RX_QUEUE_UPDATE,
  5152. ETH_EVENT_RX_QUEUE_STOP,
  5153. ETH_EVENT_FILTERS_UPDATE,
  5154. ETH_EVENT_RX_ADD_OPENFLOW_FILTER,
  5155. ETH_EVENT_RX_DELETE_OPENFLOW_FILTER,
  5156. ETH_EVENT_RX_CREATE_OPENFLOW_ACTION,
  5157. ETH_EVENT_RX_ADD_UDP_FILTER,
  5158. ETH_EVENT_RX_DELETE_UDP_FILTER,
  5159. ETH_EVENT_RX_CREATE_GFT_ACTION,
  5160. ETH_EVENT_RX_GFT_UPDATE_FILTER,
  5161. ETH_EVENT_TX_QUEUE_UPDATE,
  5162. MAX_ETH_EVENT_OPCODE
  5163. };
  5164. /* Classify rule types in E2/E3 */
  5165. enum eth_filter_action {
  5166. ETH_FILTER_ACTION_UNUSED,
  5167. ETH_FILTER_ACTION_REMOVE,
  5168. ETH_FILTER_ACTION_ADD,
  5169. ETH_FILTER_ACTION_REMOVE_ALL,
  5170. MAX_ETH_FILTER_ACTION
  5171. };
  5172. /* Command for adding/removing a classification rule $$KEEP_ENDIANNESS$$ */
  5173. struct eth_filter_cmd {
  5174. u8 type;
  5175. u8 vport_id;
  5176. u8 action;
  5177. u8 reserved0;
  5178. __le32 vni;
  5179. __le16 mac_lsb;
  5180. __le16 mac_mid;
  5181. __le16 mac_msb;
  5182. __le16 vlan_id;
  5183. };
  5184. /* $$KEEP_ENDIANNESS$$ */
  5185. struct eth_filter_cmd_header {
  5186. u8 rx;
  5187. u8 tx;
  5188. u8 cmd_cnt;
  5189. u8 assert_on_error;
  5190. u8 reserved1[4];
  5191. };
  5192. /* Ethernet filter types: mac/vlan/pair */
  5193. enum eth_filter_type {
  5194. ETH_FILTER_TYPE_UNUSED,
  5195. ETH_FILTER_TYPE_MAC,
  5196. ETH_FILTER_TYPE_VLAN,
  5197. ETH_FILTER_TYPE_PAIR,
  5198. ETH_FILTER_TYPE_INNER_MAC,
  5199. ETH_FILTER_TYPE_INNER_VLAN,
  5200. ETH_FILTER_TYPE_INNER_PAIR,
  5201. ETH_FILTER_TYPE_INNER_MAC_VNI_PAIR,
  5202. ETH_FILTER_TYPE_MAC_VNI_PAIR,
  5203. ETH_FILTER_TYPE_VNI,
  5204. MAX_ETH_FILTER_TYPE
  5205. };
  5206. /* Eth IPv4 Fragment Type */
  5207. enum eth_ipv4_frag_type {
  5208. ETH_IPV4_NOT_FRAG,
  5209. ETH_IPV4_FIRST_FRAG,
  5210. ETH_IPV4_NON_FIRST_FRAG,
  5211. MAX_ETH_IPV4_FRAG_TYPE
  5212. };
  5213. /* eth IPv4 Fragment Type */
  5214. enum eth_ip_type {
  5215. ETH_IPV4,
  5216. ETH_IPV6,
  5217. MAX_ETH_IP_TYPE
  5218. };
  5219. /* Ethernet Ramrod Command IDs */
  5220. enum eth_ramrod_cmd_id {
  5221. ETH_RAMROD_UNUSED,
  5222. ETH_RAMROD_VPORT_START,
  5223. ETH_RAMROD_VPORT_UPDATE,
  5224. ETH_RAMROD_VPORT_STOP,
  5225. ETH_RAMROD_RX_QUEUE_START,
  5226. ETH_RAMROD_RX_QUEUE_STOP,
  5227. ETH_RAMROD_TX_QUEUE_START,
  5228. ETH_RAMROD_TX_QUEUE_STOP,
  5229. ETH_RAMROD_FILTERS_UPDATE,
  5230. ETH_RAMROD_RX_QUEUE_UPDATE,
  5231. ETH_RAMROD_RX_CREATE_OPENFLOW_ACTION,
  5232. ETH_RAMROD_RX_ADD_OPENFLOW_FILTER,
  5233. ETH_RAMROD_RX_DELETE_OPENFLOW_FILTER,
  5234. ETH_RAMROD_RX_ADD_UDP_FILTER,
  5235. ETH_RAMROD_RX_DELETE_UDP_FILTER,
  5236. ETH_RAMROD_RX_CREATE_GFT_ACTION,
  5237. ETH_RAMROD_GFT_UPDATE_FILTER,
  5238. ETH_RAMROD_TX_QUEUE_UPDATE,
  5239. MAX_ETH_RAMROD_CMD_ID
  5240. };
  5241. /* Return code from eth sp ramrods */
  5242. struct eth_return_code {
  5243. u8 value;
  5244. #define ETH_RETURN_CODE_ERR_CODE_MASK 0x1F
  5245. #define ETH_RETURN_CODE_ERR_CODE_SHIFT 0
  5246. #define ETH_RETURN_CODE_RESERVED_MASK 0x3
  5247. #define ETH_RETURN_CODE_RESERVED_SHIFT 5
  5248. #define ETH_RETURN_CODE_RX_TX_MASK 0x1
  5249. #define ETH_RETURN_CODE_RX_TX_SHIFT 7
  5250. };
  5251. /* What to do in case an error occurs */
  5252. enum eth_tx_err {
  5253. ETH_TX_ERR_DROP,
  5254. ETH_TX_ERR_ASSERT_MALICIOUS,
  5255. MAX_ETH_TX_ERR
  5256. };
  5257. /* Array of the different error type behaviors */
  5258. struct eth_tx_err_vals {
  5259. __le16 values;
  5260. #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_MASK 0x1
  5261. #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_SHIFT 0
  5262. #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_MASK 0x1
  5263. #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_SHIFT 1
  5264. #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_MASK 0x1
  5265. #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_SHIFT 2
  5266. #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_MASK 0x1
  5267. #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_SHIFT 3
  5268. #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_MASK 0x1
  5269. #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_SHIFT 4
  5270. #define ETH_TX_ERR_VALS_MTU_VIOLATION_MASK 0x1
  5271. #define ETH_TX_ERR_VALS_MTU_VIOLATION_SHIFT 5
  5272. #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_MASK 0x1
  5273. #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_SHIFT 6
  5274. #define ETH_TX_ERR_VALS_RESERVED_MASK 0x1FF
  5275. #define ETH_TX_ERR_VALS_RESERVED_SHIFT 7
  5276. };
  5277. /* vport rss configuration data */
  5278. struct eth_vport_rss_config {
  5279. __le16 capabilities;
  5280. #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_MASK 0x1
  5281. #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_SHIFT 0
  5282. #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_MASK 0x1
  5283. #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_SHIFT 1
  5284. #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_MASK 0x1
  5285. #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_SHIFT 2
  5286. #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_MASK 0x1
  5287. #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_SHIFT 3
  5288. #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_MASK 0x1
  5289. #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_SHIFT 4
  5290. #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_MASK 0x1
  5291. #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_SHIFT 5
  5292. #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_MASK 0x1
  5293. #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_SHIFT 6
  5294. #define ETH_VPORT_RSS_CONFIG_RESERVED0_MASK 0x1FF
  5295. #define ETH_VPORT_RSS_CONFIG_RESERVED0_SHIFT 7
  5296. u8 rss_id;
  5297. u8 rss_mode;
  5298. u8 update_rss_key;
  5299. u8 update_rss_ind_table;
  5300. u8 update_rss_capabilities;
  5301. u8 tbl_size;
  5302. __le32 reserved2[2];
  5303. __le16 indirection_table[ETH_RSS_IND_TABLE_ENTRIES_NUM];
  5304. __le32 rss_key[ETH_RSS_KEY_SIZE_REGS];
  5305. __le32 reserved3[2];
  5306. };
  5307. /* eth vport RSS mode */
  5308. enum eth_vport_rss_mode {
  5309. ETH_VPORT_RSS_MODE_DISABLED,
  5310. ETH_VPORT_RSS_MODE_REGULAR,
  5311. MAX_ETH_VPORT_RSS_MODE
  5312. };
  5313. /* Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$ */
  5314. struct eth_vport_rx_mode {
  5315. __le16 state;
  5316. #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_MASK 0x1
  5317. #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_SHIFT 0
  5318. #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_MASK 0x1
  5319. #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_SHIFT 1
  5320. #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_MASK 0x1
  5321. #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_SHIFT 2
  5322. #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_MASK 0x1
  5323. #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_SHIFT 3
  5324. #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_MASK 0x1
  5325. #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_SHIFT 4
  5326. #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_MASK 0x1
  5327. #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_SHIFT 5
  5328. #define ETH_VPORT_RX_MODE_RESERVED1_MASK 0x3FF
  5329. #define ETH_VPORT_RX_MODE_RESERVED1_SHIFT 6
  5330. };
  5331. /* Command for setting tpa parameters */
  5332. struct eth_vport_tpa_param {
  5333. u8 tpa_ipv4_en_flg;
  5334. u8 tpa_ipv6_en_flg;
  5335. u8 tpa_ipv4_tunn_en_flg;
  5336. u8 tpa_ipv6_tunn_en_flg;
  5337. u8 tpa_pkt_split_flg;
  5338. u8 tpa_hdr_data_split_flg;
  5339. u8 tpa_gro_consistent_flg;
  5340. u8 tpa_max_aggs_num;
  5341. __le16 tpa_max_size;
  5342. __le16 tpa_min_size_to_start;
  5343. __le16 tpa_min_size_to_cont;
  5344. u8 max_buff_num;
  5345. u8 reserved;
  5346. };
  5347. /* Command for setting classification flags for a vport $$KEEP_ENDIANNESS$$ */
  5348. struct eth_vport_tx_mode {
  5349. __le16 state;
  5350. #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_MASK 0x1
  5351. #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_SHIFT 0
  5352. #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_MASK 0x1
  5353. #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_SHIFT 1
  5354. #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_MASK 0x1
  5355. #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_SHIFT 2
  5356. #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_MASK 0x1
  5357. #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_SHIFT 3
  5358. #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_MASK 0x1
  5359. #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_SHIFT 4
  5360. #define ETH_VPORT_TX_MODE_RESERVED1_MASK 0x7FF
  5361. #define ETH_VPORT_TX_MODE_RESERVED1_SHIFT 5
  5362. };
  5363. /* GFT filter update action type */
  5364. enum gft_filter_update_action {
  5365. GFT_ADD_FILTER,
  5366. GFT_DELETE_FILTER,
  5367. MAX_GFT_FILTER_UPDATE_ACTION
  5368. };
  5369. /* Ramrod data for rx add openflow filter */
  5370. struct rx_add_openflow_filter_data {
  5371. __le16 action_icid;
  5372. u8 priority;
  5373. u8 reserved0;
  5374. __le32 tenant_id;
  5375. __le16 dst_mac_hi;
  5376. __le16 dst_mac_mid;
  5377. __le16 dst_mac_lo;
  5378. __le16 src_mac_hi;
  5379. __le16 src_mac_mid;
  5380. __le16 src_mac_lo;
  5381. __le16 vlan_id;
  5382. __le16 l2_eth_type;
  5383. u8 ipv4_dscp;
  5384. u8 ipv4_frag_type;
  5385. u8 ipv4_over_ip;
  5386. u8 tenant_id_exists;
  5387. __le32 ipv4_dst_addr;
  5388. __le32 ipv4_src_addr;
  5389. __le16 l4_dst_port;
  5390. __le16 l4_src_port;
  5391. };
  5392. /* Ramrod data for rx create gft action */
  5393. struct rx_create_gft_action_data {
  5394. u8 vport_id;
  5395. u8 reserved[7];
  5396. };
  5397. /* Ramrod data for rx create openflow action */
  5398. struct rx_create_openflow_action_data {
  5399. u8 vport_id;
  5400. u8 reserved[7];
  5401. };
  5402. /* Ramrod data for rx queue start ramrod */
  5403. struct rx_queue_start_ramrod_data {
  5404. __le16 rx_queue_id;
  5405. __le16 num_of_pbl_pages;
  5406. __le16 bd_max_bytes;
  5407. __le16 sb_id;
  5408. u8 sb_index;
  5409. u8 vport_id;
  5410. u8 default_rss_queue_flg;
  5411. u8 complete_cqe_flg;
  5412. u8 complete_event_flg;
  5413. u8 stats_counter_id;
  5414. u8 pin_context;
  5415. u8 pxp_tph_valid_bd;
  5416. u8 pxp_tph_valid_pkt;
  5417. u8 pxp_st_hint;
  5418. __le16 pxp_st_index;
  5419. u8 pmd_mode;
  5420. u8 notify_en;
  5421. u8 toggle_val;
  5422. u8 vf_rx_prod_index;
  5423. u8 vf_rx_prod_use_zone_a;
  5424. u8 reserved[5];
  5425. __le16 reserved1;
  5426. struct regpair cqe_pbl_addr;
  5427. struct regpair bd_base;
  5428. struct regpair reserved2;
  5429. };
  5430. /* Ramrod data for rx queue stop ramrod */
  5431. struct rx_queue_stop_ramrod_data {
  5432. __le16 rx_queue_id;
  5433. u8 complete_cqe_flg;
  5434. u8 complete_event_flg;
  5435. u8 vport_id;
  5436. u8 reserved[3];
  5437. };
  5438. /* Ramrod data for rx queue update ramrod */
  5439. struct rx_queue_update_ramrod_data {
  5440. __le16 rx_queue_id;
  5441. u8 complete_cqe_flg;
  5442. u8 complete_event_flg;
  5443. u8 vport_id;
  5444. u8 set_default_rss_queue;
  5445. u8 reserved[3];
  5446. u8 reserved1;
  5447. u8 reserved2;
  5448. u8 reserved3;
  5449. __le16 reserved4;
  5450. __le16 reserved5;
  5451. struct regpair reserved6;
  5452. };
  5453. /* Ramrod data for rx Add UDP Filter */
  5454. struct rx_udp_filter_data {
  5455. __le16 action_icid;
  5456. __le16 vlan_id;
  5457. u8 ip_type;
  5458. u8 tenant_id_exists;
  5459. __le16 reserved1;
  5460. __le32 ip_dst_addr[4];
  5461. __le32 ip_src_addr[4];
  5462. __le16 udp_dst_port;
  5463. __le16 udp_src_port;
  5464. __le32 tenant_id;
  5465. };
  5466. /* Add or delete GFT filter - filter is packet header of type of packet wished
  5467. * to pass certain FW flow.
  5468. */
  5469. struct rx_update_gft_filter_data {
  5470. struct regpair pkt_hdr_addr;
  5471. __le16 pkt_hdr_length;
  5472. __le16 action_icid;
  5473. __le16 rx_qid;
  5474. __le16 flow_id;
  5475. __le16 vport_id;
  5476. u8 action_icid_valid;
  5477. u8 rx_qid_valid;
  5478. u8 flow_id_valid;
  5479. u8 filter_action;
  5480. u8 assert_on_error;
  5481. u8 inner_vlan_removal_en;
  5482. };
  5483. /* Ramrod data for rx queue start ramrod */
  5484. struct tx_queue_start_ramrod_data {
  5485. __le16 sb_id;
  5486. u8 sb_index;
  5487. u8 vport_id;
  5488. u8 reserved0;
  5489. u8 stats_counter_id;
  5490. __le16 qm_pq_id;
  5491. u8 flags;
  5492. #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_MASK 0x1
  5493. #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_SHIFT 0
  5494. #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_MASK 0x1
  5495. #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_SHIFT 1
  5496. #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_TX_DEST_MASK 0x1
  5497. #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_TX_DEST_SHIFT 2
  5498. #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_MASK 0x1
  5499. #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_SHIFT 3
  5500. #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_MASK 0x1
  5501. #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_SHIFT 4
  5502. #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_MASK 0x1
  5503. #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_SHIFT 5
  5504. #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_MASK 0x3
  5505. #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_SHIFT 6
  5506. u8 pxp_st_hint;
  5507. u8 pxp_tph_valid_bd;
  5508. u8 pxp_tph_valid_pkt;
  5509. __le16 pxp_st_index;
  5510. __le16 comp_agg_size;
  5511. __le16 queue_zone_id;
  5512. __le16 reserved2;
  5513. __le16 pbl_size;
  5514. __le16 tx_queue_id;
  5515. __le16 same_as_last_id;
  5516. __le16 reserved[3];
  5517. struct regpair pbl_base_addr;
  5518. struct regpair bd_cons_address;
  5519. };
  5520. /* Ramrod data for tx queue stop ramrod */
  5521. struct tx_queue_stop_ramrod_data {
  5522. __le16 reserved[4];
  5523. };
  5524. /* Ramrod data for tx queue update ramrod */
  5525. struct tx_queue_update_ramrod_data {
  5526. __le16 update_qm_pq_id_flg;
  5527. __le16 qm_pq_id;
  5528. __le32 reserved0;
  5529. struct regpair reserved1[5];
  5530. };
  5531. /* Ramrod data for vport update ramrod */
  5532. struct vport_filter_update_ramrod_data {
  5533. struct eth_filter_cmd_header filter_cmd_hdr;
  5534. struct eth_filter_cmd filter_cmds[ETH_FILTER_RULES_COUNT];
  5535. };
  5536. /* Ramrod data for vport start ramrod */
  5537. struct vport_start_ramrod_data {
  5538. u8 vport_id;
  5539. u8 sw_fid;
  5540. __le16 mtu;
  5541. u8 drop_ttl0_en;
  5542. u8 inner_vlan_removal_en;
  5543. struct eth_vport_rx_mode rx_mode;
  5544. struct eth_vport_tx_mode tx_mode;
  5545. struct eth_vport_tpa_param tpa_param;
  5546. __le16 default_vlan;
  5547. u8 tx_switching_en;
  5548. u8 anti_spoofing_en;
  5549. u8 default_vlan_en;
  5550. u8 handle_ptp_pkts;
  5551. u8 silent_vlan_removal_en;
  5552. u8 untagged;
  5553. struct eth_tx_err_vals tx_err_behav;
  5554. u8 zero_placement_offset;
  5555. u8 ctl_frame_mac_check_en;
  5556. u8 ctl_frame_ethtype_check_en;
  5557. u8 reserved[1];
  5558. };
  5559. /* Ramrod data for vport stop ramrod */
  5560. struct vport_stop_ramrod_data {
  5561. u8 vport_id;
  5562. u8 reserved[7];
  5563. };
  5564. /* Ramrod data for vport update ramrod */
  5565. struct vport_update_ramrod_data_cmn {
  5566. u8 vport_id;
  5567. u8 update_rx_active_flg;
  5568. u8 rx_active_flg;
  5569. u8 update_tx_active_flg;
  5570. u8 tx_active_flg;
  5571. u8 update_rx_mode_flg;
  5572. u8 update_tx_mode_flg;
  5573. u8 update_approx_mcast_flg;
  5574. u8 update_rss_flg;
  5575. u8 update_inner_vlan_removal_en_flg;
  5576. u8 inner_vlan_removal_en;
  5577. u8 update_tpa_param_flg;
  5578. u8 update_tpa_en_flg;
  5579. u8 update_tx_switching_en_flg;
  5580. u8 tx_switching_en;
  5581. u8 update_anti_spoofing_en_flg;
  5582. u8 anti_spoofing_en;
  5583. u8 update_handle_ptp_pkts;
  5584. u8 handle_ptp_pkts;
  5585. u8 update_default_vlan_en_flg;
  5586. u8 default_vlan_en;
  5587. u8 update_default_vlan_flg;
  5588. __le16 default_vlan;
  5589. u8 update_accept_any_vlan_flg;
  5590. u8 accept_any_vlan;
  5591. u8 silent_vlan_removal_en;
  5592. u8 update_mtu_flg;
  5593. __le16 mtu;
  5594. u8 update_ctl_frame_checks_en_flg;
  5595. u8 ctl_frame_mac_check_en;
  5596. u8 ctl_frame_ethtype_check_en;
  5597. u8 reserved[15];
  5598. };
  5599. struct vport_update_ramrod_mcast {
  5600. __le32 bins[ETH_MULTICAST_MAC_BINS_IN_REGS];
  5601. };
  5602. /* Ramrod data for vport update ramrod */
  5603. struct vport_update_ramrod_data {
  5604. struct vport_update_ramrod_data_cmn common;
  5605. struct eth_vport_rx_mode rx_mode;
  5606. struct eth_vport_tx_mode tx_mode;
  5607. __le32 reserved[3];
  5608. struct eth_vport_tpa_param tpa_param;
  5609. struct vport_update_ramrod_mcast approx_mcast;
  5610. struct eth_vport_rss_config rss_config;
  5611. };
  5612. struct e4_xstorm_eth_conn_ag_ctx_dq_ext_ldpart {
  5613. u8 reserved0;
  5614. u8 state;
  5615. u8 flags0;
  5616. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_MASK 0x1
  5617. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM0_SHIFT 0
  5618. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_MASK 0x1
  5619. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED1_SHIFT 1
  5620. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_MASK 0x1
  5621. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED2_SHIFT 2
  5622. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_MASK 0x1
  5623. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EXIST_IN_QM3_SHIFT 3
  5624. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_MASK 0x1
  5625. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED3_SHIFT 4
  5626. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_MASK 0x1
  5627. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED4_SHIFT 5
  5628. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_MASK 0x1
  5629. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED5_SHIFT 6
  5630. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_MASK 0x1
  5631. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED6_SHIFT 7
  5632. u8 flags1;
  5633. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_MASK 0x1
  5634. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED7_SHIFT 0
  5635. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_MASK 0x1
  5636. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED8_SHIFT 1
  5637. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_MASK 0x1
  5638. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED9_SHIFT 2
  5639. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_MASK 0x1
  5640. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_BIT11_SHIFT 3
  5641. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED2_MASK 0x1
  5642. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED2_SHIFT 4
  5643. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED3_MASK 0x1
  5644. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_E5_RESERVED3_SHIFT 5
  5645. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_MASK 0x1
  5646. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_RULE_ACTIVE_SHIFT 6
  5647. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_MASK 0x1
  5648. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_ACTIVE_SHIFT 7
  5649. u8 flags2;
  5650. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_MASK 0x3
  5651. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0_SHIFT 0
  5652. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_MASK 0x3
  5653. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1_SHIFT 2
  5654. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_MASK 0x3
  5655. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2_SHIFT 4
  5656. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_MASK 0x3
  5657. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3_SHIFT 6
  5658. u8 flags3;
  5659. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_MASK 0x3
  5660. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4_SHIFT 0
  5661. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_MASK 0x3
  5662. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5_SHIFT 2
  5663. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_MASK 0x3
  5664. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6_SHIFT 4
  5665. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_MASK 0x3
  5666. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7_SHIFT 6
  5667. u8 flags4;
  5668. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_MASK 0x3
  5669. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8_SHIFT 0
  5670. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_MASK 0x3
  5671. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9_SHIFT 2
  5672. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_MASK 0x3
  5673. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10_SHIFT 4
  5674. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_MASK 0x3
  5675. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11_SHIFT 6
  5676. u8 flags5;
  5677. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_MASK 0x3
  5678. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12_SHIFT 0
  5679. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_MASK 0x3
  5680. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13_SHIFT 2
  5681. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_MASK 0x3
  5682. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14_SHIFT 4
  5683. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_MASK 0x3
  5684. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15_SHIFT 6
  5685. u8 flags6;
  5686. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_MASK 0x3
  5687. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_SHIFT 0
  5688. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_MASK 0x3
  5689. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_SHIFT 2
  5690. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_MASK 0x3
  5691. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_SHIFT 4
  5692. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_MASK 0x3
  5693. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_SHIFT 6
  5694. u8 flags7;
  5695. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_MASK 0x3
  5696. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_SHIFT 0
  5697. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_MASK 0x3
  5698. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED10_SHIFT 2
  5699. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_MASK 0x3
  5700. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_SHIFT 4
  5701. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_MASK 0x1
  5702. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF0EN_SHIFT 6
  5703. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_MASK 0x1
  5704. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF1EN_SHIFT 7
  5705. u8 flags8;
  5706. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_MASK 0x1
  5707. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF2EN_SHIFT 0
  5708. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_MASK 0x1
  5709. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF3EN_SHIFT 1
  5710. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_MASK 0x1
  5711. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF4EN_SHIFT 2
  5712. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_MASK 0x1
  5713. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF5EN_SHIFT 3
  5714. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_MASK 0x1
  5715. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF6EN_SHIFT 4
  5716. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_MASK 0x1
  5717. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF7EN_SHIFT 5
  5718. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_MASK 0x1
  5719. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF8EN_SHIFT 6
  5720. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_MASK 0x1
  5721. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF9EN_SHIFT 7
  5722. u8 flags9;
  5723. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_MASK 0x1
  5724. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF10EN_SHIFT 0
  5725. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_MASK 0x1
  5726. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF11EN_SHIFT 1
  5727. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_MASK 0x1
  5728. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF12EN_SHIFT 2
  5729. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_MASK 0x1
  5730. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF13EN_SHIFT 3
  5731. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_MASK 0x1
  5732. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF14EN_SHIFT 4
  5733. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_MASK 0x1
  5734. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_CF15EN_SHIFT 5
  5735. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_MASK 0x1
  5736. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_GO_TO_BD_CONS_CF_EN_SHIFT 6
  5737. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_MASK 0x1
  5738. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_MULTI_UNICAST_CF_EN_SHIFT 7
  5739. u8 flags10;
  5740. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_MASK 0x1
  5741. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_DQ_CF_EN_SHIFT 0
  5742. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_MASK 0x1
  5743. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TERMINATE_CF_EN_SHIFT 1
  5744. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_MASK 0x1
  5745. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_FLUSH_Q0_EN_SHIFT 2
  5746. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_MASK 0x1
  5747. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED11_SHIFT 3
  5748. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_MASK 0x1
  5749. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_SLOW_PATH_EN_SHIFT 4
  5750. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_MASK 0x1
  5751. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_EN_RESERVED_SHIFT 5
  5752. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_MASK 0x1
  5753. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED12_SHIFT 6
  5754. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_MASK 0x1
  5755. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED13_SHIFT 7
  5756. u8 flags11;
  5757. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_MASK 0x1
  5758. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED14_SHIFT 0
  5759. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_MASK 0x1
  5760. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RESERVED15_SHIFT 1
  5761. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_MASK 0x1
  5762. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TX_DEC_RULE_EN_SHIFT 2
  5763. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_MASK 0x1
  5764. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE5EN_SHIFT 3
  5765. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_MASK 0x1
  5766. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE6EN_SHIFT 4
  5767. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_MASK 0x1
  5768. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE7EN_SHIFT 5
  5769. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_MASK 0x1
  5770. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED1_SHIFT 6
  5771. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_MASK 0x1
  5772. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE9EN_SHIFT 7
  5773. u8 flags12;
  5774. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_MASK 0x1
  5775. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE10EN_SHIFT 0
  5776. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_MASK 0x1
  5777. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE11EN_SHIFT 1
  5778. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_MASK 0x1
  5779. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED2_SHIFT 2
  5780. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_MASK 0x1
  5781. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED3_SHIFT 3
  5782. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_MASK 0x1
  5783. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE14EN_SHIFT 4
  5784. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_MASK 0x1
  5785. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE15EN_SHIFT 5
  5786. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_MASK 0x1
  5787. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE16EN_SHIFT 6
  5788. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_MASK 0x1
  5789. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE17EN_SHIFT 7
  5790. u8 flags13;
  5791. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_MASK 0x1
  5792. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE18EN_SHIFT 0
  5793. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_MASK 0x1
  5794. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_RULE19EN_SHIFT 1
  5795. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_MASK 0x1
  5796. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED4_SHIFT 2
  5797. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_MASK 0x1
  5798. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED5_SHIFT 3
  5799. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_MASK 0x1
  5800. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED6_SHIFT 4
  5801. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_MASK 0x1
  5802. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED7_SHIFT 5
  5803. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_MASK 0x1
  5804. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED8_SHIFT 6
  5805. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_MASK 0x1
  5806. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_A0_RESERVED9_SHIFT 7
  5807. u8 flags14;
  5808. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_MASK 0x1
  5809. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_USE_EXT_HDR_SHIFT 0
  5810. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_MASK 0x1
  5811. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_RAW_L3L4_SHIFT 1
  5812. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_MASK 0x1
  5813. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_INBAND_PROP_HDR_SHIFT 2
  5814. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_MASK 0x1
  5815. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_EDPM_SEND_EXT_TUNNEL_SHIFT 3
  5816. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_MASK 0x1
  5817. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_L2_EDPM_ENABLE_SHIFT 4
  5818. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_MASK 0x1
  5819. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_SHIFT 5
  5820. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_MASK 0x3
  5821. #define E4XSTORMETHCONNAGCTXDQEXTLDPART_TPH_ENABLE_SHIFT 6
  5822. u8 edpm_event_id;
  5823. __le16 physical_q0;
  5824. __le16 e5_reserved1;
  5825. __le16 edpm_num_bds;
  5826. __le16 tx_bd_cons;
  5827. __le16 tx_bd_prod;
  5828. __le16 updated_qm_pq_id;
  5829. __le16 conn_dpi;
  5830. u8 byte3;
  5831. u8 byte4;
  5832. u8 byte5;
  5833. u8 byte6;
  5834. __le32 reg0;
  5835. __le32 reg1;
  5836. __le32 reg2;
  5837. __le32 reg3;
  5838. __le32 reg4;
  5839. };
  5840. struct e4_mstorm_eth_conn_ag_ctx {
  5841. u8 byte0;
  5842. u8 byte1;
  5843. u8 flags0;
  5844. #define E4_MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  5845. #define E4_MSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  5846. #define E4_MSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1
  5847. #define E4_MSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
  5848. #define E4_MSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3
  5849. #define E4_MSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 2
  5850. #define E4_MSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3
  5851. #define E4_MSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 4
  5852. #define E4_MSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3
  5853. #define E4_MSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6
  5854. u8 flags1;
  5855. #define E4_MSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1
  5856. #define E4_MSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 0
  5857. #define E4_MSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1
  5858. #define E4_MSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 1
  5859. #define E4_MSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1
  5860. #define E4_MSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2
  5861. #define E4_MSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1
  5862. #define E4_MSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 3
  5863. #define E4_MSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1
  5864. #define E4_MSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 4
  5865. #define E4_MSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1
  5866. #define E4_MSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 5
  5867. #define E4_MSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1
  5868. #define E4_MSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 6
  5869. #define E4_MSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1
  5870. #define E4_MSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 7
  5871. __le16 word0;
  5872. __le16 word1;
  5873. __le32 reg0;
  5874. __le32 reg1;
  5875. };
  5876. struct e4_xstorm_eth_hw_conn_ag_ctx {
  5877. u8 reserved0;
  5878. u8 state;
  5879. u8 flags0;
  5880. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  5881. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  5882. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_MASK 0x1
  5883. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED1_SHIFT 1
  5884. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_MASK 0x1
  5885. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED2_SHIFT 2
  5886. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  5887. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  5888. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_MASK 0x1
  5889. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED3_SHIFT 4
  5890. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_MASK 0x1
  5891. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED4_SHIFT 5
  5892. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_MASK 0x1
  5893. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED5_SHIFT 6
  5894. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_MASK 0x1
  5895. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED6_SHIFT 7
  5896. u8 flags1;
  5897. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_MASK 0x1
  5898. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED7_SHIFT 0
  5899. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_MASK 0x1
  5900. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED8_SHIFT 1
  5901. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_MASK 0x1
  5902. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED9_SHIFT 2
  5903. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT11_MASK 0x1
  5904. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_BIT11_SHIFT 3
  5905. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_MASK 0x1
  5906. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED2_SHIFT 4
  5907. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_MASK 0x1
  5908. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_E5_RESERVED3_SHIFT 5
  5909. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1
  5910. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6
  5911. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1
  5912. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7
  5913. u8 flags2;
  5914. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0_MASK 0x3
  5915. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0_SHIFT 0
  5916. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1_MASK 0x3
  5917. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1_SHIFT 2
  5918. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2_MASK 0x3
  5919. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2_SHIFT 4
  5920. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3_MASK 0x3
  5921. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3_SHIFT 6
  5922. u8 flags3;
  5923. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4_MASK 0x3
  5924. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4_SHIFT 0
  5925. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5_MASK 0x3
  5926. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5_SHIFT 2
  5927. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6_MASK 0x3
  5928. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6_SHIFT 4
  5929. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7_MASK 0x3
  5930. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7_SHIFT 6
  5931. u8 flags4;
  5932. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8_MASK 0x3
  5933. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8_SHIFT 0
  5934. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9_MASK 0x3
  5935. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9_SHIFT 2
  5936. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10_MASK 0x3
  5937. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10_SHIFT 4
  5938. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11_MASK 0x3
  5939. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11_SHIFT 6
  5940. u8 flags5;
  5941. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12_MASK 0x3
  5942. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12_SHIFT 0
  5943. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13_MASK 0x3
  5944. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13_SHIFT 2
  5945. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14_MASK 0x3
  5946. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14_SHIFT 4
  5947. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15_MASK 0x3
  5948. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15_SHIFT 6
  5949. u8 flags6;
  5950. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK 0x3
  5951. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT 0
  5952. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_MASK 0x3
  5953. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT 2
  5954. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_MASK 0x3
  5955. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_SHIFT 4
  5956. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_MASK 0x3
  5957. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_SHIFT 6
  5958. u8 flags7;
  5959. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
  5960. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
  5961. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_MASK 0x3
  5962. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED10_SHIFT 2
  5963. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_MASK 0x3
  5964. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  5965. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_MASK 0x1
  5966. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF0EN_SHIFT 6
  5967. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_MASK 0x1
  5968. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF1EN_SHIFT 7
  5969. u8 flags8;
  5970. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_MASK 0x1
  5971. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF2EN_SHIFT 0
  5972. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_MASK 0x1
  5973. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF3EN_SHIFT 1
  5974. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_MASK 0x1
  5975. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF4EN_SHIFT 2
  5976. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_MASK 0x1
  5977. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF5EN_SHIFT 3
  5978. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_MASK 0x1
  5979. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF6EN_SHIFT 4
  5980. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_MASK 0x1
  5981. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF7EN_SHIFT 5
  5982. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_MASK 0x1
  5983. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF8EN_SHIFT 6
  5984. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_MASK 0x1
  5985. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF9EN_SHIFT 7
  5986. u8 flags9;
  5987. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_MASK 0x1
  5988. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF10EN_SHIFT 0
  5989. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_MASK 0x1
  5990. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF11EN_SHIFT 1
  5991. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_MASK 0x1
  5992. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF12EN_SHIFT 2
  5993. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_MASK 0x1
  5994. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF13EN_SHIFT 3
  5995. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_MASK 0x1
  5996. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF14EN_SHIFT 4
  5997. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_MASK 0x1
  5998. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_CF15EN_SHIFT 5
  5999. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK 0x1
  6000. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT 6
  6001. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK 0x1
  6002. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT 7
  6003. u8 flags10;
  6004. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_MASK 0x1
  6005. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_DQ_CF_EN_SHIFT 0
  6006. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1
  6007. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1
  6008. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
  6009. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
  6010. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_MASK 0x1
  6011. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED11_SHIFT 3
  6012. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
  6013. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  6014. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK 0x1
  6015. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5
  6016. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_MASK 0x1
  6017. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED12_SHIFT 6
  6018. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_MASK 0x1
  6019. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED13_SHIFT 7
  6020. u8 flags11;
  6021. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_MASK 0x1
  6022. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED14_SHIFT 0
  6023. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_MASK 0x1
  6024. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RESERVED15_SHIFT 1
  6025. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1
  6026. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2
  6027. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_MASK 0x1
  6028. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE5EN_SHIFT 3
  6029. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_MASK 0x1
  6030. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE6EN_SHIFT 4
  6031. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_MASK 0x1
  6032. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE7EN_SHIFT 5
  6033. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
  6034. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  6035. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_MASK 0x1
  6036. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE9EN_SHIFT 7
  6037. u8 flags12;
  6038. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_MASK 0x1
  6039. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE10EN_SHIFT 0
  6040. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_MASK 0x1
  6041. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE11EN_SHIFT 1
  6042. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
  6043. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  6044. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
  6045. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  6046. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_MASK 0x1
  6047. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE14EN_SHIFT 4
  6048. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_MASK 0x1
  6049. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE15EN_SHIFT 5
  6050. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_MASK 0x1
  6051. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE16EN_SHIFT 6
  6052. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_MASK 0x1
  6053. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE17EN_SHIFT 7
  6054. u8 flags13;
  6055. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_MASK 0x1
  6056. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE18EN_SHIFT 0
  6057. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_MASK 0x1
  6058. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_RULE19EN_SHIFT 1
  6059. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
  6060. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
  6061. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
  6062. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
  6063. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
  6064. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  6065. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
  6066. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
  6067. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
  6068. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  6069. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
  6070. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  6071. u8 flags14;
  6072. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK 0x1
  6073. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT 0
  6074. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK 0x1
  6075. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT 1
  6076. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK 0x1
  6077. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT 2
  6078. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK 0x1
  6079. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT 3
  6080. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_MASK 0x1
  6081. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT 4
  6082. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1
  6083. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5
  6084. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_MASK 0x3
  6085. #define E4_XSTORM_ETH_HW_CONN_AG_CTX_TPH_ENABLE_SHIFT 6
  6086. u8 edpm_event_id;
  6087. __le16 physical_q0;
  6088. __le16 e5_reserved1;
  6089. __le16 edpm_num_bds;
  6090. __le16 tx_bd_cons;
  6091. __le16 tx_bd_prod;
  6092. __le16 updated_qm_pq_id;
  6093. __le16 conn_dpi;
  6094. };
  6095. /* GFT CAM line struct */
  6096. struct gft_cam_line {
  6097. __le32 camline;
  6098. #define GFT_CAM_LINE_VALID_MASK 0x1
  6099. #define GFT_CAM_LINE_VALID_SHIFT 0
  6100. #define GFT_CAM_LINE_DATA_MASK 0x3FFF
  6101. #define GFT_CAM_LINE_DATA_SHIFT 1
  6102. #define GFT_CAM_LINE_MASK_BITS_MASK 0x3FFF
  6103. #define GFT_CAM_LINE_MASK_BITS_SHIFT 15
  6104. #define GFT_CAM_LINE_RESERVED1_MASK 0x7
  6105. #define GFT_CAM_LINE_RESERVED1_SHIFT 29
  6106. };
  6107. /* GFT CAM line struct with fields breakout */
  6108. struct gft_cam_line_mapped {
  6109. __le32 camline;
  6110. #define GFT_CAM_LINE_MAPPED_VALID_MASK 0x1
  6111. #define GFT_CAM_LINE_MAPPED_VALID_SHIFT 0
  6112. #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK 0x1
  6113. #define GFT_CAM_LINE_MAPPED_IP_VERSION_SHIFT 1
  6114. #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK 0x1
  6115. #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_SHIFT 2
  6116. #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK 0xF
  6117. #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_SHIFT 3
  6118. #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK 0xF
  6119. #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_SHIFT 7
  6120. #define GFT_CAM_LINE_MAPPED_PF_ID_MASK 0xF
  6121. #define GFT_CAM_LINE_MAPPED_PF_ID_SHIFT 11
  6122. #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_MASK 0x1
  6123. #define GFT_CAM_LINE_MAPPED_IP_VERSION_MASK_SHIFT 15
  6124. #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_MASK 0x1
  6125. #define GFT_CAM_LINE_MAPPED_TUNNEL_IP_VERSION_MASK_SHIFT 16
  6126. #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_MASK 0xF
  6127. #define GFT_CAM_LINE_MAPPED_UPPER_PROTOCOL_TYPE_MASK_SHIFT 17
  6128. #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_MASK 0xF
  6129. #define GFT_CAM_LINE_MAPPED_TUNNEL_TYPE_MASK_SHIFT 21
  6130. #define GFT_CAM_LINE_MAPPED_PF_ID_MASK_MASK 0xF
  6131. #define GFT_CAM_LINE_MAPPED_PF_ID_MASK_SHIFT 25
  6132. #define GFT_CAM_LINE_MAPPED_RESERVED1_MASK 0x7
  6133. #define GFT_CAM_LINE_MAPPED_RESERVED1_SHIFT 29
  6134. };
  6135. union gft_cam_line_union {
  6136. struct gft_cam_line cam_line;
  6137. struct gft_cam_line_mapped cam_line_mapped;
  6138. };
  6139. /* Used in gft_profile_key: Indication for ip version */
  6140. enum gft_profile_ip_version {
  6141. GFT_PROFILE_IPV4 = 0,
  6142. GFT_PROFILE_IPV6 = 1,
  6143. MAX_GFT_PROFILE_IP_VERSION
  6144. };
  6145. /* Profile key stucr fot GFT logic in Prs */
  6146. struct gft_profile_key {
  6147. __le16 profile_key;
  6148. #define GFT_PROFILE_KEY_IP_VERSION_MASK 0x1
  6149. #define GFT_PROFILE_KEY_IP_VERSION_SHIFT 0
  6150. #define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_MASK 0x1
  6151. #define GFT_PROFILE_KEY_TUNNEL_IP_VERSION_SHIFT 1
  6152. #define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_MASK 0xF
  6153. #define GFT_PROFILE_KEY_UPPER_PROTOCOL_TYPE_SHIFT 2
  6154. #define GFT_PROFILE_KEY_TUNNEL_TYPE_MASK 0xF
  6155. #define GFT_PROFILE_KEY_TUNNEL_TYPE_SHIFT 6
  6156. #define GFT_PROFILE_KEY_PF_ID_MASK 0xF
  6157. #define GFT_PROFILE_KEY_PF_ID_SHIFT 10
  6158. #define GFT_PROFILE_KEY_RESERVED0_MASK 0x3
  6159. #define GFT_PROFILE_KEY_RESERVED0_SHIFT 14
  6160. };
  6161. /* Used in gft_profile_key: Indication for tunnel type */
  6162. enum gft_profile_tunnel_type {
  6163. GFT_PROFILE_NO_TUNNEL = 0,
  6164. GFT_PROFILE_VXLAN_TUNNEL = 1,
  6165. GFT_PROFILE_GRE_MAC_OR_NVGRE_TUNNEL = 2,
  6166. GFT_PROFILE_GRE_IP_TUNNEL = 3,
  6167. GFT_PROFILE_GENEVE_MAC_TUNNEL = 4,
  6168. GFT_PROFILE_GENEVE_IP_TUNNEL = 5,
  6169. MAX_GFT_PROFILE_TUNNEL_TYPE
  6170. };
  6171. /* Used in gft_profile_key: Indication for protocol type */
  6172. enum gft_profile_upper_protocol_type {
  6173. GFT_PROFILE_ROCE_PROTOCOL = 0,
  6174. GFT_PROFILE_RROCE_PROTOCOL = 1,
  6175. GFT_PROFILE_FCOE_PROTOCOL = 2,
  6176. GFT_PROFILE_ICMP_PROTOCOL = 3,
  6177. GFT_PROFILE_ARP_PROTOCOL = 4,
  6178. GFT_PROFILE_USER_TCP_SRC_PORT_1_INNER = 5,
  6179. GFT_PROFILE_USER_TCP_DST_PORT_1_INNER = 6,
  6180. GFT_PROFILE_TCP_PROTOCOL = 7,
  6181. GFT_PROFILE_USER_UDP_DST_PORT_1_INNER = 8,
  6182. GFT_PROFILE_USER_UDP_DST_PORT_2_OUTER = 9,
  6183. GFT_PROFILE_UDP_PROTOCOL = 10,
  6184. GFT_PROFILE_USER_IP_1_INNER = 11,
  6185. GFT_PROFILE_USER_IP_2_OUTER = 12,
  6186. GFT_PROFILE_USER_ETH_1_INNER = 13,
  6187. GFT_PROFILE_USER_ETH_2_OUTER = 14,
  6188. GFT_PROFILE_RAW = 15,
  6189. MAX_GFT_PROFILE_UPPER_PROTOCOL_TYPE
  6190. };
  6191. /* GFT RAM line struct */
  6192. struct gft_ram_line {
  6193. __le32 lo;
  6194. #define GFT_RAM_LINE_VLAN_SELECT_MASK 0x3
  6195. #define GFT_RAM_LINE_VLAN_SELECT_SHIFT 0
  6196. #define GFT_RAM_LINE_TUNNEL_ENTROPHY_MASK 0x1
  6197. #define GFT_RAM_LINE_TUNNEL_ENTROPHY_SHIFT 2
  6198. #define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_MASK 0x1
  6199. #define GFT_RAM_LINE_TUNNEL_TTL_EQUAL_ONE_SHIFT 3
  6200. #define GFT_RAM_LINE_TUNNEL_TTL_MASK 0x1
  6201. #define GFT_RAM_LINE_TUNNEL_TTL_SHIFT 4
  6202. #define GFT_RAM_LINE_TUNNEL_ETHERTYPE_MASK 0x1
  6203. #define GFT_RAM_LINE_TUNNEL_ETHERTYPE_SHIFT 5
  6204. #define GFT_RAM_LINE_TUNNEL_DST_PORT_MASK 0x1
  6205. #define GFT_RAM_LINE_TUNNEL_DST_PORT_SHIFT 6
  6206. #define GFT_RAM_LINE_TUNNEL_SRC_PORT_MASK 0x1
  6207. #define GFT_RAM_LINE_TUNNEL_SRC_PORT_SHIFT 7
  6208. #define GFT_RAM_LINE_TUNNEL_DSCP_MASK 0x1
  6209. #define GFT_RAM_LINE_TUNNEL_DSCP_SHIFT 8
  6210. #define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_MASK 0x1
  6211. #define GFT_RAM_LINE_TUNNEL_OVER_IP_PROTOCOL_SHIFT 9
  6212. #define GFT_RAM_LINE_TUNNEL_DST_IP_MASK 0x1
  6213. #define GFT_RAM_LINE_TUNNEL_DST_IP_SHIFT 10
  6214. #define GFT_RAM_LINE_TUNNEL_SRC_IP_MASK 0x1
  6215. #define GFT_RAM_LINE_TUNNEL_SRC_IP_SHIFT 11
  6216. #define GFT_RAM_LINE_TUNNEL_PRIORITY_MASK 0x1
  6217. #define GFT_RAM_LINE_TUNNEL_PRIORITY_SHIFT 12
  6218. #define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_MASK 0x1
  6219. #define GFT_RAM_LINE_TUNNEL_PROVIDER_VLAN_SHIFT 13
  6220. #define GFT_RAM_LINE_TUNNEL_VLAN_MASK 0x1
  6221. #define GFT_RAM_LINE_TUNNEL_VLAN_SHIFT 14
  6222. #define GFT_RAM_LINE_TUNNEL_DST_MAC_MASK 0x1
  6223. #define GFT_RAM_LINE_TUNNEL_DST_MAC_SHIFT 15
  6224. #define GFT_RAM_LINE_TUNNEL_SRC_MAC_MASK 0x1
  6225. #define GFT_RAM_LINE_TUNNEL_SRC_MAC_SHIFT 16
  6226. #define GFT_RAM_LINE_TTL_EQUAL_ONE_MASK 0x1
  6227. #define GFT_RAM_LINE_TTL_EQUAL_ONE_SHIFT 17
  6228. #define GFT_RAM_LINE_TTL_MASK 0x1
  6229. #define GFT_RAM_LINE_TTL_SHIFT 18
  6230. #define GFT_RAM_LINE_ETHERTYPE_MASK 0x1
  6231. #define GFT_RAM_LINE_ETHERTYPE_SHIFT 19
  6232. #define GFT_RAM_LINE_RESERVED0_MASK 0x1
  6233. #define GFT_RAM_LINE_RESERVED0_SHIFT 20
  6234. #define GFT_RAM_LINE_TCP_FLAG_FIN_MASK 0x1
  6235. #define GFT_RAM_LINE_TCP_FLAG_FIN_SHIFT 21
  6236. #define GFT_RAM_LINE_TCP_FLAG_SYN_MASK 0x1
  6237. #define GFT_RAM_LINE_TCP_FLAG_SYN_SHIFT 22
  6238. #define GFT_RAM_LINE_TCP_FLAG_RST_MASK 0x1
  6239. #define GFT_RAM_LINE_TCP_FLAG_RST_SHIFT 23
  6240. #define GFT_RAM_LINE_TCP_FLAG_PSH_MASK 0x1
  6241. #define GFT_RAM_LINE_TCP_FLAG_PSH_SHIFT 24
  6242. #define GFT_RAM_LINE_TCP_FLAG_ACK_MASK 0x1
  6243. #define GFT_RAM_LINE_TCP_FLAG_ACK_SHIFT 25
  6244. #define GFT_RAM_LINE_TCP_FLAG_URG_MASK 0x1
  6245. #define GFT_RAM_LINE_TCP_FLAG_URG_SHIFT 26
  6246. #define GFT_RAM_LINE_TCP_FLAG_ECE_MASK 0x1
  6247. #define GFT_RAM_LINE_TCP_FLAG_ECE_SHIFT 27
  6248. #define GFT_RAM_LINE_TCP_FLAG_CWR_MASK 0x1
  6249. #define GFT_RAM_LINE_TCP_FLAG_CWR_SHIFT 28
  6250. #define GFT_RAM_LINE_TCP_FLAG_NS_MASK 0x1
  6251. #define GFT_RAM_LINE_TCP_FLAG_NS_SHIFT 29
  6252. #define GFT_RAM_LINE_DST_PORT_MASK 0x1
  6253. #define GFT_RAM_LINE_DST_PORT_SHIFT 30
  6254. #define GFT_RAM_LINE_SRC_PORT_MASK 0x1
  6255. #define GFT_RAM_LINE_SRC_PORT_SHIFT 31
  6256. __le32 hi;
  6257. #define GFT_RAM_LINE_DSCP_MASK 0x1
  6258. #define GFT_RAM_LINE_DSCP_SHIFT 0
  6259. #define GFT_RAM_LINE_OVER_IP_PROTOCOL_MASK 0x1
  6260. #define GFT_RAM_LINE_OVER_IP_PROTOCOL_SHIFT 1
  6261. #define GFT_RAM_LINE_DST_IP_MASK 0x1
  6262. #define GFT_RAM_LINE_DST_IP_SHIFT 2
  6263. #define GFT_RAM_LINE_SRC_IP_MASK 0x1
  6264. #define GFT_RAM_LINE_SRC_IP_SHIFT 3
  6265. #define GFT_RAM_LINE_PRIORITY_MASK 0x1
  6266. #define GFT_RAM_LINE_PRIORITY_SHIFT 4
  6267. #define GFT_RAM_LINE_PROVIDER_VLAN_MASK 0x1
  6268. #define GFT_RAM_LINE_PROVIDER_VLAN_SHIFT 5
  6269. #define GFT_RAM_LINE_VLAN_MASK 0x1
  6270. #define GFT_RAM_LINE_VLAN_SHIFT 6
  6271. #define GFT_RAM_LINE_DST_MAC_MASK 0x1
  6272. #define GFT_RAM_LINE_DST_MAC_SHIFT 7
  6273. #define GFT_RAM_LINE_SRC_MAC_MASK 0x1
  6274. #define GFT_RAM_LINE_SRC_MAC_SHIFT 8
  6275. #define GFT_RAM_LINE_TENANT_ID_MASK 0x1
  6276. #define GFT_RAM_LINE_TENANT_ID_SHIFT 9
  6277. #define GFT_RAM_LINE_RESERVED1_MASK 0x3FFFFF
  6278. #define GFT_RAM_LINE_RESERVED1_SHIFT 10
  6279. };
  6280. /* Used in the first 2 bits for gft_ram_line: Indication for vlan mask */
  6281. enum gft_vlan_select {
  6282. INNER_PROVIDER_VLAN = 0,
  6283. INNER_VLAN = 1,
  6284. OUTER_PROVIDER_VLAN = 2,
  6285. OUTER_VLAN = 3,
  6286. MAX_GFT_VLAN_SELECT
  6287. };
  6288. /* The rdma task context of Mstorm */
  6289. struct ystorm_rdma_task_st_ctx {
  6290. struct regpair temp[4];
  6291. };
  6292. struct e4_ystorm_rdma_task_ag_ctx {
  6293. u8 reserved;
  6294. u8 byte1;
  6295. __le16 msem_ctx_upd_seq;
  6296. u8 flags0;
  6297. #define E4_YSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
  6298. #define E4_YSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
  6299. #define E4_YSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
  6300. #define E4_YSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
  6301. #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT1_MASK 0x1
  6302. #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT 5
  6303. #define E4_YSTORM_RDMA_TASK_AG_CTX_VALID_MASK 0x1
  6304. #define E4_YSTORM_RDMA_TASK_AG_CTX_VALID_SHIFT 6
  6305. #define E4_YSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_MASK 0x1
  6306. #define E4_YSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_SHIFT 7
  6307. u8 flags1;
  6308. #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0_MASK 0x3
  6309. #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT 0
  6310. #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1_MASK 0x3
  6311. #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT 2
  6312. #define E4_YSTORM_RDMA_TASK_AG_CTX_CF2SPECIAL_MASK 0x3
  6313. #define E4_YSTORM_RDMA_TASK_AG_CTX_CF2SPECIAL_SHIFT 4
  6314. #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK 0x1
  6315. #define E4_YSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT 6
  6316. #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK 0x1
  6317. #define E4_YSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT 7
  6318. u8 flags2;
  6319. #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT4_MASK 0x1
  6320. #define E4_YSTORM_RDMA_TASK_AG_CTX_BIT4_SHIFT 0
  6321. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1
  6322. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 1
  6323. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1
  6324. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 2
  6325. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1
  6326. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 3
  6327. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1
  6328. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 4
  6329. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1
  6330. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 5
  6331. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1
  6332. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 6
  6333. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK 0x1
  6334. #define E4_YSTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT 7
  6335. u8 key;
  6336. __le32 mw_cnt;
  6337. u8 ref_cnt_seq;
  6338. u8 ctx_upd_seq;
  6339. __le16 dif_flags;
  6340. __le16 tx_ref_count;
  6341. __le16 last_used_ltid;
  6342. __le16 parent_mr_lo;
  6343. __le16 parent_mr_hi;
  6344. __le32 fbo_lo;
  6345. __le32 fbo_hi;
  6346. };
  6347. struct e4_mstorm_rdma_task_ag_ctx {
  6348. u8 reserved;
  6349. u8 byte1;
  6350. __le16 icid;
  6351. u8 flags0;
  6352. #define E4_MSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
  6353. #define E4_MSTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
  6354. #define E4_MSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
  6355. #define E4_MSTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
  6356. #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT1_MASK 0x1
  6357. #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT 5
  6358. #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT2_MASK 0x1
  6359. #define E4_MSTORM_RDMA_TASK_AG_CTX_BIT2_SHIFT 6
  6360. #define E4_MSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_MASK 0x1
  6361. #define E4_MSTORM_RDMA_TASK_AG_CTX_DIF_FIRST_IO_SHIFT 7
  6362. u8 flags1;
  6363. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0_MASK 0x3
  6364. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT 0
  6365. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1_MASK 0x3
  6366. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT 2
  6367. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2_MASK 0x3
  6368. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2_SHIFT 4
  6369. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK 0x1
  6370. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT 6
  6371. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK 0x1
  6372. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT 7
  6373. u8 flags2;
  6374. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2EN_MASK 0x1
  6375. #define E4_MSTORM_RDMA_TASK_AG_CTX_CF2EN_SHIFT 0
  6376. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1
  6377. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 1
  6378. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1
  6379. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 2
  6380. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1
  6381. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 3
  6382. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1
  6383. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 4
  6384. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1
  6385. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 5
  6386. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1
  6387. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 6
  6388. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK 0x1
  6389. #define E4_MSTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT 7
  6390. u8 key;
  6391. __le32 mw_cnt;
  6392. u8 ref_cnt_seq;
  6393. u8 ctx_upd_seq;
  6394. __le16 dif_flags;
  6395. __le16 tx_ref_count;
  6396. __le16 last_used_ltid;
  6397. __le16 parent_mr_lo;
  6398. __le16 parent_mr_hi;
  6399. __le32 fbo_lo;
  6400. __le32 fbo_hi;
  6401. };
  6402. /* The roce task context of Mstorm */
  6403. struct mstorm_rdma_task_st_ctx {
  6404. struct regpair temp[4];
  6405. };
  6406. /* The roce task context of Ustorm */
  6407. struct ustorm_rdma_task_st_ctx {
  6408. struct regpair temp[2];
  6409. };
  6410. struct e4_ustorm_rdma_task_ag_ctx {
  6411. u8 reserved;
  6412. u8 state;
  6413. __le16 icid;
  6414. u8 flags0;
  6415. #define E4_USTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_MASK 0xF
  6416. #define E4_USTORM_RDMA_TASK_AG_CTX_CONNECTION_TYPE_SHIFT 0
  6417. #define E4_USTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_MASK 0x1
  6418. #define E4_USTORM_RDMA_TASK_AG_CTX_EXIST_IN_QM0_SHIFT 4
  6419. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RUNT_VALID_MASK 0x1
  6420. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RUNT_VALID_SHIFT 5
  6421. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_MASK 0x3
  6422. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_SHIFT 6
  6423. u8 flags1;
  6424. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RESULT_TOGGLE_BIT_MASK 0x3
  6425. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_RESULT_TOGGLE_BIT_SHIFT 0
  6426. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_TX_IO_FLG_MASK 0x3
  6427. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_TX_IO_FLG_SHIFT 2
  6428. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_BLOCK_SIZE_MASK 0x3
  6429. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_BLOCK_SIZE_SHIFT 4
  6430. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_MASK 0x3
  6431. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_SHIFT 6
  6432. u8 flags2;
  6433. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_EN_MASK 0x1
  6434. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_WRITE_RESULT_CF_EN_SHIFT 0
  6435. #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED2_MASK 0x1
  6436. #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED2_SHIFT 1
  6437. #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED3_MASK 0x1
  6438. #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED3_SHIFT 2
  6439. #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED4_MASK 0x1
  6440. #define E4_USTORM_RDMA_TASK_AG_CTX_RESERVED4_SHIFT 3
  6441. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1
  6442. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_CF_EN_SHIFT 4
  6443. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1
  6444. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 5
  6445. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1
  6446. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 6
  6447. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1
  6448. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 7
  6449. u8 flags3;
  6450. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1
  6451. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 0
  6452. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1
  6453. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 1
  6454. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1
  6455. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 2
  6456. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE6EN_MASK 0x1
  6457. #define E4_USTORM_RDMA_TASK_AG_CTX_RULE6EN_SHIFT 3
  6458. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_TYPE_MASK 0xF
  6459. #define E4_USTORM_RDMA_TASK_AG_CTX_DIF_ERROR_TYPE_SHIFT 4
  6460. __le32 dif_err_intervals;
  6461. __le32 dif_error_1st_interval;
  6462. __le32 sq_cons;
  6463. __le32 dif_runt_value;
  6464. __le32 sge_index;
  6465. __le32 reg5;
  6466. u8 byte2;
  6467. u8 byte3;
  6468. __le16 word1;
  6469. __le16 word2;
  6470. __le16 word3;
  6471. __le32 reg6;
  6472. __le32 reg7;
  6473. };
  6474. /* RDMA task context */
  6475. struct e4_rdma_task_context {
  6476. struct ystorm_rdma_task_st_ctx ystorm_st_context;
  6477. struct e4_ystorm_rdma_task_ag_ctx ystorm_ag_context;
  6478. struct tdif_task_context tdif_context;
  6479. struct e4_mstorm_rdma_task_ag_ctx mstorm_ag_context;
  6480. struct mstorm_rdma_task_st_ctx mstorm_st_context;
  6481. struct rdif_task_context rdif_context;
  6482. struct ustorm_rdma_task_st_ctx ustorm_st_context;
  6483. struct regpair ustorm_st_padding[2];
  6484. struct e4_ustorm_rdma_task_ag_ctx ustorm_ag_context;
  6485. };
  6486. /* rdma function init ramrod data */
  6487. struct rdma_close_func_ramrod_data {
  6488. u8 cnq_start_offset;
  6489. u8 num_cnqs;
  6490. u8 vf_id;
  6491. u8 vf_valid;
  6492. u8 reserved[4];
  6493. };
  6494. /* rdma function init CNQ parameters */
  6495. struct rdma_cnq_params {
  6496. __le16 sb_num;
  6497. u8 sb_index;
  6498. u8 num_pbl_pages;
  6499. __le32 reserved;
  6500. struct regpair pbl_base_addr;
  6501. __le16 queue_zone_num;
  6502. u8 reserved1[6];
  6503. };
  6504. /* rdma create cq ramrod data */
  6505. struct rdma_create_cq_ramrod_data {
  6506. struct regpair cq_handle;
  6507. struct regpair pbl_addr;
  6508. __le32 max_cqes;
  6509. __le16 pbl_num_pages;
  6510. __le16 dpi;
  6511. u8 is_two_level_pbl;
  6512. u8 cnq_id;
  6513. u8 pbl_log_page_size;
  6514. u8 toggle_bit;
  6515. __le16 int_timeout;
  6516. __le16 reserved1;
  6517. };
  6518. /* rdma deregister tid ramrod data */
  6519. struct rdma_deregister_tid_ramrod_data {
  6520. __le32 itid;
  6521. __le32 reserved;
  6522. };
  6523. /* rdma destroy cq output params */
  6524. struct rdma_destroy_cq_output_params {
  6525. __le16 cnq_num;
  6526. __le16 reserved0;
  6527. __le32 reserved1;
  6528. };
  6529. /* rdma destroy cq ramrod data */
  6530. struct rdma_destroy_cq_ramrod_data {
  6531. struct regpair output_params_addr;
  6532. };
  6533. /* RDMA slow path EQ cmd IDs */
  6534. enum rdma_event_opcode {
  6535. RDMA_EVENT_UNUSED,
  6536. RDMA_EVENT_FUNC_INIT,
  6537. RDMA_EVENT_FUNC_CLOSE,
  6538. RDMA_EVENT_REGISTER_MR,
  6539. RDMA_EVENT_DEREGISTER_MR,
  6540. RDMA_EVENT_CREATE_CQ,
  6541. RDMA_EVENT_RESIZE_CQ,
  6542. RDMA_EVENT_DESTROY_CQ,
  6543. RDMA_EVENT_CREATE_SRQ,
  6544. RDMA_EVENT_MODIFY_SRQ,
  6545. RDMA_EVENT_DESTROY_SRQ,
  6546. MAX_RDMA_EVENT_OPCODE
  6547. };
  6548. /* RDMA FW return code for slow path ramrods */
  6549. enum rdma_fw_return_code {
  6550. RDMA_RETURN_OK = 0,
  6551. RDMA_RETURN_REGISTER_MR_BAD_STATE_ERR,
  6552. RDMA_RETURN_DEREGISTER_MR_BAD_STATE_ERR,
  6553. RDMA_RETURN_RESIZE_CQ_ERR,
  6554. RDMA_RETURN_NIG_DRAIN_REQ,
  6555. MAX_RDMA_FW_RETURN_CODE
  6556. };
  6557. /* rdma function init header */
  6558. struct rdma_init_func_hdr {
  6559. u8 cnq_start_offset;
  6560. u8 num_cnqs;
  6561. u8 cq_ring_mode;
  6562. u8 vf_id;
  6563. u8 vf_valid;
  6564. u8 relaxed_ordering;
  6565. __le16 first_reg_srq_id;
  6566. __le32 reg_srq_base_addr;
  6567. __le32 reserved;
  6568. };
  6569. /* rdma function init ramrod data */
  6570. struct rdma_init_func_ramrod_data {
  6571. struct rdma_init_func_hdr params_header;
  6572. struct rdma_cnq_params cnq_params[NUM_OF_GLOBAL_QUEUES];
  6573. };
  6574. /* RDMA ramrod command IDs */
  6575. enum rdma_ramrod_cmd_id {
  6576. RDMA_RAMROD_UNUSED,
  6577. RDMA_RAMROD_FUNC_INIT,
  6578. RDMA_RAMROD_FUNC_CLOSE,
  6579. RDMA_RAMROD_REGISTER_MR,
  6580. RDMA_RAMROD_DEREGISTER_MR,
  6581. RDMA_RAMROD_CREATE_CQ,
  6582. RDMA_RAMROD_RESIZE_CQ,
  6583. RDMA_RAMROD_DESTROY_CQ,
  6584. RDMA_RAMROD_CREATE_SRQ,
  6585. RDMA_RAMROD_MODIFY_SRQ,
  6586. RDMA_RAMROD_DESTROY_SRQ,
  6587. MAX_RDMA_RAMROD_CMD_ID
  6588. };
  6589. /* rdma register tid ramrod data */
  6590. struct rdma_register_tid_ramrod_data {
  6591. __le16 flags;
  6592. #define RDMA_REGISTER_TID_RAMROD_DATA_PAGE_SIZE_LOG_MASK 0x1F
  6593. #define RDMA_REGISTER_TID_RAMROD_DATA_PAGE_SIZE_LOG_SHIFT 0
  6594. #define RDMA_REGISTER_TID_RAMROD_DATA_TWO_LEVEL_PBL_MASK 0x1
  6595. #define RDMA_REGISTER_TID_RAMROD_DATA_TWO_LEVEL_PBL_SHIFT 5
  6596. #define RDMA_REGISTER_TID_RAMROD_DATA_ZERO_BASED_MASK 0x1
  6597. #define RDMA_REGISTER_TID_RAMROD_DATA_ZERO_BASED_SHIFT 6
  6598. #define RDMA_REGISTER_TID_RAMROD_DATA_PHY_MR_MASK 0x1
  6599. #define RDMA_REGISTER_TID_RAMROD_DATA_PHY_MR_SHIFT 7
  6600. #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_READ_MASK 0x1
  6601. #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_READ_SHIFT 8
  6602. #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_WRITE_MASK 0x1
  6603. #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_WRITE_SHIFT 9
  6604. #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_ATOMIC_MASK 0x1
  6605. #define RDMA_REGISTER_TID_RAMROD_DATA_REMOTE_ATOMIC_SHIFT 10
  6606. #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_WRITE_MASK 0x1
  6607. #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_WRITE_SHIFT 11
  6608. #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_READ_MASK 0x1
  6609. #define RDMA_REGISTER_TID_RAMROD_DATA_LOCAL_READ_SHIFT 12
  6610. #define RDMA_REGISTER_TID_RAMROD_DATA_ENABLE_MW_BIND_MASK 0x1
  6611. #define RDMA_REGISTER_TID_RAMROD_DATA_ENABLE_MW_BIND_SHIFT 13
  6612. #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED_MASK 0x3
  6613. #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED_SHIFT 14
  6614. u8 flags1;
  6615. #define RDMA_REGISTER_TID_RAMROD_DATA_PBL_PAGE_SIZE_LOG_MASK 0x1F
  6616. #define RDMA_REGISTER_TID_RAMROD_DATA_PBL_PAGE_SIZE_LOG_SHIFT 0
  6617. #define RDMA_REGISTER_TID_RAMROD_DATA_TID_TYPE_MASK 0x7
  6618. #define RDMA_REGISTER_TID_RAMROD_DATA_TID_TYPE_SHIFT 5
  6619. u8 flags2;
  6620. #define RDMA_REGISTER_TID_RAMROD_DATA_DMA_MR_MASK 0x1
  6621. #define RDMA_REGISTER_TID_RAMROD_DATA_DMA_MR_SHIFT 0
  6622. #define RDMA_REGISTER_TID_RAMROD_DATA_DIF_ON_HOST_FLG_MASK 0x1
  6623. #define RDMA_REGISTER_TID_RAMROD_DATA_DIF_ON_HOST_FLG_SHIFT 1
  6624. #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED1_MASK 0x3F
  6625. #define RDMA_REGISTER_TID_RAMROD_DATA_RESERVED1_SHIFT 2
  6626. u8 key;
  6627. u8 length_hi;
  6628. u8 vf_id;
  6629. u8 vf_valid;
  6630. __le16 pd;
  6631. __le16 reserved2;
  6632. __le32 length_lo;
  6633. __le32 itid;
  6634. __le32 reserved3;
  6635. struct regpair va;
  6636. struct regpair pbl_base;
  6637. struct regpair dif_error_addr;
  6638. struct regpair dif_runt_addr;
  6639. __le32 reserved4[2];
  6640. };
  6641. /* rdma resize cq output params */
  6642. struct rdma_resize_cq_output_params {
  6643. __le32 old_cq_cons;
  6644. __le32 old_cq_prod;
  6645. };
  6646. /* rdma resize cq ramrod data */
  6647. struct rdma_resize_cq_ramrod_data {
  6648. u8 flags;
  6649. #define RDMA_RESIZE_CQ_RAMROD_DATA_TOGGLE_BIT_MASK 0x1
  6650. #define RDMA_RESIZE_CQ_RAMROD_DATA_TOGGLE_BIT_SHIFT 0
  6651. #define RDMA_RESIZE_CQ_RAMROD_DATA_IS_TWO_LEVEL_PBL_MASK 0x1
  6652. #define RDMA_RESIZE_CQ_RAMROD_DATA_IS_TWO_LEVEL_PBL_SHIFT 1
  6653. #define RDMA_RESIZE_CQ_RAMROD_DATA_RESERVED_MASK 0x3F
  6654. #define RDMA_RESIZE_CQ_RAMROD_DATA_RESERVED_SHIFT 2
  6655. u8 pbl_log_page_size;
  6656. __le16 pbl_num_pages;
  6657. __le32 max_cqes;
  6658. struct regpair pbl_addr;
  6659. struct regpair output_params_addr;
  6660. };
  6661. /* The rdma storm context of Mstorm */
  6662. struct rdma_srq_context {
  6663. struct regpair temp[8];
  6664. };
  6665. /* rdma create qp requester ramrod data */
  6666. struct rdma_srq_create_ramrod_data {
  6667. u8 flags;
  6668. #define RDMA_SRQ_CREATE_RAMROD_DATA_XRC_FLAG_MASK 0x1
  6669. #define RDMA_SRQ_CREATE_RAMROD_DATA_XRC_FLAG_SHIFT 0
  6670. #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED_KEY_EN_MASK 0x1
  6671. #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED_KEY_EN_SHIFT 1
  6672. #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED1_MASK 0x3F
  6673. #define RDMA_SRQ_CREATE_RAMROD_DATA_RESERVED1_SHIFT 2
  6674. u8 reserved2;
  6675. __le16 xrc_domain;
  6676. __le32 xrc_srq_cq_cid;
  6677. struct regpair pbl_base_addr;
  6678. __le16 pages_in_srq_pbl;
  6679. __le16 pd_id;
  6680. struct rdma_srq_id srq_id;
  6681. __le16 page_size;
  6682. __le16 reserved3;
  6683. __le32 reserved4;
  6684. struct regpair producers_addr;
  6685. };
  6686. /* rdma create qp requester ramrod data */
  6687. struct rdma_srq_destroy_ramrod_data {
  6688. struct rdma_srq_id srq_id;
  6689. __le32 reserved;
  6690. };
  6691. /* rdma create qp requester ramrod data */
  6692. struct rdma_srq_modify_ramrod_data {
  6693. struct rdma_srq_id srq_id;
  6694. __le32 wqe_limit;
  6695. };
  6696. /* RDMA Tid type enumeration (for register_tid ramrod) */
  6697. enum rdma_tid_type {
  6698. RDMA_TID_REGISTERED_MR,
  6699. RDMA_TID_FMR,
  6700. RDMA_TID_MW_TYPE1,
  6701. RDMA_TID_MW_TYPE2A,
  6702. MAX_RDMA_TID_TYPE
  6703. };
  6704. struct rdma_xrc_srq_context {
  6705. struct regpair temp[9];
  6706. };
  6707. struct e4_tstorm_rdma_task_ag_ctx {
  6708. u8 byte0;
  6709. u8 byte1;
  6710. __le16 word0;
  6711. u8 flags0;
  6712. #define E4_TSTORM_RDMA_TASK_AG_CTX_NIBBLE0_MASK 0xF
  6713. #define E4_TSTORM_RDMA_TASK_AG_CTX_NIBBLE0_SHIFT 0
  6714. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT0_MASK 0x1
  6715. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT0_SHIFT 4
  6716. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT1_MASK 0x1
  6717. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT1_SHIFT 5
  6718. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT2_MASK 0x1
  6719. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT2_SHIFT 6
  6720. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT3_MASK 0x1
  6721. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT3_SHIFT 7
  6722. u8 flags1;
  6723. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT4_MASK 0x1
  6724. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT4_SHIFT 0
  6725. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT5_MASK 0x1
  6726. #define E4_TSTORM_RDMA_TASK_AG_CTX_BIT5_SHIFT 1
  6727. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0_MASK 0x3
  6728. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0_SHIFT 2
  6729. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1_MASK 0x3
  6730. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1_SHIFT 4
  6731. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2_MASK 0x3
  6732. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2_SHIFT 6
  6733. u8 flags2;
  6734. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3_MASK 0x3
  6735. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3_SHIFT 0
  6736. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4_MASK 0x3
  6737. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4_SHIFT 2
  6738. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5_MASK 0x3
  6739. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5_SHIFT 4
  6740. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6_MASK 0x3
  6741. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6_SHIFT 6
  6742. u8 flags3;
  6743. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7_MASK 0x3
  6744. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7_SHIFT 0
  6745. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0EN_MASK 0x1
  6746. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF0EN_SHIFT 2
  6747. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1EN_MASK 0x1
  6748. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF1EN_SHIFT 3
  6749. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2EN_MASK 0x1
  6750. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF2EN_SHIFT 4
  6751. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3EN_MASK 0x1
  6752. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF3EN_SHIFT 5
  6753. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4EN_MASK 0x1
  6754. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF4EN_SHIFT 6
  6755. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5EN_MASK 0x1
  6756. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF5EN_SHIFT 7
  6757. u8 flags4;
  6758. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6EN_MASK 0x1
  6759. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF6EN_SHIFT 0
  6760. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7EN_MASK 0x1
  6761. #define E4_TSTORM_RDMA_TASK_AG_CTX_CF7EN_SHIFT 1
  6762. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE0EN_MASK 0x1
  6763. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE0EN_SHIFT 2
  6764. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE1EN_MASK 0x1
  6765. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE1EN_SHIFT 3
  6766. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE2EN_MASK 0x1
  6767. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE2EN_SHIFT 4
  6768. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE3EN_MASK 0x1
  6769. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE3EN_SHIFT 5
  6770. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE4EN_MASK 0x1
  6771. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE4EN_SHIFT 6
  6772. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE5EN_MASK 0x1
  6773. #define E4_TSTORM_RDMA_TASK_AG_CTX_RULE5EN_SHIFT 7
  6774. u8 byte2;
  6775. __le16 word1;
  6776. __le32 reg0;
  6777. u8 byte3;
  6778. u8 byte4;
  6779. __le16 word2;
  6780. __le16 word3;
  6781. __le16 word4;
  6782. __le32 reg1;
  6783. __le32 reg2;
  6784. };
  6785. struct e4_ustorm_rdma_conn_ag_ctx {
  6786. u8 reserved;
  6787. u8 byte1;
  6788. u8 flags0;
  6789. #define E4_USTORM_RDMA_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  6790. #define E4_USTORM_RDMA_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  6791. #define E4_USTORM_RDMA_CONN_AG_CTX_DIF_ERROR_REPORTED_MASK 0x1
  6792. #define E4_USTORM_RDMA_CONN_AG_CTX_DIF_ERROR_REPORTED_SHIFT 1
  6793. #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
  6794. #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 2
  6795. #define E4_USTORM_RDMA_CONN_AG_CTX_CF1_MASK 0x3
  6796. #define E4_USTORM_RDMA_CONN_AG_CTX_CF1_SHIFT 4
  6797. #define E4_USTORM_RDMA_CONN_AG_CTX_CF2_MASK 0x3
  6798. #define E4_USTORM_RDMA_CONN_AG_CTX_CF2_SHIFT 6
  6799. u8 flags1;
  6800. #define E4_USTORM_RDMA_CONN_AG_CTX_CF3_MASK 0x3
  6801. #define E4_USTORM_RDMA_CONN_AG_CTX_CF3_SHIFT 0
  6802. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_MASK 0x3
  6803. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_SHIFT 2
  6804. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_MASK 0x3
  6805. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_SHIFT 4
  6806. #define E4_USTORM_RDMA_CONN_AG_CTX_CF6_MASK 0x3
  6807. #define E4_USTORM_RDMA_CONN_AG_CTX_CF6_SHIFT 6
  6808. u8 flags2;
  6809. #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
  6810. #define E4_USTORM_RDMA_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0
  6811. #define E4_USTORM_RDMA_CONN_AG_CTX_CF1EN_MASK 0x1
  6812. #define E4_USTORM_RDMA_CONN_AG_CTX_CF1EN_SHIFT 1
  6813. #define E4_USTORM_RDMA_CONN_AG_CTX_CF2EN_MASK 0x1
  6814. #define E4_USTORM_RDMA_CONN_AG_CTX_CF2EN_SHIFT 2
  6815. #define E4_USTORM_RDMA_CONN_AG_CTX_CF3EN_MASK 0x1
  6816. #define E4_USTORM_RDMA_CONN_AG_CTX_CF3EN_SHIFT 3
  6817. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_EN_MASK 0x1
  6818. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_SE_CF_EN_SHIFT 4
  6819. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_EN_MASK 0x1
  6820. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_ARM_CF_EN_SHIFT 5
  6821. #define E4_USTORM_RDMA_CONN_AG_CTX_CF6EN_MASK 0x1
  6822. #define E4_USTORM_RDMA_CONN_AG_CTX_CF6EN_SHIFT 6
  6823. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_SE_EN_MASK 0x1
  6824. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_SE_EN_SHIFT 7
  6825. u8 flags3;
  6826. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_EN_MASK 0x1
  6827. #define E4_USTORM_RDMA_CONN_AG_CTX_CQ_EN_SHIFT 0
  6828. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE2EN_MASK 0x1
  6829. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE2EN_SHIFT 1
  6830. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE3EN_MASK 0x1
  6831. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE3EN_SHIFT 2
  6832. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE4EN_MASK 0x1
  6833. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE4EN_SHIFT 3
  6834. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE5EN_MASK 0x1
  6835. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE5EN_SHIFT 4
  6836. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE6EN_MASK 0x1
  6837. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE6EN_SHIFT 5
  6838. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE7EN_MASK 0x1
  6839. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE7EN_SHIFT 6
  6840. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE8EN_MASK 0x1
  6841. #define E4_USTORM_RDMA_CONN_AG_CTX_RULE8EN_SHIFT 7
  6842. u8 byte2;
  6843. u8 byte3;
  6844. __le16 conn_dpi;
  6845. __le16 word1;
  6846. __le32 cq_cons;
  6847. __le32 cq_se_prod;
  6848. __le32 cq_prod;
  6849. __le32 reg3;
  6850. __le16 int_timeout;
  6851. __le16 word3;
  6852. };
  6853. struct e4_xstorm_roce_conn_ag_ctx {
  6854. u8 reserved0;
  6855. u8 state;
  6856. u8 flags0;
  6857. #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  6858. #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  6859. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1
  6860. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1
  6861. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT2_MASK 0x1
  6862. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT2_SHIFT 2
  6863. #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  6864. #define E4_XSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  6865. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT4_MASK 0x1
  6866. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT4_SHIFT 4
  6867. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT5_MASK 0x1
  6868. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT5_SHIFT 5
  6869. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT6_MASK 0x1
  6870. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT6_SHIFT 6
  6871. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT7_MASK 0x1
  6872. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT7_SHIFT 7
  6873. u8 flags1;
  6874. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT8_MASK 0x1
  6875. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT8_SHIFT 0
  6876. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT9_MASK 0x1
  6877. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT9_SHIFT 1
  6878. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT10_MASK 0x1
  6879. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT10_SHIFT 2
  6880. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT11_MASK 0x1
  6881. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT11_SHIFT 3
  6882. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT12_MASK 0x1
  6883. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT12_SHIFT 4
  6884. #define E4_XSTORM_ROCE_CONN_AG_CTX_MSEM_FLUSH_MASK 0x1
  6885. #define E4_XSTORM_ROCE_CONN_AG_CTX_MSEM_FLUSH_SHIFT 5
  6886. #define E4_XSTORM_ROCE_CONN_AG_CTX_MSDM_FLUSH_MASK 0x1
  6887. #define E4_XSTORM_ROCE_CONN_AG_CTX_MSDM_FLUSH_SHIFT 6
  6888. #define E4_XSTORM_ROCE_CONN_AG_CTX_YSTORM_FLUSH_MASK 0x1
  6889. #define E4_XSTORM_ROCE_CONN_AG_CTX_YSTORM_FLUSH_SHIFT 7
  6890. u8 flags2;
  6891. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3
  6892. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 0
  6893. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1_MASK 0x3
  6894. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT 2
  6895. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3
  6896. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 4
  6897. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3_MASK 0x3
  6898. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3_SHIFT 6
  6899. u8 flags3;
  6900. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4_MASK 0x3
  6901. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4_SHIFT 0
  6902. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5_MASK 0x3
  6903. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5_SHIFT 2
  6904. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6_MASK 0x3
  6905. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6_SHIFT 4
  6906. #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
  6907. #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
  6908. u8 flags4;
  6909. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8_MASK 0x3
  6910. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8_SHIFT 0
  6911. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9_MASK 0x3
  6912. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9_SHIFT 2
  6913. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10_MASK 0x3
  6914. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10_SHIFT 4
  6915. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11_MASK 0x3
  6916. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11_SHIFT 6
  6917. u8 flags5;
  6918. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12_MASK 0x3
  6919. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12_SHIFT 0
  6920. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13_MASK 0x3
  6921. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13_SHIFT 2
  6922. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14_MASK 0x3
  6923. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14_SHIFT 4
  6924. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15_MASK 0x3
  6925. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15_SHIFT 6
  6926. u8 flags6;
  6927. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16_MASK 0x3
  6928. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16_SHIFT 0
  6929. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17_MASK 0x3
  6930. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17_SHIFT 2
  6931. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18_MASK 0x3
  6932. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18_SHIFT 4
  6933. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19_MASK 0x3
  6934. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19_SHIFT 6
  6935. u8 flags7;
  6936. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20_MASK 0x3
  6937. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20_SHIFT 0
  6938. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21_MASK 0x3
  6939. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21_SHIFT 2
  6940. #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_MASK 0x3
  6941. #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  6942. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1
  6943. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 6
  6944. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK 0x1
  6945. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT 7
  6946. u8 flags8;
  6947. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1
  6948. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 0
  6949. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3EN_MASK 0x1
  6950. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF3EN_SHIFT 1
  6951. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4EN_MASK 0x1
  6952. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF4EN_SHIFT 2
  6953. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5EN_MASK 0x1
  6954. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF5EN_SHIFT 3
  6955. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6EN_MASK 0x1
  6956. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF6EN_SHIFT 4
  6957. #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
  6958. #define E4_XSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5
  6959. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8EN_MASK 0x1
  6960. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF8EN_SHIFT 6
  6961. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9EN_MASK 0x1
  6962. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF9EN_SHIFT 7
  6963. u8 flags9;
  6964. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10EN_MASK 0x1
  6965. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF10EN_SHIFT 0
  6966. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11EN_MASK 0x1
  6967. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF11EN_SHIFT 1
  6968. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12EN_MASK 0x1
  6969. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF12EN_SHIFT 2
  6970. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13EN_MASK 0x1
  6971. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF13EN_SHIFT 3
  6972. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14EN_MASK 0x1
  6973. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF14EN_SHIFT 4
  6974. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15EN_MASK 0x1
  6975. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF15EN_SHIFT 5
  6976. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16EN_MASK 0x1
  6977. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF16EN_SHIFT 6
  6978. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17EN_MASK 0x1
  6979. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF17EN_SHIFT 7
  6980. u8 flags10;
  6981. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18EN_MASK 0x1
  6982. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF18EN_SHIFT 0
  6983. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19EN_MASK 0x1
  6984. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF19EN_SHIFT 1
  6985. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20EN_MASK 0x1
  6986. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF20EN_SHIFT 2
  6987. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21EN_MASK 0x1
  6988. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF21EN_SHIFT 3
  6989. #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
  6990. #define E4_XSTORM_ROCE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  6991. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23EN_MASK 0x1
  6992. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23EN_SHIFT 5
  6993. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1
  6994. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 6
  6995. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1
  6996. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 7
  6997. u8 flags11;
  6998. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1
  6999. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 0
  7000. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1
  7001. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 1
  7002. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1
  7003. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 2
  7004. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE5EN_MASK 0x1
  7005. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE5EN_SHIFT 3
  7006. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE6EN_MASK 0x1
  7007. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE6EN_SHIFT 4
  7008. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE7EN_MASK 0x1
  7009. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE7EN_SHIFT 5
  7010. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
  7011. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  7012. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE9EN_MASK 0x1
  7013. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE9EN_SHIFT 7
  7014. u8 flags12;
  7015. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE10EN_MASK 0x1
  7016. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE10EN_SHIFT 0
  7017. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE11EN_MASK 0x1
  7018. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE11EN_SHIFT 1
  7019. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
  7020. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  7021. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
  7022. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  7023. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE14EN_MASK 0x1
  7024. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE14EN_SHIFT 4
  7025. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE15EN_MASK 0x1
  7026. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE15EN_SHIFT 5
  7027. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE16EN_MASK 0x1
  7028. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE16EN_SHIFT 6
  7029. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE17EN_MASK 0x1
  7030. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE17EN_SHIFT 7
  7031. u8 flags13;
  7032. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE18EN_MASK 0x1
  7033. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE18EN_SHIFT 0
  7034. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE19EN_MASK 0x1
  7035. #define E4_XSTORM_ROCE_CONN_AG_CTX_RULE19EN_SHIFT 1
  7036. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
  7037. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
  7038. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
  7039. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
  7040. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
  7041. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  7042. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
  7043. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
  7044. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
  7045. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  7046. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
  7047. #define E4_XSTORM_ROCE_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  7048. u8 flags14;
  7049. #define E4_XSTORM_ROCE_CONN_AG_CTX_MIGRATION_MASK 0x1
  7050. #define E4_XSTORM_ROCE_CONN_AG_CTX_MIGRATION_SHIFT 0
  7051. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT17_MASK 0x1
  7052. #define E4_XSTORM_ROCE_CONN_AG_CTX_BIT17_SHIFT 1
  7053. #define E4_XSTORM_ROCE_CONN_AG_CTX_DPM_PORT_NUM_MASK 0x3
  7054. #define E4_XSTORM_ROCE_CONN_AG_CTX_DPM_PORT_NUM_SHIFT 2
  7055. #define E4_XSTORM_ROCE_CONN_AG_CTX_RESERVED_MASK 0x1
  7056. #define E4_XSTORM_ROCE_CONN_AG_CTX_RESERVED_SHIFT 4
  7057. #define E4_XSTORM_ROCE_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1
  7058. #define E4_XSTORM_ROCE_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5
  7059. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23_MASK 0x3
  7060. #define E4_XSTORM_ROCE_CONN_AG_CTX_CF23_SHIFT 6
  7061. u8 byte2;
  7062. __le16 physical_q0;
  7063. __le16 word1;
  7064. __le16 word2;
  7065. __le16 word3;
  7066. __le16 word4;
  7067. __le16 word5;
  7068. __le16 conn_dpi;
  7069. u8 byte3;
  7070. u8 byte4;
  7071. u8 byte5;
  7072. u8 byte6;
  7073. __le32 reg0;
  7074. __le32 reg1;
  7075. __le32 reg2;
  7076. __le32 snd_nxt_psn;
  7077. __le32 reg4;
  7078. __le32 reg5;
  7079. __le32 reg6;
  7080. };
  7081. struct e4_tstorm_roce_conn_ag_ctx {
  7082. u8 reserved0;
  7083. u8 byte1;
  7084. u8 flags0;
  7085. #define E4_TSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  7086. #define E4_TSTORM_ROCE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  7087. #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1
  7088. #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1
  7089. #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT2_MASK 0x1
  7090. #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT2_SHIFT 2
  7091. #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT3_MASK 0x1
  7092. #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT3_SHIFT 3
  7093. #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT4_MASK 0x1
  7094. #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT4_SHIFT 4
  7095. #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT5_MASK 0x1
  7096. #define E4_TSTORM_ROCE_CONN_AG_CTX_BIT5_SHIFT 5
  7097. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3
  7098. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 6
  7099. u8 flags1;
  7100. #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK 0x3
  7101. #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT 0
  7102. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3
  7103. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 2
  7104. #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK 0x3
  7105. #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT 4
  7106. #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
  7107. #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
  7108. u8 flags2;
  7109. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5_MASK 0x3
  7110. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5_SHIFT 0
  7111. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6_MASK 0x3
  7112. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6_SHIFT 2
  7113. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7_MASK 0x3
  7114. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7_SHIFT 4
  7115. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8_MASK 0x3
  7116. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8_SHIFT 6
  7117. u8 flags3;
  7118. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9_MASK 0x3
  7119. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9_SHIFT 0
  7120. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10_MASK 0x3
  7121. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10_SHIFT 2
  7122. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1
  7123. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 4
  7124. #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK 0x1
  7125. #define E4_TSTORM_ROCE_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT 5
  7126. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1
  7127. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 6
  7128. #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK 0x1
  7129. #define E4_TSTORM_ROCE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT 7
  7130. u8 flags4;
  7131. #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
  7132. #define E4_TSTORM_ROCE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0
  7133. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5EN_MASK 0x1
  7134. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF5EN_SHIFT 1
  7135. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6EN_MASK 0x1
  7136. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF6EN_SHIFT 2
  7137. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7EN_MASK 0x1
  7138. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF7EN_SHIFT 3
  7139. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8EN_MASK 0x1
  7140. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF8EN_SHIFT 4
  7141. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9EN_MASK 0x1
  7142. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF9EN_SHIFT 5
  7143. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10EN_MASK 0x1
  7144. #define E4_TSTORM_ROCE_CONN_AG_CTX_CF10EN_SHIFT 6
  7145. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1
  7146. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 7
  7147. u8 flags5;
  7148. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1
  7149. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 0
  7150. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1
  7151. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 1
  7152. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1
  7153. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 2
  7154. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1
  7155. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 3
  7156. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE5EN_MASK 0x1
  7157. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE5EN_SHIFT 4
  7158. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE6EN_MASK 0x1
  7159. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE6EN_SHIFT 5
  7160. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE7EN_MASK 0x1
  7161. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE7EN_SHIFT 6
  7162. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE8EN_MASK 0x1
  7163. #define E4_TSTORM_ROCE_CONN_AG_CTX_RULE8EN_SHIFT 7
  7164. __le32 reg0;
  7165. __le32 reg1;
  7166. __le32 reg2;
  7167. __le32 reg3;
  7168. __le32 reg4;
  7169. __le32 reg5;
  7170. __le32 reg6;
  7171. __le32 reg7;
  7172. __le32 reg8;
  7173. u8 byte2;
  7174. u8 byte3;
  7175. __le16 word0;
  7176. u8 byte4;
  7177. u8 byte5;
  7178. __le16 word1;
  7179. __le16 word2;
  7180. __le16 word3;
  7181. __le32 reg9;
  7182. __le32 reg10;
  7183. };
  7184. /* The roce storm context of Ystorm */
  7185. struct ystorm_roce_conn_st_ctx {
  7186. struct regpair temp[2];
  7187. };
  7188. /* The roce storm context of Mstorm */
  7189. struct pstorm_roce_conn_st_ctx {
  7190. struct regpair temp[16];
  7191. };
  7192. /* The roce storm context of Xstorm */
  7193. struct xstorm_roce_conn_st_ctx {
  7194. struct regpair temp[24];
  7195. };
  7196. /* The roce storm context of Tstorm */
  7197. struct tstorm_roce_conn_st_ctx {
  7198. struct regpair temp[30];
  7199. };
  7200. /* The roce storm context of Mstorm */
  7201. struct mstorm_roce_conn_st_ctx {
  7202. struct regpair temp[6];
  7203. };
  7204. /* The roce storm context of Ystorm */
  7205. struct ustorm_roce_conn_st_ctx {
  7206. struct regpair temp[12];
  7207. };
  7208. /* roce connection context */
  7209. struct e4_roce_conn_context {
  7210. struct ystorm_roce_conn_st_ctx ystorm_st_context;
  7211. struct regpair ystorm_st_padding[2];
  7212. struct pstorm_roce_conn_st_ctx pstorm_st_context;
  7213. struct xstorm_roce_conn_st_ctx xstorm_st_context;
  7214. struct e4_xstorm_roce_conn_ag_ctx xstorm_ag_context;
  7215. struct e4_tstorm_roce_conn_ag_ctx tstorm_ag_context;
  7216. struct timers_context timer_context;
  7217. struct e4_ustorm_rdma_conn_ag_ctx ustorm_ag_context;
  7218. struct tstorm_roce_conn_st_ctx tstorm_st_context;
  7219. struct regpair tstorm_st_padding[2];
  7220. struct mstorm_roce_conn_st_ctx mstorm_st_context;
  7221. struct regpair mstorm_st_padding[2];
  7222. struct ustorm_roce_conn_st_ctx ustorm_st_context;
  7223. };
  7224. /* roce create qp requester ramrod data */
  7225. struct roce_create_qp_req_ramrod_data {
  7226. __le16 flags;
  7227. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ROCE_FLAVOR_MASK 0x3
  7228. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ROCE_FLAVOR_SHIFT 0
  7229. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_FMR_AND_RESERVED_EN_MASK 0x1
  7230. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_FMR_AND_RESERVED_EN_SHIFT 2
  7231. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_SIGNALED_COMP_MASK 0x1
  7232. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_SIGNALED_COMP_SHIFT 3
  7233. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_PRI_MASK 0x7
  7234. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_PRI_SHIFT 4
  7235. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_XRC_FLAG_MASK 0x1
  7236. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_XRC_FLAG_SHIFT 7
  7237. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_MASK 0xF
  7238. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_SHIFT 8
  7239. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_MASK 0xF
  7240. #define ROCE_CREATE_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_SHIFT 12
  7241. u8 max_ord;
  7242. u8 traffic_class;
  7243. u8 hop_limit;
  7244. u8 orq_num_pages;
  7245. __le16 p_key;
  7246. __le32 flow_label;
  7247. __le32 dst_qp_id;
  7248. __le32 ack_timeout_val;
  7249. __le32 initial_psn;
  7250. __le16 mtu;
  7251. __le16 pd;
  7252. __le16 sq_num_pages;
  7253. __le16 low_latency_phy_queue;
  7254. struct regpair sq_pbl_addr;
  7255. struct regpair orq_pbl_addr;
  7256. __le16 local_mac_addr[3];
  7257. __le16 remote_mac_addr[3];
  7258. __le16 vlan_id;
  7259. __le16 udp_src_port;
  7260. __le32 src_gid[4];
  7261. __le32 dst_gid[4];
  7262. __le32 cq_cid;
  7263. struct regpair qp_handle_for_cqe;
  7264. struct regpair qp_handle_for_async;
  7265. u8 stats_counter_id;
  7266. u8 reserved3[7];
  7267. __le16 regular_latency_phy_queue;
  7268. __le16 dpi;
  7269. };
  7270. /* roce create qp responder ramrod data */
  7271. struct roce_create_qp_resp_ramrod_data {
  7272. __le32 flags;
  7273. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ROCE_FLAVOR_MASK 0x3
  7274. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ROCE_FLAVOR_SHIFT 0
  7275. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1
  7276. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_RD_EN_SHIFT 2
  7277. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1
  7278. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RDMA_WR_EN_SHIFT 3
  7279. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ATOMIC_EN_MASK 0x1
  7280. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_ATOMIC_EN_SHIFT 4
  7281. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_SRQ_FLG_MASK 0x1
  7282. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_SRQ_FLG_SHIFT 5
  7283. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_E2E_FLOW_CONTROL_EN_MASK 0x1
  7284. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_E2E_FLOW_CONTROL_EN_SHIFT 6
  7285. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_KEY_EN_MASK 0x1
  7286. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_KEY_EN_SHIFT 7
  7287. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_PRI_MASK 0x7
  7288. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_PRI_SHIFT 8
  7289. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_MASK 0x1F
  7290. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_SHIFT 11
  7291. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_XRC_FLAG_MASK 0x1
  7292. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_XRC_FLAG_SHIFT 16
  7293. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_MASK 0x7FFF
  7294. #define ROCE_CREATE_QP_RESP_RAMROD_DATA_RESERVED_SHIFT 17
  7295. __le16 xrc_domain;
  7296. u8 max_ird;
  7297. u8 traffic_class;
  7298. u8 hop_limit;
  7299. u8 irq_num_pages;
  7300. __le16 p_key;
  7301. __le32 flow_label;
  7302. __le32 dst_qp_id;
  7303. u8 stats_counter_id;
  7304. u8 reserved1;
  7305. __le16 mtu;
  7306. __le32 initial_psn;
  7307. __le16 pd;
  7308. __le16 rq_num_pages;
  7309. struct rdma_srq_id srq_id;
  7310. struct regpair rq_pbl_addr;
  7311. struct regpair irq_pbl_addr;
  7312. __le16 local_mac_addr[3];
  7313. __le16 remote_mac_addr[3];
  7314. __le16 vlan_id;
  7315. __le16 udp_src_port;
  7316. __le32 src_gid[4];
  7317. __le32 dst_gid[4];
  7318. struct regpair qp_handle_for_cqe;
  7319. struct regpair qp_handle_for_async;
  7320. __le16 low_latency_phy_queue;
  7321. u8 reserved2[2];
  7322. __le32 cq_cid;
  7323. __le16 regular_latency_phy_queue;
  7324. __le16 dpi;
  7325. };
  7326. /* roce DCQCN received statistics */
  7327. struct roce_dcqcn_received_stats {
  7328. struct regpair ecn_pkt_rcv;
  7329. struct regpair cnp_pkt_rcv;
  7330. };
  7331. /* roce DCQCN sent statistics */
  7332. struct roce_dcqcn_sent_stats {
  7333. struct regpair cnp_pkt_sent;
  7334. };
  7335. /* RoCE destroy qp requester output params */
  7336. struct roce_destroy_qp_req_output_params {
  7337. __le32 num_bound_mw;
  7338. __le32 cq_prod;
  7339. };
  7340. /* RoCE destroy qp requester ramrod data */
  7341. struct roce_destroy_qp_req_ramrod_data {
  7342. struct regpair output_params_addr;
  7343. };
  7344. /* RoCE destroy qp responder output params */
  7345. struct roce_destroy_qp_resp_output_params {
  7346. __le32 num_invalidated_mw;
  7347. __le32 cq_prod;
  7348. };
  7349. /* RoCE destroy qp responder ramrod data */
  7350. struct roce_destroy_qp_resp_ramrod_data {
  7351. struct regpair output_params_addr;
  7352. };
  7353. /* roce special events statistics */
  7354. struct roce_events_stats {
  7355. __le16 silent_drops;
  7356. __le16 rnr_naks_sent;
  7357. __le32 retransmit_count;
  7358. __le32 icrc_error_count;
  7359. __le32 reserved;
  7360. };
  7361. /* ROCE slow path EQ cmd IDs */
  7362. enum roce_event_opcode {
  7363. ROCE_EVENT_CREATE_QP = 11,
  7364. ROCE_EVENT_MODIFY_QP,
  7365. ROCE_EVENT_QUERY_QP,
  7366. ROCE_EVENT_DESTROY_QP,
  7367. ROCE_EVENT_CREATE_UD_QP,
  7368. ROCE_EVENT_DESTROY_UD_QP,
  7369. MAX_ROCE_EVENT_OPCODE
  7370. };
  7371. /* roce func init ramrod data */
  7372. struct roce_init_func_params {
  7373. u8 ll2_queue_id;
  7374. u8 cnp_vlan_priority;
  7375. u8 cnp_dscp;
  7376. u8 reserved;
  7377. __le32 cnp_send_timeout;
  7378. };
  7379. /* roce func init ramrod data */
  7380. struct roce_init_func_ramrod_data {
  7381. struct rdma_init_func_ramrod_data rdma;
  7382. struct roce_init_func_params roce;
  7383. };
  7384. /* roce modify qp requester ramrod data */
  7385. struct roce_modify_qp_req_ramrod_data {
  7386. __le16 flags;
  7387. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_ERR_FLG_MASK 0x1
  7388. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_ERR_FLG_SHIFT 0
  7389. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_SQD_FLG_MASK 0x1
  7390. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MOVE_TO_SQD_FLG_SHIFT 1
  7391. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_EN_SQD_ASYNC_NOTIFY_MASK 0x1
  7392. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_EN_SQD_ASYNC_NOTIFY_SHIFT 2
  7393. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_P_KEY_FLG_MASK 0x1
  7394. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_P_KEY_FLG_SHIFT 3
  7395. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ADDRESS_VECTOR_FLG_MASK 0x1
  7396. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ADDRESS_VECTOR_FLG_SHIFT 4
  7397. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MAX_ORD_FLG_MASK 0x1
  7398. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_MAX_ORD_FLG_SHIFT 5
  7399. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_FLG_MASK 0x1
  7400. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_FLG_SHIFT 6
  7401. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_FLG_MASK 0x1
  7402. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_FLG_SHIFT 7
  7403. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ACK_TIMEOUT_FLG_MASK 0x1
  7404. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ACK_TIMEOUT_FLG_SHIFT 8
  7405. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_FLG_MASK 0x1
  7406. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_FLG_SHIFT 9
  7407. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_MASK 0x7
  7408. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PRI_SHIFT 10
  7409. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PHYSICAL_QUEUES_FLG_MASK 0x1
  7410. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_PHYSICAL_QUEUES_FLG_SHIFT 13
  7411. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RESERVED1_MASK 0x3
  7412. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RESERVED1_SHIFT 14
  7413. u8 fields;
  7414. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_MASK 0xF
  7415. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_ERR_RETRY_CNT_SHIFT 0
  7416. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_MASK 0xF
  7417. #define ROCE_MODIFY_QP_REQ_RAMROD_DATA_RNR_NAK_CNT_SHIFT 4
  7418. u8 max_ord;
  7419. u8 traffic_class;
  7420. u8 hop_limit;
  7421. __le16 p_key;
  7422. __le32 flow_label;
  7423. __le32 ack_timeout_val;
  7424. __le16 mtu;
  7425. __le16 reserved2;
  7426. __le32 reserved3[2];
  7427. __le16 low_latency_phy_queue;
  7428. __le16 regular_latency_phy_queue;
  7429. __le32 src_gid[4];
  7430. __le32 dst_gid[4];
  7431. };
  7432. /* roce modify qp responder ramrod data */
  7433. struct roce_modify_qp_resp_ramrod_data {
  7434. __le16 flags;
  7435. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MOVE_TO_ERR_FLG_MASK 0x1
  7436. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MOVE_TO_ERR_FLG_SHIFT 0
  7437. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1
  7438. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_RD_EN_SHIFT 1
  7439. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1
  7440. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_WR_EN_SHIFT 2
  7441. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ATOMIC_EN_MASK 0x1
  7442. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ATOMIC_EN_SHIFT 3
  7443. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_P_KEY_FLG_MASK 0x1
  7444. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_P_KEY_FLG_SHIFT 4
  7445. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ADDRESS_VECTOR_FLG_MASK 0x1
  7446. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_ADDRESS_VECTOR_FLG_SHIFT 5
  7447. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MAX_IRD_FLG_MASK 0x1
  7448. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MAX_IRD_FLG_SHIFT 6
  7449. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_FLG_MASK 0x1
  7450. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_FLG_SHIFT 7
  7451. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_FLG_MASK 0x1
  7452. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_FLG_SHIFT 8
  7453. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_OPS_EN_FLG_MASK 0x1
  7454. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RDMA_OPS_EN_FLG_SHIFT 9
  7455. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PHYSICAL_QUEUES_FLG_MASK 0x1
  7456. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PHYSICAL_QUEUES_FLG_SHIFT 10
  7457. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RESERVED1_MASK 0x1F
  7458. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_RESERVED1_SHIFT 11
  7459. u8 fields;
  7460. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_MASK 0x7
  7461. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_PRI_SHIFT 0
  7462. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_MASK 0x1F
  7463. #define ROCE_MODIFY_QP_RESP_RAMROD_DATA_MIN_RNR_NAK_TIMER_SHIFT 3
  7464. u8 max_ird;
  7465. u8 traffic_class;
  7466. u8 hop_limit;
  7467. __le16 p_key;
  7468. __le32 flow_label;
  7469. __le16 mtu;
  7470. __le16 low_latency_phy_queue;
  7471. __le16 regular_latency_phy_queue;
  7472. u8 reserved2[6];
  7473. __le32 src_gid[4];
  7474. __le32 dst_gid[4];
  7475. };
  7476. /* RoCE query qp requester output params */
  7477. struct roce_query_qp_req_output_params {
  7478. __le32 psn;
  7479. __le32 flags;
  7480. #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_ERR_FLG_MASK 0x1
  7481. #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_ERR_FLG_SHIFT 0
  7482. #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_SQ_DRAINING_FLG_MASK 0x1
  7483. #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_SQ_DRAINING_FLG_SHIFT 1
  7484. #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_RESERVED0_MASK 0x3FFFFFFF
  7485. #define ROCE_QUERY_QP_REQ_OUTPUT_PARAMS_RESERVED0_SHIFT 2
  7486. };
  7487. /* RoCE query qp requester ramrod data */
  7488. struct roce_query_qp_req_ramrod_data {
  7489. struct regpair output_params_addr;
  7490. };
  7491. /* RoCE query qp responder output params */
  7492. struct roce_query_qp_resp_output_params {
  7493. __le32 psn;
  7494. __le32 err_flag;
  7495. #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_ERROR_FLG_MASK 0x1
  7496. #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_ERROR_FLG_SHIFT 0
  7497. #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_RESERVED0_MASK 0x7FFFFFFF
  7498. #define ROCE_QUERY_QP_RESP_OUTPUT_PARAMS_RESERVED0_SHIFT 1
  7499. };
  7500. /* RoCE query qp responder ramrod data */
  7501. struct roce_query_qp_resp_ramrod_data {
  7502. struct regpair output_params_addr;
  7503. };
  7504. /* ROCE ramrod command IDs */
  7505. enum roce_ramrod_cmd_id {
  7506. ROCE_RAMROD_CREATE_QP = 11,
  7507. ROCE_RAMROD_MODIFY_QP,
  7508. ROCE_RAMROD_QUERY_QP,
  7509. ROCE_RAMROD_DESTROY_QP,
  7510. ROCE_RAMROD_CREATE_UD_QP,
  7511. ROCE_RAMROD_DESTROY_UD_QP,
  7512. MAX_ROCE_RAMROD_CMD_ID
  7513. };
  7514. struct e4_xstorm_roce_conn_ag_ctx_dq_ext_ld_part {
  7515. u8 reserved0;
  7516. u8 state;
  7517. u8 flags0;
  7518. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM0_MASK 0x1
  7519. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM0_SHIFT 0
  7520. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT1_MASK 0x1
  7521. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT1_SHIFT 1
  7522. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT2_MASK 0x1
  7523. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT2_SHIFT 2
  7524. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM3_MASK 0x1
  7525. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_EXIST_IN_QM3_SHIFT 3
  7526. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT4_MASK 0x1
  7527. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT4_SHIFT 4
  7528. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT5_MASK 0x1
  7529. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT5_SHIFT 5
  7530. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT6_MASK 0x1
  7531. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT6_SHIFT 6
  7532. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT7_MASK 0x1
  7533. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT7_SHIFT 7
  7534. u8 flags1;
  7535. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT8_MASK 0x1
  7536. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT8_SHIFT 0
  7537. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT9_MASK 0x1
  7538. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT9_SHIFT 1
  7539. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT10_MASK 0x1
  7540. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT10_SHIFT 2
  7541. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT11_MASK 0x1
  7542. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT11_SHIFT 3
  7543. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT12_MASK 0x1
  7544. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT12_SHIFT 4
  7545. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSEM_FLUSH_MASK 0x1
  7546. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSEM_FLUSH_SHIFT 5
  7547. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSDM_FLUSH_MASK 0x1
  7548. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MSDM_FLUSH_SHIFT 6
  7549. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_YSTORM_FLUSH_MASK 0x1
  7550. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_YSTORM_FLUSH_SHIFT 7
  7551. u8 flags2;
  7552. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0_MASK 0x3
  7553. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0_SHIFT 0
  7554. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1_MASK 0x3
  7555. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1_SHIFT 2
  7556. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2_MASK 0x3
  7557. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2_SHIFT 4
  7558. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3_MASK 0x3
  7559. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3_SHIFT 6
  7560. u8 flags3;
  7561. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4_MASK 0x3
  7562. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4_SHIFT 0
  7563. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5_MASK 0x3
  7564. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5_SHIFT 2
  7565. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6_MASK 0x3
  7566. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6_SHIFT 4
  7567. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_MASK 0x3
  7568. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_SHIFT 6
  7569. u8 flags4;
  7570. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8_MASK 0x3
  7571. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8_SHIFT 0
  7572. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9_MASK 0x3
  7573. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9_SHIFT 2
  7574. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10_MASK 0x3
  7575. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10_SHIFT 4
  7576. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11_MASK 0x3
  7577. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11_SHIFT 6
  7578. u8 flags5;
  7579. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12_MASK 0x3
  7580. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12_SHIFT 0
  7581. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13_MASK 0x3
  7582. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13_SHIFT 2
  7583. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14_MASK 0x3
  7584. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14_SHIFT 4
  7585. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15_MASK 0x3
  7586. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15_SHIFT 6
  7587. u8 flags6;
  7588. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16_MASK 0x3
  7589. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16_SHIFT 0
  7590. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17_MASK 0x3
  7591. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17_SHIFT 2
  7592. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18_MASK 0x3
  7593. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18_SHIFT 4
  7594. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19_MASK 0x3
  7595. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19_SHIFT 6
  7596. u8 flags7;
  7597. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20_MASK 0x3
  7598. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20_SHIFT 0
  7599. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21_MASK 0x3
  7600. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21_SHIFT 2
  7601. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_MASK 0x3
  7602. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_SHIFT 4
  7603. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0EN_MASK 0x1
  7604. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF0EN_SHIFT 6
  7605. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1EN_MASK 0x1
  7606. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF1EN_SHIFT 7
  7607. u8 flags8;
  7608. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2EN_MASK 0x1
  7609. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF2EN_SHIFT 0
  7610. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3EN_MASK 0x1
  7611. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF3EN_SHIFT 1
  7612. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4EN_MASK 0x1
  7613. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF4EN_SHIFT 2
  7614. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5EN_MASK 0x1
  7615. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF5EN_SHIFT 3
  7616. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6EN_MASK 0x1
  7617. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF6EN_SHIFT 4
  7618. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_EN_MASK 0x1
  7619. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_FLUSH_Q0_CF_EN_SHIFT 5
  7620. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8EN_MASK 0x1
  7621. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF8EN_SHIFT 6
  7622. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9EN_MASK 0x1
  7623. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF9EN_SHIFT 7
  7624. u8 flags9;
  7625. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10EN_MASK 0x1
  7626. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF10EN_SHIFT 0
  7627. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11EN_MASK 0x1
  7628. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF11EN_SHIFT 1
  7629. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12EN_MASK 0x1
  7630. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF12EN_SHIFT 2
  7631. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13EN_MASK 0x1
  7632. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF13EN_SHIFT 3
  7633. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14EN_MASK 0x1
  7634. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF14EN_SHIFT 4
  7635. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15EN_MASK 0x1
  7636. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF15EN_SHIFT 5
  7637. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16EN_MASK 0x1
  7638. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF16EN_SHIFT 6
  7639. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17EN_MASK 0x1
  7640. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF17EN_SHIFT 7
  7641. u8 flags10;
  7642. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18EN_MASK 0x1
  7643. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF18EN_SHIFT 0
  7644. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19EN_MASK 0x1
  7645. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF19EN_SHIFT 1
  7646. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20EN_MASK 0x1
  7647. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF20EN_SHIFT 2
  7648. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21EN_MASK 0x1
  7649. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF21EN_SHIFT 3
  7650. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_EN_MASK 0x1
  7651. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_SLOW_PATH_EN_SHIFT 4
  7652. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23EN_MASK 0x1
  7653. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23EN_SHIFT 5
  7654. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE0EN_MASK 0x1
  7655. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE0EN_SHIFT 6
  7656. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE1EN_MASK 0x1
  7657. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE1EN_SHIFT 7
  7658. u8 flags11;
  7659. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE2EN_MASK 0x1
  7660. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE2EN_SHIFT 0
  7661. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE3EN_MASK 0x1
  7662. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE3EN_SHIFT 1
  7663. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE4EN_MASK 0x1
  7664. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE4EN_SHIFT 2
  7665. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE5EN_MASK 0x1
  7666. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE5EN_SHIFT 3
  7667. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE6EN_MASK 0x1
  7668. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE6EN_SHIFT 4
  7669. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE7EN_MASK 0x1
  7670. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE7EN_SHIFT 5
  7671. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED1_MASK 0x1
  7672. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED1_SHIFT 6
  7673. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE9EN_MASK 0x1
  7674. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE9EN_SHIFT 7
  7675. u8 flags12;
  7676. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE10EN_MASK 0x1
  7677. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE10EN_SHIFT 0
  7678. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE11EN_MASK 0x1
  7679. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE11EN_SHIFT 1
  7680. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED2_MASK 0x1
  7681. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED2_SHIFT 2
  7682. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED3_MASK 0x1
  7683. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED3_SHIFT 3
  7684. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE14EN_MASK 0x1
  7685. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE14EN_SHIFT 4
  7686. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE15EN_MASK 0x1
  7687. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE15EN_SHIFT 5
  7688. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE16EN_MASK 0x1
  7689. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE16EN_SHIFT 6
  7690. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE17EN_MASK 0x1
  7691. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE17EN_SHIFT 7
  7692. u8 flags13;
  7693. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE18EN_MASK 0x1
  7694. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE18EN_SHIFT 0
  7695. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE19EN_MASK 0x1
  7696. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RULE19EN_SHIFT 1
  7697. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED4_MASK 0x1
  7698. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED4_SHIFT 2
  7699. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED5_MASK 0x1
  7700. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED5_SHIFT 3
  7701. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED6_MASK 0x1
  7702. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED6_SHIFT 4
  7703. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED7_MASK 0x1
  7704. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED7_SHIFT 5
  7705. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED8_MASK 0x1
  7706. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED8_SHIFT 6
  7707. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED9_MASK 0x1
  7708. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_A0_RESERVED9_SHIFT 7
  7709. u8 flags14;
  7710. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MIGRATION_MASK 0x1
  7711. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_MIGRATION_SHIFT 0
  7712. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT17_MASK 0x1
  7713. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_BIT17_SHIFT 1
  7714. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_DPM_PORT_NUM_MASK 0x3
  7715. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_DPM_PORT_NUM_SHIFT 2
  7716. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RESERVED_MASK 0x1
  7717. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_RESERVED_SHIFT 4
  7718. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_MASK 0x1
  7719. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_ROCE_EDPM_ENABLE_SHIFT 5
  7720. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23_MASK 0x3
  7721. #define E4XSTORMROCECONNAGCTXDQEXTLDPART_CF23_SHIFT 6
  7722. u8 byte2;
  7723. __le16 physical_q0;
  7724. __le16 word1;
  7725. __le16 word2;
  7726. __le16 word3;
  7727. __le16 word4;
  7728. __le16 word5;
  7729. __le16 conn_dpi;
  7730. u8 byte3;
  7731. u8 byte4;
  7732. u8 byte5;
  7733. u8 byte6;
  7734. __le32 reg0;
  7735. __le32 reg1;
  7736. __le32 reg2;
  7737. __le32 snd_nxt_psn;
  7738. __le32 reg4;
  7739. };
  7740. struct e4_mstorm_roce_conn_ag_ctx {
  7741. u8 byte0;
  7742. u8 byte1;
  7743. u8 flags0;
  7744. #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT0_MASK 0x1
  7745. #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT 0
  7746. #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1
  7747. #define E4_MSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1
  7748. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3
  7749. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 2
  7750. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1_MASK 0x3
  7751. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT 4
  7752. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3
  7753. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 6
  7754. u8 flags1;
  7755. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1
  7756. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 0
  7757. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK 0x1
  7758. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT 1
  7759. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1
  7760. #define E4_MSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 2
  7761. #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1
  7762. #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3
  7763. #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1
  7764. #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4
  7765. #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1
  7766. #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5
  7767. #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1
  7768. #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6
  7769. #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1
  7770. #define E4_MSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7
  7771. __le16 word0;
  7772. __le16 word1;
  7773. __le32 reg0;
  7774. __le32 reg1;
  7775. };
  7776. struct e4_mstorm_roce_req_conn_ag_ctx {
  7777. u8 byte0;
  7778. u8 byte1;
  7779. u8 flags0;
  7780. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK 0x1
  7781. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT 0
  7782. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK 0x1
  7783. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT 1
  7784. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3
  7785. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 2
  7786. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3
  7787. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 4
  7788. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3
  7789. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 6
  7790. u8 flags1;
  7791. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1
  7792. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0
  7793. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1
  7794. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1
  7795. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1
  7796. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2
  7797. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1
  7798. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 3
  7799. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1
  7800. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 4
  7801. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1
  7802. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 5
  7803. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1
  7804. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 6
  7805. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1
  7806. #define E4_MSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 7
  7807. __le16 word0;
  7808. __le16 word1;
  7809. __le32 reg0;
  7810. __le32 reg1;
  7811. };
  7812. struct e4_mstorm_roce_resp_conn_ag_ctx {
  7813. u8 byte0;
  7814. u8 byte1;
  7815. u8 flags0;
  7816. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK 0x1
  7817. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0
  7818. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK 0x1
  7819. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1
  7820. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3
  7821. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 2
  7822. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3
  7823. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 4
  7824. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3
  7825. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 6
  7826. u8 flags1;
  7827. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1
  7828. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 0
  7829. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1
  7830. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 1
  7831. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1
  7832. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 2
  7833. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1
  7834. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 3
  7835. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1
  7836. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 4
  7837. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1
  7838. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 5
  7839. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1
  7840. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 6
  7841. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1
  7842. #define E4_MSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 7
  7843. __le16 word0;
  7844. __le16 word1;
  7845. __le32 reg0;
  7846. __le32 reg1;
  7847. };
  7848. struct e4_tstorm_roce_req_conn_ag_ctx {
  7849. u8 reserved0;
  7850. u8 state;
  7851. u8 flags0;
  7852. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  7853. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  7854. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_OCCURRED_MASK 0x1
  7855. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_OCCURRED_SHIFT 1
  7856. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_CQE_ERROR_OCCURRED_MASK 0x1
  7857. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_CQE_ERROR_OCCURRED_SHIFT 2
  7858. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_BIT3_MASK 0x1
  7859. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_BIT3_SHIFT 3
  7860. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_MASK 0x1
  7861. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_SHIFT 4
  7862. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_CACHED_ORQ_MASK 0x1
  7863. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_CACHED_ORQ_SHIFT 5
  7864. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_MASK 0x3
  7865. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_SHIFT 6
  7866. u8 flags1;
  7867. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK 0x3
  7868. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT 0
  7869. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_MASK 0x3
  7870. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_SHIFT 2
  7871. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK 0x3
  7872. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT 4
  7873. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
  7874. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
  7875. u8 flags2;
  7876. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_MASK 0x3
  7877. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_SHIFT 0
  7878. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_MASK 0x3
  7879. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_SHIFT 2
  7880. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_MASK 0x3
  7881. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_SHIFT 4
  7882. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_MASK 0x3
  7883. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_SHIFT 6
  7884. u8 flags3;
  7885. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_MASK 0x3
  7886. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_SHIFT 0
  7887. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_MASK 0x3
  7888. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_SHIFT 2
  7889. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_EN_MASK 0x1
  7890. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_CF_EN_SHIFT 4
  7891. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK 0x1
  7892. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT 5
  7893. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_EN_MASK 0x1
  7894. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_SQ_CF_EN_SHIFT 6
  7895. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK 0x1
  7896. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT 7
  7897. u8 flags4;
  7898. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
  7899. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0
  7900. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_EN_MASK 0x1
  7901. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_FORCE_COMP_CF_EN_SHIFT 1
  7902. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_EN_MASK 0x1
  7903. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SET_TIMER_CF_EN_SHIFT 2
  7904. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_EN_MASK 0x1
  7905. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_TX_ASYNC_ERROR_CF_EN_SHIFT 3
  7906. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_EN_MASK 0x1
  7907. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RXMIT_DONE_CF_EN_SHIFT 4
  7908. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_EN_MASK 0x1
  7909. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_SCAN_COMPLETED_CF_EN_SHIFT 5
  7910. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_EN_MASK 0x1
  7911. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SQ_DRAIN_COMPLETED_CF_EN_SHIFT 6
  7912. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1
  7913. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 7
  7914. u8 flags5;
  7915. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1
  7916. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 0
  7917. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1
  7918. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 1
  7919. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1
  7920. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 2
  7921. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1
  7922. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 3
  7923. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK 0x1
  7924. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT 4
  7925. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SND_SQ_CONS_EN_MASK 0x1
  7926. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_SND_SQ_CONS_EN_SHIFT 5
  7927. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK 0x1
  7928. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT 6
  7929. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK 0x1
  7930. #define E4_TSTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT 7
  7931. __le32 reg0;
  7932. __le32 snd_nxt_psn;
  7933. __le32 snd_max_psn;
  7934. __le32 orq_prod;
  7935. __le32 reg4;
  7936. __le32 reg5;
  7937. __le32 reg6;
  7938. __le32 reg7;
  7939. __le32 reg8;
  7940. u8 tx_cqe_error_type;
  7941. u8 orq_cache_idx;
  7942. __le16 snd_sq_cons_th;
  7943. u8 byte4;
  7944. u8 byte5;
  7945. __le16 snd_sq_cons;
  7946. __le16 conn_dpi;
  7947. __le16 force_comp_cons;
  7948. __le32 reg9;
  7949. __le32 reg10;
  7950. };
  7951. struct e4_tstorm_roce_resp_conn_ag_ctx {
  7952. u8 byte0;
  7953. u8 state;
  7954. u8 flags0;
  7955. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  7956. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  7957. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_NOTIFY_REQUESTER_MASK 0x1
  7958. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_NOTIFY_REQUESTER_SHIFT 1
  7959. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT2_MASK 0x1
  7960. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT2_SHIFT 2
  7961. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT3_MASK 0x1
  7962. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT3_SHIFT 3
  7963. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_MASK 0x1
  7964. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_SHIFT 4
  7965. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT5_MASK 0x1
  7966. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_BIT5_SHIFT 5
  7967. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3
  7968. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 6
  7969. u8 flags1;
  7970. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_MASK 0x3
  7971. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_SHIFT 0
  7972. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_MASK 0x3
  7973. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_SHIFT 2
  7974. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK 0x3
  7975. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT 4
  7976. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
  7977. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
  7978. u8 flags2;
  7979. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_MASK 0x3
  7980. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_SHIFT 0
  7981. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK 0x3
  7982. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT 2
  7983. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7_MASK 0x3
  7984. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7_SHIFT 4
  7985. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8_MASK 0x3
  7986. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8_SHIFT 6
  7987. u8 flags3;
  7988. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9_MASK 0x3
  7989. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9_SHIFT 0
  7990. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10_MASK 0x3
  7991. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10_SHIFT 2
  7992. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1
  7993. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 4
  7994. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_MASK 0x1
  7995. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_MSTORM_FLUSH_CF_EN_SHIFT 5
  7996. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_EN_MASK 0x1
  7997. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_TX_ERROR_CF_EN_SHIFT 6
  7998. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1
  7999. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT 7
  8000. u8 flags4;
  8001. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
  8002. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 0
  8003. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_MASK 0x1
  8004. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT 1
  8005. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK 0x1
  8006. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT 2
  8007. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7EN_MASK 0x1
  8008. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF7EN_SHIFT 3
  8009. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_MASK 0x1
  8010. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_SHIFT 4
  8011. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_MASK 0x1
  8012. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_SHIFT 5
  8013. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_MASK 0x1
  8014. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_SHIFT 6
  8015. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1
  8016. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 7
  8017. u8 flags5;
  8018. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1
  8019. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 0
  8020. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1
  8021. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 1
  8022. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1
  8023. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 2
  8024. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1
  8025. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 3
  8026. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK 0x1
  8027. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT 4
  8028. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RQ_RULE_EN_MASK 0x1
  8029. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RQ_RULE_EN_SHIFT 5
  8030. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK 0x1
  8031. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT 6
  8032. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK 0x1
  8033. #define E4_TSTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT 7
  8034. __le32 psn_and_rxmit_id_echo;
  8035. __le32 reg1;
  8036. __le32 reg2;
  8037. __le32 reg3;
  8038. __le32 reg4;
  8039. __le32 reg5;
  8040. __le32 reg6;
  8041. __le32 reg7;
  8042. __le32 reg8;
  8043. u8 tx_async_error_type;
  8044. u8 byte3;
  8045. __le16 rq_cons;
  8046. u8 byte4;
  8047. u8 byte5;
  8048. __le16 rq_prod;
  8049. __le16 conn_dpi;
  8050. __le16 irq_cons;
  8051. __le32 num_invlidated_mw;
  8052. __le32 reg10;
  8053. };
  8054. struct e4_ustorm_roce_req_conn_ag_ctx {
  8055. u8 byte0;
  8056. u8 byte1;
  8057. u8 flags0;
  8058. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK 0x1
  8059. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT 0
  8060. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK 0x1
  8061. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT 1
  8062. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3
  8063. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 2
  8064. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3
  8065. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 4
  8066. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3
  8067. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 6
  8068. u8 flags1;
  8069. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK 0x3
  8070. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT 0
  8071. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4_MASK 0x3
  8072. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4_SHIFT 2
  8073. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5_MASK 0x3
  8074. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5_SHIFT 4
  8075. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6_MASK 0x3
  8076. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6_SHIFT 6
  8077. u8 flags2;
  8078. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1
  8079. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0
  8080. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1
  8081. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1
  8082. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1
  8083. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2
  8084. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK 0x1
  8085. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT 3
  8086. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_MASK 0x1
  8087. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF4EN_SHIFT 4
  8088. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_MASK 0x1
  8089. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF5EN_SHIFT 5
  8090. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_MASK 0x1
  8091. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_CF6EN_SHIFT 6
  8092. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1
  8093. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 7
  8094. u8 flags3;
  8095. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1
  8096. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 0
  8097. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1
  8098. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 1
  8099. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1
  8100. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 2
  8101. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1
  8102. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 3
  8103. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK 0x1
  8104. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT 4
  8105. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK 0x1
  8106. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT 5
  8107. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_MASK 0x1
  8108. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE7EN_SHIFT 6
  8109. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_MASK 0x1
  8110. #define E4_USTORM_ROCE_REQ_CONN_AG_CTX_RULE8EN_SHIFT 7
  8111. u8 byte2;
  8112. u8 byte3;
  8113. __le16 word0;
  8114. __le16 word1;
  8115. __le32 reg0;
  8116. __le32 reg1;
  8117. __le32 reg2;
  8118. __le32 reg3;
  8119. __le16 word2;
  8120. __le16 word3;
  8121. };
  8122. struct e4_ustorm_roce_resp_conn_ag_ctx {
  8123. u8 byte0;
  8124. u8 byte1;
  8125. u8 flags0;
  8126. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK 0x1
  8127. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0
  8128. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK 0x1
  8129. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1
  8130. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3
  8131. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 2
  8132. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3
  8133. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 4
  8134. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3
  8135. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 6
  8136. u8 flags1;
  8137. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK 0x3
  8138. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT 0
  8139. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4_MASK 0x3
  8140. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4_SHIFT 2
  8141. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5_MASK 0x3
  8142. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5_SHIFT 4
  8143. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6_MASK 0x3
  8144. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6_SHIFT 6
  8145. u8 flags2;
  8146. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1
  8147. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 0
  8148. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1
  8149. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 1
  8150. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1
  8151. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 2
  8152. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1
  8153. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT 3
  8154. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_MASK 0x1
  8155. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF4EN_SHIFT 4
  8156. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_MASK 0x1
  8157. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF5EN_SHIFT 5
  8158. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_MASK 0x1
  8159. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_CF6EN_SHIFT 6
  8160. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1
  8161. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 7
  8162. u8 flags3;
  8163. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1
  8164. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 0
  8165. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1
  8166. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 1
  8167. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1
  8168. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 2
  8169. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1
  8170. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 3
  8171. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK 0x1
  8172. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT 4
  8173. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK 0x1
  8174. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT 5
  8175. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK 0x1
  8176. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT 6
  8177. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_MASK 0x1
  8178. #define E4_USTORM_ROCE_RESP_CONN_AG_CTX_RULE8EN_SHIFT 7
  8179. u8 byte2;
  8180. u8 byte3;
  8181. __le16 word0;
  8182. __le16 word1;
  8183. __le32 reg0;
  8184. __le32 reg1;
  8185. __le32 reg2;
  8186. __le32 reg3;
  8187. __le16 word2;
  8188. __le16 word3;
  8189. };
  8190. struct e4_xstorm_roce_req_conn_ag_ctx {
  8191. u8 reserved0;
  8192. u8 state;
  8193. u8 flags0;
  8194. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  8195. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  8196. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED1_MASK 0x1
  8197. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED1_SHIFT 1
  8198. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED2_MASK 0x1
  8199. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED2_SHIFT 2
  8200. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  8201. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  8202. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED3_MASK 0x1
  8203. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED3_SHIFT 4
  8204. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED4_MASK 0x1
  8205. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED4_SHIFT 5
  8206. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED5_MASK 0x1
  8207. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED5_SHIFT 6
  8208. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED6_MASK 0x1
  8209. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED6_SHIFT 7
  8210. u8 flags1;
  8211. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED7_MASK 0x1
  8212. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED7_SHIFT 0
  8213. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED8_MASK 0x1
  8214. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED8_SHIFT 1
  8215. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT10_MASK 0x1
  8216. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT10_SHIFT 2
  8217. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT11_MASK 0x1
  8218. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT11_SHIFT 3
  8219. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT12_MASK 0x1
  8220. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT12_SHIFT 4
  8221. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT13_MASK 0x1
  8222. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT13_SHIFT 5
  8223. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_STATE_MASK 0x1
  8224. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ERROR_STATE_SHIFT 6
  8225. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_YSTORM_FLUSH_MASK 0x1
  8226. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_YSTORM_FLUSH_SHIFT 7
  8227. u8 flags2;
  8228. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3
  8229. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 0
  8230. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3
  8231. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 2
  8232. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3
  8233. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 4
  8234. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3_MASK 0x3
  8235. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3_SHIFT 6
  8236. u8 flags3;
  8237. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_MASK 0x3
  8238. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_SHIFT 0
  8239. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_MASK 0x3
  8240. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_SHIFT 2
  8241. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_MASK 0x3
  8242. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_SHIFT 4
  8243. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
  8244. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
  8245. u8 flags4;
  8246. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_MASK 0x3
  8247. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_SHIFT 0
  8248. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_MASK 0x3
  8249. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_SHIFT 2
  8250. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10_MASK 0x3
  8251. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10_SHIFT 4
  8252. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11_MASK 0x3
  8253. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11_SHIFT 6
  8254. u8 flags5;
  8255. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12_MASK 0x3
  8256. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12_SHIFT 0
  8257. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13_MASK 0x3
  8258. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13_SHIFT 2
  8259. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FMR_ENDED_CF_MASK 0x3
  8260. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FMR_ENDED_CF_SHIFT 4
  8261. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15_MASK 0x3
  8262. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15_SHIFT 6
  8263. u8 flags6;
  8264. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16_MASK 0x3
  8265. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16_SHIFT 0
  8266. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17_MASK 0x3
  8267. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17_SHIFT 2
  8268. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18_MASK 0x3
  8269. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18_SHIFT 4
  8270. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19_MASK 0x3
  8271. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19_SHIFT 6
  8272. u8 flags7;
  8273. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20_MASK 0x3
  8274. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20_SHIFT 0
  8275. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21_MASK 0x3
  8276. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21_SHIFT 2
  8277. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_MASK 0x3
  8278. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  8279. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1
  8280. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 6
  8281. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1
  8282. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 7
  8283. u8 flags8;
  8284. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1
  8285. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 0
  8286. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_MASK 0x1
  8287. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF3EN_SHIFT 1
  8288. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_EN_MASK 0x1
  8289. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_FLUSH_CF_EN_SHIFT 2
  8290. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_EN_MASK 0x1
  8291. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT 3
  8292. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_EN_MASK 0x1
  8293. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SND_RXMIT_CF_EN_SHIFT 4
  8294. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
  8295. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5
  8296. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_EN_MASK 0x1
  8297. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DIF_ERROR_CF_EN_SHIFT 6
  8298. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_EN_MASK 0x1
  8299. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SCAN_SQ_FOR_COMP_CF_EN_SHIFT 7
  8300. u8 flags9;
  8301. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10EN_MASK 0x1
  8302. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF10EN_SHIFT 0
  8303. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11EN_MASK 0x1
  8304. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF11EN_SHIFT 1
  8305. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12EN_MASK 0x1
  8306. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF12EN_SHIFT 2
  8307. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13EN_MASK 0x1
  8308. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF13EN_SHIFT 3
  8309. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FME_ENDED_CF_EN_MASK 0x1
  8310. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_FME_ENDED_CF_EN_SHIFT 4
  8311. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15EN_MASK 0x1
  8312. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF15EN_SHIFT 5
  8313. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16EN_MASK 0x1
  8314. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF16EN_SHIFT 6
  8315. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17EN_MASK 0x1
  8316. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF17EN_SHIFT 7
  8317. u8 flags10;
  8318. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18EN_MASK 0x1
  8319. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF18EN_SHIFT 0
  8320. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19EN_MASK 0x1
  8321. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF19EN_SHIFT 1
  8322. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20EN_MASK 0x1
  8323. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF20EN_SHIFT 2
  8324. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21EN_MASK 0x1
  8325. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF21EN_SHIFT 3
  8326. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
  8327. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  8328. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23EN_MASK 0x1
  8329. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23EN_SHIFT 5
  8330. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1
  8331. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 6
  8332. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1
  8333. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 7
  8334. u8 flags11;
  8335. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1
  8336. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 0
  8337. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1
  8338. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 1
  8339. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1
  8340. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 2
  8341. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_MASK 0x1
  8342. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE5EN_SHIFT 3
  8343. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_MASK 0x1
  8344. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE6EN_SHIFT 4
  8345. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_E2E_CREDIT_RULE_EN_MASK 0x1
  8346. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_E2E_CREDIT_RULE_EN_SHIFT 5
  8347. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
  8348. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  8349. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE9EN_MASK 0x1
  8350. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE9EN_SHIFT 7
  8351. u8 flags12;
  8352. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_PROD_EN_MASK 0x1
  8353. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_SQ_PROD_EN_SHIFT 0
  8354. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE11EN_MASK 0x1
  8355. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE11EN_SHIFT 1
  8356. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
  8357. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  8358. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
  8359. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  8360. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_INV_FENCE_RULE_EN_MASK 0x1
  8361. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_INV_FENCE_RULE_EN_SHIFT 4
  8362. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE15EN_MASK 0x1
  8363. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE15EN_SHIFT 5
  8364. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ORQ_FENCE_RULE_EN_MASK 0x1
  8365. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ORQ_FENCE_RULE_EN_SHIFT 6
  8366. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MAX_ORD_RULE_EN_MASK 0x1
  8367. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MAX_ORD_RULE_EN_SHIFT 7
  8368. u8 flags13;
  8369. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE18EN_MASK 0x1
  8370. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE18EN_SHIFT 0
  8371. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE19EN_MASK 0x1
  8372. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RULE19EN_SHIFT 1
  8373. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
  8374. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
  8375. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
  8376. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
  8377. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
  8378. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  8379. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
  8380. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
  8381. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
  8382. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  8383. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
  8384. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  8385. u8 flags14;
  8386. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MIGRATION_FLAG_MASK 0x1
  8387. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_MIGRATION_FLAG_SHIFT 0
  8388. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT17_MASK 0x1
  8389. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_BIT17_SHIFT 1
  8390. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DPM_PORT_NUM_MASK 0x3
  8391. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_DPM_PORT_NUM_SHIFT 2
  8392. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED_MASK 0x1
  8393. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_RESERVED_SHIFT 4
  8394. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1
  8395. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5
  8396. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23_MASK 0x3
  8397. #define E4_XSTORM_ROCE_REQ_CONN_AG_CTX_CF23_SHIFT 6
  8398. u8 byte2;
  8399. __le16 physical_q0;
  8400. __le16 word1;
  8401. __le16 sq_cmp_cons;
  8402. __le16 sq_cons;
  8403. __le16 sq_prod;
  8404. __le16 dif_error_first_sq_cons;
  8405. __le16 conn_dpi;
  8406. u8 dif_error_sge_index;
  8407. u8 byte4;
  8408. u8 byte5;
  8409. u8 byte6;
  8410. __le32 lsn;
  8411. __le32 ssn;
  8412. __le32 snd_una_psn;
  8413. __le32 snd_nxt_psn;
  8414. __le32 dif_error_offset;
  8415. __le32 orq_cons_th;
  8416. __le32 orq_cons;
  8417. };
  8418. struct e4_xstorm_roce_resp_conn_ag_ctx {
  8419. u8 reserved0;
  8420. u8 state;
  8421. u8 flags0;
  8422. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  8423. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  8424. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED1_MASK 0x1
  8425. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED1_SHIFT 1
  8426. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED2_MASK 0x1
  8427. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED2_SHIFT 2
  8428. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  8429. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  8430. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED3_MASK 0x1
  8431. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED3_SHIFT 4
  8432. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED4_MASK 0x1
  8433. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED4_SHIFT 5
  8434. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED5_MASK 0x1
  8435. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED5_SHIFT 6
  8436. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED6_MASK 0x1
  8437. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED6_SHIFT 7
  8438. u8 flags1;
  8439. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED7_MASK 0x1
  8440. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED7_SHIFT 0
  8441. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED8_MASK 0x1
  8442. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RESERVED8_SHIFT 1
  8443. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT10_MASK 0x1
  8444. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT10_SHIFT 2
  8445. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT11_MASK 0x1
  8446. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT11_SHIFT 3
  8447. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT12_MASK 0x1
  8448. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT12_SHIFT 4
  8449. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT13_MASK 0x1
  8450. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT13_SHIFT 5
  8451. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_ERROR_STATE_MASK 0x1
  8452. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_ERROR_STATE_SHIFT 6
  8453. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_YSTORM_FLUSH_MASK 0x1
  8454. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_YSTORM_FLUSH_SHIFT 7
  8455. u8 flags2;
  8456. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3
  8457. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 0
  8458. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3
  8459. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 2
  8460. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3
  8461. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 4
  8462. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3_MASK 0x3
  8463. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3_SHIFT 6
  8464. u8 flags3;
  8465. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_MASK 0x3
  8466. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_SHIFT 0
  8467. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_MASK 0x3
  8468. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_SHIFT 2
  8469. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_MASK 0x3
  8470. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_SHIFT 4
  8471. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
  8472. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 6
  8473. u8 flags4;
  8474. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8_MASK 0x3
  8475. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8_SHIFT 0
  8476. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9_MASK 0x3
  8477. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9_SHIFT 2
  8478. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10_MASK 0x3
  8479. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10_SHIFT 4
  8480. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11_MASK 0x3
  8481. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11_SHIFT 6
  8482. u8 flags5;
  8483. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12_MASK 0x3
  8484. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12_SHIFT 0
  8485. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13_MASK 0x3
  8486. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13_SHIFT 2
  8487. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14_MASK 0x3
  8488. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14_SHIFT 4
  8489. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15_MASK 0x3
  8490. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15_SHIFT 6
  8491. u8 flags6;
  8492. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16_MASK 0x3
  8493. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16_SHIFT 0
  8494. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17_MASK 0x3
  8495. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17_SHIFT 2
  8496. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18_MASK 0x3
  8497. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18_SHIFT 4
  8498. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19_MASK 0x3
  8499. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19_SHIFT 6
  8500. u8 flags7;
  8501. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20_MASK 0x3
  8502. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20_SHIFT 0
  8503. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21_MASK 0x3
  8504. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21_SHIFT 2
  8505. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_MASK 0x3
  8506. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  8507. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1
  8508. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 6
  8509. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1
  8510. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 7
  8511. u8 flags8;
  8512. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1
  8513. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 0
  8514. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_MASK 0x1
  8515. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF3EN_SHIFT 1
  8516. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_EN_MASK 0x1
  8517. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RXMIT_CF_EN_SHIFT 2
  8518. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_MASK 0x1
  8519. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RX_ERROR_CF_EN_SHIFT 3
  8520. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_EN_MASK 0x1
  8521. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FORCE_ACK_CF_EN_SHIFT 4
  8522. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
  8523. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5
  8524. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_MASK 0x1
  8525. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF8EN_SHIFT 6
  8526. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_MASK 0x1
  8527. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF9EN_SHIFT 7
  8528. u8 flags9;
  8529. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_MASK 0x1
  8530. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF10EN_SHIFT 0
  8531. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11EN_MASK 0x1
  8532. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF11EN_SHIFT 1
  8533. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12EN_MASK 0x1
  8534. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF12EN_SHIFT 2
  8535. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13EN_MASK 0x1
  8536. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF13EN_SHIFT 3
  8537. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14EN_MASK 0x1
  8538. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF14EN_SHIFT 4
  8539. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15EN_MASK 0x1
  8540. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF15EN_SHIFT 5
  8541. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16EN_MASK 0x1
  8542. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF16EN_SHIFT 6
  8543. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17EN_MASK 0x1
  8544. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF17EN_SHIFT 7
  8545. u8 flags10;
  8546. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18EN_MASK 0x1
  8547. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF18EN_SHIFT 0
  8548. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19EN_MASK 0x1
  8549. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF19EN_SHIFT 1
  8550. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20EN_MASK 0x1
  8551. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF20EN_SHIFT 2
  8552. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21EN_MASK 0x1
  8553. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF21EN_SHIFT 3
  8554. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
  8555. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  8556. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23EN_MASK 0x1
  8557. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23EN_SHIFT 5
  8558. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1
  8559. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 6
  8560. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1
  8561. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 7
  8562. u8 flags11;
  8563. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1
  8564. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 0
  8565. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1
  8566. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 1
  8567. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1
  8568. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 2
  8569. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_MASK 0x1
  8570. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE5EN_SHIFT 3
  8571. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_MASK 0x1
  8572. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE6EN_SHIFT 4
  8573. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_MASK 0x1
  8574. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE7EN_SHIFT 5
  8575. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
  8576. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  8577. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE9EN_MASK 0x1
  8578. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE9EN_SHIFT 7
  8579. u8 flags12;
  8580. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_IRQ_PROD_RULE_EN_MASK 0x1
  8581. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_IRQ_PROD_RULE_EN_SHIFT 0
  8582. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE11EN_MASK 0x1
  8583. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE11EN_SHIFT 1
  8584. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
  8585. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  8586. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
  8587. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  8588. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE14EN_MASK 0x1
  8589. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE14EN_SHIFT 4
  8590. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE15EN_MASK 0x1
  8591. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE15EN_SHIFT 5
  8592. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE16EN_MASK 0x1
  8593. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE16EN_SHIFT 6
  8594. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE17EN_MASK 0x1
  8595. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE17EN_SHIFT 7
  8596. u8 flags13;
  8597. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE18EN_MASK 0x1
  8598. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE18EN_SHIFT 0
  8599. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE19EN_MASK 0x1
  8600. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_RULE19EN_SHIFT 1
  8601. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
  8602. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
  8603. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
  8604. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
  8605. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
  8606. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  8607. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
  8608. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
  8609. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
  8610. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  8611. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
  8612. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  8613. u8 flags14;
  8614. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT16_MASK 0x1
  8615. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT16_SHIFT 0
  8616. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT17_MASK 0x1
  8617. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT17_SHIFT 1
  8618. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT18_MASK 0x1
  8619. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT18_SHIFT 2
  8620. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT19_MASK 0x1
  8621. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT19_SHIFT 3
  8622. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT20_MASK 0x1
  8623. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT20_SHIFT 4
  8624. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT21_MASK 0x1
  8625. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_BIT21_SHIFT 5
  8626. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23_MASK 0x3
  8627. #define E4_XSTORM_ROCE_RESP_CONN_AG_CTX_CF23_SHIFT 6
  8628. u8 byte2;
  8629. __le16 physical_q0;
  8630. __le16 irq_prod_shadow;
  8631. __le16 word2;
  8632. __le16 irq_cons;
  8633. __le16 irq_prod;
  8634. __le16 e5_reserved1;
  8635. __le16 conn_dpi;
  8636. u8 rxmit_opcode;
  8637. u8 byte4;
  8638. u8 byte5;
  8639. u8 byte6;
  8640. __le32 rxmit_psn_and_id;
  8641. __le32 rxmit_bytes_length;
  8642. __le32 psn;
  8643. __le32 reg3;
  8644. __le32 reg4;
  8645. __le32 reg5;
  8646. __le32 msn_and_syndrome;
  8647. };
  8648. struct e4_ystorm_roce_conn_ag_ctx {
  8649. u8 byte0;
  8650. u8 byte1;
  8651. u8 flags0;
  8652. #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT0_MASK 0x1
  8653. #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT0_SHIFT 0
  8654. #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT1_MASK 0x1
  8655. #define E4_YSTORM_ROCE_CONN_AG_CTX_BIT1_SHIFT 1
  8656. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0_MASK 0x3
  8657. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0_SHIFT 2
  8658. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1_MASK 0x3
  8659. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1_SHIFT 4
  8660. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2_MASK 0x3
  8661. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2_SHIFT 6
  8662. u8 flags1;
  8663. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0EN_MASK 0x1
  8664. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF0EN_SHIFT 0
  8665. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1EN_MASK 0x1
  8666. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF1EN_SHIFT 1
  8667. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2EN_MASK 0x1
  8668. #define E4_YSTORM_ROCE_CONN_AG_CTX_CF2EN_SHIFT 2
  8669. #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE0EN_MASK 0x1
  8670. #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE0EN_SHIFT 3
  8671. #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE1EN_MASK 0x1
  8672. #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE1EN_SHIFT 4
  8673. #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE2EN_MASK 0x1
  8674. #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE2EN_SHIFT 5
  8675. #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE3EN_MASK 0x1
  8676. #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE3EN_SHIFT 6
  8677. #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE4EN_MASK 0x1
  8678. #define E4_YSTORM_ROCE_CONN_AG_CTX_RULE4EN_SHIFT 7
  8679. u8 byte2;
  8680. u8 byte3;
  8681. __le16 word0;
  8682. __le32 reg0;
  8683. __le32 reg1;
  8684. __le16 word1;
  8685. __le16 word2;
  8686. __le16 word3;
  8687. __le16 word4;
  8688. __le32 reg2;
  8689. __le32 reg3;
  8690. };
  8691. struct e4_ystorm_roce_req_conn_ag_ctx {
  8692. u8 byte0;
  8693. u8 byte1;
  8694. u8 flags0;
  8695. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_MASK 0x1
  8696. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT0_SHIFT 0
  8697. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_MASK 0x1
  8698. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_BIT1_SHIFT 1
  8699. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_MASK 0x3
  8700. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0_SHIFT 2
  8701. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_MASK 0x3
  8702. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1_SHIFT 4
  8703. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_MASK 0x3
  8704. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2_SHIFT 6
  8705. u8 flags1;
  8706. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_MASK 0x1
  8707. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF0EN_SHIFT 0
  8708. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_MASK 0x1
  8709. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF1EN_SHIFT 1
  8710. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_MASK 0x1
  8711. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_CF2EN_SHIFT 2
  8712. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_MASK 0x1
  8713. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE0EN_SHIFT 3
  8714. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_MASK 0x1
  8715. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE1EN_SHIFT 4
  8716. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_MASK 0x1
  8717. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE2EN_SHIFT 5
  8718. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_MASK 0x1
  8719. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE3EN_SHIFT 6
  8720. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_MASK 0x1
  8721. #define E4_YSTORM_ROCE_REQ_CONN_AG_CTX_RULE4EN_SHIFT 7
  8722. u8 byte2;
  8723. u8 byte3;
  8724. __le16 word0;
  8725. __le32 reg0;
  8726. __le32 reg1;
  8727. __le16 word1;
  8728. __le16 word2;
  8729. __le16 word3;
  8730. __le16 word4;
  8731. __le32 reg2;
  8732. __le32 reg3;
  8733. };
  8734. struct e4_ystorm_roce_resp_conn_ag_ctx {
  8735. u8 byte0;
  8736. u8 byte1;
  8737. u8 flags0;
  8738. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_MASK 0x1
  8739. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT0_SHIFT 0
  8740. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_MASK 0x1
  8741. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_BIT1_SHIFT 1
  8742. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_MASK 0x3
  8743. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0_SHIFT 2
  8744. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_MASK 0x3
  8745. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1_SHIFT 4
  8746. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_MASK 0x3
  8747. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2_SHIFT 6
  8748. u8 flags1;
  8749. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_MASK 0x1
  8750. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF0EN_SHIFT 0
  8751. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_MASK 0x1
  8752. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF1EN_SHIFT 1
  8753. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_MASK 0x1
  8754. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_CF2EN_SHIFT 2
  8755. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_MASK 0x1
  8756. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE0EN_SHIFT 3
  8757. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_MASK 0x1
  8758. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE1EN_SHIFT 4
  8759. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_MASK 0x1
  8760. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE2EN_SHIFT 5
  8761. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_MASK 0x1
  8762. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE3EN_SHIFT 6
  8763. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_MASK 0x1
  8764. #define E4_YSTORM_ROCE_RESP_CONN_AG_CTX_RULE4EN_SHIFT 7
  8765. u8 byte2;
  8766. u8 byte3;
  8767. __le16 word0;
  8768. __le32 reg0;
  8769. __le32 reg1;
  8770. __le16 word1;
  8771. __le16 word2;
  8772. __le16 word3;
  8773. __le16 word4;
  8774. __le32 reg2;
  8775. __le32 reg3;
  8776. };
  8777. /* Roce doorbell data */
  8778. enum roce_flavor {
  8779. PLAIN_ROCE,
  8780. RROCE_IPV4,
  8781. RROCE_IPV6,
  8782. MAX_ROCE_FLAVOR
  8783. };
  8784. /* The iwarp storm context of Ystorm */
  8785. struct ystorm_iwarp_conn_st_ctx {
  8786. __le32 reserved[4];
  8787. };
  8788. /* The iwarp storm context of Pstorm */
  8789. struct pstorm_iwarp_conn_st_ctx {
  8790. __le32 reserved[36];
  8791. };
  8792. /* The iwarp storm context of Xstorm */
  8793. struct xstorm_iwarp_conn_st_ctx {
  8794. __le32 reserved[48];
  8795. };
  8796. struct e4_xstorm_iwarp_conn_ag_ctx {
  8797. u8 reserved0;
  8798. u8 state;
  8799. u8 flags0;
  8800. #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  8801. #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  8802. #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM1_MASK 0x1
  8803. #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM1_SHIFT 1
  8804. #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM2_MASK 0x1
  8805. #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM2_SHIFT 2
  8806. #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  8807. #define E4_XSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  8808. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT4_MASK 0x1
  8809. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT4_SHIFT 4
  8810. #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED2_MASK 0x1
  8811. #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED2_SHIFT 5
  8812. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT6_MASK 0x1
  8813. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT6_SHIFT 6
  8814. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT7_MASK 0x1
  8815. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT7_SHIFT 7
  8816. u8 flags1;
  8817. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT8_MASK 0x1
  8818. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT8_SHIFT 0
  8819. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT9_MASK 0x1
  8820. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT9_SHIFT 1
  8821. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT10_MASK 0x1
  8822. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT10_SHIFT 2
  8823. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT11_MASK 0x1
  8824. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT11_SHIFT 3
  8825. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT12_MASK 0x1
  8826. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT12_SHIFT 4
  8827. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT13_MASK 0x1
  8828. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT13_SHIFT 5
  8829. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT14_MASK 0x1
  8830. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT14_SHIFT 6
  8831. #define E4_XSTORM_IWARP_CONN_AG_CTX_YSTORM_FLUSH_OR_REWIND_SND_MAX_MASK 0x1
  8832. #define E4_XSTORM_IWARP_CONN_AG_CTX_YSTORM_FLUSH_OR_REWIND_SND_MAX_SHIFT 7
  8833. u8 flags2;
  8834. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3
  8835. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 0
  8836. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3
  8837. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 2
  8838. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3
  8839. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 4
  8840. #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3
  8841. #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 6
  8842. u8 flags3;
  8843. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4_MASK 0x3
  8844. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4_SHIFT 0
  8845. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5_MASK 0x3
  8846. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5_SHIFT 2
  8847. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6_MASK 0x3
  8848. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6_SHIFT 4
  8849. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7_MASK 0x3
  8850. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7_SHIFT 6
  8851. u8 flags4;
  8852. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8_MASK 0x3
  8853. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8_SHIFT 0
  8854. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9_MASK 0x3
  8855. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9_SHIFT 2
  8856. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10_MASK 0x3
  8857. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10_SHIFT 4
  8858. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11_MASK 0x3
  8859. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11_SHIFT 6
  8860. u8 flags5;
  8861. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12_MASK 0x3
  8862. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12_SHIFT 0
  8863. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13_MASK 0x3
  8864. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13_SHIFT 2
  8865. #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_MASK 0x3
  8866. #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_SHIFT 4
  8867. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15_MASK 0x3
  8868. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15_SHIFT 6
  8869. u8 flags6;
  8870. #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_MASK 0x3
  8871. #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_SHIFT 0
  8872. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17_MASK 0x3
  8873. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17_SHIFT 2
  8874. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18_MASK 0x3
  8875. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18_SHIFT 4
  8876. #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_MASK 0x3
  8877. #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_SHIFT 6
  8878. u8 flags7;
  8879. #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
  8880. #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
  8881. #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_MASK 0x3
  8882. #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_SHIFT 2
  8883. #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_MASK 0x3
  8884. #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  8885. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1
  8886. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 6
  8887. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1
  8888. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 7
  8889. u8 flags8;
  8890. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1
  8891. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 0
  8892. #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1
  8893. #define E4_XSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 1
  8894. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4EN_MASK 0x1
  8895. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF4EN_SHIFT 2
  8896. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5EN_MASK 0x1
  8897. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF5EN_SHIFT 3
  8898. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6EN_MASK 0x1
  8899. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT 4
  8900. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7EN_MASK 0x1
  8901. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF7EN_SHIFT 5
  8902. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8EN_MASK 0x1
  8903. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF8EN_SHIFT 6
  8904. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9EN_MASK 0x1
  8905. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF9EN_SHIFT 7
  8906. u8 flags9;
  8907. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10EN_MASK 0x1
  8908. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF10EN_SHIFT 0
  8909. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11EN_MASK 0x1
  8910. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF11EN_SHIFT 1
  8911. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12EN_MASK 0x1
  8912. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF12EN_SHIFT 2
  8913. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13EN_MASK 0x1
  8914. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF13EN_SHIFT 3
  8915. #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_EN_MASK 0x1
  8916. #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FLUSH_CF_EN_SHIFT 4
  8917. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15EN_MASK 0x1
  8918. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF15EN_SHIFT 5
  8919. #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_EN_MASK 0x1
  8920. #define E4_XSTORM_IWARP_CONN_AG_CTX_MPA_OR_ERROR_WAKEUP_TRIGGER_CF_EN_SHIFT 6
  8921. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17EN_MASK 0x1
  8922. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF17EN_SHIFT 7
  8923. u8 flags10;
  8924. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18EN_MASK 0x1
  8925. #define E4_XSTORM_IWARP_CONN_AG_CTX_CF18EN_SHIFT 0
  8926. #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_EN_MASK 0x1
  8927. #define E4_XSTORM_IWARP_CONN_AG_CTX_DQ_FLUSH_EN_SHIFT 1
  8928. #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
  8929. #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
  8930. #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_EN_MASK 0x1
  8931. #define E4_XSTORM_IWARP_CONN_AG_CTX_FLUSH_Q1_EN_SHIFT 3
  8932. #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
  8933. #define E4_XSTORM_IWARP_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  8934. #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_EN_MASK 0x1
  8935. #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_EN_SHIFT 5
  8936. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1
  8937. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 6
  8938. #define E4_XSTORM_IWARP_CONN_AG_CTX_MORE_TO_SEND_RULE_EN_MASK 0x1
  8939. #define E4_XSTORM_IWARP_CONN_AG_CTX_MORE_TO_SEND_RULE_EN_SHIFT 7
  8940. u8 flags11;
  8941. #define E4_XSTORM_IWARP_CONN_AG_CTX_TX_BLOCKED_EN_MASK 0x1
  8942. #define E4_XSTORM_IWARP_CONN_AG_CTX_TX_BLOCKED_EN_SHIFT 0
  8943. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1
  8944. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 1
  8945. #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED3_MASK 0x1
  8946. #define E4_XSTORM_IWARP_CONN_AG_CTX_RESERVED3_SHIFT 2
  8947. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK 0x1
  8948. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT 3
  8949. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE6EN_MASK 0x1
  8950. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE6EN_SHIFT 4
  8951. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK 0x1
  8952. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT 5
  8953. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
  8954. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  8955. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE9EN_MASK 0x1
  8956. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE9EN_SHIFT 7
  8957. u8 flags12;
  8958. #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_NOT_EMPTY_RULE_EN_MASK 0x1
  8959. #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_NOT_EMPTY_RULE_EN_SHIFT 0
  8960. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE11EN_MASK 0x1
  8961. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE11EN_SHIFT 1
  8962. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
  8963. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  8964. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
  8965. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  8966. #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FENCE_RULE_EN_MASK 0x1
  8967. #define E4_XSTORM_IWARP_CONN_AG_CTX_SQ_FENCE_RULE_EN_SHIFT 4
  8968. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE15EN_MASK 0x1
  8969. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE15EN_SHIFT 5
  8970. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE16EN_MASK 0x1
  8971. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE16EN_SHIFT 6
  8972. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE17EN_MASK 0x1
  8973. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE17EN_SHIFT 7
  8974. u8 flags13;
  8975. #define E4_XSTORM_IWARP_CONN_AG_CTX_IRQ_NOT_EMPTY_RULE_EN_MASK 0x1
  8976. #define E4_XSTORM_IWARP_CONN_AG_CTX_IRQ_NOT_EMPTY_RULE_EN_SHIFT 0
  8977. #define E4_XSTORM_IWARP_CONN_AG_CTX_HQ_NOT_FULL_RULE_EN_MASK 0x1
  8978. #define E4_XSTORM_IWARP_CONN_AG_CTX_HQ_NOT_FULL_RULE_EN_SHIFT 1
  8979. #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_RD_FENCE_RULE_EN_MASK 0x1
  8980. #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_RD_FENCE_RULE_EN_SHIFT 2
  8981. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE21EN_MASK 0x1
  8982. #define E4_XSTORM_IWARP_CONN_AG_CTX_RULE21EN_SHIFT 3
  8983. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
  8984. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  8985. #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_NOT_FULL_RULE_EN_MASK 0x1
  8986. #define E4_XSTORM_IWARP_CONN_AG_CTX_ORQ_NOT_FULL_RULE_EN_SHIFT 5
  8987. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
  8988. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  8989. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
  8990. #define E4_XSTORM_IWARP_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  8991. u8 flags14;
  8992. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT16_MASK 0x1
  8993. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT16_SHIFT 0
  8994. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT17_MASK 0x1
  8995. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT17_SHIFT 1
  8996. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT18_MASK 0x1
  8997. #define E4_XSTORM_IWARP_CONN_AG_CTX_BIT18_SHIFT 2
  8998. #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED1_MASK 0x1
  8999. #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED1_SHIFT 3
  9000. #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED2_MASK 0x1
  9001. #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED2_SHIFT 4
  9002. #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED3_MASK 0x1
  9003. #define E4_XSTORM_IWARP_CONN_AG_CTX_E5_RESERVED3_SHIFT 5
  9004. #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_MASK 0x3
  9005. #define E4_XSTORM_IWARP_CONN_AG_CTX_SEND_TERMINATE_CF_SHIFT 6
  9006. u8 byte2;
  9007. __le16 physical_q0;
  9008. __le16 physical_q1;
  9009. __le16 sq_comp_cons;
  9010. __le16 sq_tx_cons;
  9011. __le16 sq_prod;
  9012. __le16 word5;
  9013. __le16 conn_dpi;
  9014. u8 byte3;
  9015. u8 byte4;
  9016. u8 byte5;
  9017. u8 byte6;
  9018. __le32 reg0;
  9019. __le32 reg1;
  9020. __le32 reg2;
  9021. __le32 more_to_send_seq;
  9022. __le32 reg4;
  9023. __le32 rewinded_snd_max_or_term_opcode;
  9024. __le32 rd_msn;
  9025. __le16 irq_prod_via_msdm;
  9026. __le16 irq_cons;
  9027. __le16 hq_cons_th_or_mpa_data;
  9028. __le16 hq_cons;
  9029. __le32 atom_msn;
  9030. __le32 orq_cons;
  9031. __le32 orq_cons_th;
  9032. u8 byte7;
  9033. u8 wqe_data_pad_bytes;
  9034. u8 max_ord;
  9035. u8 former_hq_prod;
  9036. u8 irq_prod_via_msem;
  9037. u8 byte12;
  9038. u8 max_pkt_pdu_size_lo;
  9039. u8 max_pkt_pdu_size_hi;
  9040. u8 byte15;
  9041. u8 e5_reserved;
  9042. __le16 e5_reserved4;
  9043. __le32 reg10;
  9044. __le32 reg11;
  9045. __le32 shared_queue_page_addr_lo;
  9046. __le32 shared_queue_page_addr_hi;
  9047. __le32 reg14;
  9048. __le32 reg15;
  9049. __le32 reg16;
  9050. __le32 reg17;
  9051. };
  9052. struct e4_tstorm_iwarp_conn_ag_ctx {
  9053. u8 reserved0;
  9054. u8 state;
  9055. u8 flags0;
  9056. #define E4_TSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  9057. #define E4_TSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  9058. #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1
  9059. #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1
  9060. #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT2_MASK 0x1
  9061. #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT2_SHIFT 2
  9062. #define E4_TSTORM_IWARP_CONN_AG_CTX_MSTORM_FLUSH_OR_TERMINATE_SENT_MASK 0x1
  9063. #define E4_TSTORM_IWARP_CONN_AG_CTX_MSTORM_FLUSH_OR_TERMINATE_SENT_SHIFT 3
  9064. #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT4_MASK 0x1
  9065. #define E4_TSTORM_IWARP_CONN_AG_CTX_BIT4_SHIFT 4
  9066. #define E4_TSTORM_IWARP_CONN_AG_CTX_CACHED_ORQ_MASK 0x1
  9067. #define E4_TSTORM_IWARP_CONN_AG_CTX_CACHED_ORQ_SHIFT 5
  9068. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3
  9069. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 6
  9070. u8 flags1;
  9071. #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_MASK 0x3
  9072. #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_SHIFT 0
  9073. #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_MASK 0x3
  9074. #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_SHIFT 2
  9075. #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3
  9076. #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 4
  9077. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4_MASK 0x3
  9078. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4_SHIFT 6
  9079. u8 flags2;
  9080. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5_MASK 0x3
  9081. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5_SHIFT 0
  9082. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6_MASK 0x3
  9083. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6_SHIFT 2
  9084. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7_MASK 0x3
  9085. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7_SHIFT 4
  9086. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8_MASK 0x3
  9087. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8_SHIFT 6
  9088. u8 flags3;
  9089. #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPLETE_MASK 0x3
  9090. #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPLETE_SHIFT 0
  9091. #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_MASK 0x3
  9092. #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_SHIFT 2
  9093. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1
  9094. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 4
  9095. #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_EN_MASK 0x1
  9096. #define E4_TSTORM_IWARP_CONN_AG_CTX_RQ_POST_CF_EN_SHIFT 5
  9097. #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_EN_MASK 0x1
  9098. #define E4_TSTORM_IWARP_CONN_AG_CTX_MPA_TIMEOUT_CF_EN_SHIFT 6
  9099. #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1
  9100. #define E4_TSTORM_IWARP_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 7
  9101. u8 flags4;
  9102. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4EN_MASK 0x1
  9103. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF4EN_SHIFT 0
  9104. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5EN_MASK 0x1
  9105. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF5EN_SHIFT 1
  9106. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6EN_MASK 0x1
  9107. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT 2
  9108. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7EN_MASK 0x1
  9109. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF7EN_SHIFT 3
  9110. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8EN_MASK 0x1
  9111. #define E4_TSTORM_IWARP_CONN_AG_CTX_CF8EN_SHIFT 4
  9112. #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPL_EN_MASK 0x1
  9113. #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_Q0_AND_TCP_HANDSHAKE_COMPL_EN_SHIFT 5
  9114. #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_EN_MASK 0x1
  9115. #define E4_TSTORM_IWARP_CONN_AG_CTX_FLUSH_OR_ERROR_DETECTED_EN_SHIFT 6
  9116. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1
  9117. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 7
  9118. u8 flags5;
  9119. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK 0x1
  9120. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT 0
  9121. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1
  9122. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 1
  9123. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1
  9124. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 2
  9125. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1
  9126. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 3
  9127. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK 0x1
  9128. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT 4
  9129. #define E4_TSTORM_IWARP_CONN_AG_CTX_SND_SQ_CONS_RULE_MASK 0x1
  9130. #define E4_TSTORM_IWARP_CONN_AG_CTX_SND_SQ_CONS_RULE_SHIFT 5
  9131. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK 0x1
  9132. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT 6
  9133. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE8EN_MASK 0x1
  9134. #define E4_TSTORM_IWARP_CONN_AG_CTX_RULE8EN_SHIFT 7
  9135. __le32 reg0;
  9136. __le32 reg1;
  9137. __le32 unaligned_nxt_seq;
  9138. __le32 reg3;
  9139. __le32 reg4;
  9140. __le32 reg5;
  9141. __le32 reg6;
  9142. __le32 reg7;
  9143. __le32 reg8;
  9144. u8 orq_cache_idx;
  9145. u8 hq_prod;
  9146. __le16 sq_tx_cons_th;
  9147. u8 orq_prod;
  9148. u8 irq_cons;
  9149. __le16 sq_tx_cons;
  9150. __le16 conn_dpi;
  9151. __le16 rq_prod;
  9152. __le32 snd_seq;
  9153. __le32 last_hq_sequence;
  9154. };
  9155. /* The iwarp storm context of Tstorm */
  9156. struct tstorm_iwarp_conn_st_ctx {
  9157. __le32 reserved[60];
  9158. };
  9159. /* The iwarp storm context of Mstorm */
  9160. struct mstorm_iwarp_conn_st_ctx {
  9161. __le32 reserved[32];
  9162. };
  9163. /* The iwarp storm context of Ustorm */
  9164. struct ustorm_iwarp_conn_st_ctx {
  9165. __le32 reserved[24];
  9166. };
  9167. /* iwarp connection context */
  9168. struct e4_iwarp_conn_context {
  9169. struct ystorm_iwarp_conn_st_ctx ystorm_st_context;
  9170. struct regpair ystorm_st_padding[2];
  9171. struct pstorm_iwarp_conn_st_ctx pstorm_st_context;
  9172. struct regpair pstorm_st_padding[2];
  9173. struct xstorm_iwarp_conn_st_ctx xstorm_st_context;
  9174. struct e4_xstorm_iwarp_conn_ag_ctx xstorm_ag_context;
  9175. struct e4_tstorm_iwarp_conn_ag_ctx tstorm_ag_context;
  9176. struct timers_context timer_context;
  9177. struct e4_ustorm_rdma_conn_ag_ctx ustorm_ag_context;
  9178. struct tstorm_iwarp_conn_st_ctx tstorm_st_context;
  9179. struct regpair tstorm_st_padding[2];
  9180. struct mstorm_iwarp_conn_st_ctx mstorm_st_context;
  9181. struct ustorm_iwarp_conn_st_ctx ustorm_st_context;
  9182. };
  9183. /* iWARP create QP params passed by driver to FW in CreateQP Request Ramrod */
  9184. struct iwarp_create_qp_ramrod_data {
  9185. u8 flags;
  9186. #define IWARP_CREATE_QP_RAMROD_DATA_FMR_AND_RESERVED_EN_MASK 0x1
  9187. #define IWARP_CREATE_QP_RAMROD_DATA_FMR_AND_RESERVED_EN_SHIFT 0
  9188. #define IWARP_CREATE_QP_RAMROD_DATA_SIGNALED_COMP_MASK 0x1
  9189. #define IWARP_CREATE_QP_RAMROD_DATA_SIGNALED_COMP_SHIFT 1
  9190. #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1
  9191. #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_RD_EN_SHIFT 2
  9192. #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1
  9193. #define IWARP_CREATE_QP_RAMROD_DATA_RDMA_WR_EN_SHIFT 3
  9194. #define IWARP_CREATE_QP_RAMROD_DATA_ATOMIC_EN_MASK 0x1
  9195. #define IWARP_CREATE_QP_RAMROD_DATA_ATOMIC_EN_SHIFT 4
  9196. #define IWARP_CREATE_QP_RAMROD_DATA_SRQ_FLG_MASK 0x1
  9197. #define IWARP_CREATE_QP_RAMROD_DATA_SRQ_FLG_SHIFT 5
  9198. #define IWARP_CREATE_QP_RAMROD_DATA_LOW_LATENCY_QUEUE_EN_MASK 0x1
  9199. #define IWARP_CREATE_QP_RAMROD_DATA_LOW_LATENCY_QUEUE_EN_SHIFT 6
  9200. #define IWARP_CREATE_QP_RAMROD_DATA_RESERVED0_MASK 0x1
  9201. #define IWARP_CREATE_QP_RAMROD_DATA_RESERVED0_SHIFT 7
  9202. u8 reserved1;
  9203. __le16 pd;
  9204. __le16 sq_num_pages;
  9205. __le16 rq_num_pages;
  9206. __le32 reserved3[2];
  9207. struct regpair qp_handle_for_cqe;
  9208. struct rdma_srq_id srq_id;
  9209. __le32 cq_cid_for_sq;
  9210. __le32 cq_cid_for_rq;
  9211. __le16 dpi;
  9212. __le16 physical_q0;
  9213. __le16 physical_q1;
  9214. u8 reserved2[6];
  9215. };
  9216. /* iWARP completion queue types */
  9217. enum iwarp_eqe_async_opcode {
  9218. IWARP_EVENT_TYPE_ASYNC_CONNECT_COMPLETE,
  9219. IWARP_EVENT_TYPE_ASYNC_ENHANCED_MPA_REPLY_ARRIVED,
  9220. IWARP_EVENT_TYPE_ASYNC_MPA_HANDSHAKE_COMPLETE,
  9221. IWARP_EVENT_TYPE_ASYNC_CID_CLEANED,
  9222. IWARP_EVENT_TYPE_ASYNC_EXCEPTION_DETECTED,
  9223. IWARP_EVENT_TYPE_ASYNC_QP_IN_ERROR_STATE,
  9224. IWARP_EVENT_TYPE_ASYNC_CQ_OVERFLOW,
  9225. MAX_IWARP_EQE_ASYNC_OPCODE
  9226. };
  9227. struct iwarp_eqe_data_mpa_async_completion {
  9228. __le16 ulp_data_len;
  9229. u8 reserved[6];
  9230. };
  9231. struct iwarp_eqe_data_tcp_async_completion {
  9232. __le16 ulp_data_len;
  9233. u8 mpa_handshake_mode;
  9234. u8 reserved[5];
  9235. };
  9236. /* iWARP completion queue types */
  9237. enum iwarp_eqe_sync_opcode {
  9238. IWARP_EVENT_TYPE_TCP_OFFLOAD =
  9239. 11,
  9240. IWARP_EVENT_TYPE_MPA_OFFLOAD,
  9241. IWARP_EVENT_TYPE_MPA_OFFLOAD_SEND_RTR,
  9242. IWARP_EVENT_TYPE_CREATE_QP,
  9243. IWARP_EVENT_TYPE_QUERY_QP,
  9244. IWARP_EVENT_TYPE_MODIFY_QP,
  9245. IWARP_EVENT_TYPE_DESTROY_QP,
  9246. IWARP_EVENT_TYPE_ABORT_TCP_OFFLOAD,
  9247. MAX_IWARP_EQE_SYNC_OPCODE
  9248. };
  9249. /* iWARP EQE completion status */
  9250. enum iwarp_fw_return_code {
  9251. IWARP_CONN_ERROR_TCP_CONNECT_INVALID_PACKET = 5,
  9252. IWARP_CONN_ERROR_TCP_CONNECTION_RST,
  9253. IWARP_CONN_ERROR_TCP_CONNECT_TIMEOUT,
  9254. IWARP_CONN_ERROR_MPA_ERROR_REJECT,
  9255. IWARP_CONN_ERROR_MPA_NOT_SUPPORTED_VER,
  9256. IWARP_CONN_ERROR_MPA_RST,
  9257. IWARP_CONN_ERROR_MPA_FIN,
  9258. IWARP_CONN_ERROR_MPA_RTR_MISMATCH,
  9259. IWARP_CONN_ERROR_MPA_INSUF_IRD,
  9260. IWARP_CONN_ERROR_MPA_INVALID_PACKET,
  9261. IWARP_CONN_ERROR_MPA_LOCAL_ERROR,
  9262. IWARP_CONN_ERROR_MPA_TIMEOUT,
  9263. IWARP_CONN_ERROR_MPA_TERMINATE,
  9264. IWARP_QP_IN_ERROR_GOOD_CLOSE,
  9265. IWARP_QP_IN_ERROR_BAD_CLOSE,
  9266. IWARP_EXCEPTION_DETECTED_LLP_CLOSED,
  9267. IWARP_EXCEPTION_DETECTED_LLP_RESET,
  9268. IWARP_EXCEPTION_DETECTED_IRQ_FULL,
  9269. IWARP_EXCEPTION_DETECTED_RQ_EMPTY,
  9270. IWARP_EXCEPTION_DETECTED_SRQ_EMPTY,
  9271. IWARP_EXCEPTION_DETECTED_SRQ_LIMIT,
  9272. IWARP_EXCEPTION_DETECTED_LLP_TIMEOUT,
  9273. IWARP_EXCEPTION_DETECTED_REMOTE_PROTECTION_ERROR,
  9274. IWARP_EXCEPTION_DETECTED_CQ_OVERFLOW,
  9275. IWARP_EXCEPTION_DETECTED_LOCAL_CATASTROPHIC,
  9276. IWARP_EXCEPTION_DETECTED_LOCAL_ACCESS_ERROR,
  9277. IWARP_EXCEPTION_DETECTED_REMOTE_OPERATION_ERROR,
  9278. IWARP_EXCEPTION_DETECTED_TERMINATE_RECEIVED,
  9279. MAX_IWARP_FW_RETURN_CODE
  9280. };
  9281. /* unaligned opaque data received from LL2 */
  9282. struct iwarp_init_func_params {
  9283. u8 ll2_ooo_q_index;
  9284. u8 reserved1[7];
  9285. };
  9286. /* iwarp func init ramrod data */
  9287. struct iwarp_init_func_ramrod_data {
  9288. struct rdma_init_func_ramrod_data rdma;
  9289. struct tcp_init_params tcp;
  9290. struct iwarp_init_func_params iwarp;
  9291. };
  9292. /* iWARP QP - possible states to transition to */
  9293. enum iwarp_modify_qp_new_state_type {
  9294. IWARP_MODIFY_QP_STATE_CLOSING = 1,
  9295. IWARP_MODIFY_QP_STATE_ERROR = 2,
  9296. MAX_IWARP_MODIFY_QP_NEW_STATE_TYPE
  9297. };
  9298. /* iwarp modify qp responder ramrod data */
  9299. struct iwarp_modify_qp_ramrod_data {
  9300. __le16 transition_to_state;
  9301. __le16 flags;
  9302. #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_RD_EN_MASK 0x1
  9303. #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_RD_EN_SHIFT 0
  9304. #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_WR_EN_MASK 0x1
  9305. #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_WR_EN_SHIFT 1
  9306. #define IWARP_MODIFY_QP_RAMROD_DATA_ATOMIC_EN_MASK 0x1
  9307. #define IWARP_MODIFY_QP_RAMROD_DATA_ATOMIC_EN_SHIFT 2
  9308. #define IWARP_MODIFY_QP_RAMROD_DATA_STATE_TRANS_EN_MASK 0x1
  9309. #define IWARP_MODIFY_QP_RAMROD_DATA_STATE_TRANS_EN_SHIFT 3
  9310. #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_OPS_EN_FLG_MASK 0x1
  9311. #define IWARP_MODIFY_QP_RAMROD_DATA_RDMA_OPS_EN_FLG_SHIFT 4
  9312. #define IWARP_MODIFY_QP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_MASK 0x1
  9313. #define IWARP_MODIFY_QP_RAMROD_DATA_PHYSICAL_QUEUE_FLG_SHIFT 5
  9314. #define IWARP_MODIFY_QP_RAMROD_DATA_RESERVED_MASK 0x3FF
  9315. #define IWARP_MODIFY_QP_RAMROD_DATA_RESERVED_SHIFT 6
  9316. __le16 physical_q0;
  9317. __le16 physical_q1;
  9318. __le32 reserved1[10];
  9319. };
  9320. /* MPA params for Enhanced mode */
  9321. struct mpa_rq_params {
  9322. __le32 ird;
  9323. __le32 ord;
  9324. };
  9325. /* MPA host Address-Len for private data */
  9326. struct mpa_ulp_buffer {
  9327. struct regpair addr;
  9328. __le16 len;
  9329. __le16 reserved[3];
  9330. };
  9331. /* iWARP MPA offload params common to Basic and Enhanced modes */
  9332. struct mpa_outgoing_params {
  9333. u8 crc_needed;
  9334. u8 reject;
  9335. u8 reserved[6];
  9336. struct mpa_rq_params out_rq;
  9337. struct mpa_ulp_buffer outgoing_ulp_buffer;
  9338. };
  9339. /* iWARP MPA offload params passed by driver to FW in MPA Offload Request
  9340. * Ramrod.
  9341. */
  9342. struct iwarp_mpa_offload_ramrod_data {
  9343. struct mpa_outgoing_params common;
  9344. __le32 tcp_cid;
  9345. u8 mode;
  9346. u8 tcp_connect_side;
  9347. u8 rtr_pref;
  9348. #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RTR_SUPPORTED_MASK 0x7
  9349. #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RTR_SUPPORTED_SHIFT 0
  9350. #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RESERVED1_MASK 0x1F
  9351. #define IWARP_MPA_OFFLOAD_RAMROD_DATA_RESERVED1_SHIFT 3
  9352. u8 reserved2;
  9353. struct mpa_ulp_buffer incoming_ulp_buffer;
  9354. struct regpair async_eqe_output_buf;
  9355. struct regpair handle_for_async;
  9356. struct regpair shared_queue_addr;
  9357. __le16 rcv_wnd;
  9358. u8 stats_counter_id;
  9359. u8 reserved3[13];
  9360. };
  9361. /* iWARP TCP connection offload params passed by driver to FW */
  9362. struct iwarp_offload_params {
  9363. struct mpa_ulp_buffer incoming_ulp_buffer;
  9364. struct regpair async_eqe_output_buf;
  9365. struct regpair handle_for_async;
  9366. __le16 physical_q0;
  9367. __le16 physical_q1;
  9368. u8 stats_counter_id;
  9369. u8 mpa_mode;
  9370. u8 reserved[10];
  9371. };
  9372. /* iWARP query QP output params */
  9373. struct iwarp_query_qp_output_params {
  9374. __le32 flags;
  9375. #define IWARP_QUERY_QP_OUTPUT_PARAMS_ERROR_FLG_MASK 0x1
  9376. #define IWARP_QUERY_QP_OUTPUT_PARAMS_ERROR_FLG_SHIFT 0
  9377. #define IWARP_QUERY_QP_OUTPUT_PARAMS_RESERVED0_MASK 0x7FFFFFFF
  9378. #define IWARP_QUERY_QP_OUTPUT_PARAMS_RESERVED0_SHIFT 1
  9379. u8 reserved1[4];
  9380. };
  9381. /* iWARP query QP ramrod data */
  9382. struct iwarp_query_qp_ramrod_data {
  9383. struct regpair output_params_addr;
  9384. };
  9385. /* iWARP Ramrod Command IDs */
  9386. enum iwarp_ramrod_cmd_id {
  9387. IWARP_RAMROD_CMD_ID_TCP_OFFLOAD = 11,
  9388. IWARP_RAMROD_CMD_ID_MPA_OFFLOAD,
  9389. IWARP_RAMROD_CMD_ID_MPA_OFFLOAD_SEND_RTR,
  9390. IWARP_RAMROD_CMD_ID_CREATE_QP,
  9391. IWARP_RAMROD_CMD_ID_QUERY_QP,
  9392. IWARP_RAMROD_CMD_ID_MODIFY_QP,
  9393. IWARP_RAMROD_CMD_ID_DESTROY_QP,
  9394. IWARP_RAMROD_CMD_ID_ABORT_TCP_OFFLOAD,
  9395. MAX_IWARP_RAMROD_CMD_ID
  9396. };
  9397. /* Per PF iWARP retransmit path statistics */
  9398. struct iwarp_rxmit_stats_drv {
  9399. struct regpair tx_go_to_slow_start_event_cnt;
  9400. struct regpair tx_fast_retransmit_event_cnt;
  9401. };
  9402. /* iWARP and TCP connection offload params passed by driver to FW in iWARP
  9403. * offload ramrod.
  9404. */
  9405. struct iwarp_tcp_offload_ramrod_data {
  9406. struct iwarp_offload_params iwarp;
  9407. struct tcp_offload_params_opt2 tcp;
  9408. };
  9409. /* iWARP MPA negotiation types */
  9410. enum mpa_negotiation_mode {
  9411. MPA_NEGOTIATION_TYPE_BASIC = 1,
  9412. MPA_NEGOTIATION_TYPE_ENHANCED = 2,
  9413. MAX_MPA_NEGOTIATION_MODE
  9414. };
  9415. /* iWARP MPA Enhanced mode RTR types */
  9416. enum mpa_rtr_type {
  9417. MPA_RTR_TYPE_NONE = 0,
  9418. MPA_RTR_TYPE_ZERO_SEND = 1,
  9419. MPA_RTR_TYPE_ZERO_WRITE = 2,
  9420. MPA_RTR_TYPE_ZERO_SEND_AND_WRITE = 3,
  9421. MPA_RTR_TYPE_ZERO_READ = 4,
  9422. MPA_RTR_TYPE_ZERO_SEND_AND_READ = 5,
  9423. MPA_RTR_TYPE_ZERO_WRITE_AND_READ = 6,
  9424. MPA_RTR_TYPE_ZERO_SEND_AND_WRITE_AND_READ = 7,
  9425. MAX_MPA_RTR_TYPE
  9426. };
  9427. /* unaligned opaque data received from LL2 */
  9428. struct unaligned_opaque_data {
  9429. __le16 first_mpa_offset;
  9430. u8 tcp_payload_offset;
  9431. u8 flags;
  9432. #define UNALIGNED_OPAQUE_DATA_PKT_REACHED_WIN_RIGHT_EDGE_MASK 0x1
  9433. #define UNALIGNED_OPAQUE_DATA_PKT_REACHED_WIN_RIGHT_EDGE_SHIFT 0
  9434. #define UNALIGNED_OPAQUE_DATA_CONNECTION_CLOSED_MASK 0x1
  9435. #define UNALIGNED_OPAQUE_DATA_CONNECTION_CLOSED_SHIFT 1
  9436. #define UNALIGNED_OPAQUE_DATA_RESERVED_MASK 0x3F
  9437. #define UNALIGNED_OPAQUE_DATA_RESERVED_SHIFT 2
  9438. __le32 cid;
  9439. };
  9440. struct e4_mstorm_iwarp_conn_ag_ctx {
  9441. u8 reserved;
  9442. u8 state;
  9443. u8 flags0;
  9444. #define E4_MSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  9445. #define E4_MSTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  9446. #define E4_MSTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1
  9447. #define E4_MSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1
  9448. #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_MASK 0x3
  9449. #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_SHIFT 2
  9450. #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3
  9451. #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 4
  9452. #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3
  9453. #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 6
  9454. u8 flags1;
  9455. #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_EN_MASK 0x1
  9456. #define E4_MSTORM_IWARP_CONN_AG_CTX_INV_STAG_DONE_CF_EN_SHIFT 0
  9457. #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1
  9458. #define E4_MSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 1
  9459. #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1
  9460. #define E4_MSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 2
  9461. #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1
  9462. #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 3
  9463. #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK 0x1
  9464. #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT 4
  9465. #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1
  9466. #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 5
  9467. #define E4_MSTORM_IWARP_CONN_AG_CTX_RCQ_CONS_EN_MASK 0x1
  9468. #define E4_MSTORM_IWARP_CONN_AG_CTX_RCQ_CONS_EN_SHIFT 6
  9469. #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1
  9470. #define E4_MSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 7
  9471. __le16 rcq_cons;
  9472. __le16 rcq_cons_th;
  9473. __le32 reg0;
  9474. __le32 reg1;
  9475. };
  9476. struct e4_ustorm_iwarp_conn_ag_ctx {
  9477. u8 reserved;
  9478. u8 byte1;
  9479. u8 flags0;
  9480. #define E4_USTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  9481. #define E4_USTORM_IWARP_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  9482. #define E4_USTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1
  9483. #define E4_USTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1
  9484. #define E4_USTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3
  9485. #define E4_USTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 2
  9486. #define E4_USTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3
  9487. #define E4_USTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 4
  9488. #define E4_USTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3
  9489. #define E4_USTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 6
  9490. u8 flags1;
  9491. #define E4_USTORM_IWARP_CONN_AG_CTX_CF3_MASK 0x3
  9492. #define E4_USTORM_IWARP_CONN_AG_CTX_CF3_SHIFT 0
  9493. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_MASK 0x3
  9494. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_SHIFT 2
  9495. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_MASK 0x3
  9496. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_SHIFT 4
  9497. #define E4_USTORM_IWARP_CONN_AG_CTX_CF6_MASK 0x3
  9498. #define E4_USTORM_IWARP_CONN_AG_CTX_CF6_SHIFT 6
  9499. u8 flags2;
  9500. #define E4_USTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1
  9501. #define E4_USTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 0
  9502. #define E4_USTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1
  9503. #define E4_USTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 1
  9504. #define E4_USTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1
  9505. #define E4_USTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 2
  9506. #define E4_USTORM_IWARP_CONN_AG_CTX_CF3EN_MASK 0x1
  9507. #define E4_USTORM_IWARP_CONN_AG_CTX_CF3EN_SHIFT 3
  9508. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_EN_MASK 0x1
  9509. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_SE_CF_EN_SHIFT 4
  9510. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_EN_MASK 0x1
  9511. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_ARM_CF_EN_SHIFT 5
  9512. #define E4_USTORM_IWARP_CONN_AG_CTX_CF6EN_MASK 0x1
  9513. #define E4_USTORM_IWARP_CONN_AG_CTX_CF6EN_SHIFT 6
  9514. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_SE_EN_MASK 0x1
  9515. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_SE_EN_SHIFT 7
  9516. u8 flags3;
  9517. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_EN_MASK 0x1
  9518. #define E4_USTORM_IWARP_CONN_AG_CTX_CQ_EN_SHIFT 0
  9519. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1
  9520. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 1
  9521. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1
  9522. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 2
  9523. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1
  9524. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 3
  9525. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE5EN_MASK 0x1
  9526. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE5EN_SHIFT 4
  9527. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE6EN_MASK 0x1
  9528. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE6EN_SHIFT 5
  9529. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE7EN_MASK 0x1
  9530. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE7EN_SHIFT 6
  9531. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE8EN_MASK 0x1
  9532. #define E4_USTORM_IWARP_CONN_AG_CTX_RULE8EN_SHIFT 7
  9533. u8 byte2;
  9534. u8 byte3;
  9535. __le16 word0;
  9536. __le16 word1;
  9537. __le32 cq_cons;
  9538. __le32 cq_se_prod;
  9539. __le32 cq_prod;
  9540. __le32 reg3;
  9541. __le16 word2;
  9542. __le16 word3;
  9543. };
  9544. struct e4_ystorm_iwarp_conn_ag_ctx {
  9545. u8 byte0;
  9546. u8 byte1;
  9547. u8 flags0;
  9548. #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT0_MASK 0x1
  9549. #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT0_SHIFT 0
  9550. #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT1_MASK 0x1
  9551. #define E4_YSTORM_IWARP_CONN_AG_CTX_BIT1_SHIFT 1
  9552. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0_MASK 0x3
  9553. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0_SHIFT 2
  9554. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1_MASK 0x3
  9555. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1_SHIFT 4
  9556. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2_MASK 0x3
  9557. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2_SHIFT 6
  9558. u8 flags1;
  9559. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0EN_MASK 0x1
  9560. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF0EN_SHIFT 0
  9561. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1EN_MASK 0x1
  9562. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF1EN_SHIFT 1
  9563. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2EN_MASK 0x1
  9564. #define E4_YSTORM_IWARP_CONN_AG_CTX_CF2EN_SHIFT 2
  9565. #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE0EN_MASK 0x1
  9566. #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE0EN_SHIFT 3
  9567. #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE1EN_MASK 0x1
  9568. #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE1EN_SHIFT 4
  9569. #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE2EN_MASK 0x1
  9570. #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE2EN_SHIFT 5
  9571. #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE3EN_MASK 0x1
  9572. #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE3EN_SHIFT 6
  9573. #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE4EN_MASK 0x1
  9574. #define E4_YSTORM_IWARP_CONN_AG_CTX_RULE4EN_SHIFT 7
  9575. u8 byte2;
  9576. u8 byte3;
  9577. __le16 word0;
  9578. __le32 reg0;
  9579. __le32 reg1;
  9580. __le16 word1;
  9581. __le16 word2;
  9582. __le16 word3;
  9583. __le16 word4;
  9584. __le32 reg2;
  9585. __le32 reg3;
  9586. };
  9587. /* The fcoe storm context of Ystorm */
  9588. struct ystorm_fcoe_conn_st_ctx {
  9589. u8 func_mode;
  9590. u8 cos;
  9591. u8 conf_version;
  9592. u8 eth_hdr_size;
  9593. __le16 stat_ram_addr;
  9594. __le16 mtu;
  9595. __le16 max_fc_payload_len;
  9596. __le16 tx_max_fc_pay_len;
  9597. u8 fcp_cmd_size;
  9598. u8 fcp_rsp_size;
  9599. __le16 mss;
  9600. struct regpair reserved;
  9601. __le16 min_frame_size;
  9602. u8 protection_info_flags;
  9603. #define YSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_MASK 0x1
  9604. #define YSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_SHIFT 0
  9605. #define YSTORM_FCOE_CONN_ST_CTX_VALID_MASK 0x1
  9606. #define YSTORM_FCOE_CONN_ST_CTX_VALID_SHIFT 1
  9607. #define YSTORM_FCOE_CONN_ST_CTX_RESERVED1_MASK 0x3F
  9608. #define YSTORM_FCOE_CONN_ST_CTX_RESERVED1_SHIFT 2
  9609. u8 dst_protection_per_mss;
  9610. u8 src_protection_per_mss;
  9611. u8 ptu_log_page_size;
  9612. u8 flags;
  9613. #define YSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK 0x1
  9614. #define YSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT 0
  9615. #define YSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_MASK 0x1
  9616. #define YSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_SHIFT 1
  9617. #define YSTORM_FCOE_CONN_ST_CTX_RSRV_MASK 0x3F
  9618. #define YSTORM_FCOE_CONN_ST_CTX_RSRV_SHIFT 2
  9619. u8 fcp_xfer_size;
  9620. };
  9621. /* FCoE 16-bits vlan structure */
  9622. struct fcoe_vlan_fields {
  9623. __le16 fields;
  9624. #define FCOE_VLAN_FIELDS_VID_MASK 0xFFF
  9625. #define FCOE_VLAN_FIELDS_VID_SHIFT 0
  9626. #define FCOE_VLAN_FIELDS_CLI_MASK 0x1
  9627. #define FCOE_VLAN_FIELDS_CLI_SHIFT 12
  9628. #define FCOE_VLAN_FIELDS_PRI_MASK 0x7
  9629. #define FCOE_VLAN_FIELDS_PRI_SHIFT 13
  9630. };
  9631. /* FCoE 16-bits vlan union */
  9632. union fcoe_vlan_field_union {
  9633. struct fcoe_vlan_fields fields;
  9634. __le16 val;
  9635. };
  9636. /* FCoE 16-bits vlan, vif union */
  9637. union fcoe_vlan_vif_field_union {
  9638. union fcoe_vlan_field_union vlan;
  9639. __le16 vif;
  9640. };
  9641. /* Ethernet context section */
  9642. struct pstorm_fcoe_eth_context_section {
  9643. u8 remote_addr_3;
  9644. u8 remote_addr_2;
  9645. u8 remote_addr_1;
  9646. u8 remote_addr_0;
  9647. u8 local_addr_1;
  9648. u8 local_addr_0;
  9649. u8 remote_addr_5;
  9650. u8 remote_addr_4;
  9651. u8 local_addr_5;
  9652. u8 local_addr_4;
  9653. u8 local_addr_3;
  9654. u8 local_addr_2;
  9655. union fcoe_vlan_vif_field_union vif_outer_vlan;
  9656. __le16 vif_outer_eth_type;
  9657. union fcoe_vlan_vif_field_union inner_vlan;
  9658. __le16 inner_eth_type;
  9659. };
  9660. /* The fcoe storm context of Pstorm */
  9661. struct pstorm_fcoe_conn_st_ctx {
  9662. u8 func_mode;
  9663. u8 cos;
  9664. u8 conf_version;
  9665. u8 rsrv;
  9666. __le16 stat_ram_addr;
  9667. __le16 mss;
  9668. struct regpair abts_cleanup_addr;
  9669. struct pstorm_fcoe_eth_context_section eth;
  9670. u8 sid_2;
  9671. u8 sid_1;
  9672. u8 sid_0;
  9673. u8 flags;
  9674. #define PSTORM_FCOE_CONN_ST_CTX_VNTAG_VLAN_MASK 0x1
  9675. #define PSTORM_FCOE_CONN_ST_CTX_VNTAG_VLAN_SHIFT 0
  9676. #define PSTORM_FCOE_CONN_ST_CTX_SUPPORT_REC_RR_TOV_MASK 0x1
  9677. #define PSTORM_FCOE_CONN_ST_CTX_SUPPORT_REC_RR_TOV_SHIFT 1
  9678. #define PSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK 0x1
  9679. #define PSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT 2
  9680. #define PSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_MASK 0x1
  9681. #define PSTORM_FCOE_CONN_ST_CTX_OUTER_VLAN_FLAG_SHIFT 3
  9682. #define PSTORM_FCOE_CONN_ST_CTX_SINGLE_VLAN_FLAG_MASK 0x1
  9683. #define PSTORM_FCOE_CONN_ST_CTX_SINGLE_VLAN_FLAG_SHIFT 4
  9684. #define PSTORM_FCOE_CONN_ST_CTX_RESERVED_MASK 0x7
  9685. #define PSTORM_FCOE_CONN_ST_CTX_RESERVED_SHIFT 5
  9686. u8 did_2;
  9687. u8 did_1;
  9688. u8 did_0;
  9689. u8 src_mac_index;
  9690. __le16 rec_rr_tov_val;
  9691. u8 q_relative_offset;
  9692. u8 reserved1;
  9693. };
  9694. /* The fcoe storm context of Xstorm */
  9695. struct xstorm_fcoe_conn_st_ctx {
  9696. u8 func_mode;
  9697. u8 src_mac_index;
  9698. u8 conf_version;
  9699. u8 cached_wqes_avail;
  9700. __le16 stat_ram_addr;
  9701. u8 flags;
  9702. #define XSTORM_FCOE_CONN_ST_CTX_SQ_DEFERRED_MASK 0x1
  9703. #define XSTORM_FCOE_CONN_ST_CTX_SQ_DEFERRED_SHIFT 0
  9704. #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_MASK 0x1
  9705. #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_SHIFT 1
  9706. #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_ORIG_MASK 0x1
  9707. #define XSTORM_FCOE_CONN_ST_CTX_INNER_VLAN_FLAG_ORIG_SHIFT 2
  9708. #define XSTORM_FCOE_CONN_ST_CTX_LAST_QUEUE_HANDLED_MASK 0x3
  9709. #define XSTORM_FCOE_CONN_ST_CTX_LAST_QUEUE_HANDLED_SHIFT 3
  9710. #define XSTORM_FCOE_CONN_ST_CTX_RSRV_MASK 0x7
  9711. #define XSTORM_FCOE_CONN_ST_CTX_RSRV_SHIFT 5
  9712. u8 cached_wqes_offset;
  9713. u8 reserved2;
  9714. u8 eth_hdr_size;
  9715. u8 seq_id;
  9716. u8 max_conc_seqs;
  9717. __le16 num_pages_in_pbl;
  9718. __le16 reserved;
  9719. struct regpair sq_pbl_addr;
  9720. struct regpair sq_curr_page_addr;
  9721. struct regpair sq_next_page_addr;
  9722. struct regpair xferq_pbl_addr;
  9723. struct regpair xferq_curr_page_addr;
  9724. struct regpair xferq_next_page_addr;
  9725. struct regpair respq_pbl_addr;
  9726. struct regpair respq_curr_page_addr;
  9727. struct regpair respq_next_page_addr;
  9728. __le16 mtu;
  9729. __le16 tx_max_fc_pay_len;
  9730. __le16 max_fc_payload_len;
  9731. __le16 min_frame_size;
  9732. __le16 sq_pbl_next_index;
  9733. __le16 respq_pbl_next_index;
  9734. u8 fcp_cmd_byte_credit;
  9735. u8 fcp_rsp_byte_credit;
  9736. __le16 protection_info;
  9737. #define XSTORM_FCOE_CONN_ST_CTX_PROTECTION_PERF_MASK 0x1
  9738. #define XSTORM_FCOE_CONN_ST_CTX_PROTECTION_PERF_SHIFT 0
  9739. #define XSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_MASK 0x1
  9740. #define XSTORM_FCOE_CONN_ST_CTX_SUPPORT_PROTECTION_SHIFT 1
  9741. #define XSTORM_FCOE_CONN_ST_CTX_VALID_MASK 0x1
  9742. #define XSTORM_FCOE_CONN_ST_CTX_VALID_SHIFT 2
  9743. #define XSTORM_FCOE_CONN_ST_CTX_FRAME_PROT_ALIGNED_MASK 0x1
  9744. #define XSTORM_FCOE_CONN_ST_CTX_FRAME_PROT_ALIGNED_SHIFT 3
  9745. #define XSTORM_FCOE_CONN_ST_CTX_RESERVED3_MASK 0xF
  9746. #define XSTORM_FCOE_CONN_ST_CTX_RESERVED3_SHIFT 4
  9747. #define XSTORM_FCOE_CONN_ST_CTX_DST_PROTECTION_PER_MSS_MASK 0xFF
  9748. #define XSTORM_FCOE_CONN_ST_CTX_DST_PROTECTION_PER_MSS_SHIFT 8
  9749. __le16 xferq_pbl_next_index;
  9750. __le16 page_size;
  9751. u8 mid_seq;
  9752. u8 fcp_xfer_byte_credit;
  9753. u8 reserved1[2];
  9754. struct fcoe_wqe cached_wqes[16];
  9755. };
  9756. struct e4_xstorm_fcoe_conn_ag_ctx {
  9757. u8 reserved0;
  9758. u8 state;
  9759. u8 flags0;
  9760. #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  9761. #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  9762. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED1_MASK 0x1
  9763. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED1_SHIFT 1
  9764. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED2_MASK 0x1
  9765. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED2_SHIFT 2
  9766. #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  9767. #define E4_XSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  9768. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED3_MASK 0x1
  9769. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED3_SHIFT 4
  9770. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED4_MASK 0x1
  9771. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED4_SHIFT 5
  9772. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED5_MASK 0x1
  9773. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED5_SHIFT 6
  9774. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED6_MASK 0x1
  9775. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED6_SHIFT 7
  9776. u8 flags1;
  9777. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED7_MASK 0x1
  9778. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED7_SHIFT 0
  9779. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED8_MASK 0x1
  9780. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED8_SHIFT 1
  9781. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED9_MASK 0x1
  9782. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED9_SHIFT 2
  9783. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT11_MASK 0x1
  9784. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT11_SHIFT 3
  9785. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT12_MASK 0x1
  9786. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT12_SHIFT 4
  9787. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT13_MASK 0x1
  9788. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT13_SHIFT 5
  9789. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT14_MASK 0x1
  9790. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT14_SHIFT 6
  9791. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT15_MASK 0x1
  9792. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT15_SHIFT 7
  9793. u8 flags2;
  9794. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3
  9795. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 0
  9796. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3
  9797. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 2
  9798. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3
  9799. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 4
  9800. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3_MASK 0x3
  9801. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3_SHIFT 6
  9802. u8 flags3;
  9803. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4_MASK 0x3
  9804. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4_SHIFT 0
  9805. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5_MASK 0x3
  9806. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5_SHIFT 2
  9807. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6_MASK 0x3
  9808. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6_SHIFT 4
  9809. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7_MASK 0x3
  9810. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7_SHIFT 6
  9811. u8 flags4;
  9812. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8_MASK 0x3
  9813. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8_SHIFT 0
  9814. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9_MASK 0x3
  9815. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9_SHIFT 2
  9816. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10_MASK 0x3
  9817. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10_SHIFT 4
  9818. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11_MASK 0x3
  9819. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11_SHIFT 6
  9820. u8 flags5;
  9821. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12_MASK 0x3
  9822. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12_SHIFT 0
  9823. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13_MASK 0x3
  9824. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13_SHIFT 2
  9825. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14_MASK 0x3
  9826. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14_SHIFT 4
  9827. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15_MASK 0x3
  9828. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15_SHIFT 6
  9829. u8 flags6;
  9830. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16_MASK 0x3
  9831. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16_SHIFT 0
  9832. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17_MASK 0x3
  9833. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17_SHIFT 2
  9834. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18_MASK 0x3
  9835. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18_SHIFT 4
  9836. #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_MASK 0x3
  9837. #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_SHIFT 6
  9838. u8 flags7;
  9839. #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
  9840. #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
  9841. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED10_MASK 0x3
  9842. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED10_SHIFT 2
  9843. #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_MASK 0x3
  9844. #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  9845. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1
  9846. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 6
  9847. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1
  9848. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 7
  9849. u8 flags8;
  9850. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1
  9851. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 0
  9852. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3EN_MASK 0x1
  9853. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT 1
  9854. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4EN_MASK 0x1
  9855. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT 2
  9856. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5EN_MASK 0x1
  9857. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT 3
  9858. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6EN_MASK 0x1
  9859. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT 4
  9860. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7EN_MASK 0x1
  9861. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF7EN_SHIFT 5
  9862. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8EN_MASK 0x1
  9863. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF8EN_SHIFT 6
  9864. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9EN_MASK 0x1
  9865. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF9EN_SHIFT 7
  9866. u8 flags9;
  9867. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10EN_MASK 0x1
  9868. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF10EN_SHIFT 0
  9869. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11EN_MASK 0x1
  9870. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF11EN_SHIFT 1
  9871. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12EN_MASK 0x1
  9872. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF12EN_SHIFT 2
  9873. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13EN_MASK 0x1
  9874. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF13EN_SHIFT 3
  9875. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14EN_MASK 0x1
  9876. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF14EN_SHIFT 4
  9877. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15EN_MASK 0x1
  9878. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF15EN_SHIFT 5
  9879. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16EN_MASK 0x1
  9880. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF16EN_SHIFT 6
  9881. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17EN_MASK 0x1
  9882. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF17EN_SHIFT 7
  9883. u8 flags10;
  9884. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18EN_MASK 0x1
  9885. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF18EN_SHIFT 0
  9886. #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_EN_MASK 0x1
  9887. #define E4_XSTORM_FCOE_CONN_AG_CTX_DQ_CF_EN_SHIFT 1
  9888. #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
  9889. #define E4_XSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
  9890. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED11_MASK 0x1
  9891. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED11_SHIFT 3
  9892. #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
  9893. #define E4_XSTORM_FCOE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  9894. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23EN_MASK 0x1
  9895. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23EN_SHIFT 5
  9896. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED12_MASK 0x1
  9897. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED12_SHIFT 6
  9898. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED13_MASK 0x1
  9899. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED13_SHIFT 7
  9900. u8 flags11;
  9901. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED14_MASK 0x1
  9902. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED14_SHIFT 0
  9903. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED15_MASK 0x1
  9904. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED15_SHIFT 1
  9905. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED16_MASK 0x1
  9906. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESERVED16_SHIFT 2
  9907. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK 0x1
  9908. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT 3
  9909. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK 0x1
  9910. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT 4
  9911. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK 0x1
  9912. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT 5
  9913. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
  9914. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  9915. #define E4_XSTORM_FCOE_CONN_AG_CTX_XFERQ_DECISION_EN_MASK 0x1
  9916. #define E4_XSTORM_FCOE_CONN_AG_CTX_XFERQ_DECISION_EN_SHIFT 7
  9917. u8 flags12;
  9918. #define E4_XSTORM_FCOE_CONN_AG_CTX_SQ_DECISION_EN_MASK 0x1
  9919. #define E4_XSTORM_FCOE_CONN_AG_CTX_SQ_DECISION_EN_SHIFT 0
  9920. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE11EN_MASK 0x1
  9921. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE11EN_SHIFT 1
  9922. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
  9923. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  9924. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
  9925. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  9926. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE14EN_MASK 0x1
  9927. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE14EN_SHIFT 4
  9928. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE15EN_MASK 0x1
  9929. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE15EN_SHIFT 5
  9930. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE16EN_MASK 0x1
  9931. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE16EN_SHIFT 6
  9932. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE17EN_MASK 0x1
  9933. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE17EN_SHIFT 7
  9934. u8 flags13;
  9935. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESPQ_DECISION_EN_MASK 0x1
  9936. #define E4_XSTORM_FCOE_CONN_AG_CTX_RESPQ_DECISION_EN_SHIFT 0
  9937. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE19EN_MASK 0x1
  9938. #define E4_XSTORM_FCOE_CONN_AG_CTX_RULE19EN_SHIFT 1
  9939. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
  9940. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
  9941. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
  9942. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
  9943. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
  9944. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  9945. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
  9946. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
  9947. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
  9948. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  9949. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
  9950. #define E4_XSTORM_FCOE_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  9951. u8 flags14;
  9952. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT16_MASK 0x1
  9953. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT16_SHIFT 0
  9954. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT17_MASK 0x1
  9955. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT17_SHIFT 1
  9956. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT18_MASK 0x1
  9957. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT18_SHIFT 2
  9958. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT19_MASK 0x1
  9959. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT19_SHIFT 3
  9960. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT20_MASK 0x1
  9961. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT20_SHIFT 4
  9962. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT21_MASK 0x1
  9963. #define E4_XSTORM_FCOE_CONN_AG_CTX_BIT21_SHIFT 5
  9964. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23_MASK 0x3
  9965. #define E4_XSTORM_FCOE_CONN_AG_CTX_CF23_SHIFT 6
  9966. u8 byte2;
  9967. __le16 physical_q0;
  9968. __le16 word1;
  9969. __le16 word2;
  9970. __le16 sq_cons;
  9971. __le16 sq_prod;
  9972. __le16 xferq_prod;
  9973. __le16 xferq_cons;
  9974. u8 byte3;
  9975. u8 byte4;
  9976. u8 byte5;
  9977. u8 byte6;
  9978. __le32 remain_io;
  9979. __le32 reg1;
  9980. __le32 reg2;
  9981. __le32 reg3;
  9982. __le32 reg4;
  9983. __le32 reg5;
  9984. __le32 reg6;
  9985. __le16 respq_prod;
  9986. __le16 respq_cons;
  9987. __le16 word9;
  9988. __le16 word10;
  9989. __le32 reg7;
  9990. __le32 reg8;
  9991. };
  9992. /* The fcoe storm context of Ustorm */
  9993. struct ustorm_fcoe_conn_st_ctx {
  9994. struct regpair respq_pbl_addr;
  9995. __le16 num_pages_in_pbl;
  9996. u8 ptu_log_page_size;
  9997. u8 log_page_size;
  9998. __le16 respq_prod;
  9999. u8 reserved[2];
  10000. };
  10001. struct e4_tstorm_fcoe_conn_ag_ctx {
  10002. u8 reserved0;
  10003. u8 state;
  10004. u8 flags0;
  10005. #define E4_TSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  10006. #define E4_TSTORM_FCOE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  10007. #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1
  10008. #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1
  10009. #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT2_MASK 0x1
  10010. #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT2_SHIFT 2
  10011. #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT3_MASK 0x1
  10012. #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT3_SHIFT 3
  10013. #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT4_MASK 0x1
  10014. #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT4_SHIFT 4
  10015. #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT5_MASK 0x1
  10016. #define E4_TSTORM_FCOE_CONN_AG_CTX_BIT5_SHIFT 5
  10017. #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_MASK 0x3
  10018. #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_SHIFT 6
  10019. u8 flags1;
  10020. #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_MASK 0x3
  10021. #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_SHIFT 0
  10022. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3
  10023. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 2
  10024. #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_MASK 0x3
  10025. #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_SHIFT 4
  10026. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4_MASK 0x3
  10027. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4_SHIFT 6
  10028. u8 flags2;
  10029. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5_MASK 0x3
  10030. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5_SHIFT 0
  10031. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6_MASK 0x3
  10032. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6_SHIFT 2
  10033. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7_MASK 0x3
  10034. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7_SHIFT 4
  10035. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8_MASK 0x3
  10036. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8_SHIFT 6
  10037. u8 flags3;
  10038. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9_MASK 0x3
  10039. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9_SHIFT 0
  10040. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10_MASK 0x3
  10041. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10_SHIFT 2
  10042. #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_EN_MASK 0x1
  10043. #define E4_TSTORM_FCOE_CONN_AG_CTX_DUMMY_TIMER_CF_EN_SHIFT 4
  10044. #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_EN_MASK 0x1
  10045. #define E4_TSTORM_FCOE_CONN_AG_CTX_FLUSH_Q0_CF_EN_SHIFT 5
  10046. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1
  10047. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 6
  10048. #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_MASK 0x1
  10049. #define E4_TSTORM_FCOE_CONN_AG_CTX_TIMER_STOP_ALL_CF_EN_SHIFT 7
  10050. u8 flags4;
  10051. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4EN_MASK 0x1
  10052. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT 0
  10053. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5EN_MASK 0x1
  10054. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT 1
  10055. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6EN_MASK 0x1
  10056. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT 2
  10057. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7EN_MASK 0x1
  10058. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF7EN_SHIFT 3
  10059. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8EN_MASK 0x1
  10060. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF8EN_SHIFT 4
  10061. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9EN_MASK 0x1
  10062. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF9EN_SHIFT 5
  10063. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10EN_MASK 0x1
  10064. #define E4_TSTORM_FCOE_CONN_AG_CTX_CF10EN_SHIFT 6
  10065. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1
  10066. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 7
  10067. u8 flags5;
  10068. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1
  10069. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 0
  10070. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1
  10071. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 1
  10072. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1
  10073. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 2
  10074. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1
  10075. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 3
  10076. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK 0x1
  10077. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT 4
  10078. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK 0x1
  10079. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT 5
  10080. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK 0x1
  10081. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT 6
  10082. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK 0x1
  10083. #define E4_TSTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT 7
  10084. __le32 reg0;
  10085. __le32 reg1;
  10086. };
  10087. struct e4_ustorm_fcoe_conn_ag_ctx {
  10088. u8 byte0;
  10089. u8 byte1;
  10090. u8 flags0;
  10091. #define E4_USTORM_FCOE_CONN_AG_CTX_BIT0_MASK 0x1
  10092. #define E4_USTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT 0
  10093. #define E4_USTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1
  10094. #define E4_USTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1
  10095. #define E4_USTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3
  10096. #define E4_USTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 2
  10097. #define E4_USTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3
  10098. #define E4_USTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 4
  10099. #define E4_USTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3
  10100. #define E4_USTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 6
  10101. u8 flags1;
  10102. #define E4_USTORM_FCOE_CONN_AG_CTX_CF3_MASK 0x3
  10103. #define E4_USTORM_FCOE_CONN_AG_CTX_CF3_SHIFT 0
  10104. #define E4_USTORM_FCOE_CONN_AG_CTX_CF4_MASK 0x3
  10105. #define E4_USTORM_FCOE_CONN_AG_CTX_CF4_SHIFT 2
  10106. #define E4_USTORM_FCOE_CONN_AG_CTX_CF5_MASK 0x3
  10107. #define E4_USTORM_FCOE_CONN_AG_CTX_CF5_SHIFT 4
  10108. #define E4_USTORM_FCOE_CONN_AG_CTX_CF6_MASK 0x3
  10109. #define E4_USTORM_FCOE_CONN_AG_CTX_CF6_SHIFT 6
  10110. u8 flags2;
  10111. #define E4_USTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1
  10112. #define E4_USTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 0
  10113. #define E4_USTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1
  10114. #define E4_USTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 1
  10115. #define E4_USTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1
  10116. #define E4_USTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 2
  10117. #define E4_USTORM_FCOE_CONN_AG_CTX_CF3EN_MASK 0x1
  10118. #define E4_USTORM_FCOE_CONN_AG_CTX_CF3EN_SHIFT 3
  10119. #define E4_USTORM_FCOE_CONN_AG_CTX_CF4EN_MASK 0x1
  10120. #define E4_USTORM_FCOE_CONN_AG_CTX_CF4EN_SHIFT 4
  10121. #define E4_USTORM_FCOE_CONN_AG_CTX_CF5EN_MASK 0x1
  10122. #define E4_USTORM_FCOE_CONN_AG_CTX_CF5EN_SHIFT 5
  10123. #define E4_USTORM_FCOE_CONN_AG_CTX_CF6EN_MASK 0x1
  10124. #define E4_USTORM_FCOE_CONN_AG_CTX_CF6EN_SHIFT 6
  10125. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1
  10126. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 7
  10127. u8 flags3;
  10128. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1
  10129. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 0
  10130. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1
  10131. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 1
  10132. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1
  10133. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 2
  10134. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1
  10135. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 3
  10136. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE5EN_MASK 0x1
  10137. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE5EN_SHIFT 4
  10138. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE6EN_MASK 0x1
  10139. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE6EN_SHIFT 5
  10140. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE7EN_MASK 0x1
  10141. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE7EN_SHIFT 6
  10142. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE8EN_MASK 0x1
  10143. #define E4_USTORM_FCOE_CONN_AG_CTX_RULE8EN_SHIFT 7
  10144. u8 byte2;
  10145. u8 byte3;
  10146. __le16 word0;
  10147. __le16 word1;
  10148. __le32 reg0;
  10149. __le32 reg1;
  10150. __le32 reg2;
  10151. __le32 reg3;
  10152. __le16 word2;
  10153. __le16 word3;
  10154. };
  10155. /* The fcoe storm context of Tstorm */
  10156. struct tstorm_fcoe_conn_st_ctx {
  10157. __le16 stat_ram_addr;
  10158. __le16 rx_max_fc_payload_len;
  10159. __le16 e_d_tov_val;
  10160. u8 flags;
  10161. #define TSTORM_FCOE_CONN_ST_CTX_INC_SEQ_CNT_MASK 0x1
  10162. #define TSTORM_FCOE_CONN_ST_CTX_INC_SEQ_CNT_SHIFT 0
  10163. #define TSTORM_FCOE_CONN_ST_CTX_SUPPORT_CONF_MASK 0x1
  10164. #define TSTORM_FCOE_CONN_ST_CTX_SUPPORT_CONF_SHIFT 1
  10165. #define TSTORM_FCOE_CONN_ST_CTX_DEF_Q_IDX_MASK 0x3F
  10166. #define TSTORM_FCOE_CONN_ST_CTX_DEF_Q_IDX_SHIFT 2
  10167. u8 timers_cleanup_invocation_cnt;
  10168. __le32 reserved1[2];
  10169. __le32 dst_mac_address_bytes_0_to_3;
  10170. __le16 dst_mac_address_bytes_4_to_5;
  10171. __le16 ramrod_echo;
  10172. u8 flags1;
  10173. #define TSTORM_FCOE_CONN_ST_CTX_MODE_MASK 0x3
  10174. #define TSTORM_FCOE_CONN_ST_CTX_MODE_SHIFT 0
  10175. #define TSTORM_FCOE_CONN_ST_CTX_RESERVED_MASK 0x3F
  10176. #define TSTORM_FCOE_CONN_ST_CTX_RESERVED_SHIFT 2
  10177. u8 cq_relative_offset;
  10178. u8 cmdq_relative_offset;
  10179. u8 bdq_resource_id;
  10180. u8 reserved0[4];
  10181. };
  10182. struct e4_mstorm_fcoe_conn_ag_ctx {
  10183. u8 byte0;
  10184. u8 byte1;
  10185. u8 flags0;
  10186. #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT0_MASK 0x1
  10187. #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT 0
  10188. #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1
  10189. #define E4_MSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1
  10190. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3
  10191. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 2
  10192. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3
  10193. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 4
  10194. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3
  10195. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 6
  10196. u8 flags1;
  10197. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1
  10198. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 0
  10199. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1
  10200. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 1
  10201. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1
  10202. #define E4_MSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 2
  10203. #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1
  10204. #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 3
  10205. #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1
  10206. #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 4
  10207. #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1
  10208. #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 5
  10209. #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1
  10210. #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 6
  10211. #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1
  10212. #define E4_MSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 7
  10213. __le16 word0;
  10214. __le16 word1;
  10215. __le32 reg0;
  10216. __le32 reg1;
  10217. };
  10218. /* Fast path part of the fcoe storm context of Mstorm */
  10219. struct fcoe_mstorm_fcoe_conn_st_ctx_fp {
  10220. __le16 xfer_prod;
  10221. u8 num_cqs;
  10222. u8 reserved1;
  10223. u8 protection_info;
  10224. #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_SUPPORT_PROTECTION_MASK 0x1
  10225. #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_SUPPORT_PROTECTION_SHIFT 0
  10226. #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_VALID_MASK 0x1
  10227. #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_VALID_SHIFT 1
  10228. #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_RESERVED0_MASK 0x3F
  10229. #define FCOE_MSTORM_FCOE_CONN_ST_CTX_FP_RESERVED0_SHIFT 2
  10230. u8 q_relative_offset;
  10231. u8 reserved2[2];
  10232. };
  10233. /* Non fast path part of the fcoe storm context of Mstorm */
  10234. struct fcoe_mstorm_fcoe_conn_st_ctx_non_fp {
  10235. __le16 conn_id;
  10236. __le16 stat_ram_addr;
  10237. __le16 num_pages_in_pbl;
  10238. u8 ptu_log_page_size;
  10239. u8 log_page_size;
  10240. __le16 unsolicited_cq_count;
  10241. __le16 cmdq_count;
  10242. u8 bdq_resource_id;
  10243. u8 reserved0[3];
  10244. struct regpair xferq_pbl_addr;
  10245. struct regpair reserved1;
  10246. struct regpair reserved2[3];
  10247. };
  10248. /* The fcoe storm context of Mstorm */
  10249. struct mstorm_fcoe_conn_st_ctx {
  10250. struct fcoe_mstorm_fcoe_conn_st_ctx_fp fp;
  10251. struct fcoe_mstorm_fcoe_conn_st_ctx_non_fp non_fp;
  10252. };
  10253. /* fcoe connection context */
  10254. struct e4_fcoe_conn_context {
  10255. struct ystorm_fcoe_conn_st_ctx ystorm_st_context;
  10256. struct pstorm_fcoe_conn_st_ctx pstorm_st_context;
  10257. struct regpair pstorm_st_padding[2];
  10258. struct xstorm_fcoe_conn_st_ctx xstorm_st_context;
  10259. struct e4_xstorm_fcoe_conn_ag_ctx xstorm_ag_context;
  10260. struct regpair xstorm_ag_padding[6];
  10261. struct ustorm_fcoe_conn_st_ctx ustorm_st_context;
  10262. struct regpair ustorm_st_padding[2];
  10263. struct e4_tstorm_fcoe_conn_ag_ctx tstorm_ag_context;
  10264. struct regpair tstorm_ag_padding[2];
  10265. struct timers_context timer_context;
  10266. struct e4_ustorm_fcoe_conn_ag_ctx ustorm_ag_context;
  10267. struct tstorm_fcoe_conn_st_ctx tstorm_st_context;
  10268. struct e4_mstorm_fcoe_conn_ag_ctx mstorm_ag_context;
  10269. struct mstorm_fcoe_conn_st_ctx mstorm_st_context;
  10270. };
  10271. /* FCoE connection offload params passed by driver to FW in FCoE offload
  10272. * ramrod.
  10273. */
  10274. struct fcoe_conn_offload_ramrod_params {
  10275. struct fcoe_conn_offload_ramrod_data offload_ramrod_data;
  10276. };
  10277. /* FCoE connection terminate params passed by driver to FW in FCoE terminate
  10278. * conn ramrod.
  10279. */
  10280. struct fcoe_conn_terminate_ramrod_params {
  10281. struct fcoe_conn_terminate_ramrod_data terminate_ramrod_data;
  10282. };
  10283. /* FCoE event type */
  10284. enum fcoe_event_type {
  10285. FCOE_EVENT_INIT_FUNC,
  10286. FCOE_EVENT_DESTROY_FUNC,
  10287. FCOE_EVENT_STAT_FUNC,
  10288. FCOE_EVENT_OFFLOAD_CONN,
  10289. FCOE_EVENT_TERMINATE_CONN,
  10290. FCOE_EVENT_ERROR,
  10291. MAX_FCOE_EVENT_TYPE
  10292. };
  10293. /* FCoE init params passed by driver to FW in FCoE init ramrod */
  10294. struct fcoe_init_ramrod_params {
  10295. struct fcoe_init_func_ramrod_data init_ramrod_data;
  10296. };
  10297. /* FCoE ramrod Command IDs */
  10298. enum fcoe_ramrod_cmd_id {
  10299. FCOE_RAMROD_CMD_ID_INIT_FUNC,
  10300. FCOE_RAMROD_CMD_ID_DESTROY_FUNC,
  10301. FCOE_RAMROD_CMD_ID_STAT_FUNC,
  10302. FCOE_RAMROD_CMD_ID_OFFLOAD_CONN,
  10303. FCOE_RAMROD_CMD_ID_TERMINATE_CONN,
  10304. MAX_FCOE_RAMROD_CMD_ID
  10305. };
  10306. /* FCoE statistics params buffer passed by driver to FW in FCoE statistics
  10307. * ramrod.
  10308. */
  10309. struct fcoe_stat_ramrod_params {
  10310. struct fcoe_stat_ramrod_data stat_ramrod_data;
  10311. };
  10312. struct e4_ystorm_fcoe_conn_ag_ctx {
  10313. u8 byte0;
  10314. u8 byte1;
  10315. u8 flags0;
  10316. #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT0_MASK 0x1
  10317. #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT0_SHIFT 0
  10318. #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT1_MASK 0x1
  10319. #define E4_YSTORM_FCOE_CONN_AG_CTX_BIT1_SHIFT 1
  10320. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0_MASK 0x3
  10321. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0_SHIFT 2
  10322. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1_MASK 0x3
  10323. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1_SHIFT 4
  10324. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2_MASK 0x3
  10325. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2_SHIFT 6
  10326. u8 flags1;
  10327. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0EN_MASK 0x1
  10328. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF0EN_SHIFT 0
  10329. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1EN_MASK 0x1
  10330. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF1EN_SHIFT 1
  10331. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2EN_MASK 0x1
  10332. #define E4_YSTORM_FCOE_CONN_AG_CTX_CF2EN_SHIFT 2
  10333. #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE0EN_MASK 0x1
  10334. #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE0EN_SHIFT 3
  10335. #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE1EN_MASK 0x1
  10336. #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE1EN_SHIFT 4
  10337. #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE2EN_MASK 0x1
  10338. #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE2EN_SHIFT 5
  10339. #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE3EN_MASK 0x1
  10340. #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE3EN_SHIFT 6
  10341. #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE4EN_MASK 0x1
  10342. #define E4_YSTORM_FCOE_CONN_AG_CTX_RULE4EN_SHIFT 7
  10343. u8 byte2;
  10344. u8 byte3;
  10345. __le16 word0;
  10346. __le32 reg0;
  10347. __le32 reg1;
  10348. __le16 word1;
  10349. __le16 word2;
  10350. __le16 word3;
  10351. __le16 word4;
  10352. __le32 reg2;
  10353. __le32 reg3;
  10354. };
  10355. /* The iscsi storm connection context of Ystorm */
  10356. struct ystorm_iscsi_conn_st_ctx {
  10357. __le32 reserved[8];
  10358. };
  10359. /* Combined iSCSI and TCP storm connection of Pstorm */
  10360. struct pstorm_iscsi_tcp_conn_st_ctx {
  10361. __le32 tcp[32];
  10362. __le32 iscsi[4];
  10363. };
  10364. /* The combined tcp and iscsi storm context of Xstorm */
  10365. struct xstorm_iscsi_tcp_conn_st_ctx {
  10366. __le32 reserved_tcp[4];
  10367. __le32 reserved_iscsi[44];
  10368. };
  10369. struct e4_xstorm_iscsi_conn_ag_ctx {
  10370. u8 cdu_validation;
  10371. u8 state;
  10372. u8 flags0;
  10373. #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  10374. #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  10375. #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM1_MASK 0x1
  10376. #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM1_SHIFT 1
  10377. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED1_MASK 0x1
  10378. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED1_SHIFT 2
  10379. #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  10380. #define E4_XSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  10381. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT4_MASK 0x1
  10382. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT4_SHIFT 4
  10383. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED2_MASK 0x1
  10384. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED2_SHIFT 5
  10385. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT6_MASK 0x1
  10386. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT6_SHIFT 6
  10387. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT7_MASK 0x1
  10388. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT7_SHIFT 7
  10389. u8 flags1;
  10390. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT8_MASK 0x1
  10391. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT8_SHIFT 0
  10392. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT9_MASK 0x1
  10393. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT9_SHIFT 1
  10394. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT10_MASK 0x1
  10395. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT10_SHIFT 2
  10396. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT11_MASK 0x1
  10397. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT11_SHIFT 3
  10398. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT12_MASK 0x1
  10399. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT12_SHIFT 4
  10400. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT13_MASK 0x1
  10401. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT13_SHIFT 5
  10402. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT14_MASK 0x1
  10403. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT14_SHIFT 6
  10404. #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_TRUNCATE_MASK 0x1
  10405. #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_TRUNCATE_SHIFT 7
  10406. u8 flags2;
  10407. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3
  10408. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 0
  10409. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3
  10410. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 2
  10411. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3
  10412. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 4
  10413. #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3
  10414. #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 6
  10415. u8 flags3;
  10416. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4_MASK 0x3
  10417. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT 0
  10418. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5_MASK 0x3
  10419. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT 2
  10420. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6_MASK 0x3
  10421. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT 4
  10422. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7_MASK 0x3
  10423. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7_SHIFT 6
  10424. u8 flags4;
  10425. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8_MASK 0x3
  10426. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8_SHIFT 0
  10427. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9_MASK 0x3
  10428. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9_SHIFT 2
  10429. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10_MASK 0x3
  10430. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10_SHIFT 4
  10431. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11_MASK 0x3
  10432. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11_SHIFT 6
  10433. u8 flags5;
  10434. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12_MASK 0x3
  10435. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12_SHIFT 0
  10436. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13_MASK 0x3
  10437. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13_SHIFT 2
  10438. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14_MASK 0x3
  10439. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14_SHIFT 4
  10440. #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_MASK 0x3
  10441. #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_SHIFT 6
  10442. u8 flags6;
  10443. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16_MASK 0x3
  10444. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16_SHIFT 0
  10445. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17_MASK 0x3
  10446. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17_SHIFT 2
  10447. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18_MASK 0x3
  10448. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18_SHIFT 4
  10449. #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_MASK 0x3
  10450. #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_SHIFT 6
  10451. u8 flags7;
  10452. #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_MASK 0x3
  10453. #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_SHIFT 0
  10454. #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_MASK 0x3
  10455. #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_SHIFT 2
  10456. #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_MASK 0x3
  10457. #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  10458. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1
  10459. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 6
  10460. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1
  10461. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 7
  10462. u8 flags8;
  10463. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1
  10464. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 0
  10465. #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1
  10466. #define E4_XSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 1
  10467. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK 0x1
  10468. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT 2
  10469. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK 0x1
  10470. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT 3
  10471. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK 0x1
  10472. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT 4
  10473. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7EN_MASK 0x1
  10474. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF7EN_SHIFT 5
  10475. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8EN_MASK 0x1
  10476. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF8EN_SHIFT 6
  10477. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9EN_MASK 0x1
  10478. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF9EN_SHIFT 7
  10479. u8 flags9;
  10480. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10EN_MASK 0x1
  10481. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF10EN_SHIFT 0
  10482. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11EN_MASK 0x1
  10483. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF11EN_SHIFT 1
  10484. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12EN_MASK 0x1
  10485. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF12EN_SHIFT 2
  10486. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13EN_MASK 0x1
  10487. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF13EN_SHIFT 3
  10488. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14EN_MASK 0x1
  10489. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF14EN_SHIFT 4
  10490. #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_EN_MASK 0x1
  10491. #define E4_XSTORM_ISCSI_CONN_AG_CTX_UPDATE_STATE_TO_BASE_CF_EN_SHIFT 5
  10492. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16EN_MASK 0x1
  10493. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF16EN_SHIFT 6
  10494. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17EN_MASK 0x1
  10495. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF17EN_SHIFT 7
  10496. u8 flags10;
  10497. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18EN_MASK 0x1
  10498. #define E4_XSTORM_ISCSI_CONN_AG_CTX_CF18EN_SHIFT 0
  10499. #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_EN_MASK 0x1
  10500. #define E4_XSTORM_ISCSI_CONN_AG_CTX_DQ_FLUSH_EN_SHIFT 1
  10501. #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_EN_MASK 0x1
  10502. #define E4_XSTORM_ISCSI_CONN_AG_CTX_MST_XCM_Q0_FLUSH_CF_EN_SHIFT 2
  10503. #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_EN_MASK 0x1
  10504. #define E4_XSTORM_ISCSI_CONN_AG_CTX_UST_XCM_Q1_FLUSH_CF_EN_SHIFT 3
  10505. #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1
  10506. #define E4_XSTORM_ISCSI_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  10507. #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_EN_MASK 0x1
  10508. #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_EN_SHIFT 5
  10509. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1
  10510. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 6
  10511. #define E4_XSTORM_ISCSI_CONN_AG_CTX_MORE_TO_SEND_DEC_RULE_EN_MASK 0x1
  10512. #define E4_XSTORM_ISCSI_CONN_AG_CTX_MORE_TO_SEND_DEC_RULE_EN_SHIFT 7
  10513. u8 flags11;
  10514. #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_BLOCKED_EN_MASK 0x1
  10515. #define E4_XSTORM_ISCSI_CONN_AG_CTX_TX_BLOCKED_EN_SHIFT 0
  10516. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1
  10517. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 1
  10518. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED3_MASK 0x1
  10519. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RESERVED3_SHIFT 2
  10520. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK 0x1
  10521. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT 3
  10522. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK 0x1
  10523. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT 4
  10524. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK 0x1
  10525. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT 5
  10526. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED1_MASK 0x1
  10527. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  10528. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE9EN_MASK 0x1
  10529. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE9EN_SHIFT 7
  10530. u8 flags12;
  10531. #define E4_XSTORM_ISCSI_CONN_AG_CTX_SQ_DEC_RULE_EN_MASK 0x1
  10532. #define E4_XSTORM_ISCSI_CONN_AG_CTX_SQ_DEC_RULE_EN_SHIFT 0
  10533. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE11EN_MASK 0x1
  10534. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE11EN_SHIFT 1
  10535. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED2_MASK 0x1
  10536. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  10537. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED3_MASK 0x1
  10538. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  10539. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE14EN_MASK 0x1
  10540. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE14EN_SHIFT 4
  10541. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE15EN_MASK 0x1
  10542. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE15EN_SHIFT 5
  10543. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE16EN_MASK 0x1
  10544. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE16EN_SHIFT 6
  10545. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE17EN_MASK 0x1
  10546. #define E4_XSTORM_ISCSI_CONN_AG_CTX_RULE17EN_SHIFT 7
  10547. u8 flags13;
  10548. #define E4_XSTORM_ISCSI_CONN_AG_CTX_R2TQ_DEC_RULE_EN_MASK 0x1
  10549. #define E4_XSTORM_ISCSI_CONN_AG_CTX_R2TQ_DEC_RULE_EN_SHIFT 0
  10550. #define E4_XSTORM_ISCSI_CONN_AG_CTX_HQ_DEC_RULE_EN_MASK 0x1
  10551. #define E4_XSTORM_ISCSI_CONN_AG_CTX_HQ_DEC_RULE_EN_SHIFT 1
  10552. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED4_MASK 0x1
  10553. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
  10554. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED5_MASK 0x1
  10555. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
  10556. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED6_MASK 0x1
  10557. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  10558. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED7_MASK 0x1
  10559. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
  10560. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED8_MASK 0x1
  10561. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  10562. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED9_MASK 0x1
  10563. #define E4_XSTORM_ISCSI_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  10564. u8 flags14;
  10565. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT16_MASK 0x1
  10566. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT16_SHIFT 0
  10567. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT17_MASK 0x1
  10568. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT17_SHIFT 1
  10569. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT18_MASK 0x1
  10570. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT18_SHIFT 2
  10571. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT19_MASK 0x1
  10572. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT19_SHIFT 3
  10573. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT20_MASK 0x1
  10574. #define E4_XSTORM_ISCSI_CONN_AG_CTX_BIT20_SHIFT 4
  10575. #define E4_XSTORM_ISCSI_CONN_AG_CTX_DUMMY_READ_DONE_MASK 0x1
  10576. #define E4_XSTORM_ISCSI_CONN_AG_CTX_DUMMY_READ_DONE_SHIFT 5
  10577. #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_MASK 0x3
  10578. #define E4_XSTORM_ISCSI_CONN_AG_CTX_PROC_ONLY_CLEANUP_SHIFT 6
  10579. u8 byte2;
  10580. __le16 physical_q0;
  10581. __le16 physical_q1;
  10582. __le16 dummy_dorq_var;
  10583. __le16 sq_cons;
  10584. __le16 sq_prod;
  10585. __le16 word5;
  10586. __le16 slow_io_total_data_tx_update;
  10587. u8 byte3;
  10588. u8 byte4;
  10589. u8 byte5;
  10590. u8 byte6;
  10591. __le32 reg0;
  10592. __le32 reg1;
  10593. __le32 reg2;
  10594. __le32 more_to_send_seq;
  10595. __le32 reg4;
  10596. __le32 reg5;
  10597. __le32 hq_scan_next_relevant_ack;
  10598. __le16 r2tq_prod;
  10599. __le16 r2tq_cons;
  10600. __le16 hq_prod;
  10601. __le16 hq_cons;
  10602. __le32 remain_seq;
  10603. __le32 bytes_to_next_pdu;
  10604. __le32 hq_tcp_seq;
  10605. u8 byte7;
  10606. u8 byte8;
  10607. u8 byte9;
  10608. u8 byte10;
  10609. u8 byte11;
  10610. u8 byte12;
  10611. u8 byte13;
  10612. u8 byte14;
  10613. u8 byte15;
  10614. u8 e5_reserved;
  10615. __le16 word11;
  10616. __le32 reg10;
  10617. __le32 reg11;
  10618. __le32 exp_stat_sn;
  10619. __le32 ongoing_fast_rxmit_seq;
  10620. __le32 reg14;
  10621. __le32 reg15;
  10622. __le32 reg16;
  10623. __le32 reg17;
  10624. };
  10625. struct e4_tstorm_iscsi_conn_ag_ctx {
  10626. u8 reserved0;
  10627. u8 state;
  10628. u8 flags0;
  10629. #define E4_TSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  10630. #define E4_TSTORM_ISCSI_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  10631. #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1
  10632. #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1
  10633. #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT2_MASK 0x1
  10634. #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT2_SHIFT 2
  10635. #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT3_MASK 0x1
  10636. #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT3_SHIFT 3
  10637. #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT4_MASK 0x1
  10638. #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT4_SHIFT 4
  10639. #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT5_MASK 0x1
  10640. #define E4_TSTORM_ISCSI_CONN_AG_CTX_BIT5_SHIFT 5
  10641. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3
  10642. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 6
  10643. u8 flags1;
  10644. #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_MASK 0x3
  10645. #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_SHIFT 0
  10646. #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_MASK 0x3
  10647. #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_SHIFT 2
  10648. #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_MASK 0x3
  10649. #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_SHIFT 4
  10650. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4_MASK 0x3
  10651. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT 6
  10652. u8 flags2;
  10653. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5_MASK 0x3
  10654. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT 0
  10655. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6_MASK 0x3
  10656. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT 2
  10657. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7_MASK 0x3
  10658. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7_SHIFT 4
  10659. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8_MASK 0x3
  10660. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8_SHIFT 6
  10661. u8 flags3;
  10662. #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_MASK 0x3
  10663. #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
  10664. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF10_MASK 0x3
  10665. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF10_SHIFT 2
  10666. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1
  10667. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 4
  10668. #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_EN_MASK 0x1
  10669. #define E4_TSTORM_ISCSI_CONN_AG_CTX_P2T_FLUSH_CF_EN_SHIFT 5
  10670. #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_EN_MASK 0x1
  10671. #define E4_TSTORM_ISCSI_CONN_AG_CTX_M2T_FLUSH_CF_EN_SHIFT 6
  10672. #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_MASK 0x1
  10673. #define E4_TSTORM_ISCSI_CONN_AG_CTX_TIMER_STOP_ALL_EN_SHIFT 7
  10674. u8 flags4;
  10675. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK 0x1
  10676. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT 0
  10677. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK 0x1
  10678. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT 1
  10679. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK 0x1
  10680. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT 2
  10681. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7EN_MASK 0x1
  10682. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF7EN_SHIFT 3
  10683. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8EN_MASK 0x1
  10684. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF8EN_SHIFT 4
  10685. #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1
  10686. #define E4_TSTORM_ISCSI_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 5
  10687. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF10EN_MASK 0x1
  10688. #define E4_TSTORM_ISCSI_CONN_AG_CTX_CF10EN_SHIFT 6
  10689. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1
  10690. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 7
  10691. u8 flags5;
  10692. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1
  10693. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 0
  10694. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1
  10695. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 1
  10696. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1
  10697. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 2
  10698. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1
  10699. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 3
  10700. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK 0x1
  10701. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT 4
  10702. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK 0x1
  10703. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT 5
  10704. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK 0x1
  10705. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT 6
  10706. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK 0x1
  10707. #define E4_TSTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT 7
  10708. __le32 reg0;
  10709. __le32 reg1;
  10710. __le32 rx_tcp_checksum_err_cnt;
  10711. __le32 reg3;
  10712. __le32 reg4;
  10713. __le32 reg5;
  10714. __le32 reg6;
  10715. __le32 reg7;
  10716. __le32 reg8;
  10717. u8 cid_offload_cnt;
  10718. u8 byte3;
  10719. __le16 word0;
  10720. };
  10721. struct e4_ustorm_iscsi_conn_ag_ctx {
  10722. u8 byte0;
  10723. u8 byte1;
  10724. u8 flags0;
  10725. #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT0_MASK 0x1
  10726. #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT 0
  10727. #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1
  10728. #define E4_USTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1
  10729. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3
  10730. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 2
  10731. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3
  10732. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 4
  10733. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3
  10734. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 6
  10735. u8 flags1;
  10736. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3_MASK 0x3
  10737. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3_SHIFT 0
  10738. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4_MASK 0x3
  10739. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4_SHIFT 2
  10740. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5_MASK 0x3
  10741. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5_SHIFT 4
  10742. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6_MASK 0x3
  10743. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6_SHIFT 6
  10744. u8 flags2;
  10745. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1
  10746. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 0
  10747. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1
  10748. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 1
  10749. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1
  10750. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 2
  10751. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3EN_MASK 0x1
  10752. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF3EN_SHIFT 3
  10753. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4EN_MASK 0x1
  10754. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF4EN_SHIFT 4
  10755. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5EN_MASK 0x1
  10756. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF5EN_SHIFT 5
  10757. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6EN_MASK 0x1
  10758. #define E4_USTORM_ISCSI_CONN_AG_CTX_CF6EN_SHIFT 6
  10759. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1
  10760. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 7
  10761. u8 flags3;
  10762. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1
  10763. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 0
  10764. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1
  10765. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 1
  10766. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1
  10767. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 2
  10768. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1
  10769. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 3
  10770. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE5EN_MASK 0x1
  10771. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE5EN_SHIFT 4
  10772. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE6EN_MASK 0x1
  10773. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE6EN_SHIFT 5
  10774. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE7EN_MASK 0x1
  10775. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE7EN_SHIFT 6
  10776. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE8EN_MASK 0x1
  10777. #define E4_USTORM_ISCSI_CONN_AG_CTX_RULE8EN_SHIFT 7
  10778. u8 byte2;
  10779. u8 byte3;
  10780. __le16 word0;
  10781. __le16 word1;
  10782. __le32 reg0;
  10783. __le32 reg1;
  10784. __le32 reg2;
  10785. __le32 reg3;
  10786. __le16 word2;
  10787. __le16 word3;
  10788. };
  10789. /* The iscsi storm connection context of Tstorm */
  10790. struct tstorm_iscsi_conn_st_ctx {
  10791. __le32 reserved[44];
  10792. };
  10793. struct e4_mstorm_iscsi_conn_ag_ctx {
  10794. u8 reserved;
  10795. u8 state;
  10796. u8 flags0;
  10797. #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK 0x1
  10798. #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT 0
  10799. #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1
  10800. #define E4_MSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1
  10801. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3
  10802. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 2
  10803. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3
  10804. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 4
  10805. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3
  10806. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 6
  10807. u8 flags1;
  10808. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1
  10809. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 0
  10810. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1
  10811. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 1
  10812. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1
  10813. #define E4_MSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 2
  10814. #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1
  10815. #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 3
  10816. #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1
  10817. #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 4
  10818. #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1
  10819. #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 5
  10820. #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1
  10821. #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 6
  10822. #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1
  10823. #define E4_MSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 7
  10824. __le16 word0;
  10825. __le16 word1;
  10826. __le32 reg0;
  10827. __le32 reg1;
  10828. };
  10829. /* Combined iSCSI and TCP storm connection of Mstorm */
  10830. struct mstorm_iscsi_tcp_conn_st_ctx {
  10831. __le32 reserved_tcp[20];
  10832. __le32 reserved_iscsi[12];
  10833. };
  10834. /* The iscsi storm context of Ustorm */
  10835. struct ustorm_iscsi_conn_st_ctx {
  10836. __le32 reserved[52];
  10837. };
  10838. /* iscsi connection context */
  10839. struct e4_iscsi_conn_context {
  10840. struct ystorm_iscsi_conn_st_ctx ystorm_st_context;
  10841. struct pstorm_iscsi_tcp_conn_st_ctx pstorm_st_context;
  10842. struct regpair pstorm_st_padding[2];
  10843. struct pb_context xpb2_context;
  10844. struct xstorm_iscsi_tcp_conn_st_ctx xstorm_st_context;
  10845. struct regpair xstorm_st_padding[2];
  10846. struct e4_xstorm_iscsi_conn_ag_ctx xstorm_ag_context;
  10847. struct e4_tstorm_iscsi_conn_ag_ctx tstorm_ag_context;
  10848. struct regpair tstorm_ag_padding[2];
  10849. struct timers_context timer_context;
  10850. struct e4_ustorm_iscsi_conn_ag_ctx ustorm_ag_context;
  10851. struct pb_context upb_context;
  10852. struct tstorm_iscsi_conn_st_ctx tstorm_st_context;
  10853. struct regpair tstorm_st_padding[2];
  10854. struct e4_mstorm_iscsi_conn_ag_ctx mstorm_ag_context;
  10855. struct mstorm_iscsi_tcp_conn_st_ctx mstorm_st_context;
  10856. struct ustorm_iscsi_conn_st_ctx ustorm_st_context;
  10857. };
  10858. /* iSCSI init params passed by driver to FW in iSCSI init ramrod */
  10859. struct iscsi_init_ramrod_params {
  10860. struct iscsi_spe_func_init iscsi_init_spe;
  10861. struct tcp_init_params tcp_init;
  10862. };
  10863. struct e4_ystorm_iscsi_conn_ag_ctx {
  10864. u8 byte0;
  10865. u8 byte1;
  10866. u8 flags0;
  10867. #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT0_MASK 0x1
  10868. #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT0_SHIFT 0
  10869. #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT1_MASK 0x1
  10870. #define E4_YSTORM_ISCSI_CONN_AG_CTX_BIT1_SHIFT 1
  10871. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0_MASK 0x3
  10872. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0_SHIFT 2
  10873. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1_MASK 0x3
  10874. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1_SHIFT 4
  10875. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2_MASK 0x3
  10876. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2_SHIFT 6
  10877. u8 flags1;
  10878. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0EN_MASK 0x1
  10879. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF0EN_SHIFT 0
  10880. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1EN_MASK 0x1
  10881. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF1EN_SHIFT 1
  10882. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2EN_MASK 0x1
  10883. #define E4_YSTORM_ISCSI_CONN_AG_CTX_CF2EN_SHIFT 2
  10884. #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_MASK 0x1
  10885. #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE0EN_SHIFT 3
  10886. #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_MASK 0x1
  10887. #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE1EN_SHIFT 4
  10888. #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_MASK 0x1
  10889. #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE2EN_SHIFT 5
  10890. #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_MASK 0x1
  10891. #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE3EN_SHIFT 6
  10892. #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_MASK 0x1
  10893. #define E4_YSTORM_ISCSI_CONN_AG_CTX_RULE4EN_SHIFT 7
  10894. u8 byte2;
  10895. u8 byte3;
  10896. __le16 word0;
  10897. __le32 reg0;
  10898. __le32 reg1;
  10899. __le16 word1;
  10900. __le16 word2;
  10901. __le16 word3;
  10902. __le16 word4;
  10903. __le32 reg2;
  10904. __le32 reg3;
  10905. };
  10906. #define MFW_TRACE_SIGNATURE 0x25071946
  10907. /* The trace in the buffer */
  10908. #define MFW_TRACE_EVENTID_MASK 0x00ffff
  10909. #define MFW_TRACE_PRM_SIZE_MASK 0x0f0000
  10910. #define MFW_TRACE_PRM_SIZE_SHIFT 16
  10911. #define MFW_TRACE_ENTRY_SIZE 3
  10912. struct mcp_trace {
  10913. u32 signature; /* Help to identify that the trace is valid */
  10914. u32 size; /* the size of the trace buffer in bytes */
  10915. u32 curr_level; /* 2 - all will be written to the buffer
  10916. * 1 - debug trace will not be written
  10917. * 0 - just errors will be written to the buffer
  10918. */
  10919. u32 modules_mask[2]; /* a bit per module, 1 means write it, 0 means
  10920. * mask it.
  10921. */
  10922. /* Warning: the following pointers are assumed to be 32bits as they are
  10923. * used only in the MFW.
  10924. */
  10925. u32 trace_prod; /* The next trace will be written to this offset */
  10926. u32 trace_oldest; /* The oldest valid trace starts at this offset
  10927. * (usually very close after the current producer).
  10928. */
  10929. };
  10930. #define VF_MAX_STATIC 192
  10931. #define MCP_GLOB_PATH_MAX 2
  10932. #define MCP_PORT_MAX 2
  10933. #define MCP_GLOB_PORT_MAX 4
  10934. #define MCP_GLOB_FUNC_MAX 16
  10935. typedef u32 offsize_t; /* In DWORDS !!! */
  10936. /* Offset from the beginning of the MCP scratchpad */
  10937. #define OFFSIZE_OFFSET_SHIFT 0
  10938. #define OFFSIZE_OFFSET_MASK 0x0000ffff
  10939. /* Size of specific element (not the whole array if any) */
  10940. #define OFFSIZE_SIZE_SHIFT 16
  10941. #define OFFSIZE_SIZE_MASK 0xffff0000
  10942. #define SECTION_OFFSET(_offsize) ((((_offsize & \
  10943. OFFSIZE_OFFSET_MASK) >> \
  10944. OFFSIZE_OFFSET_SHIFT) << 2))
  10945. #define QED_SECTION_SIZE(_offsize) (((_offsize & \
  10946. OFFSIZE_SIZE_MASK) >> \
  10947. OFFSIZE_SIZE_SHIFT) << 2)
  10948. #define SECTION_ADDR(_offsize, idx) (MCP_REG_SCRATCH + \
  10949. SECTION_OFFSET(_offsize) + \
  10950. (QED_SECTION_SIZE(_offsize) * idx))
  10951. #define SECTION_OFFSIZE_ADDR(_pub_base, _section) \
  10952. (_pub_base + offsetof(struct mcp_public_data, sections[_section]))
  10953. /* PHY configuration */
  10954. struct eth_phy_cfg {
  10955. u32 speed;
  10956. #define ETH_SPEED_AUTONEG 0
  10957. #define ETH_SPEED_SMARTLINQ 0x8
  10958. u32 pause;
  10959. #define ETH_PAUSE_NONE 0x0
  10960. #define ETH_PAUSE_AUTONEG 0x1
  10961. #define ETH_PAUSE_RX 0x2
  10962. #define ETH_PAUSE_TX 0x4
  10963. u32 adv_speed;
  10964. u32 loopback_mode;
  10965. #define ETH_LOOPBACK_NONE (0)
  10966. #define ETH_LOOPBACK_INT_PHY (1)
  10967. #define ETH_LOOPBACK_EXT_PHY (2)
  10968. #define ETH_LOOPBACK_EXT (3)
  10969. #define ETH_LOOPBACK_MAC (4)
  10970. u32 eee_cfg;
  10971. #define EEE_CFG_EEE_ENABLED BIT(0)
  10972. #define EEE_CFG_TX_LPI BIT(1)
  10973. #define EEE_CFG_ADV_SPEED_1G BIT(2)
  10974. #define EEE_CFG_ADV_SPEED_10G BIT(3)
  10975. #define EEE_TX_TIMER_USEC_MASK (0xfffffff0)
  10976. #define EEE_TX_TIMER_USEC_OFFSET 4
  10977. #define EEE_TX_TIMER_USEC_BALANCED_TIME (0xa00)
  10978. #define EEE_TX_TIMER_USEC_AGGRESSIVE_TIME (0x100)
  10979. #define EEE_TX_TIMER_USEC_LATENCY_TIME (0x6000)
  10980. u32 feature_config_flags;
  10981. #define ETH_EEE_MODE_ADV_LPI (1 << 0)
  10982. };
  10983. struct port_mf_cfg {
  10984. u32 dynamic_cfg;
  10985. #define PORT_MF_CFG_OV_TAG_MASK 0x0000ffff
  10986. #define PORT_MF_CFG_OV_TAG_SHIFT 0
  10987. #define PORT_MF_CFG_OV_TAG_DEFAULT PORT_MF_CFG_OV_TAG_MASK
  10988. u32 reserved[1];
  10989. };
  10990. struct eth_stats {
  10991. u64 r64;
  10992. u64 r127;
  10993. u64 r255;
  10994. u64 r511;
  10995. u64 r1023;
  10996. u64 r1518;
  10997. union {
  10998. struct {
  10999. u64 r1522;
  11000. u64 r2047;
  11001. u64 r4095;
  11002. u64 r9216;
  11003. u64 r16383;
  11004. } bb0;
  11005. struct {
  11006. u64 unused1;
  11007. u64 r1519_to_max;
  11008. u64 unused2;
  11009. u64 unused3;
  11010. u64 unused4;
  11011. } ah0;
  11012. } u0;
  11013. u64 rfcs;
  11014. u64 rxcf;
  11015. u64 rxpf;
  11016. u64 rxpp;
  11017. u64 raln;
  11018. u64 rfcr;
  11019. u64 rovr;
  11020. u64 rjbr;
  11021. u64 rund;
  11022. u64 rfrg;
  11023. u64 t64;
  11024. u64 t127;
  11025. u64 t255;
  11026. u64 t511;
  11027. u64 t1023;
  11028. u64 t1518;
  11029. union {
  11030. struct {
  11031. u64 t2047;
  11032. u64 t4095;
  11033. u64 t9216;
  11034. u64 t16383;
  11035. } bb1;
  11036. struct {
  11037. u64 t1519_to_max;
  11038. u64 unused6;
  11039. u64 unused7;
  11040. u64 unused8;
  11041. } ah1;
  11042. } u1;
  11043. u64 txpf;
  11044. u64 txpp;
  11045. union {
  11046. struct {
  11047. u64 tlpiec;
  11048. u64 tncl;
  11049. } bb2;
  11050. struct {
  11051. u64 unused9;
  11052. u64 unused10;
  11053. } ah2;
  11054. } u2;
  11055. u64 rbyte;
  11056. u64 rxuca;
  11057. u64 rxmca;
  11058. u64 rxbca;
  11059. u64 rxpok;
  11060. u64 tbyte;
  11061. u64 txuca;
  11062. u64 txmca;
  11063. u64 txbca;
  11064. u64 txcf;
  11065. };
  11066. struct brb_stats {
  11067. u64 brb_truncate[8];
  11068. u64 brb_discard[8];
  11069. };
  11070. struct port_stats {
  11071. struct brb_stats brb;
  11072. struct eth_stats eth;
  11073. };
  11074. struct couple_mode_teaming {
  11075. u8 port_cmt[MCP_GLOB_PORT_MAX];
  11076. #define PORT_CMT_IN_TEAM (1 << 0)
  11077. #define PORT_CMT_PORT_ROLE (1 << 1)
  11078. #define PORT_CMT_PORT_INACTIVE (0 << 1)
  11079. #define PORT_CMT_PORT_ACTIVE (1 << 1)
  11080. #define PORT_CMT_TEAM_MASK (1 << 2)
  11081. #define PORT_CMT_TEAM0 (0 << 2)
  11082. #define PORT_CMT_TEAM1 (1 << 2)
  11083. };
  11084. #define LLDP_CHASSIS_ID_STAT_LEN 4
  11085. #define LLDP_PORT_ID_STAT_LEN 4
  11086. #define DCBX_MAX_APP_PROTOCOL 32
  11087. #define MAX_SYSTEM_LLDP_TLV_DATA 32
  11088. enum _lldp_agent {
  11089. LLDP_NEAREST_BRIDGE = 0,
  11090. LLDP_NEAREST_NON_TPMR_BRIDGE,
  11091. LLDP_NEAREST_CUSTOMER_BRIDGE,
  11092. LLDP_MAX_LLDP_AGENTS
  11093. };
  11094. struct lldp_config_params_s {
  11095. u32 config;
  11096. #define LLDP_CONFIG_TX_INTERVAL_MASK 0x000000ff
  11097. #define LLDP_CONFIG_TX_INTERVAL_SHIFT 0
  11098. #define LLDP_CONFIG_HOLD_MASK 0x00000f00
  11099. #define LLDP_CONFIG_HOLD_SHIFT 8
  11100. #define LLDP_CONFIG_MAX_CREDIT_MASK 0x0000f000
  11101. #define LLDP_CONFIG_MAX_CREDIT_SHIFT 12
  11102. #define LLDP_CONFIG_ENABLE_RX_MASK 0x40000000
  11103. #define LLDP_CONFIG_ENABLE_RX_SHIFT 30
  11104. #define LLDP_CONFIG_ENABLE_TX_MASK 0x80000000
  11105. #define LLDP_CONFIG_ENABLE_TX_SHIFT 31
  11106. u32 local_chassis_id[LLDP_CHASSIS_ID_STAT_LEN];
  11107. u32 local_port_id[LLDP_PORT_ID_STAT_LEN];
  11108. };
  11109. struct lldp_status_params_s {
  11110. u32 prefix_seq_num;
  11111. u32 status;
  11112. u32 peer_chassis_id[LLDP_CHASSIS_ID_STAT_LEN];
  11113. u32 peer_port_id[LLDP_PORT_ID_STAT_LEN];
  11114. u32 suffix_seq_num;
  11115. };
  11116. struct dcbx_ets_feature {
  11117. u32 flags;
  11118. #define DCBX_ETS_ENABLED_MASK 0x00000001
  11119. #define DCBX_ETS_ENABLED_SHIFT 0
  11120. #define DCBX_ETS_WILLING_MASK 0x00000002
  11121. #define DCBX_ETS_WILLING_SHIFT 1
  11122. #define DCBX_ETS_ERROR_MASK 0x00000004
  11123. #define DCBX_ETS_ERROR_SHIFT 2
  11124. #define DCBX_ETS_CBS_MASK 0x00000008
  11125. #define DCBX_ETS_CBS_SHIFT 3
  11126. #define DCBX_ETS_MAX_TCS_MASK 0x000000f0
  11127. #define DCBX_ETS_MAX_TCS_SHIFT 4
  11128. #define DCBX_OOO_TC_MASK 0x00000f00
  11129. #define DCBX_OOO_TC_SHIFT 8
  11130. u32 pri_tc_tbl[1];
  11131. #define DCBX_TCP_OOO_TC (4)
  11132. #define NIG_ETS_ISCSI_OOO_CLIENT_OFFSET (DCBX_TCP_OOO_TC + 1)
  11133. #define DCBX_CEE_STRICT_PRIORITY 0xf
  11134. u32 tc_bw_tbl[2];
  11135. u32 tc_tsa_tbl[2];
  11136. #define DCBX_ETS_TSA_STRICT 0
  11137. #define DCBX_ETS_TSA_CBS 1
  11138. #define DCBX_ETS_TSA_ETS 2
  11139. };
  11140. #define DCBX_TCP_OOO_TC (4)
  11141. #define DCBX_TCP_OOO_K2_4PORT_TC (3)
  11142. struct dcbx_app_priority_entry {
  11143. u32 entry;
  11144. #define DCBX_APP_PRI_MAP_MASK 0x000000ff
  11145. #define DCBX_APP_PRI_MAP_SHIFT 0
  11146. #define DCBX_APP_PRI_0 0x01
  11147. #define DCBX_APP_PRI_1 0x02
  11148. #define DCBX_APP_PRI_2 0x04
  11149. #define DCBX_APP_PRI_3 0x08
  11150. #define DCBX_APP_PRI_4 0x10
  11151. #define DCBX_APP_PRI_5 0x20
  11152. #define DCBX_APP_PRI_6 0x40
  11153. #define DCBX_APP_PRI_7 0x80
  11154. #define DCBX_APP_SF_MASK 0x00000300
  11155. #define DCBX_APP_SF_SHIFT 8
  11156. #define DCBX_APP_SF_ETHTYPE 0
  11157. #define DCBX_APP_SF_PORT 1
  11158. #define DCBX_APP_SF_IEEE_MASK 0x0000f000
  11159. #define DCBX_APP_SF_IEEE_SHIFT 12
  11160. #define DCBX_APP_SF_IEEE_RESERVED 0
  11161. #define DCBX_APP_SF_IEEE_ETHTYPE 1
  11162. #define DCBX_APP_SF_IEEE_TCP_PORT 2
  11163. #define DCBX_APP_SF_IEEE_UDP_PORT 3
  11164. #define DCBX_APP_SF_IEEE_TCP_UDP_PORT 4
  11165. #define DCBX_APP_PROTOCOL_ID_MASK 0xffff0000
  11166. #define DCBX_APP_PROTOCOL_ID_SHIFT 16
  11167. };
  11168. struct dcbx_app_priority_feature {
  11169. u32 flags;
  11170. #define DCBX_APP_ENABLED_MASK 0x00000001
  11171. #define DCBX_APP_ENABLED_SHIFT 0
  11172. #define DCBX_APP_WILLING_MASK 0x00000002
  11173. #define DCBX_APP_WILLING_SHIFT 1
  11174. #define DCBX_APP_ERROR_MASK 0x00000004
  11175. #define DCBX_APP_ERROR_SHIFT 2
  11176. #define DCBX_APP_MAX_TCS_MASK 0x0000f000
  11177. #define DCBX_APP_MAX_TCS_SHIFT 12
  11178. #define DCBX_APP_NUM_ENTRIES_MASK 0x00ff0000
  11179. #define DCBX_APP_NUM_ENTRIES_SHIFT 16
  11180. struct dcbx_app_priority_entry app_pri_tbl[DCBX_MAX_APP_PROTOCOL];
  11181. };
  11182. struct dcbx_features {
  11183. struct dcbx_ets_feature ets;
  11184. u32 pfc;
  11185. #define DCBX_PFC_PRI_EN_BITMAP_MASK 0x000000ff
  11186. #define DCBX_PFC_PRI_EN_BITMAP_SHIFT 0
  11187. #define DCBX_PFC_PRI_EN_BITMAP_PRI_0 0x01
  11188. #define DCBX_PFC_PRI_EN_BITMAP_PRI_1 0x02
  11189. #define DCBX_PFC_PRI_EN_BITMAP_PRI_2 0x04
  11190. #define DCBX_PFC_PRI_EN_BITMAP_PRI_3 0x08
  11191. #define DCBX_PFC_PRI_EN_BITMAP_PRI_4 0x10
  11192. #define DCBX_PFC_PRI_EN_BITMAP_PRI_5 0x20
  11193. #define DCBX_PFC_PRI_EN_BITMAP_PRI_6 0x40
  11194. #define DCBX_PFC_PRI_EN_BITMAP_PRI_7 0x80
  11195. #define DCBX_PFC_FLAGS_MASK 0x0000ff00
  11196. #define DCBX_PFC_FLAGS_SHIFT 8
  11197. #define DCBX_PFC_CAPS_MASK 0x00000f00
  11198. #define DCBX_PFC_CAPS_SHIFT 8
  11199. #define DCBX_PFC_MBC_MASK 0x00004000
  11200. #define DCBX_PFC_MBC_SHIFT 14
  11201. #define DCBX_PFC_WILLING_MASK 0x00008000
  11202. #define DCBX_PFC_WILLING_SHIFT 15
  11203. #define DCBX_PFC_ENABLED_MASK 0x00010000
  11204. #define DCBX_PFC_ENABLED_SHIFT 16
  11205. #define DCBX_PFC_ERROR_MASK 0x00020000
  11206. #define DCBX_PFC_ERROR_SHIFT 17
  11207. struct dcbx_app_priority_feature app;
  11208. };
  11209. struct dcbx_local_params {
  11210. u32 config;
  11211. #define DCBX_CONFIG_VERSION_MASK 0x00000007
  11212. #define DCBX_CONFIG_VERSION_SHIFT 0
  11213. #define DCBX_CONFIG_VERSION_DISABLED 0
  11214. #define DCBX_CONFIG_VERSION_IEEE 1
  11215. #define DCBX_CONFIG_VERSION_CEE 2
  11216. #define DCBX_CONFIG_VERSION_STATIC 4
  11217. u32 flags;
  11218. struct dcbx_features features;
  11219. };
  11220. struct dcbx_mib {
  11221. u32 prefix_seq_num;
  11222. u32 flags;
  11223. struct dcbx_features features;
  11224. u32 suffix_seq_num;
  11225. };
  11226. struct lldp_system_tlvs_buffer_s {
  11227. u16 valid;
  11228. u16 length;
  11229. u32 data[MAX_SYSTEM_LLDP_TLV_DATA];
  11230. };
  11231. struct dcb_dscp_map {
  11232. u32 flags;
  11233. #define DCB_DSCP_ENABLE_MASK 0x1
  11234. #define DCB_DSCP_ENABLE_SHIFT 0
  11235. #define DCB_DSCP_ENABLE 1
  11236. u32 dscp_pri_map[8];
  11237. };
  11238. struct public_global {
  11239. u32 max_path;
  11240. u32 max_ports;
  11241. #define MODE_1P 1
  11242. #define MODE_2P 2
  11243. #define MODE_3P 3
  11244. #define MODE_4P 4
  11245. u32 debug_mb_offset;
  11246. u32 phymod_dbg_mb_offset;
  11247. struct couple_mode_teaming cmt;
  11248. s32 internal_temperature;
  11249. u32 mfw_ver;
  11250. u32 running_bundle_id;
  11251. s32 external_temperature;
  11252. u32 mdump_reason;
  11253. };
  11254. struct fw_flr_mb {
  11255. u32 aggint;
  11256. u32 opgen_addr;
  11257. u32 accum_ack;
  11258. };
  11259. struct public_path {
  11260. struct fw_flr_mb flr_mb;
  11261. u32 mcp_vf_disabled[VF_MAX_STATIC / 32];
  11262. u32 process_kill;
  11263. #define PROCESS_KILL_COUNTER_MASK 0x0000ffff
  11264. #define PROCESS_KILL_COUNTER_SHIFT 0
  11265. #define PROCESS_KILL_GLOB_AEU_BIT_MASK 0xffff0000
  11266. #define PROCESS_KILL_GLOB_AEU_BIT_SHIFT 16
  11267. #define GLOBAL_AEU_BIT(aeu_reg_id, aeu_bit) (aeu_reg_id * 32 + aeu_bit)
  11268. };
  11269. struct public_port {
  11270. u32 validity_map;
  11271. u32 link_status;
  11272. #define LINK_STATUS_LINK_UP 0x00000001
  11273. #define LINK_STATUS_SPEED_AND_DUPLEX_MASK 0x0000001e
  11274. #define LINK_STATUS_SPEED_AND_DUPLEX_1000THD (1 << 1)
  11275. #define LINK_STATUS_SPEED_AND_DUPLEX_1000TFD (2 << 1)
  11276. #define LINK_STATUS_SPEED_AND_DUPLEX_10G (3 << 1)
  11277. #define LINK_STATUS_SPEED_AND_DUPLEX_20G (4 << 1)
  11278. #define LINK_STATUS_SPEED_AND_DUPLEX_40G (5 << 1)
  11279. #define LINK_STATUS_SPEED_AND_DUPLEX_50G (6 << 1)
  11280. #define LINK_STATUS_SPEED_AND_DUPLEX_100G (7 << 1)
  11281. #define LINK_STATUS_SPEED_AND_DUPLEX_25G (8 << 1)
  11282. #define LINK_STATUS_AUTO_NEGOTIATE_ENABLED 0x00000020
  11283. #define LINK_STATUS_AUTO_NEGOTIATE_COMPLETE 0x00000040
  11284. #define LINK_STATUS_PARALLEL_DETECTION_USED 0x00000080
  11285. #define LINK_STATUS_PFC_ENABLED 0x00000100
  11286. #define LINK_STATUS_LINK_PARTNER_1000TFD_CAPABLE 0x00000200
  11287. #define LINK_STATUS_LINK_PARTNER_1000THD_CAPABLE 0x00000400
  11288. #define LINK_STATUS_LINK_PARTNER_10G_CAPABLE 0x00000800
  11289. #define LINK_STATUS_LINK_PARTNER_20G_CAPABLE 0x00001000
  11290. #define LINK_STATUS_LINK_PARTNER_40G_CAPABLE 0x00002000
  11291. #define LINK_STATUS_LINK_PARTNER_50G_CAPABLE 0x00004000
  11292. #define LINK_STATUS_LINK_PARTNER_100G_CAPABLE 0x00008000
  11293. #define LINK_STATUS_LINK_PARTNER_25G_CAPABLE 0x00010000
  11294. #define LINK_STATUS_LINK_PARTNER_FLOW_CONTROL_MASK 0x000C0000
  11295. #define LINK_STATUS_LINK_PARTNER_NOT_PAUSE_CAPABLE (0 << 18)
  11296. #define LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE (1 << 18)
  11297. #define LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE (2 << 18)
  11298. #define LINK_STATUS_LINK_PARTNER_BOTH_PAUSE (3 << 18)
  11299. #define LINK_STATUS_SFP_TX_FAULT 0x00100000
  11300. #define LINK_STATUS_TX_FLOW_CONTROL_ENABLED 0x00200000
  11301. #define LINK_STATUS_RX_FLOW_CONTROL_ENABLED 0x00400000
  11302. #define LINK_STATUS_RX_SIGNAL_PRESENT 0x00800000
  11303. #define LINK_STATUS_MAC_LOCAL_FAULT 0x01000000
  11304. #define LINK_STATUS_MAC_REMOTE_FAULT 0x02000000
  11305. #define LINK_STATUS_UNSUPPORTED_SPD_REQ 0x04000000
  11306. u32 link_status1;
  11307. u32 ext_phy_fw_version;
  11308. u32 drv_phy_cfg_addr;
  11309. u32 port_stx;
  11310. u32 stat_nig_timer;
  11311. struct port_mf_cfg port_mf_config;
  11312. struct port_stats stats;
  11313. u32 media_type;
  11314. #define MEDIA_UNSPECIFIED 0x0
  11315. #define MEDIA_SFPP_10G_FIBER 0x1
  11316. #define MEDIA_XFP_FIBER 0x2
  11317. #define MEDIA_DA_TWINAX 0x3
  11318. #define MEDIA_BASE_T 0x4
  11319. #define MEDIA_SFP_1G_FIBER 0x5
  11320. #define MEDIA_MODULE_FIBER 0x6
  11321. #define MEDIA_KR 0xf0
  11322. #define MEDIA_NOT_PRESENT 0xff
  11323. u32 lfa_status;
  11324. u32 link_change_count;
  11325. struct lldp_config_params_s lldp_config_params[LLDP_MAX_LLDP_AGENTS];
  11326. struct lldp_status_params_s lldp_status_params[LLDP_MAX_LLDP_AGENTS];
  11327. struct lldp_system_tlvs_buffer_s system_lldp_tlvs_buf;
  11328. /* DCBX related MIB */
  11329. struct dcbx_local_params local_admin_dcbx_mib;
  11330. struct dcbx_mib remote_dcbx_mib;
  11331. struct dcbx_mib operational_dcbx_mib;
  11332. u32 reserved[2];
  11333. u32 transceiver_data;
  11334. #define ETH_TRANSCEIVER_STATE_MASK 0x000000FF
  11335. #define ETH_TRANSCEIVER_STATE_SHIFT 0x00000000
  11336. #define ETH_TRANSCEIVER_STATE_UNPLUGGED 0x00000000
  11337. #define ETH_TRANSCEIVER_STATE_PRESENT 0x00000001
  11338. #define ETH_TRANSCEIVER_STATE_VALID 0x00000003
  11339. #define ETH_TRANSCEIVER_STATE_UPDATING 0x00000008
  11340. u32 wol_info;
  11341. u32 wol_pkt_len;
  11342. u32 wol_pkt_details;
  11343. struct dcb_dscp_map dcb_dscp_map;
  11344. u32 eee_status;
  11345. #define EEE_ACTIVE_BIT BIT(0)
  11346. #define EEE_LD_ADV_STATUS_MASK 0x000000f0
  11347. #define EEE_LD_ADV_STATUS_OFFSET 4
  11348. #define EEE_1G_ADV BIT(1)
  11349. #define EEE_10G_ADV BIT(2)
  11350. #define EEE_LP_ADV_STATUS_MASK 0x00000f00
  11351. #define EEE_LP_ADV_STATUS_OFFSET 8
  11352. #define EEE_SUPPORTED_SPEED_MASK 0x0000f000
  11353. #define EEE_SUPPORTED_SPEED_OFFSET 12
  11354. #define EEE_1G_SUPPORTED BIT(1)
  11355. #define EEE_10G_SUPPORTED BIT(2)
  11356. u32 eee_remote;
  11357. #define EEE_REMOTE_TW_TX_MASK 0x0000ffff
  11358. #define EEE_REMOTE_TW_TX_OFFSET 0
  11359. #define EEE_REMOTE_TW_RX_MASK 0xffff0000
  11360. #define EEE_REMOTE_TW_RX_OFFSET 16
  11361. };
  11362. struct public_func {
  11363. u32 reserved0[2];
  11364. u32 mtu_size;
  11365. u32 reserved[7];
  11366. u32 config;
  11367. #define FUNC_MF_CFG_FUNC_HIDE 0x00000001
  11368. #define FUNC_MF_CFG_PAUSE_ON_HOST_RING 0x00000002
  11369. #define FUNC_MF_CFG_PAUSE_ON_HOST_RING_SHIFT 0x00000001
  11370. #define FUNC_MF_CFG_PROTOCOL_MASK 0x000000f0
  11371. #define FUNC_MF_CFG_PROTOCOL_SHIFT 4
  11372. #define FUNC_MF_CFG_PROTOCOL_ETHERNET 0x00000000
  11373. #define FUNC_MF_CFG_PROTOCOL_ISCSI 0x00000010
  11374. #define FUNC_MF_CFG_PROTOCOL_FCOE 0x00000020
  11375. #define FUNC_MF_CFG_PROTOCOL_ROCE 0x00000030
  11376. #define FUNC_MF_CFG_PROTOCOL_MAX 0x00000030
  11377. #define FUNC_MF_CFG_MIN_BW_MASK 0x0000ff00
  11378. #define FUNC_MF_CFG_MIN_BW_SHIFT 8
  11379. #define FUNC_MF_CFG_MIN_BW_DEFAULT 0x00000000
  11380. #define FUNC_MF_CFG_MAX_BW_MASK 0x00ff0000
  11381. #define FUNC_MF_CFG_MAX_BW_SHIFT 16
  11382. #define FUNC_MF_CFG_MAX_BW_DEFAULT 0x00640000
  11383. u32 status;
  11384. #define FUNC_STATUS_VLINK_DOWN 0x00000001
  11385. u32 mac_upper;
  11386. #define FUNC_MF_CFG_UPPERMAC_MASK 0x0000ffff
  11387. #define FUNC_MF_CFG_UPPERMAC_SHIFT 0
  11388. #define FUNC_MF_CFG_UPPERMAC_DEFAULT FUNC_MF_CFG_UPPERMAC_MASK
  11389. u32 mac_lower;
  11390. #define FUNC_MF_CFG_LOWERMAC_DEFAULT 0xffffffff
  11391. u32 fcoe_wwn_port_name_upper;
  11392. u32 fcoe_wwn_port_name_lower;
  11393. u32 fcoe_wwn_node_name_upper;
  11394. u32 fcoe_wwn_node_name_lower;
  11395. u32 ovlan_stag;
  11396. #define FUNC_MF_CFG_OV_STAG_MASK 0x0000ffff
  11397. #define FUNC_MF_CFG_OV_STAG_SHIFT 0
  11398. #define FUNC_MF_CFG_OV_STAG_DEFAULT FUNC_MF_CFG_OV_STAG_MASK
  11399. u32 pf_allocation;
  11400. u32 preserve_data;
  11401. u32 driver_last_activity_ts;
  11402. u32 drv_ack_vf_disabled[VF_MAX_STATIC / 32];
  11403. u32 drv_id;
  11404. #define DRV_ID_PDA_COMP_VER_MASK 0x0000ffff
  11405. #define DRV_ID_PDA_COMP_VER_SHIFT 0
  11406. #define LOAD_REQ_HSI_VERSION 2
  11407. #define DRV_ID_MCP_HSI_VER_MASK 0x00ff0000
  11408. #define DRV_ID_MCP_HSI_VER_SHIFT 16
  11409. #define DRV_ID_MCP_HSI_VER_CURRENT (LOAD_REQ_HSI_VERSION << \
  11410. DRV_ID_MCP_HSI_VER_SHIFT)
  11411. #define DRV_ID_DRV_TYPE_MASK 0x7f000000
  11412. #define DRV_ID_DRV_TYPE_SHIFT 24
  11413. #define DRV_ID_DRV_TYPE_UNKNOWN (0 << DRV_ID_DRV_TYPE_SHIFT)
  11414. #define DRV_ID_DRV_TYPE_LINUX (1 << DRV_ID_DRV_TYPE_SHIFT)
  11415. #define DRV_ID_DRV_INIT_HW_MASK 0x80000000
  11416. #define DRV_ID_DRV_INIT_HW_SHIFT 31
  11417. #define DRV_ID_DRV_INIT_HW_FLAG (1 << DRV_ID_DRV_INIT_HW_SHIFT)
  11418. };
  11419. struct mcp_mac {
  11420. u32 mac_upper;
  11421. u32 mac_lower;
  11422. };
  11423. struct mcp_val64 {
  11424. u32 lo;
  11425. u32 hi;
  11426. };
  11427. struct mcp_file_att {
  11428. u32 nvm_start_addr;
  11429. u32 len;
  11430. };
  11431. struct bist_nvm_image_att {
  11432. u32 return_code;
  11433. u32 image_type;
  11434. u32 nvm_start_addr;
  11435. u32 len;
  11436. };
  11437. #define MCP_DRV_VER_STR_SIZE 16
  11438. #define MCP_DRV_VER_STR_SIZE_DWORD (MCP_DRV_VER_STR_SIZE / sizeof(u32))
  11439. #define MCP_DRV_NVM_BUF_LEN 32
  11440. struct drv_version_stc {
  11441. u32 version;
  11442. u8 name[MCP_DRV_VER_STR_SIZE - 4];
  11443. };
  11444. struct lan_stats_stc {
  11445. u64 ucast_rx_pkts;
  11446. u64 ucast_tx_pkts;
  11447. u32 fcs_err;
  11448. u32 rserved;
  11449. };
  11450. struct fcoe_stats_stc {
  11451. u64 rx_pkts;
  11452. u64 tx_pkts;
  11453. u32 fcs_err;
  11454. u32 login_failure;
  11455. };
  11456. struct ocbb_data_stc {
  11457. u32 ocbb_host_addr;
  11458. u32 ocsd_host_addr;
  11459. u32 ocsd_req_update_interval;
  11460. };
  11461. #define MAX_NUM_OF_SENSORS 7
  11462. struct temperature_status_stc {
  11463. u32 num_of_sensors;
  11464. u32 sensor[MAX_NUM_OF_SENSORS];
  11465. };
  11466. /* crash dump configuration header */
  11467. struct mdump_config_stc {
  11468. u32 version;
  11469. u32 config;
  11470. u32 epoc;
  11471. u32 num_of_logs;
  11472. u32 valid_logs;
  11473. };
  11474. enum resource_id_enum {
  11475. RESOURCE_NUM_SB_E = 0,
  11476. RESOURCE_NUM_L2_QUEUE_E = 1,
  11477. RESOURCE_NUM_VPORT_E = 2,
  11478. RESOURCE_NUM_VMQ_E = 3,
  11479. RESOURCE_FACTOR_NUM_RSS_PF_E = 4,
  11480. RESOURCE_FACTOR_RSS_PER_VF_E = 5,
  11481. RESOURCE_NUM_RL_E = 6,
  11482. RESOURCE_NUM_PQ_E = 7,
  11483. RESOURCE_NUM_VF_E = 8,
  11484. RESOURCE_VFC_FILTER_E = 9,
  11485. RESOURCE_ILT_E = 10,
  11486. RESOURCE_CQS_E = 11,
  11487. RESOURCE_GFT_PROFILES_E = 12,
  11488. RESOURCE_NUM_TC_E = 13,
  11489. RESOURCE_NUM_RSS_ENGINES_E = 14,
  11490. RESOURCE_LL2_QUEUE_E = 15,
  11491. RESOURCE_RDMA_STATS_QUEUE_E = 16,
  11492. RESOURCE_BDQ_E = 17,
  11493. RESOURCE_MAX_NUM,
  11494. RESOURCE_NUM_INVALID = 0xFFFFFFFF
  11495. };
  11496. /* Resource ID is to be filled by the driver in the MB request
  11497. * Size, offset & flags to be filled by the MFW in the MB response
  11498. */
  11499. struct resource_info {
  11500. enum resource_id_enum res_id;
  11501. u32 size; /* number of allocated resources */
  11502. u32 offset; /* Offset of the 1st resource */
  11503. u32 vf_size;
  11504. u32 vf_offset;
  11505. u32 flags;
  11506. #define RESOURCE_ELEMENT_STRICT (1 << 0)
  11507. };
  11508. #define DRV_ROLE_NONE 0
  11509. #define DRV_ROLE_PREBOOT 1
  11510. #define DRV_ROLE_OS 2
  11511. #define DRV_ROLE_KDUMP 3
  11512. struct load_req_stc {
  11513. u32 drv_ver_0;
  11514. u32 drv_ver_1;
  11515. u32 fw_ver;
  11516. u32 misc0;
  11517. #define LOAD_REQ_ROLE_MASK 0x000000FF
  11518. #define LOAD_REQ_ROLE_SHIFT 0
  11519. #define LOAD_REQ_LOCK_TO_MASK 0x0000FF00
  11520. #define LOAD_REQ_LOCK_TO_SHIFT 8
  11521. #define LOAD_REQ_LOCK_TO_DEFAULT 0
  11522. #define LOAD_REQ_LOCK_TO_NONE 255
  11523. #define LOAD_REQ_FORCE_MASK 0x000F0000
  11524. #define LOAD_REQ_FORCE_SHIFT 16
  11525. #define LOAD_REQ_FORCE_NONE 0
  11526. #define LOAD_REQ_FORCE_PF 1
  11527. #define LOAD_REQ_FORCE_ALL 2
  11528. #define LOAD_REQ_FLAGS0_MASK 0x00F00000
  11529. #define LOAD_REQ_FLAGS0_SHIFT 20
  11530. #define LOAD_REQ_FLAGS0_AVOID_RESET (0x1 << 0)
  11531. };
  11532. struct load_rsp_stc {
  11533. u32 drv_ver_0;
  11534. u32 drv_ver_1;
  11535. u32 fw_ver;
  11536. u32 misc0;
  11537. #define LOAD_RSP_ROLE_MASK 0x000000FF
  11538. #define LOAD_RSP_ROLE_SHIFT 0
  11539. #define LOAD_RSP_HSI_MASK 0x0000FF00
  11540. #define LOAD_RSP_HSI_SHIFT 8
  11541. #define LOAD_RSP_FLAGS0_MASK 0x000F0000
  11542. #define LOAD_RSP_FLAGS0_SHIFT 16
  11543. #define LOAD_RSP_FLAGS0_DRV_EXISTS (0x1 << 0)
  11544. };
  11545. union drv_union_data {
  11546. u32 ver_str[MCP_DRV_VER_STR_SIZE_DWORD];
  11547. struct mcp_mac wol_mac;
  11548. struct eth_phy_cfg drv_phy_cfg;
  11549. struct mcp_val64 val64;
  11550. u8 raw_data[MCP_DRV_NVM_BUF_LEN];
  11551. struct mcp_file_att file_att;
  11552. u32 ack_vf_disabled[VF_MAX_STATIC / 32];
  11553. struct drv_version_stc drv_version;
  11554. struct lan_stats_stc lan_stats;
  11555. struct fcoe_stats_stc fcoe_stats;
  11556. struct ocbb_data_stc ocbb_info;
  11557. struct temperature_status_stc temp_info;
  11558. struct resource_info resource;
  11559. struct bist_nvm_image_att nvm_image_att;
  11560. struct mdump_config_stc mdump_config;
  11561. };
  11562. struct public_drv_mb {
  11563. u32 drv_mb_header;
  11564. #define DRV_MSG_CODE_MASK 0xffff0000
  11565. #define DRV_MSG_CODE_LOAD_REQ 0x10000000
  11566. #define DRV_MSG_CODE_LOAD_DONE 0x11000000
  11567. #define DRV_MSG_CODE_INIT_HW 0x12000000
  11568. #define DRV_MSG_CODE_CANCEL_LOAD_REQ 0x13000000
  11569. #define DRV_MSG_CODE_UNLOAD_REQ 0x20000000
  11570. #define DRV_MSG_CODE_UNLOAD_DONE 0x21000000
  11571. #define DRV_MSG_CODE_INIT_PHY 0x22000000
  11572. #define DRV_MSG_CODE_LINK_RESET 0x23000000
  11573. #define DRV_MSG_CODE_SET_DCBX 0x25000000
  11574. #define DRV_MSG_CODE_OV_UPDATE_CURR_CFG 0x26000000
  11575. #define DRV_MSG_CODE_OV_UPDATE_BUS_NUM 0x27000000
  11576. #define DRV_MSG_CODE_OV_UPDATE_BOOT_PROGRESS 0x28000000
  11577. #define DRV_MSG_CODE_OV_UPDATE_STORM_FW_VER 0x29000000
  11578. #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE 0x31000000
  11579. #define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000
  11580. #define DRV_MSG_CODE_OV_UPDATE_MTU 0x33000000
  11581. #define DRV_MSG_GET_RESOURCE_ALLOC_MSG 0x34000000
  11582. #define DRV_MSG_SET_RESOURCE_VALUE_MSG 0x35000000
  11583. #define DRV_MSG_CODE_OV_UPDATE_WOL 0x38000000
  11584. #define DRV_MSG_CODE_OV_UPDATE_ESWITCH_MODE 0x39000000
  11585. #define DRV_MSG_CODE_BW_UPDATE_ACK 0x32000000
  11586. #define DRV_MSG_CODE_NIG_DRAIN 0x30000000
  11587. #define DRV_MSG_CODE_S_TAG_UPDATE_ACK 0x3b000000
  11588. #define DRV_MSG_CODE_INITIATE_PF_FLR 0x02010000
  11589. #define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000
  11590. #define DRV_MSG_CODE_CFG_VF_MSIX 0xc0010000
  11591. #define DRV_MSG_CODE_CFG_PF_VFS_MSIX 0xc0020000
  11592. #define DRV_MSG_CODE_NVM_PUT_FILE_BEGIN 0x00010000
  11593. #define DRV_MSG_CODE_NVM_PUT_FILE_DATA 0x00020000
  11594. #define DRV_MSG_CODE_NVM_GET_FILE_ATT 0x00030000
  11595. #define DRV_MSG_CODE_NVM_READ_NVRAM 0x00050000
  11596. #define DRV_MSG_CODE_NVM_WRITE_NVRAM 0x00060000
  11597. #define DRV_MSG_CODE_MCP_RESET 0x00090000
  11598. #define DRV_MSG_CODE_SET_VERSION 0x000f0000
  11599. #define DRV_MSG_CODE_MCP_HALT 0x00100000
  11600. #define DRV_MSG_CODE_SET_VMAC 0x00110000
  11601. #define DRV_MSG_CODE_GET_VMAC 0x00120000
  11602. #define DRV_MSG_CODE_VMAC_TYPE_SHIFT 4
  11603. #define DRV_MSG_CODE_VMAC_TYPE_MASK 0x30
  11604. #define DRV_MSG_CODE_VMAC_TYPE_MAC 1
  11605. #define DRV_MSG_CODE_VMAC_TYPE_WWNN 2
  11606. #define DRV_MSG_CODE_VMAC_TYPE_WWPN 3
  11607. #define DRV_MSG_CODE_GET_STATS 0x00130000
  11608. #define DRV_MSG_CODE_STATS_TYPE_LAN 1
  11609. #define DRV_MSG_CODE_STATS_TYPE_FCOE 2
  11610. #define DRV_MSG_CODE_STATS_TYPE_ISCSI 3
  11611. #define DRV_MSG_CODE_STATS_TYPE_RDMA 4
  11612. #define DRV_MSG_CODE_MASK_PARITIES 0x001a0000
  11613. #define DRV_MSG_CODE_BIST_TEST 0x001e0000
  11614. #define DRV_MSG_CODE_SET_LED_MODE 0x00200000
  11615. #define DRV_MSG_CODE_RESOURCE_CMD 0x00230000
  11616. #define RESOURCE_CMD_REQ_RESC_MASK 0x0000001F
  11617. #define RESOURCE_CMD_REQ_RESC_SHIFT 0
  11618. #define RESOURCE_CMD_REQ_OPCODE_MASK 0x000000E0
  11619. #define RESOURCE_CMD_REQ_OPCODE_SHIFT 5
  11620. #define RESOURCE_OPCODE_REQ 1
  11621. #define RESOURCE_OPCODE_REQ_WO_AGING 2
  11622. #define RESOURCE_OPCODE_REQ_W_AGING 3
  11623. #define RESOURCE_OPCODE_RELEASE 4
  11624. #define RESOURCE_OPCODE_FORCE_RELEASE 5
  11625. #define RESOURCE_CMD_REQ_AGE_MASK 0x0000FF00
  11626. #define RESOURCE_CMD_REQ_AGE_SHIFT 8
  11627. #define RESOURCE_CMD_RSP_OWNER_MASK 0x000000FF
  11628. #define RESOURCE_CMD_RSP_OWNER_SHIFT 0
  11629. #define RESOURCE_CMD_RSP_OPCODE_MASK 0x00000700
  11630. #define RESOURCE_CMD_RSP_OPCODE_SHIFT 8
  11631. #define RESOURCE_OPCODE_GNT 1
  11632. #define RESOURCE_OPCODE_BUSY 2
  11633. #define RESOURCE_OPCODE_RELEASED 3
  11634. #define RESOURCE_OPCODE_RELEASED_PREVIOUS 4
  11635. #define RESOURCE_OPCODE_WRONG_OWNER 5
  11636. #define RESOURCE_OPCODE_UNKNOWN_CMD 255
  11637. #define RESOURCE_DUMP 0
  11638. #define DRV_MSG_CODE_GET_PF_RDMA_PROTOCOL 0x002b0000
  11639. #define DRV_MSG_CODE_OS_WOL 0x002e0000
  11640. #define DRV_MSG_CODE_FEATURE_SUPPORT 0x00300000
  11641. #define DRV_MSG_CODE_GET_MFW_FEATURE_SUPPORT 0x00310000
  11642. #define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff
  11643. u32 drv_mb_param;
  11644. #define DRV_MB_PARAM_UNLOAD_WOL_UNKNOWN 0x00000000
  11645. #define DRV_MB_PARAM_UNLOAD_WOL_MCP 0x00000001
  11646. #define DRV_MB_PARAM_UNLOAD_WOL_DISABLED 0x00000002
  11647. #define DRV_MB_PARAM_UNLOAD_WOL_ENABLED 0x00000003
  11648. #define DRV_MB_PARAM_DCBX_NOTIFY_MASK 0x000000FF
  11649. #define DRV_MB_PARAM_DCBX_NOTIFY_SHIFT 3
  11650. #define DRV_MB_PARAM_NVM_LEN_OFFSET 24
  11651. #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_SHIFT 0
  11652. #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_MASK 0x000000FF
  11653. #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_SHIFT 8
  11654. #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_MASK 0x0000FF00
  11655. #define DRV_MB_PARAM_LLDP_SEND_MASK 0x00000001
  11656. #define DRV_MB_PARAM_LLDP_SEND_SHIFT 0
  11657. #define DRV_MB_PARAM_OV_CURR_CFG_SHIFT 0
  11658. #define DRV_MB_PARAM_OV_CURR_CFG_MASK 0x0000000F
  11659. #define DRV_MB_PARAM_OV_CURR_CFG_NONE 0
  11660. #define DRV_MB_PARAM_OV_CURR_CFG_OS 1
  11661. #define DRV_MB_PARAM_OV_CURR_CFG_VENDOR_SPEC 2
  11662. #define DRV_MB_PARAM_OV_CURR_CFG_OTHER 3
  11663. #define DRV_MB_PARAM_OV_STORM_FW_VER_SHIFT 0
  11664. #define DRV_MB_PARAM_OV_STORM_FW_VER_MASK 0xFFFFFFFF
  11665. #define DRV_MB_PARAM_OV_STORM_FW_VER_MAJOR_MASK 0xFF000000
  11666. #define DRV_MB_PARAM_OV_STORM_FW_VER_MINOR_MASK 0x00FF0000
  11667. #define DRV_MB_PARAM_OV_STORM_FW_VER_BUILD_MASK 0x0000FF00
  11668. #define DRV_MB_PARAM_OV_STORM_FW_VER_DROP_MASK 0x000000FF
  11669. #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_SHIFT 0
  11670. #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_MASK 0xF
  11671. #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_UNKNOWN 0x1
  11672. #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_NOT_LOADED 0x2
  11673. #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_LOADING 0x3
  11674. #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_DISABLED 0x4
  11675. #define DRV_MSG_CODE_OV_UPDATE_DRIVER_STATE_ACTIVE 0x5
  11676. #define DRV_MB_PARAM_OV_MTU_SIZE_SHIFT 0
  11677. #define DRV_MB_PARAM_OV_MTU_SIZE_MASK 0xFFFFFFFF
  11678. #define DRV_MB_PARAM_WOL_MASK (DRV_MB_PARAM_WOL_DEFAULT | \
  11679. DRV_MB_PARAM_WOL_DISABLED | \
  11680. DRV_MB_PARAM_WOL_ENABLED)
  11681. #define DRV_MB_PARAM_WOL_DEFAULT DRV_MB_PARAM_UNLOAD_WOL_MCP
  11682. #define DRV_MB_PARAM_WOL_DISABLED DRV_MB_PARAM_UNLOAD_WOL_DISABLED
  11683. #define DRV_MB_PARAM_WOL_ENABLED DRV_MB_PARAM_UNLOAD_WOL_ENABLED
  11684. #define DRV_MB_PARAM_ESWITCH_MODE_MASK (DRV_MB_PARAM_ESWITCH_MODE_NONE | \
  11685. DRV_MB_PARAM_ESWITCH_MODE_VEB | \
  11686. DRV_MB_PARAM_ESWITCH_MODE_VEPA)
  11687. #define DRV_MB_PARAM_ESWITCH_MODE_NONE 0x0
  11688. #define DRV_MB_PARAM_ESWITCH_MODE_VEB 0x1
  11689. #define DRV_MB_PARAM_ESWITCH_MODE_VEPA 0x2
  11690. #define DRV_MB_PARAM_SET_LED_MODE_OPER 0x0
  11691. #define DRV_MB_PARAM_SET_LED_MODE_ON 0x1
  11692. #define DRV_MB_PARAM_SET_LED_MODE_OFF 0x2
  11693. /* Resource Allocation params - Driver version support */
  11694. #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xFFFF0000
  11695. #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16
  11696. #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000FFFF
  11697. #define DRV_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0
  11698. #define DRV_MB_PARAM_BIST_REGISTER_TEST 1
  11699. #define DRV_MB_PARAM_BIST_CLOCK_TEST 2
  11700. #define DRV_MB_PARAM_BIST_NVM_TEST_NUM_IMAGES 3
  11701. #define DRV_MB_PARAM_BIST_NVM_TEST_IMAGE_BY_INDEX 4
  11702. #define DRV_MB_PARAM_BIST_RC_UNKNOWN 0
  11703. #define DRV_MB_PARAM_BIST_RC_PASSED 1
  11704. #define DRV_MB_PARAM_BIST_RC_FAILED 2
  11705. #define DRV_MB_PARAM_BIST_RC_INVALID_PARAMETER 3
  11706. #define DRV_MB_PARAM_BIST_TEST_INDEX_SHIFT 0
  11707. #define DRV_MB_PARAM_BIST_TEST_INDEX_MASK 0x000000FF
  11708. #define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_SHIFT 8
  11709. #define DRV_MB_PARAM_BIST_TEST_IMAGE_INDEX_MASK 0x0000FF00
  11710. #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_MASK 0x0000FFFF
  11711. #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_OFFSET 0
  11712. #define DRV_MB_PARAM_FEATURE_SUPPORT_PORT_EEE 0x00000002
  11713. u32 fw_mb_header;
  11714. #define FW_MSG_CODE_MASK 0xffff0000
  11715. #define FW_MSG_CODE_UNSUPPORTED 0x00000000
  11716. #define FW_MSG_CODE_DRV_LOAD_ENGINE 0x10100000
  11717. #define FW_MSG_CODE_DRV_LOAD_PORT 0x10110000
  11718. #define FW_MSG_CODE_DRV_LOAD_FUNCTION 0x10120000
  11719. #define FW_MSG_CODE_DRV_LOAD_REFUSED_PDA 0x10200000
  11720. #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI_1 0x10210000
  11721. #define FW_MSG_CODE_DRV_LOAD_REFUSED_DIAG 0x10220000
  11722. #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI 0x10230000
  11723. #define FW_MSG_CODE_DRV_LOAD_REFUSED_REQUIRES_FORCE 0x10300000
  11724. #define FW_MSG_CODE_DRV_LOAD_REFUSED_REJECT 0x10310000
  11725. #define FW_MSG_CODE_DRV_LOAD_DONE 0x11100000
  11726. #define FW_MSG_CODE_DRV_UNLOAD_ENGINE 0x20110000
  11727. #define FW_MSG_CODE_DRV_UNLOAD_PORT 0x20120000
  11728. #define FW_MSG_CODE_DRV_UNLOAD_FUNCTION 0x20130000
  11729. #define FW_MSG_CODE_DRV_UNLOAD_DONE 0x21100000
  11730. #define FW_MSG_CODE_RESOURCE_ALLOC_OK 0x34000000
  11731. #define FW_MSG_CODE_RESOURCE_ALLOC_UNKNOWN 0x35000000
  11732. #define FW_MSG_CODE_RESOURCE_ALLOC_DEPRECATED 0x36000000
  11733. #define FW_MSG_CODE_S_TAG_UPDATE_ACK_DONE 0x3b000000
  11734. #define FW_MSG_CODE_DRV_CFG_VF_MSIX_DONE 0xb0010000
  11735. #define FW_MSG_CODE_NVM_OK 0x00010000
  11736. #define FW_MSG_CODE_NVM_PUT_FILE_FINISH_OK 0x00400000
  11737. #define FW_MSG_CODE_PHY_OK 0x00110000
  11738. #define FW_MSG_CODE_OK 0x00160000
  11739. #define FW_MSG_CODE_ERROR 0x00170000
  11740. #define FW_MSG_CODE_OS_WOL_SUPPORTED 0x00800000
  11741. #define FW_MSG_CODE_OS_WOL_NOT_SUPPORTED 0x00810000
  11742. #define FW_MSG_CODE_DRV_CFG_PF_VFS_MSIX_DONE 0x00870000
  11743. #define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff
  11744. u32 fw_mb_param;
  11745. #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_MASK 0xFFFF0000
  11746. #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MAJOR_SHIFT 16
  11747. #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_MASK 0x0000FFFF
  11748. #define FW_MB_PARAM_RESOURCE_ALLOC_VERSION_MINOR_SHIFT 0
  11749. /* get pf rdma protocol command responce */
  11750. #define FW_MB_PARAM_GET_PF_RDMA_NONE 0x0
  11751. #define FW_MB_PARAM_GET_PF_RDMA_ROCE 0x1
  11752. #define FW_MB_PARAM_GET_PF_RDMA_IWARP 0x2
  11753. #define FW_MB_PARAM_GET_PF_RDMA_BOTH 0x3
  11754. /* get MFW feature support response */
  11755. #define FW_MB_PARAM_FEATURE_SUPPORT_EEE 0x00000002
  11756. #define FW_MB_PARAM_LOAD_DONE_DID_EFUSE_ERROR (1 << 0)
  11757. u32 drv_pulse_mb;
  11758. #define DRV_PULSE_SEQ_MASK 0x00007fff
  11759. #define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000
  11760. #define DRV_PULSE_ALWAYS_ALIVE 0x00008000
  11761. u32 mcp_pulse_mb;
  11762. #define MCP_PULSE_SEQ_MASK 0x00007fff
  11763. #define MCP_PULSE_ALWAYS_ALIVE 0x00008000
  11764. #define MCP_EVENT_MASK 0xffff0000
  11765. #define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000
  11766. union drv_union_data union_data;
  11767. };
  11768. enum MFW_DRV_MSG_TYPE {
  11769. MFW_DRV_MSG_LINK_CHANGE,
  11770. MFW_DRV_MSG_FLR_FW_ACK_FAILED,
  11771. MFW_DRV_MSG_VF_DISABLED,
  11772. MFW_DRV_MSG_LLDP_DATA_UPDATED,
  11773. MFW_DRV_MSG_DCBX_REMOTE_MIB_UPDATED,
  11774. MFW_DRV_MSG_DCBX_OPERATIONAL_MIB_UPDATED,
  11775. MFW_DRV_MSG_RESERVED4,
  11776. MFW_DRV_MSG_BW_UPDATE,
  11777. MFW_DRV_MSG_S_TAG_UPDATE,
  11778. MFW_DRV_MSG_GET_LAN_STATS,
  11779. MFW_DRV_MSG_GET_FCOE_STATS,
  11780. MFW_DRV_MSG_GET_ISCSI_STATS,
  11781. MFW_DRV_MSG_GET_RDMA_STATS,
  11782. MFW_DRV_MSG_BW_UPDATE10,
  11783. MFW_DRV_MSG_TRANSCEIVER_STATE_CHANGE,
  11784. MFW_DRV_MSG_BW_UPDATE11,
  11785. MFW_DRV_MSG_MAX
  11786. };
  11787. #define MFW_DRV_MSG_MAX_DWORDS(msgs) (((msgs - 1) >> 2) + 1)
  11788. #define MFW_DRV_MSG_DWORD(msg_id) (msg_id >> 2)
  11789. #define MFW_DRV_MSG_OFFSET(msg_id) ((msg_id & 0x3) << 3)
  11790. #define MFW_DRV_MSG_MASK(msg_id) (0xff << MFW_DRV_MSG_OFFSET(msg_id))
  11791. struct public_mfw_mb {
  11792. u32 sup_msgs;
  11793. u32 msg[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)];
  11794. u32 ack[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)];
  11795. };
  11796. enum public_sections {
  11797. PUBLIC_DRV_MB,
  11798. PUBLIC_MFW_MB,
  11799. PUBLIC_GLOBAL,
  11800. PUBLIC_PATH,
  11801. PUBLIC_PORT,
  11802. PUBLIC_FUNC,
  11803. PUBLIC_MAX_SECTIONS
  11804. };
  11805. struct mcp_public_data {
  11806. u32 num_sections;
  11807. u32 sections[PUBLIC_MAX_SECTIONS];
  11808. struct public_drv_mb drv_mb[MCP_GLOB_FUNC_MAX];
  11809. struct public_mfw_mb mfw_mb[MCP_GLOB_FUNC_MAX];
  11810. struct public_global global;
  11811. struct public_path path[MCP_GLOB_PATH_MAX];
  11812. struct public_port port[MCP_GLOB_PORT_MAX];
  11813. struct public_func func[MCP_GLOB_FUNC_MAX];
  11814. };
  11815. struct nvm_cfg_mac_address {
  11816. u32 mac_addr_hi;
  11817. #define NVM_CFG_MAC_ADDRESS_HI_MASK 0x0000FFFF
  11818. #define NVM_CFG_MAC_ADDRESS_HI_OFFSET 0
  11819. u32 mac_addr_lo;
  11820. };
  11821. struct nvm_cfg1_glob {
  11822. u32 generic_cont0;
  11823. #define NVM_CFG1_GLOB_MF_MODE_MASK 0x00000FF0
  11824. #define NVM_CFG1_GLOB_MF_MODE_OFFSET 4
  11825. #define NVM_CFG1_GLOB_MF_MODE_MF_ALLOWED 0x0
  11826. #define NVM_CFG1_GLOB_MF_MODE_DEFAULT 0x1
  11827. #define NVM_CFG1_GLOB_MF_MODE_SPIO4 0x2
  11828. #define NVM_CFG1_GLOB_MF_MODE_NPAR1_0 0x3
  11829. #define NVM_CFG1_GLOB_MF_MODE_NPAR1_5 0x4
  11830. #define NVM_CFG1_GLOB_MF_MODE_NPAR2_0 0x5
  11831. #define NVM_CFG1_GLOB_MF_MODE_BD 0x6
  11832. #define NVM_CFG1_GLOB_MF_MODE_UFP 0x7
  11833. u32 engineering_change[3];
  11834. u32 manufacturing_id;
  11835. u32 serial_number[4];
  11836. u32 pcie_cfg;
  11837. u32 mgmt_traffic;
  11838. u32 core_cfg;
  11839. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_MASK 0x000000FF
  11840. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_OFFSET 0
  11841. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_2X40G 0x0
  11842. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X50G 0x1
  11843. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_1X100G 0x2
  11844. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X10G_F 0x3
  11845. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X10G_E 0x4
  11846. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_BB_4X20G 0x5
  11847. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X40G 0xB
  11848. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X25G 0xC
  11849. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_1X25G 0xD
  11850. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_4X25G 0xE
  11851. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_2X10G 0xF
  11852. u32 e_lane_cfg1;
  11853. u32 e_lane_cfg2;
  11854. u32 f_lane_cfg1;
  11855. u32 f_lane_cfg2;
  11856. u32 mps10_preemphasis;
  11857. u32 mps10_driver_current;
  11858. u32 mps25_preemphasis;
  11859. u32 mps25_driver_current;
  11860. u32 pci_id;
  11861. u32 pci_subsys_id;
  11862. u32 bar;
  11863. u32 mps10_txfir_main;
  11864. u32 mps10_txfir_post;
  11865. u32 mps25_txfir_main;
  11866. u32 mps25_txfir_post;
  11867. u32 manufacture_ver;
  11868. u32 manufacture_time;
  11869. u32 led_global_settings;
  11870. u32 generic_cont1;
  11871. u32 mbi_version;
  11872. #define NVM_CFG1_GLOB_MBI_VERSION_0_MASK 0x000000FF
  11873. #define NVM_CFG1_GLOB_MBI_VERSION_0_OFFSET 0
  11874. #define NVM_CFG1_GLOB_MBI_VERSION_1_MASK 0x0000FF00
  11875. #define NVM_CFG1_GLOB_MBI_VERSION_1_OFFSET 8
  11876. #define NVM_CFG1_GLOB_MBI_VERSION_2_MASK 0x00FF0000
  11877. #define NVM_CFG1_GLOB_MBI_VERSION_2_OFFSET 16
  11878. u32 mbi_date;
  11879. u32 misc_sig;
  11880. u32 device_capabilities;
  11881. #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ETHERNET 0x1
  11882. #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_FCOE 0x2
  11883. #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ISCSI 0x4
  11884. #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ROCE 0x8
  11885. u32 power_dissipated;
  11886. u32 power_consumed;
  11887. u32 efi_version;
  11888. u32 multi_network_modes_capability;
  11889. u32 reserved[41];
  11890. };
  11891. struct nvm_cfg1_path {
  11892. u32 reserved[30];
  11893. };
  11894. struct nvm_cfg1_port {
  11895. u32 reserved__m_relocated_to_option_123;
  11896. u32 reserved__m_relocated_to_option_124;
  11897. u32 generic_cont0;
  11898. #define NVM_CFG1_PORT_DCBX_MODE_MASK 0x000F0000
  11899. #define NVM_CFG1_PORT_DCBX_MODE_OFFSET 16
  11900. #define NVM_CFG1_PORT_DCBX_MODE_DISABLED 0x0
  11901. #define NVM_CFG1_PORT_DCBX_MODE_IEEE 0x1
  11902. #define NVM_CFG1_PORT_DCBX_MODE_CEE 0x2
  11903. #define NVM_CFG1_PORT_DCBX_MODE_DYNAMIC 0x3
  11904. #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_MASK 0x00F00000
  11905. #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_OFFSET 20
  11906. #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ETHERNET 0x1
  11907. #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_FCOE 0x2
  11908. #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ISCSI 0x4
  11909. u32 pcie_cfg;
  11910. u32 features;
  11911. u32 speed_cap_mask;
  11912. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_MASK 0x0000FFFF
  11913. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_OFFSET 0
  11914. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_1G 0x1
  11915. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G 0x2
  11916. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G 0x8
  11917. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_40G 0x10
  11918. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_50G 0x20
  11919. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_BB_100G 0x40
  11920. u32 link_settings;
  11921. #define NVM_CFG1_PORT_DRV_LINK_SPEED_MASK 0x0000000F
  11922. #define NVM_CFG1_PORT_DRV_LINK_SPEED_OFFSET 0
  11923. #define NVM_CFG1_PORT_DRV_LINK_SPEED_AUTONEG 0x0
  11924. #define NVM_CFG1_PORT_DRV_LINK_SPEED_1G 0x1
  11925. #define NVM_CFG1_PORT_DRV_LINK_SPEED_10G 0x2
  11926. #define NVM_CFG1_PORT_DRV_LINK_SPEED_25G 0x4
  11927. #define NVM_CFG1_PORT_DRV_LINK_SPEED_40G 0x5
  11928. #define NVM_CFG1_PORT_DRV_LINK_SPEED_50G 0x6
  11929. #define NVM_CFG1_PORT_DRV_LINK_SPEED_BB_100G 0x7
  11930. #define NVM_CFG1_PORT_DRV_LINK_SPEED_SMARTLINQ 0x8
  11931. #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_MASK 0x00000070
  11932. #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_OFFSET 4
  11933. #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_AUTONEG 0x1
  11934. #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_RX 0x2
  11935. #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_TX 0x4
  11936. u32 phy_cfg;
  11937. u32 mgmt_traffic;
  11938. u32 ext_phy;
  11939. /* EEE power saving mode */
  11940. #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_MASK 0x00FF0000
  11941. #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_OFFSET 16
  11942. #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_DISABLED 0x0
  11943. #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_BALANCED 0x1
  11944. #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_AGGRESSIVE 0x2
  11945. #define NVM_CFG1_PORT_EEE_POWER_SAVING_MODE_LOW_LATENCY 0x3
  11946. u32 mba_cfg1;
  11947. u32 mba_cfg2;
  11948. u32 vf_cfg;
  11949. struct nvm_cfg_mac_address lldp_mac_address;
  11950. u32 led_port_settings;
  11951. u32 transceiver_00;
  11952. u32 device_ids;
  11953. u32 board_cfg;
  11954. u32 mnm_10g_cap;
  11955. u32 mnm_10g_ctrl;
  11956. u32 mnm_10g_misc;
  11957. u32 mnm_25g_cap;
  11958. u32 mnm_25g_ctrl;
  11959. u32 mnm_25g_misc;
  11960. u32 mnm_40g_cap;
  11961. u32 mnm_40g_ctrl;
  11962. u32 mnm_40g_misc;
  11963. u32 mnm_50g_cap;
  11964. u32 mnm_50g_ctrl;
  11965. u32 mnm_50g_misc;
  11966. u32 mnm_100g_cap;
  11967. u32 mnm_100g_ctrl;
  11968. u32 mnm_100g_misc;
  11969. u32 reserved[116];
  11970. };
  11971. struct nvm_cfg1_func {
  11972. struct nvm_cfg_mac_address mac_address;
  11973. u32 rsrv1;
  11974. u32 rsrv2;
  11975. u32 device_id;
  11976. u32 cmn_cfg;
  11977. u32 pci_cfg;
  11978. struct nvm_cfg_mac_address fcoe_node_wwn_mac_addr;
  11979. struct nvm_cfg_mac_address fcoe_port_wwn_mac_addr;
  11980. u32 preboot_generic_cfg;
  11981. u32 reserved[8];
  11982. };
  11983. struct nvm_cfg1 {
  11984. struct nvm_cfg1_glob glob;
  11985. struct nvm_cfg1_path path[MCP_GLOB_PATH_MAX];
  11986. struct nvm_cfg1_port port[MCP_GLOB_PORT_MAX];
  11987. struct nvm_cfg1_func func[MCP_GLOB_FUNC_MAX];
  11988. };
  11989. enum spad_sections {
  11990. SPAD_SECTION_TRACE,
  11991. SPAD_SECTION_NVM_CFG,
  11992. SPAD_SECTION_PUBLIC,
  11993. SPAD_SECTION_PRIVATE,
  11994. SPAD_SECTION_MAX
  11995. };
  11996. #define MCP_TRACE_SIZE 2048 /* 2kb */
  11997. /* This section is located at a fixed location in the beginning of the
  11998. * scratchpad, to ensure that the MCP trace is not run over during MFW upgrade.
  11999. * All the rest of data has a floating location which differs from version to
  12000. * version, and is pointed by the mcp_meta_data below.
  12001. * Moreover, the spad_layout section is part of the MFW firmware, and is loaded
  12002. * with it from nvram in order to clear this portion.
  12003. */
  12004. struct static_init {
  12005. u32 num_sections;
  12006. offsize_t sections[SPAD_SECTION_MAX];
  12007. #define SECTION(_sec_) (*((offsize_t *)(STRUCT_OFFSET(sections[_sec_]))))
  12008. struct mcp_trace trace;
  12009. #define MCP_TRACE_P ((struct mcp_trace *)(STRUCT_OFFSET(trace)))
  12010. u8 trace_buffer[MCP_TRACE_SIZE];
  12011. #define MCP_TRACE_BUF ((u8 *)(STRUCT_OFFSET(trace_buffer)))
  12012. /* running_mfw has the same definition as in nvm_map.h.
  12013. * This bit indicate both the running dir, and the running bundle.
  12014. * It is set once when the LIM is loaded.
  12015. */
  12016. u32 running_mfw;
  12017. #define RUNNING_MFW (*((u32 *)(STRUCT_OFFSET(running_mfw))))
  12018. u32 build_time;
  12019. #define MFW_BUILD_TIME (*((u32 *)(STRUCT_OFFSET(build_time))))
  12020. u32 reset_type;
  12021. #define RESET_TYPE (*((u32 *)(STRUCT_OFFSET(reset_type))))
  12022. u32 mfw_secure_mode;
  12023. #define MFW_SECURE_MODE (*((u32 *)(STRUCT_OFFSET(mfw_secure_mode))))
  12024. u16 pme_status_pf_bitmap;
  12025. #define PME_STATUS_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_status_pf_bitmap))))
  12026. u16 pme_enable_pf_bitmap;
  12027. #define PME_ENABLE_PF_BITMAP (*((u16 *)(STRUCT_OFFSET(pme_enable_pf_bitmap))))
  12028. u32 mim_nvm_addr;
  12029. u32 mim_start_addr;
  12030. u32 ah_pcie_link_params;
  12031. #define AH_PCIE_LINK_PARAMS_LINK_SPEED_MASK (0x000000ff)
  12032. #define AH_PCIE_LINK_PARAMS_LINK_SPEED_SHIFT (0)
  12033. #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_MASK (0x0000ff00)
  12034. #define AH_PCIE_LINK_PARAMS_LINK_WIDTH_SHIFT (8)
  12035. #define AH_PCIE_LINK_PARAMS_ASPM_MODE_MASK (0x00ff0000)
  12036. #define AH_PCIE_LINK_PARAMS_ASPM_MODE_SHIFT (16)
  12037. #define AH_PCIE_LINK_PARAMS_ASPM_CAP_MASK (0xff000000)
  12038. #define AH_PCIE_LINK_PARAMS_ASPM_CAP_SHIFT (24)
  12039. #define AH_PCIE_LINK_PARAMS (*((u32 *)(STRUCT_OFFSET(ah_pcie_link_params))))
  12040. u32 rsrv_persist[5]; /* Persist reserved for MFW upgrades */
  12041. };
  12042. #define NVM_MAGIC_VALUE 0x669955aa
  12043. enum nvm_image_type {
  12044. NVM_TYPE_TIM1 = 0x01,
  12045. NVM_TYPE_TIM2 = 0x02,
  12046. NVM_TYPE_MIM1 = 0x03,
  12047. NVM_TYPE_MIM2 = 0x04,
  12048. NVM_TYPE_MBA = 0x05,
  12049. NVM_TYPE_MODULES_PN = 0x06,
  12050. NVM_TYPE_VPD = 0x07,
  12051. NVM_TYPE_MFW_TRACE1 = 0x08,
  12052. NVM_TYPE_MFW_TRACE2 = 0x09,
  12053. NVM_TYPE_NVM_CFG1 = 0x0a,
  12054. NVM_TYPE_L2B = 0x0b,
  12055. NVM_TYPE_DIR1 = 0x0c,
  12056. NVM_TYPE_EAGLE_FW1 = 0x0d,
  12057. NVM_TYPE_FALCON_FW1 = 0x0e,
  12058. NVM_TYPE_PCIE_FW1 = 0x0f,
  12059. NVM_TYPE_HW_SET = 0x10,
  12060. NVM_TYPE_LIM = 0x11,
  12061. NVM_TYPE_AVS_FW1 = 0x12,
  12062. NVM_TYPE_DIR2 = 0x13,
  12063. NVM_TYPE_CCM = 0x14,
  12064. NVM_TYPE_EAGLE_FW2 = 0x15,
  12065. NVM_TYPE_FALCON_FW2 = 0x16,
  12066. NVM_TYPE_PCIE_FW2 = 0x17,
  12067. NVM_TYPE_AVS_FW2 = 0x18,
  12068. NVM_TYPE_INIT_HW = 0x19,
  12069. NVM_TYPE_DEFAULT_CFG = 0x1a,
  12070. NVM_TYPE_MDUMP = 0x1b,
  12071. NVM_TYPE_META = 0x1c,
  12072. NVM_TYPE_ISCSI_CFG = 0x1d,
  12073. NVM_TYPE_FCOE_CFG = 0x1f,
  12074. NVM_TYPE_ETH_PHY_FW1 = 0x20,
  12075. NVM_TYPE_ETH_PHY_FW2 = 0x21,
  12076. NVM_TYPE_MAX,
  12077. };
  12078. #define DIR_ID_1 (0)
  12079. #endif