qed_hsi.h 222 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070
  1. /* QLogic qed NIC Driver
  2. * Copyright (c) 2015 QLogic Corporation
  3. *
  4. * This software is available under the terms of the GNU General Public License
  5. * (GPL) Version 2, available from the file COPYING in the main directory of
  6. * this source tree.
  7. */
  8. #ifndef _QED_HSI_H
  9. #define _QED_HSI_H
  10. #include <linux/types.h>
  11. #include <linux/io.h>
  12. #include <linux/bitops.h>
  13. #include <linux/delay.h>
  14. #include <linux/kernel.h>
  15. #include <linux/list.h>
  16. #include <linux/slab.h>
  17. #include <linux/qed/common_hsi.h>
  18. #include <linux/qed/eth_common.h>
  19. struct qed_hwfn;
  20. struct qed_ptt;
  21. /********************************/
  22. /* Add include to common target */
  23. /********************************/
  24. /* opcodes for the event ring */
  25. enum common_event_opcode {
  26. COMMON_EVENT_PF_START,
  27. COMMON_EVENT_PF_STOP,
  28. COMMON_EVENT_RESERVED,
  29. COMMON_EVENT_RESERVED2,
  30. COMMON_EVENT_RESERVED3,
  31. COMMON_EVENT_RESERVED4,
  32. COMMON_EVENT_RESERVED5,
  33. COMMON_EVENT_RESERVED6,
  34. COMMON_EVENT_EMPTY,
  35. MAX_COMMON_EVENT_OPCODE
  36. };
  37. /* Common Ramrod Command IDs */
  38. enum common_ramrod_cmd_id {
  39. COMMON_RAMROD_UNUSED,
  40. COMMON_RAMROD_PF_START /* PF Function Start Ramrod */,
  41. COMMON_RAMROD_PF_STOP /* PF Function Stop Ramrod */,
  42. COMMON_RAMROD_RESERVED,
  43. COMMON_RAMROD_RESERVED2,
  44. COMMON_RAMROD_RESERVED3,
  45. COMMON_RAMROD_EMPTY,
  46. MAX_COMMON_RAMROD_CMD_ID
  47. };
  48. /* The core storm context for the Ystorm */
  49. struct ystorm_core_conn_st_ctx {
  50. __le32 reserved[4];
  51. };
  52. /* The core storm context for the Pstorm */
  53. struct pstorm_core_conn_st_ctx {
  54. __le32 reserved[4];
  55. };
  56. /* Core Slowpath Connection storm context of Xstorm */
  57. struct xstorm_core_conn_st_ctx {
  58. __le32 spq_base_lo /* SPQ Ring Base Address low dword */;
  59. __le32 spq_base_hi /* SPQ Ring Base Address high dword */;
  60. struct regpair consolid_base_addr;
  61. __le16 spq_cons /* SPQ Ring Consumer */;
  62. __le16 consolid_cons /* Consolidation Ring Consumer */;
  63. __le32 reserved0[55] /* Pad to 15 cycles */;
  64. };
  65. struct xstorm_core_conn_ag_ctx {
  66. u8 reserved0 /* cdu_validation */;
  67. u8 core_state /* state */;
  68. u8 flags0;
  69. #define XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  70. #define XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  71. #define XSTORM_CORE_CONN_AG_CTX_RESERVED1_MASK 0x1
  72. #define XSTORM_CORE_CONN_AG_CTX_RESERVED1_SHIFT 1
  73. #define XSTORM_CORE_CONN_AG_CTX_RESERVED2_MASK 0x1
  74. #define XSTORM_CORE_CONN_AG_CTX_RESERVED2_SHIFT 2
  75. #define XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  76. #define XSTORM_CORE_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  77. #define XSTORM_CORE_CONN_AG_CTX_RESERVED3_MASK 0x1
  78. #define XSTORM_CORE_CONN_AG_CTX_RESERVED3_SHIFT 4
  79. #define XSTORM_CORE_CONN_AG_CTX_RESERVED4_MASK 0x1
  80. #define XSTORM_CORE_CONN_AG_CTX_RESERVED4_SHIFT 5
  81. #define XSTORM_CORE_CONN_AG_CTX_RESERVED5_MASK 0x1 /* bit6 */
  82. #define XSTORM_CORE_CONN_AG_CTX_RESERVED5_SHIFT 6
  83. #define XSTORM_CORE_CONN_AG_CTX_RESERVED6_MASK 0x1 /* bit7 */
  84. #define XSTORM_CORE_CONN_AG_CTX_RESERVED6_SHIFT 7
  85. u8 flags1;
  86. #define XSTORM_CORE_CONN_AG_CTX_RESERVED7_MASK 0x1 /* bit8 */
  87. #define XSTORM_CORE_CONN_AG_CTX_RESERVED7_SHIFT 0
  88. #define XSTORM_CORE_CONN_AG_CTX_RESERVED8_MASK 0x1 /* bit9 */
  89. #define XSTORM_CORE_CONN_AG_CTX_RESERVED8_SHIFT 1
  90. #define XSTORM_CORE_CONN_AG_CTX_RESERVED9_MASK 0x1 /* bit10 */
  91. #define XSTORM_CORE_CONN_AG_CTX_RESERVED9_SHIFT 2
  92. #define XSTORM_CORE_CONN_AG_CTX_BIT11_MASK 0x1 /* bit11 */
  93. #define XSTORM_CORE_CONN_AG_CTX_BIT11_SHIFT 3
  94. #define XSTORM_CORE_CONN_AG_CTX_BIT12_MASK 0x1 /* bit12 */
  95. #define XSTORM_CORE_CONN_AG_CTX_BIT12_SHIFT 4
  96. #define XSTORM_CORE_CONN_AG_CTX_BIT13_MASK 0x1 /* bit13 */
  97. #define XSTORM_CORE_CONN_AG_CTX_BIT13_SHIFT 5
  98. #define XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1 /* bit14 */
  99. #define XSTORM_CORE_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6
  100. #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1 /* bit15 */
  101. #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7
  102. u8 flags2;
  103. #define XSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3 /* timer0cf */
  104. #define XSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 0
  105. #define XSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3 /* timer1cf */
  106. #define XSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 2
  107. #define XSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3 /* timer2cf */
  108. #define XSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 4
  109. #define XSTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3
  110. #define XSTORM_CORE_CONN_AG_CTX_CF3_SHIFT 6
  111. u8 flags3;
  112. #define XSTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3 /* cf4 */
  113. #define XSTORM_CORE_CONN_AG_CTX_CF4_SHIFT 0
  114. #define XSTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3 /* cf5 */
  115. #define XSTORM_CORE_CONN_AG_CTX_CF5_SHIFT 2
  116. #define XSTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3 /* cf6 */
  117. #define XSTORM_CORE_CONN_AG_CTX_CF6_SHIFT 4
  118. #define XSTORM_CORE_CONN_AG_CTX_CF7_MASK 0x3 /* cf7 */
  119. #define XSTORM_CORE_CONN_AG_CTX_CF7_SHIFT 6
  120. u8 flags4;
  121. #define XSTORM_CORE_CONN_AG_CTX_CF8_MASK 0x3 /* cf8 */
  122. #define XSTORM_CORE_CONN_AG_CTX_CF8_SHIFT 0
  123. #define XSTORM_CORE_CONN_AG_CTX_CF9_MASK 0x3 /* cf9 */
  124. #define XSTORM_CORE_CONN_AG_CTX_CF9_SHIFT 2
  125. #define XSTORM_CORE_CONN_AG_CTX_CF10_MASK 0x3 /* cf10 */
  126. #define XSTORM_CORE_CONN_AG_CTX_CF10_SHIFT 4
  127. #define XSTORM_CORE_CONN_AG_CTX_CF11_MASK 0x3 /* cf11 */
  128. #define XSTORM_CORE_CONN_AG_CTX_CF11_SHIFT 6
  129. u8 flags5;
  130. #define XSTORM_CORE_CONN_AG_CTX_CF12_MASK 0x3 /* cf12 */
  131. #define XSTORM_CORE_CONN_AG_CTX_CF12_SHIFT 0
  132. #define XSTORM_CORE_CONN_AG_CTX_CF13_MASK 0x3 /* cf13 */
  133. #define XSTORM_CORE_CONN_AG_CTX_CF13_SHIFT 2
  134. #define XSTORM_CORE_CONN_AG_CTX_CF14_MASK 0x3 /* cf14 */
  135. #define XSTORM_CORE_CONN_AG_CTX_CF14_SHIFT 4
  136. #define XSTORM_CORE_CONN_AG_CTX_CF15_MASK 0x3 /* cf15 */
  137. #define XSTORM_CORE_CONN_AG_CTX_CF15_SHIFT 6
  138. u8 flags6;
  139. #define XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_MASK 0x3 /* cf16 */
  140. #define XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_SHIFT 0
  141. #define XSTORM_CORE_CONN_AG_CTX_CF17_MASK 0x3
  142. #define XSTORM_CORE_CONN_AG_CTX_CF17_SHIFT 2
  143. #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_MASK 0x3 /* cf18 */
  144. #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_SHIFT 4
  145. #define XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_MASK 0x3 /* cf19 */
  146. #define XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_SHIFT 6
  147. u8 flags7;
  148. #define XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_MASK 0x3 /* cf20 */
  149. #define XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
  150. #define XSTORM_CORE_CONN_AG_CTX_RESERVED10_MASK 0x3 /* cf21 */
  151. #define XSTORM_CORE_CONN_AG_CTX_RESERVED10_SHIFT 2
  152. #define XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_MASK 0x3 /* cf22 */
  153. #define XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  154. #define XSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1 /* cf0en */
  155. #define XSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 6
  156. #define XSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1 /* cf1en */
  157. #define XSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 7
  158. u8 flags8;
  159. #define XSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1 /* cf2en */
  160. #define XSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 0
  161. #define XSTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1 /* cf3en */
  162. #define XSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 1
  163. #define XSTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1 /* cf4en */
  164. #define XSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 2
  165. #define XSTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1 /* cf5en */
  166. #define XSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 3
  167. #define XSTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1 /* cf6en */
  168. #define XSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 4
  169. #define XSTORM_CORE_CONN_AG_CTX_CF7EN_MASK 0x1 /* cf7en */
  170. #define XSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT 5
  171. #define XSTORM_CORE_CONN_AG_CTX_CF8EN_MASK 0x1 /* cf8en */
  172. #define XSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT 6
  173. #define XSTORM_CORE_CONN_AG_CTX_CF9EN_MASK 0x1 /* cf9en */
  174. #define XSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT 7
  175. u8 flags9;
  176. #define XSTORM_CORE_CONN_AG_CTX_CF10EN_MASK 0x1 /* cf10en */
  177. #define XSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT 0
  178. #define XSTORM_CORE_CONN_AG_CTX_CF11EN_MASK 0x1 /* cf11en */
  179. #define XSTORM_CORE_CONN_AG_CTX_CF11EN_SHIFT 1
  180. #define XSTORM_CORE_CONN_AG_CTX_CF12EN_MASK 0x1 /* cf12en */
  181. #define XSTORM_CORE_CONN_AG_CTX_CF12EN_SHIFT 2
  182. #define XSTORM_CORE_CONN_AG_CTX_CF13EN_MASK 0x1 /* cf13en */
  183. #define XSTORM_CORE_CONN_AG_CTX_CF13EN_SHIFT 3
  184. #define XSTORM_CORE_CONN_AG_CTX_CF14EN_MASK 0x1 /* cf14en */
  185. #define XSTORM_CORE_CONN_AG_CTX_CF14EN_SHIFT 4
  186. #define XSTORM_CORE_CONN_AG_CTX_CF15EN_MASK 0x1 /* cf15en */
  187. #define XSTORM_CORE_CONN_AG_CTX_CF15EN_SHIFT 5
  188. #define XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_MASK 0x1 /* cf16en */
  189. #define XSTORM_CORE_CONN_AG_CTX_CONSOLID_PROD_CF_EN_SHIFT 6
  190. #define XSTORM_CORE_CONN_AG_CTX_CF17EN_MASK 0x1
  191. #define XSTORM_CORE_CONN_AG_CTX_CF17EN_SHIFT 7
  192. u8 flags10;
  193. #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_MASK 0x1 /* cf18en */
  194. #define XSTORM_CORE_CONN_AG_CTX_DQ_CF_EN_SHIFT 0
  195. #define XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1 /* cf19en */
  196. #define XSTORM_CORE_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1
  197. #define XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1 /* cf20en */
  198. #define XSTORM_CORE_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
  199. #define XSTORM_CORE_CONN_AG_CTX_RESERVED11_MASK 0x1 /* cf21en */
  200. #define XSTORM_CORE_CONN_AG_CTX_RESERVED11_SHIFT 3
  201. #define XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 /* cf22en */
  202. #define XSTORM_CORE_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  203. #define XSTORM_CORE_CONN_AG_CTX_CF23EN_MASK 0x1 /* cf23en */
  204. #define XSTORM_CORE_CONN_AG_CTX_CF23EN_SHIFT 5
  205. #define XSTORM_CORE_CONN_AG_CTX_RESERVED12_MASK 0x1 /* rule0en */
  206. #define XSTORM_CORE_CONN_AG_CTX_RESERVED12_SHIFT 6
  207. #define XSTORM_CORE_CONN_AG_CTX_RESERVED13_MASK 0x1 /* rule1en */
  208. #define XSTORM_CORE_CONN_AG_CTX_RESERVED13_SHIFT 7
  209. u8 flags11;
  210. #define XSTORM_CORE_CONN_AG_CTX_RESERVED14_MASK 0x1 /* rule2en */
  211. #define XSTORM_CORE_CONN_AG_CTX_RESERVED14_SHIFT 0
  212. #define XSTORM_CORE_CONN_AG_CTX_RESERVED15_MASK 0x1 /* rule3en */
  213. #define XSTORM_CORE_CONN_AG_CTX_RESERVED15_SHIFT 1
  214. #define XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1 /* rule4en */
  215. #define XSTORM_CORE_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2
  216. #define XSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1 /* rule5en */
  217. #define XSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 3
  218. #define XSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1 /* rule6en */
  219. #define XSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 4
  220. #define XSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1 /* rule7en */
  221. #define XSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 5
  222. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 /* rule8en */
  223. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  224. #define XSTORM_CORE_CONN_AG_CTX_RULE9EN_MASK 0x1 /* rule9en */
  225. #define XSTORM_CORE_CONN_AG_CTX_RULE9EN_SHIFT 7
  226. u8 flags12;
  227. #define XSTORM_CORE_CONN_AG_CTX_RULE10EN_MASK 0x1 /* rule10en */
  228. #define XSTORM_CORE_CONN_AG_CTX_RULE10EN_SHIFT 0
  229. #define XSTORM_CORE_CONN_AG_CTX_RULE11EN_MASK 0x1 /* rule11en */
  230. #define XSTORM_CORE_CONN_AG_CTX_RULE11EN_SHIFT 1
  231. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 /* rule12en */
  232. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  233. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 /* rule13en */
  234. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  235. #define XSTORM_CORE_CONN_AG_CTX_RULE14EN_MASK 0x1 /* rule14en */
  236. #define XSTORM_CORE_CONN_AG_CTX_RULE14EN_SHIFT 4
  237. #define XSTORM_CORE_CONN_AG_CTX_RULE15EN_MASK 0x1 /* rule15en */
  238. #define XSTORM_CORE_CONN_AG_CTX_RULE15EN_SHIFT 5
  239. #define XSTORM_CORE_CONN_AG_CTX_RULE16EN_MASK 0x1 /* rule16en */
  240. #define XSTORM_CORE_CONN_AG_CTX_RULE16EN_SHIFT 6
  241. #define XSTORM_CORE_CONN_AG_CTX_RULE17EN_MASK 0x1 /* rule17en */
  242. #define XSTORM_CORE_CONN_AG_CTX_RULE17EN_SHIFT 7
  243. u8 flags13;
  244. #define XSTORM_CORE_CONN_AG_CTX_RULE18EN_MASK 0x1 /* rule18en */
  245. #define XSTORM_CORE_CONN_AG_CTX_RULE18EN_SHIFT 0
  246. #define XSTORM_CORE_CONN_AG_CTX_RULE19EN_MASK 0x1 /* rule19en */
  247. #define XSTORM_CORE_CONN_AG_CTX_RULE19EN_SHIFT 1
  248. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_MASK 0x1 /* rule20en */
  249. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
  250. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_MASK 0x1 /* rule21en */
  251. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
  252. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 /* rule22en */
  253. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  254. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_MASK 0x1 /* rule23en */
  255. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
  256. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 /* rule24en */
  257. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  258. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 /* rule25en */
  259. #define XSTORM_CORE_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  260. u8 flags14;
  261. #define XSTORM_CORE_CONN_AG_CTX_BIT16_MASK 0x1 /* bit16 */
  262. #define XSTORM_CORE_CONN_AG_CTX_BIT16_SHIFT 0
  263. #define XSTORM_CORE_CONN_AG_CTX_BIT17_MASK 0x1 /* bit17 */
  264. #define XSTORM_CORE_CONN_AG_CTX_BIT17_SHIFT 1
  265. #define XSTORM_CORE_CONN_AG_CTX_BIT18_MASK 0x1 /* bit18 */
  266. #define XSTORM_CORE_CONN_AG_CTX_BIT18_SHIFT 2
  267. #define XSTORM_CORE_CONN_AG_CTX_BIT19_MASK 0x1 /* bit19 */
  268. #define XSTORM_CORE_CONN_AG_CTX_BIT19_SHIFT 3
  269. #define XSTORM_CORE_CONN_AG_CTX_BIT20_MASK 0x1 /* bit20 */
  270. #define XSTORM_CORE_CONN_AG_CTX_BIT20_SHIFT 4
  271. #define XSTORM_CORE_CONN_AG_CTX_BIT21_MASK 0x1 /* bit21 */
  272. #define XSTORM_CORE_CONN_AG_CTX_BIT21_SHIFT 5
  273. #define XSTORM_CORE_CONN_AG_CTX_CF23_MASK 0x3 /* cf23 */
  274. #define XSTORM_CORE_CONN_AG_CTX_CF23_SHIFT 6
  275. u8 byte2 /* byte2 */;
  276. __le16 physical_q0 /* physical_q0 */;
  277. __le16 consolid_prod /* physical_q1 */;
  278. __le16 reserved16 /* physical_q2 */;
  279. __le16 tx_bd_cons /* word3 */;
  280. __le16 tx_bd_or_spq_prod /* word4 */;
  281. __le16 word5 /* word5 */;
  282. __le16 conn_dpi /* conn_dpi */;
  283. u8 byte3 /* byte3 */;
  284. u8 byte4 /* byte4 */;
  285. u8 byte5 /* byte5 */;
  286. u8 byte6 /* byte6 */;
  287. __le32 reg0 /* reg0 */;
  288. __le32 reg1 /* reg1 */;
  289. __le32 reg2 /* reg2 */;
  290. __le32 reg3 /* reg3 */;
  291. __le32 reg4 /* reg4 */;
  292. __le32 reg5 /* cf_array0 */;
  293. __le32 reg6 /* cf_array1 */;
  294. __le16 word7 /* word7 */;
  295. __le16 word8 /* word8 */;
  296. __le16 word9 /* word9 */;
  297. __le16 word10 /* word10 */;
  298. __le32 reg7 /* reg7 */;
  299. __le32 reg8 /* reg8 */;
  300. __le32 reg9 /* reg9 */;
  301. u8 byte7 /* byte7 */;
  302. u8 byte8 /* byte8 */;
  303. u8 byte9 /* byte9 */;
  304. u8 byte10 /* byte10 */;
  305. u8 byte11 /* byte11 */;
  306. u8 byte12 /* byte12 */;
  307. u8 byte13 /* byte13 */;
  308. u8 byte14 /* byte14 */;
  309. u8 byte15 /* byte15 */;
  310. u8 byte16 /* byte16 */;
  311. __le16 word11 /* word11 */;
  312. __le32 reg10 /* reg10 */;
  313. __le32 reg11 /* reg11 */;
  314. __le32 reg12 /* reg12 */;
  315. __le32 reg13 /* reg13 */;
  316. __le32 reg14 /* reg14 */;
  317. __le32 reg15 /* reg15 */;
  318. __le32 reg16 /* reg16 */;
  319. __le32 reg17 /* reg17 */;
  320. __le32 reg18 /* reg18 */;
  321. __le32 reg19 /* reg19 */;
  322. __le16 word12 /* word12 */;
  323. __le16 word13 /* word13 */;
  324. __le16 word14 /* word14 */;
  325. __le16 word15 /* word15 */;
  326. };
  327. struct tstorm_core_conn_ag_ctx {
  328. u8 byte0 /* cdu_validation */;
  329. u8 byte1 /* state */;
  330. u8 flags0;
  331. #define TSTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1 /* exist_in_qm0 */
  332. #define TSTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0
  333. #define TSTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1 /* exist_in_qm1 */
  334. #define TSTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1
  335. #define TSTORM_CORE_CONN_AG_CTX_BIT2_MASK 0x1 /* bit2 */
  336. #define TSTORM_CORE_CONN_AG_CTX_BIT2_SHIFT 2
  337. #define TSTORM_CORE_CONN_AG_CTX_BIT3_MASK 0x1 /* bit3 */
  338. #define TSTORM_CORE_CONN_AG_CTX_BIT3_SHIFT 3
  339. #define TSTORM_CORE_CONN_AG_CTX_BIT4_MASK 0x1 /* bit4 */
  340. #define TSTORM_CORE_CONN_AG_CTX_BIT4_SHIFT 4
  341. #define TSTORM_CORE_CONN_AG_CTX_BIT5_MASK 0x1 /* bit5 */
  342. #define TSTORM_CORE_CONN_AG_CTX_BIT5_SHIFT 5
  343. #define TSTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3 /* timer0cf */
  344. #define TSTORM_CORE_CONN_AG_CTX_CF0_SHIFT 6
  345. u8 flags1;
  346. #define TSTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3 /* timer1cf */
  347. #define TSTORM_CORE_CONN_AG_CTX_CF1_SHIFT 0
  348. #define TSTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3 /* timer2cf */
  349. #define TSTORM_CORE_CONN_AG_CTX_CF2_SHIFT 2
  350. #define TSTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3 /* timer_stop_all */
  351. #define TSTORM_CORE_CONN_AG_CTX_CF3_SHIFT 4
  352. #define TSTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3 /* cf4 */
  353. #define TSTORM_CORE_CONN_AG_CTX_CF4_SHIFT 6
  354. u8 flags2;
  355. #define TSTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3 /* cf5 */
  356. #define TSTORM_CORE_CONN_AG_CTX_CF5_SHIFT 0
  357. #define TSTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3 /* cf6 */
  358. #define TSTORM_CORE_CONN_AG_CTX_CF6_SHIFT 2
  359. #define TSTORM_CORE_CONN_AG_CTX_CF7_MASK 0x3 /* cf7 */
  360. #define TSTORM_CORE_CONN_AG_CTX_CF7_SHIFT 4
  361. #define TSTORM_CORE_CONN_AG_CTX_CF8_MASK 0x3 /* cf8 */
  362. #define TSTORM_CORE_CONN_AG_CTX_CF8_SHIFT 6
  363. u8 flags3;
  364. #define TSTORM_CORE_CONN_AG_CTX_CF9_MASK 0x3 /* cf9 */
  365. #define TSTORM_CORE_CONN_AG_CTX_CF9_SHIFT 0
  366. #define TSTORM_CORE_CONN_AG_CTX_CF10_MASK 0x3 /* cf10 */
  367. #define TSTORM_CORE_CONN_AG_CTX_CF10_SHIFT 2
  368. #define TSTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1 /* cf0en */
  369. #define TSTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 4
  370. #define TSTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1 /* cf1en */
  371. #define TSTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 5
  372. #define TSTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1 /* cf2en */
  373. #define TSTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 6
  374. #define TSTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1 /* cf3en */
  375. #define TSTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 7
  376. u8 flags4;
  377. #define TSTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1 /* cf4en */
  378. #define TSTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 0
  379. #define TSTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1 /* cf5en */
  380. #define TSTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 1
  381. #define TSTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1 /* cf6en */
  382. #define TSTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 2
  383. #define TSTORM_CORE_CONN_AG_CTX_CF7EN_MASK 0x1 /* cf7en */
  384. #define TSTORM_CORE_CONN_AG_CTX_CF7EN_SHIFT 3
  385. #define TSTORM_CORE_CONN_AG_CTX_CF8EN_MASK 0x1 /* cf8en */
  386. #define TSTORM_CORE_CONN_AG_CTX_CF8EN_SHIFT 4
  387. #define TSTORM_CORE_CONN_AG_CTX_CF9EN_MASK 0x1 /* cf9en */
  388. #define TSTORM_CORE_CONN_AG_CTX_CF9EN_SHIFT 5
  389. #define TSTORM_CORE_CONN_AG_CTX_CF10EN_MASK 0x1 /* cf10en */
  390. #define TSTORM_CORE_CONN_AG_CTX_CF10EN_SHIFT 6
  391. #define TSTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1 /* rule0en */
  392. #define TSTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7
  393. u8 flags5;
  394. #define TSTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1 /* rule1en */
  395. #define TSTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0
  396. #define TSTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1 /* rule2en */
  397. #define TSTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1
  398. #define TSTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1 /* rule3en */
  399. #define TSTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2
  400. #define TSTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1 /* rule4en */
  401. #define TSTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3
  402. #define TSTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1 /* rule5en */
  403. #define TSTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4
  404. #define TSTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1 /* rule6en */
  405. #define TSTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5
  406. #define TSTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1 /* rule7en */
  407. #define TSTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6
  408. #define TSTORM_CORE_CONN_AG_CTX_RULE8EN_MASK 0x1 /* rule8en */
  409. #define TSTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7
  410. __le32 reg0 /* reg0 */;
  411. __le32 reg1 /* reg1 */;
  412. __le32 reg2 /* reg2 */;
  413. __le32 reg3 /* reg3 */;
  414. __le32 reg4 /* reg4 */;
  415. __le32 reg5 /* reg5 */;
  416. __le32 reg6 /* reg6 */;
  417. __le32 reg7 /* reg7 */;
  418. __le32 reg8 /* reg8 */;
  419. u8 byte2 /* byte2 */;
  420. u8 byte3 /* byte3 */;
  421. __le16 word0 /* word0 */;
  422. u8 byte4 /* byte4 */;
  423. u8 byte5 /* byte5 */;
  424. __le16 word1 /* word1 */;
  425. __le16 word2 /* conn_dpi */;
  426. __le16 word3 /* word3 */;
  427. __le32 reg9 /* reg9 */;
  428. __le32 reg10 /* reg10 */;
  429. };
  430. struct ustorm_core_conn_ag_ctx {
  431. u8 reserved /* cdu_validation */;
  432. u8 byte1 /* state */;
  433. u8 flags0;
  434. #define USTORM_CORE_CONN_AG_CTX_BIT0_MASK 0x1 /* exist_in_qm0 */
  435. #define USTORM_CORE_CONN_AG_CTX_BIT0_SHIFT 0
  436. #define USTORM_CORE_CONN_AG_CTX_BIT1_MASK 0x1 /* exist_in_qm1 */
  437. #define USTORM_CORE_CONN_AG_CTX_BIT1_SHIFT 1
  438. #define USTORM_CORE_CONN_AG_CTX_CF0_MASK 0x3 /* timer0cf */
  439. #define USTORM_CORE_CONN_AG_CTX_CF0_SHIFT 2
  440. #define USTORM_CORE_CONN_AG_CTX_CF1_MASK 0x3 /* timer1cf */
  441. #define USTORM_CORE_CONN_AG_CTX_CF1_SHIFT 4
  442. #define USTORM_CORE_CONN_AG_CTX_CF2_MASK 0x3 /* timer2cf */
  443. #define USTORM_CORE_CONN_AG_CTX_CF2_SHIFT 6
  444. u8 flags1;
  445. #define USTORM_CORE_CONN_AG_CTX_CF3_MASK 0x3 /* timer_stop_all */
  446. #define USTORM_CORE_CONN_AG_CTX_CF3_SHIFT 0
  447. #define USTORM_CORE_CONN_AG_CTX_CF4_MASK 0x3 /* cf4 */
  448. #define USTORM_CORE_CONN_AG_CTX_CF4_SHIFT 2
  449. #define USTORM_CORE_CONN_AG_CTX_CF5_MASK 0x3 /* cf5 */
  450. #define USTORM_CORE_CONN_AG_CTX_CF5_SHIFT 4
  451. #define USTORM_CORE_CONN_AG_CTX_CF6_MASK 0x3 /* cf6 */
  452. #define USTORM_CORE_CONN_AG_CTX_CF6_SHIFT 6
  453. u8 flags2;
  454. #define USTORM_CORE_CONN_AG_CTX_CF0EN_MASK 0x1 /* cf0en */
  455. #define USTORM_CORE_CONN_AG_CTX_CF0EN_SHIFT 0
  456. #define USTORM_CORE_CONN_AG_CTX_CF1EN_MASK 0x1 /* cf1en */
  457. #define USTORM_CORE_CONN_AG_CTX_CF1EN_SHIFT 1
  458. #define USTORM_CORE_CONN_AG_CTX_CF2EN_MASK 0x1 /* cf2en */
  459. #define USTORM_CORE_CONN_AG_CTX_CF2EN_SHIFT 2
  460. #define USTORM_CORE_CONN_AG_CTX_CF3EN_MASK 0x1 /* cf3en */
  461. #define USTORM_CORE_CONN_AG_CTX_CF3EN_SHIFT 3
  462. #define USTORM_CORE_CONN_AG_CTX_CF4EN_MASK 0x1 /* cf4en */
  463. #define USTORM_CORE_CONN_AG_CTX_CF4EN_SHIFT 4
  464. #define USTORM_CORE_CONN_AG_CTX_CF5EN_MASK 0x1 /* cf5en */
  465. #define USTORM_CORE_CONN_AG_CTX_CF5EN_SHIFT 5
  466. #define USTORM_CORE_CONN_AG_CTX_CF6EN_MASK 0x1 /* cf6en */
  467. #define USTORM_CORE_CONN_AG_CTX_CF6EN_SHIFT 6
  468. #define USTORM_CORE_CONN_AG_CTX_RULE0EN_MASK 0x1 /* rule0en */
  469. #define USTORM_CORE_CONN_AG_CTX_RULE0EN_SHIFT 7
  470. u8 flags3;
  471. #define USTORM_CORE_CONN_AG_CTX_RULE1EN_MASK 0x1 /* rule1en */
  472. #define USTORM_CORE_CONN_AG_CTX_RULE1EN_SHIFT 0
  473. #define USTORM_CORE_CONN_AG_CTX_RULE2EN_MASK 0x1 /* rule2en */
  474. #define USTORM_CORE_CONN_AG_CTX_RULE2EN_SHIFT 1
  475. #define USTORM_CORE_CONN_AG_CTX_RULE3EN_MASK 0x1 /* rule3en */
  476. #define USTORM_CORE_CONN_AG_CTX_RULE3EN_SHIFT 2
  477. #define USTORM_CORE_CONN_AG_CTX_RULE4EN_MASK 0x1 /* rule4en */
  478. #define USTORM_CORE_CONN_AG_CTX_RULE4EN_SHIFT 3
  479. #define USTORM_CORE_CONN_AG_CTX_RULE5EN_MASK 0x1 /* rule5en */
  480. #define USTORM_CORE_CONN_AG_CTX_RULE5EN_SHIFT 4
  481. #define USTORM_CORE_CONN_AG_CTX_RULE6EN_MASK 0x1 /* rule6en */
  482. #define USTORM_CORE_CONN_AG_CTX_RULE6EN_SHIFT 5
  483. #define USTORM_CORE_CONN_AG_CTX_RULE7EN_MASK 0x1 /* rule7en */
  484. #define USTORM_CORE_CONN_AG_CTX_RULE7EN_SHIFT 6
  485. #define USTORM_CORE_CONN_AG_CTX_RULE8EN_MASK 0x1 /* rule8en */
  486. #define USTORM_CORE_CONN_AG_CTX_RULE8EN_SHIFT 7
  487. u8 byte2 /* byte2 */;
  488. u8 byte3 /* byte3 */;
  489. __le16 word0 /* conn_dpi */;
  490. __le16 word1 /* word1 */;
  491. __le32 rx_producers /* reg0 */;
  492. __le32 reg1 /* reg1 */;
  493. __le32 reg2 /* reg2 */;
  494. __le32 reg3 /* reg3 */;
  495. __le16 word2 /* word2 */;
  496. __le16 word3 /* word3 */;
  497. };
  498. /* The core storm context for the Mstorm */
  499. struct mstorm_core_conn_st_ctx {
  500. __le32 reserved[24];
  501. };
  502. /* The core storm context for the Ustorm */
  503. struct ustorm_core_conn_st_ctx {
  504. __le32 reserved[4];
  505. };
  506. /* core connection context */
  507. struct core_conn_context {
  508. struct ystorm_core_conn_st_ctx ystorm_st_context;
  509. struct regpair ystorm_st_padding[2] /* padding */;
  510. struct pstorm_core_conn_st_ctx pstorm_st_context;
  511. struct regpair pstorm_st_padding[2];
  512. struct xstorm_core_conn_st_ctx xstorm_st_context;
  513. struct xstorm_core_conn_ag_ctx xstorm_ag_context;
  514. struct tstorm_core_conn_ag_ctx tstorm_ag_context;
  515. struct ustorm_core_conn_ag_ctx ustorm_ag_context;
  516. struct mstorm_core_conn_st_ctx mstorm_st_context;
  517. struct ustorm_core_conn_st_ctx ustorm_st_context;
  518. struct regpair ustorm_st_padding[2] /* padding */;
  519. };
  520. struct eth_mstorm_per_queue_stat {
  521. struct regpair ttl0_discard;
  522. struct regpair packet_too_big_discard;
  523. struct regpair no_buff_discard;
  524. struct regpair not_active_discard;
  525. struct regpair tpa_coalesced_pkts;
  526. struct regpair tpa_coalesced_events;
  527. struct regpair tpa_aborts_num;
  528. struct regpair tpa_coalesced_bytes;
  529. };
  530. struct eth_pstorm_per_queue_stat {
  531. struct regpair sent_ucast_bytes;
  532. struct regpair sent_mcast_bytes;
  533. struct regpair sent_bcast_bytes;
  534. struct regpair sent_ucast_pkts;
  535. struct regpair sent_mcast_pkts;
  536. struct regpair sent_bcast_pkts;
  537. struct regpair error_drop_pkts;
  538. };
  539. struct eth_ustorm_per_queue_stat {
  540. struct regpair rcv_ucast_bytes;
  541. struct regpair rcv_mcast_bytes;
  542. struct regpair rcv_bcast_bytes;
  543. struct regpair rcv_ucast_pkts;
  544. struct regpair rcv_mcast_pkts;
  545. struct regpair rcv_bcast_pkts;
  546. };
  547. /* Event Ring Next Page Address */
  548. struct event_ring_next_addr {
  549. struct regpair addr /* Next Page Address */;
  550. __le32 reserved[2] /* Reserved */;
  551. };
  552. union event_ring_element {
  553. struct event_ring_entry entry /* Event Ring Entry */;
  554. struct event_ring_next_addr next_addr;
  555. };
  556. enum personality_type {
  557. BAD_PERSONALITY_TYP,
  558. PERSONALITY_RESERVED,
  559. PERSONALITY_RESERVED2,
  560. PERSONALITY_RDMA_AND_ETH /* Roce or Iwarp */,
  561. PERSONALITY_RESERVED3,
  562. PERSONALITY_CORE,
  563. PERSONALITY_ETH /* Ethernet */,
  564. PERSONALITY_RESERVED4,
  565. MAX_PERSONALITY_TYPE
  566. };
  567. struct pf_start_tunnel_config {
  568. u8 set_vxlan_udp_port_flg;
  569. u8 set_geneve_udp_port_flg;
  570. u8 tx_enable_vxlan /* If set, enable VXLAN tunnel in TX path. */;
  571. u8 tx_enable_l2geneve;
  572. u8 tx_enable_ipgeneve;
  573. u8 tx_enable_l2gre /* If set, enable l2 GRE tunnel in TX path. */;
  574. u8 tx_enable_ipgre /* If set, enable IP GRE tunnel in TX path. */;
  575. u8 tunnel_clss_vxlan /* Classification scheme for VXLAN tunnel. */;
  576. u8 tunnel_clss_l2geneve;
  577. u8 tunnel_clss_ipgeneve;
  578. u8 tunnel_clss_l2gre;
  579. u8 tunnel_clss_ipgre;
  580. __le16 vxlan_udp_port /* VXLAN tunnel UDP destination port. */;
  581. __le16 geneve_udp_port /* GENEVE tunnel UDP destination port. */;
  582. };
  583. /* Ramrod data for PF start ramrod */
  584. struct pf_start_ramrod_data {
  585. struct regpair event_ring_pbl_addr;
  586. struct regpair consolid_q_pbl_addr;
  587. struct pf_start_tunnel_config tunnel_config;
  588. __le16 event_ring_sb_id;
  589. u8 base_vf_id;
  590. u8 num_vfs;
  591. u8 event_ring_num_pages;
  592. u8 event_ring_sb_index;
  593. u8 path_id;
  594. u8 warning_as_error;
  595. u8 dont_log_ramrods;
  596. u8 personality;
  597. __le16 log_type_mask;
  598. u8 mf_mode /* Multi function mode */;
  599. u8 integ_phase /* Integration phase */;
  600. u8 allow_npar_tx_switching;
  601. u8 inner_to_outer_pri_map[8];
  602. u8 pri_map_valid;
  603. u32 outer_tag;
  604. u8 reserved0[4];
  605. };
  606. enum ports_mode {
  607. ENGX2_PORTX1 /* 2 engines x 1 port */,
  608. ENGX2_PORTX2 /* 2 engines x 2 ports */,
  609. ENGX1_PORTX1 /* 1 engine x 1 port */,
  610. ENGX1_PORTX2 /* 1 engine x 2 ports */,
  611. ENGX1_PORTX4 /* 1 engine x 4 ports */,
  612. MAX_PORTS_MODE
  613. };
  614. /* Ramrod Header of SPQE */
  615. struct ramrod_header {
  616. __le32 cid /* Slowpath Connection CID */;
  617. u8 cmd_id /* Ramrod Cmd (Per Protocol Type) */;
  618. u8 protocol_id /* Ramrod Protocol ID */;
  619. __le16 echo /* Ramrod echo */;
  620. };
  621. /* Slowpath Element (SPQE) */
  622. struct slow_path_element {
  623. struct ramrod_header hdr /* Ramrod Header */;
  624. struct regpair data_ptr;
  625. };
  626. struct tstorm_per_port_stat {
  627. struct regpair trunc_error_discard;
  628. struct regpair mac_error_discard;
  629. struct regpair mftag_filter_discard;
  630. struct regpair eth_mac_filter_discard;
  631. struct regpair ll2_mac_filter_discard;
  632. struct regpair ll2_conn_disabled_discard;
  633. struct regpair iscsi_irregular_pkt;
  634. struct regpair fcoe_irregular_pkt;
  635. struct regpair roce_irregular_pkt;
  636. struct regpair eth_irregular_pkt;
  637. struct regpair toe_irregular_pkt;
  638. struct regpair preroce_irregular_pkt;
  639. };
  640. struct atten_status_block {
  641. __le32 atten_bits;
  642. __le32 atten_ack;
  643. __le16 reserved0;
  644. __le16 sb_index /* status block running index */;
  645. __le32 reserved1;
  646. };
  647. enum block_addr {
  648. GRCBASE_GRC = 0x50000,
  649. GRCBASE_MISCS = 0x9000,
  650. GRCBASE_MISC = 0x8000,
  651. GRCBASE_DBU = 0xa000,
  652. GRCBASE_PGLUE_B = 0x2a8000,
  653. GRCBASE_CNIG = 0x218000,
  654. GRCBASE_CPMU = 0x30000,
  655. GRCBASE_NCSI = 0x40000,
  656. GRCBASE_OPTE = 0x53000,
  657. GRCBASE_BMB = 0x540000,
  658. GRCBASE_PCIE = 0x54000,
  659. GRCBASE_MCP = 0xe00000,
  660. GRCBASE_MCP2 = 0x52000,
  661. GRCBASE_PSWHST = 0x2a0000,
  662. GRCBASE_PSWHST2 = 0x29e000,
  663. GRCBASE_PSWRD = 0x29c000,
  664. GRCBASE_PSWRD2 = 0x29d000,
  665. GRCBASE_PSWWR = 0x29a000,
  666. GRCBASE_PSWWR2 = 0x29b000,
  667. GRCBASE_PSWRQ = 0x280000,
  668. GRCBASE_PSWRQ2 = 0x240000,
  669. GRCBASE_PGLCS = 0x0,
  670. GRCBASE_PTU = 0x560000,
  671. GRCBASE_DMAE = 0xc000,
  672. GRCBASE_TCM = 0x1180000,
  673. GRCBASE_MCM = 0x1200000,
  674. GRCBASE_UCM = 0x1280000,
  675. GRCBASE_XCM = 0x1000000,
  676. GRCBASE_YCM = 0x1080000,
  677. GRCBASE_PCM = 0x1100000,
  678. GRCBASE_QM = 0x2f0000,
  679. GRCBASE_TM = 0x2c0000,
  680. GRCBASE_DORQ = 0x100000,
  681. GRCBASE_BRB = 0x340000,
  682. GRCBASE_SRC = 0x238000,
  683. GRCBASE_PRS = 0x1f0000,
  684. GRCBASE_TSDM = 0xfb0000,
  685. GRCBASE_MSDM = 0xfc0000,
  686. GRCBASE_USDM = 0xfd0000,
  687. GRCBASE_XSDM = 0xf80000,
  688. GRCBASE_YSDM = 0xf90000,
  689. GRCBASE_PSDM = 0xfa0000,
  690. GRCBASE_TSEM = 0x1700000,
  691. GRCBASE_MSEM = 0x1800000,
  692. GRCBASE_USEM = 0x1900000,
  693. GRCBASE_XSEM = 0x1400000,
  694. GRCBASE_YSEM = 0x1500000,
  695. GRCBASE_PSEM = 0x1600000,
  696. GRCBASE_RSS = 0x238800,
  697. GRCBASE_TMLD = 0x4d0000,
  698. GRCBASE_MULD = 0x4e0000,
  699. GRCBASE_YULD = 0x4c8000,
  700. GRCBASE_XYLD = 0x4c0000,
  701. GRCBASE_PRM = 0x230000,
  702. GRCBASE_PBF_PB1 = 0xda0000,
  703. GRCBASE_PBF_PB2 = 0xda4000,
  704. GRCBASE_RPB = 0x23c000,
  705. GRCBASE_BTB = 0xdb0000,
  706. GRCBASE_PBF = 0xd80000,
  707. GRCBASE_RDIF = 0x300000,
  708. GRCBASE_TDIF = 0x310000,
  709. GRCBASE_CDU = 0x580000,
  710. GRCBASE_CCFC = 0x2e0000,
  711. GRCBASE_TCFC = 0x2d0000,
  712. GRCBASE_IGU = 0x180000,
  713. GRCBASE_CAU = 0x1c0000,
  714. GRCBASE_UMAC = 0x51000,
  715. GRCBASE_XMAC = 0x210000,
  716. GRCBASE_DBG = 0x10000,
  717. GRCBASE_NIG = 0x500000,
  718. GRCBASE_WOL = 0x600000,
  719. GRCBASE_BMBN = 0x610000,
  720. GRCBASE_IPC = 0x20000,
  721. GRCBASE_NWM = 0x800000,
  722. GRCBASE_NWS = 0x700000,
  723. GRCBASE_MS = 0x6a0000,
  724. GRCBASE_PHY_PCIE = 0x620000,
  725. GRCBASE_MISC_AEU = 0x8000,
  726. GRCBASE_BAR0_MAP = 0x1c00000,
  727. MAX_BLOCK_ADDR
  728. };
  729. enum block_id {
  730. BLOCK_GRC,
  731. BLOCK_MISCS,
  732. BLOCK_MISC,
  733. BLOCK_DBU,
  734. BLOCK_PGLUE_B,
  735. BLOCK_CNIG,
  736. BLOCK_CPMU,
  737. BLOCK_NCSI,
  738. BLOCK_OPTE,
  739. BLOCK_BMB,
  740. BLOCK_PCIE,
  741. BLOCK_MCP,
  742. BLOCK_MCP2,
  743. BLOCK_PSWHST,
  744. BLOCK_PSWHST2,
  745. BLOCK_PSWRD,
  746. BLOCK_PSWRD2,
  747. BLOCK_PSWWR,
  748. BLOCK_PSWWR2,
  749. BLOCK_PSWRQ,
  750. BLOCK_PSWRQ2,
  751. BLOCK_PGLCS,
  752. BLOCK_PTU,
  753. BLOCK_DMAE,
  754. BLOCK_TCM,
  755. BLOCK_MCM,
  756. BLOCK_UCM,
  757. BLOCK_XCM,
  758. BLOCK_YCM,
  759. BLOCK_PCM,
  760. BLOCK_QM,
  761. BLOCK_TM,
  762. BLOCK_DORQ,
  763. BLOCK_BRB,
  764. BLOCK_SRC,
  765. BLOCK_PRS,
  766. BLOCK_TSDM,
  767. BLOCK_MSDM,
  768. BLOCK_USDM,
  769. BLOCK_XSDM,
  770. BLOCK_YSDM,
  771. BLOCK_PSDM,
  772. BLOCK_TSEM,
  773. BLOCK_MSEM,
  774. BLOCK_USEM,
  775. BLOCK_XSEM,
  776. BLOCK_YSEM,
  777. BLOCK_PSEM,
  778. BLOCK_RSS,
  779. BLOCK_TMLD,
  780. BLOCK_MULD,
  781. BLOCK_YULD,
  782. BLOCK_XYLD,
  783. BLOCK_PRM,
  784. BLOCK_PBF_PB1,
  785. BLOCK_PBF_PB2,
  786. BLOCK_RPB,
  787. BLOCK_BTB,
  788. BLOCK_PBF,
  789. BLOCK_RDIF,
  790. BLOCK_TDIF,
  791. BLOCK_CDU,
  792. BLOCK_CCFC,
  793. BLOCK_TCFC,
  794. BLOCK_IGU,
  795. BLOCK_CAU,
  796. BLOCK_UMAC,
  797. BLOCK_XMAC,
  798. BLOCK_DBG,
  799. BLOCK_NIG,
  800. BLOCK_WOL,
  801. BLOCK_BMBN,
  802. BLOCK_IPC,
  803. BLOCK_NWM,
  804. BLOCK_NWS,
  805. BLOCK_MS,
  806. BLOCK_PHY_PCIE,
  807. BLOCK_MISC_AEU,
  808. BLOCK_BAR0_MAP,
  809. MAX_BLOCK_ID
  810. };
  811. enum command_type_bit {
  812. IGU_COMMAND_TYPE_NOP = 0,
  813. IGU_COMMAND_TYPE_SET = 1,
  814. MAX_COMMAND_TYPE_BIT
  815. };
  816. struct dmae_cmd {
  817. __le32 opcode;
  818. #define DMAE_CMD_SRC_MASK 0x1
  819. #define DMAE_CMD_SRC_SHIFT 0
  820. #define DMAE_CMD_DST_MASK 0x3
  821. #define DMAE_CMD_DST_SHIFT 1
  822. #define DMAE_CMD_C_DST_MASK 0x1
  823. #define DMAE_CMD_C_DST_SHIFT 3
  824. #define DMAE_CMD_CRC_RESET_MASK 0x1
  825. #define DMAE_CMD_CRC_RESET_SHIFT 4
  826. #define DMAE_CMD_SRC_ADDR_RESET_MASK 0x1
  827. #define DMAE_CMD_SRC_ADDR_RESET_SHIFT 5
  828. #define DMAE_CMD_DST_ADDR_RESET_MASK 0x1
  829. #define DMAE_CMD_DST_ADDR_RESET_SHIFT 6
  830. #define DMAE_CMD_COMP_FUNC_MASK 0x1
  831. #define DMAE_CMD_COMP_FUNC_SHIFT 7
  832. #define DMAE_CMD_COMP_WORD_EN_MASK 0x1
  833. #define DMAE_CMD_COMP_WORD_EN_SHIFT 8
  834. #define DMAE_CMD_COMP_CRC_EN_MASK 0x1
  835. #define DMAE_CMD_COMP_CRC_EN_SHIFT 9
  836. #define DMAE_CMD_COMP_CRC_OFFSET_MASK 0x7
  837. #define DMAE_CMD_COMP_CRC_OFFSET_SHIFT 10
  838. #define DMAE_CMD_RESERVED1_MASK 0x1
  839. #define DMAE_CMD_RESERVED1_SHIFT 13
  840. #define DMAE_CMD_ENDIANITY_MODE_MASK 0x3
  841. #define DMAE_CMD_ENDIANITY_MODE_SHIFT 14
  842. #define DMAE_CMD_ERR_HANDLING_MASK 0x3
  843. #define DMAE_CMD_ERR_HANDLING_SHIFT 16
  844. #define DMAE_CMD_PORT_ID_MASK 0x3
  845. #define DMAE_CMD_PORT_ID_SHIFT 18
  846. #define DMAE_CMD_SRC_PF_ID_MASK 0xF
  847. #define DMAE_CMD_SRC_PF_ID_SHIFT 20
  848. #define DMAE_CMD_DST_PF_ID_MASK 0xF
  849. #define DMAE_CMD_DST_PF_ID_SHIFT 24
  850. #define DMAE_CMD_SRC_VF_ID_VALID_MASK 0x1
  851. #define DMAE_CMD_SRC_VF_ID_VALID_SHIFT 28
  852. #define DMAE_CMD_DST_VF_ID_VALID_MASK 0x1
  853. #define DMAE_CMD_DST_VF_ID_VALID_SHIFT 29
  854. #define DMAE_CMD_RESERVED2_MASK 0x3
  855. #define DMAE_CMD_RESERVED2_SHIFT 30
  856. __le32 src_addr_lo;
  857. __le32 src_addr_hi;
  858. __le32 dst_addr_lo;
  859. __le32 dst_addr_hi;
  860. __le16 length /* Length in DW */;
  861. __le16 opcode_b;
  862. #define DMAE_CMD_SRC_VF_ID_MASK 0xFF /* Source VF id */
  863. #define DMAE_CMD_SRC_VF_ID_SHIFT 0
  864. #define DMAE_CMD_DST_VF_ID_MASK 0xFF /* Destination VF id */
  865. #define DMAE_CMD_DST_VF_ID_SHIFT 8
  866. __le32 comp_addr_lo /* PCIe completion address low or grc address */;
  867. __le32 comp_addr_hi;
  868. __le32 comp_val /* Value to write to copmletion address */;
  869. __le32 crc32 /* crc16 result */;
  870. __le32 crc_32_c /* crc32_c result */;
  871. __le16 crc16 /* crc16 result */;
  872. __le16 crc16_c /* crc16_c result */;
  873. __le16 crc10 /* crc_t10 result */;
  874. __le16 reserved;
  875. __le16 xsum16 /* checksum16 result */;
  876. __le16 xsum8 /* checksum8 result */;
  877. };
  878. struct igu_cleanup {
  879. __le32 sb_id_and_flags;
  880. #define IGU_CLEANUP_RESERVED0_MASK 0x7FFFFFF
  881. #define IGU_CLEANUP_RESERVED0_SHIFT 0
  882. #define IGU_CLEANUP_CLEANUP_SET_MASK 0x1 /* cleanup clear - 0, set - 1 */
  883. #define IGU_CLEANUP_CLEANUP_SET_SHIFT 27
  884. #define IGU_CLEANUP_CLEANUP_TYPE_MASK 0x7
  885. #define IGU_CLEANUP_CLEANUP_TYPE_SHIFT 28
  886. #define IGU_CLEANUP_COMMAND_TYPE_MASK 0x1
  887. #define IGU_CLEANUP_COMMAND_TYPE_SHIFT 31
  888. __le32 reserved1;
  889. };
  890. union igu_command {
  891. struct igu_prod_cons_update prod_cons_update;
  892. struct igu_cleanup cleanup;
  893. };
  894. struct igu_command_reg_ctrl {
  895. __le16 opaque_fid;
  896. __le16 igu_command_reg_ctrl_fields;
  897. #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_MASK 0xFFF
  898. #define IGU_COMMAND_REG_CTRL_PXP_BAR_ADDR_SHIFT 0
  899. #define IGU_COMMAND_REG_CTRL_RESERVED_MASK 0x7
  900. #define IGU_COMMAND_REG_CTRL_RESERVED_SHIFT 12
  901. #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_MASK 0x1
  902. #define IGU_COMMAND_REG_CTRL_COMMAND_TYPE_SHIFT 15
  903. };
  904. struct igu_mapping_line {
  905. __le32 igu_mapping_line_fields;
  906. #define IGU_MAPPING_LINE_VALID_MASK 0x1
  907. #define IGU_MAPPING_LINE_VALID_SHIFT 0
  908. #define IGU_MAPPING_LINE_VECTOR_NUMBER_MASK 0xFF
  909. #define IGU_MAPPING_LINE_VECTOR_NUMBER_SHIFT 1
  910. #define IGU_MAPPING_LINE_FUNCTION_NUMBER_MASK 0xFF
  911. #define IGU_MAPPING_LINE_FUNCTION_NUMBER_SHIFT 9
  912. #define IGU_MAPPING_LINE_PF_VALID_MASK 0x1 /* PF-1, VF-0 */
  913. #define IGU_MAPPING_LINE_PF_VALID_SHIFT 17
  914. #define IGU_MAPPING_LINE_IPS_GROUP_MASK 0x3F
  915. #define IGU_MAPPING_LINE_IPS_GROUP_SHIFT 18
  916. #define IGU_MAPPING_LINE_RESERVED_MASK 0xFF
  917. #define IGU_MAPPING_LINE_RESERVED_SHIFT 24
  918. };
  919. struct igu_msix_vector {
  920. struct regpair address;
  921. __le32 data;
  922. __le32 msix_vector_fields;
  923. #define IGU_MSIX_VECTOR_MASK_BIT_MASK 0x1
  924. #define IGU_MSIX_VECTOR_MASK_BIT_SHIFT 0
  925. #define IGU_MSIX_VECTOR_RESERVED0_MASK 0x7FFF
  926. #define IGU_MSIX_VECTOR_RESERVED0_SHIFT 1
  927. #define IGU_MSIX_VECTOR_STEERING_TAG_MASK 0xFF
  928. #define IGU_MSIX_VECTOR_STEERING_TAG_SHIFT 16
  929. #define IGU_MSIX_VECTOR_RESERVED1_MASK 0xFF
  930. #define IGU_MSIX_VECTOR_RESERVED1_SHIFT 24
  931. };
  932. enum init_modes {
  933. MODE_BB_A0,
  934. MODE_BB_B0,
  935. MODE_RESERVED2,
  936. MODE_ASIC,
  937. MODE_RESERVED3,
  938. MODE_RESERVED4,
  939. MODE_RESERVED5,
  940. MODE_RESERVED6,
  941. MODE_SF,
  942. MODE_MF_SD,
  943. MODE_MF_SI,
  944. MODE_PORTS_PER_ENG_1,
  945. MODE_PORTS_PER_ENG_2,
  946. MODE_PORTS_PER_ENG_4,
  947. MODE_100G,
  948. MODE_EAGLE_ENG1_WORKAROUND,
  949. MAX_INIT_MODES
  950. };
  951. enum init_phases {
  952. PHASE_ENGINE,
  953. PHASE_PORT,
  954. PHASE_PF,
  955. PHASE_RESERVED,
  956. PHASE_QM_PF,
  957. MAX_INIT_PHASES
  958. };
  959. /* per encapsulation type enabling flags */
  960. struct prs_reg_encapsulation_type_en {
  961. u8 flags;
  962. #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_MASK 0x1
  963. #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GRE_ENABLE_SHIFT 0
  964. #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_MASK 0x1
  965. #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GRE_ENABLE_SHIFT 1
  966. #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_MASK 0x1
  967. #define PRS_REG_ENCAPSULATION_TYPE_EN_VXLAN_ENABLE_SHIFT 2
  968. #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_MASK 0x1
  969. #define PRS_REG_ENCAPSULATION_TYPE_EN_T_TAG_ENABLE_SHIFT 3
  970. #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_MASK 0x1
  971. #define PRS_REG_ENCAPSULATION_TYPE_EN_ETH_OVER_GENEVE_ENABLE_SHIFT 4
  972. #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_MASK 0x1
  973. #define PRS_REG_ENCAPSULATION_TYPE_EN_IP_OVER_GENEVE_ENABLE_SHIFT 5
  974. #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_MASK 0x3
  975. #define PRS_REG_ENCAPSULATION_TYPE_EN_RESERVED_SHIFT 6
  976. };
  977. enum pxp_tph_st_hint {
  978. TPH_ST_HINT_BIDIR /* Read/Write access by Host and Device */,
  979. TPH_ST_HINT_REQUESTER /* Read/Write access by Device */,
  980. TPH_ST_HINT_TARGET,
  981. TPH_ST_HINT_TARGET_PRIO,
  982. MAX_PXP_TPH_ST_HINT
  983. };
  984. /* QM hardware structure of enable bypass credit mask */
  985. struct qm_rf_bypass_mask {
  986. u8 flags;
  987. #define QM_RF_BYPASS_MASK_LINEVOQ_MASK 0x1
  988. #define QM_RF_BYPASS_MASK_LINEVOQ_SHIFT 0
  989. #define QM_RF_BYPASS_MASK_RESERVED0_MASK 0x1
  990. #define QM_RF_BYPASS_MASK_RESERVED0_SHIFT 1
  991. #define QM_RF_BYPASS_MASK_PFWFQ_MASK 0x1
  992. #define QM_RF_BYPASS_MASK_PFWFQ_SHIFT 2
  993. #define QM_RF_BYPASS_MASK_VPWFQ_MASK 0x1
  994. #define QM_RF_BYPASS_MASK_VPWFQ_SHIFT 3
  995. #define QM_RF_BYPASS_MASK_PFRL_MASK 0x1
  996. #define QM_RF_BYPASS_MASK_PFRL_SHIFT 4
  997. #define QM_RF_BYPASS_MASK_VPQCNRL_MASK 0x1
  998. #define QM_RF_BYPASS_MASK_VPQCNRL_SHIFT 5
  999. #define QM_RF_BYPASS_MASK_FWPAUSE_MASK 0x1
  1000. #define QM_RF_BYPASS_MASK_FWPAUSE_SHIFT 6
  1001. #define QM_RF_BYPASS_MASK_RESERVED1_MASK 0x1
  1002. #define QM_RF_BYPASS_MASK_RESERVED1_SHIFT 7
  1003. };
  1004. /* QM hardware structure of opportunistic credit mask */
  1005. struct qm_rf_opportunistic_mask {
  1006. __le16 flags;
  1007. #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_MASK 0x1
  1008. #define QM_RF_OPPORTUNISTIC_MASK_LINEVOQ_SHIFT 0
  1009. #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_MASK 0x1
  1010. #define QM_RF_OPPORTUNISTIC_MASK_BYTEVOQ_SHIFT 1
  1011. #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_MASK 0x1
  1012. #define QM_RF_OPPORTUNISTIC_MASK_PFWFQ_SHIFT 2
  1013. #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_MASK 0x1
  1014. #define QM_RF_OPPORTUNISTIC_MASK_VPWFQ_SHIFT 3
  1015. #define QM_RF_OPPORTUNISTIC_MASK_PFRL_MASK 0x1
  1016. #define QM_RF_OPPORTUNISTIC_MASK_PFRL_SHIFT 4
  1017. #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_MASK 0x1
  1018. #define QM_RF_OPPORTUNISTIC_MASK_VPQCNRL_SHIFT 5
  1019. #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_MASK 0x1
  1020. #define QM_RF_OPPORTUNISTIC_MASK_FWPAUSE_SHIFT 6
  1021. #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_MASK 0x1
  1022. #define QM_RF_OPPORTUNISTIC_MASK_RESERVED0_SHIFT 7
  1023. #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_MASK 0x1
  1024. #define QM_RF_OPPORTUNISTIC_MASK_QUEUEEMPTY_SHIFT 8
  1025. #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_MASK 0x7F
  1026. #define QM_RF_OPPORTUNISTIC_MASK_RESERVED1_SHIFT 9
  1027. };
  1028. /* QM hardware structure of QM map memory */
  1029. struct qm_rf_pq_map {
  1030. u32 reg;
  1031. #define QM_RF_PQ_MAP_PQ_VALID_MASK 0x1 /* PQ active */
  1032. #define QM_RF_PQ_MAP_PQ_VALID_SHIFT 0
  1033. #define QM_RF_PQ_MAP_RL_ID_MASK 0xFF /* RL ID */
  1034. #define QM_RF_PQ_MAP_RL_ID_SHIFT 1
  1035. #define QM_RF_PQ_MAP_VP_PQ_ID_MASK 0x1FF
  1036. #define QM_RF_PQ_MAP_VP_PQ_ID_SHIFT 9
  1037. #define QM_RF_PQ_MAP_VOQ_MASK 0x1F /* VOQ */
  1038. #define QM_RF_PQ_MAP_VOQ_SHIFT 18
  1039. #define QM_RF_PQ_MAP_WRR_WEIGHT_GROUP_MASK 0x3 /* WRR weight */
  1040. #define QM_RF_PQ_MAP_WRR_WEIGHT_GROUP_SHIFT 23
  1041. #define QM_RF_PQ_MAP_RL_VALID_MASK 0x1 /* RL active */
  1042. #define QM_RF_PQ_MAP_RL_VALID_SHIFT 25
  1043. #define QM_RF_PQ_MAP_RESERVED_MASK 0x3F
  1044. #define QM_RF_PQ_MAP_RESERVED_SHIFT 26
  1045. };
  1046. /* Completion params for aggregated interrupt completion */
  1047. struct sdm_agg_int_comp_params {
  1048. __le16 params;
  1049. #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_MASK 0x3F
  1050. #define SDM_AGG_INT_COMP_PARAMS_AGG_INT_INDEX_SHIFT 0
  1051. #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_MASK 0x1
  1052. #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_ENABLE_SHIFT 6
  1053. #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_MASK 0x1FF
  1054. #define SDM_AGG_INT_COMP_PARAMS_AGG_VECTOR_BIT_SHIFT 7
  1055. };
  1056. /* SDM operation gen command (generate aggregative interrupt) */
  1057. struct sdm_op_gen {
  1058. __le32 command;
  1059. #define SDM_OP_GEN_COMP_PARAM_MASK 0xFFFF /* completion parameters 0-15 */
  1060. #define SDM_OP_GEN_COMP_PARAM_SHIFT 0
  1061. #define SDM_OP_GEN_COMP_TYPE_MASK 0xF /* completion type 16-19 */
  1062. #define SDM_OP_GEN_COMP_TYPE_SHIFT 16
  1063. #define SDM_OP_GEN_RESERVED_MASK 0xFFF /* reserved 20-31 */
  1064. #define SDM_OP_GEN_RESERVED_SHIFT 20
  1065. };
  1066. /*********************************** Init ************************************/
  1067. /* Width of GRC address in bits (addresses are specified in dwords) */
  1068. #define GRC_ADDR_BITS 23
  1069. #define MAX_GRC_ADDR ((1 << GRC_ADDR_BITS) - 1)
  1070. /* indicates an init that should be applied to any phase ID */
  1071. #define ANY_PHASE_ID 0xffff
  1072. /* init pattern size in bytes */
  1073. #define INIT_PATTERN_SIZE_BITS 4
  1074. #define MAX_INIT_PATTERN_SIZE BIT(INIT_PATTERN_SIZE_BITS)
  1075. /* Max size in dwords of a zipped array */
  1076. #define MAX_ZIPPED_SIZE 8192
  1077. /* Global PXP window */
  1078. #define NUM_OF_PXP_WIN 19
  1079. #define PXP_WIN_DWORD_SIZE_BITS 10
  1080. #define PXP_WIN_DWORD_SIZE BIT(PXP_WIN_DWORD_SIZE_BITS)
  1081. #define PXP_WIN_BYTE_SIZE_BITS (PXP_WIN_DWORD_SIZE_BITS + 2)
  1082. #define PXP_WIN_BYTE_SIZE (PXP_WIN_DWORD_SIZE * 4)
  1083. /********************************* GRC Dump **********************************/
  1084. /* width of GRC dump register sequence length in bits */
  1085. #define DUMP_SEQ_LEN_BITS 8
  1086. #define DUMP_SEQ_LEN_MAX_VAL ((1 << DUMP_SEQ_LEN_BITS) - 1)
  1087. /* width of GRC dump memory length in bits */
  1088. #define DUMP_MEM_LEN_BITS 18
  1089. #define DUMP_MEM_LEN_MAX_VAL ((1 << DUMP_MEM_LEN_BITS) - 1)
  1090. /* width of register type ID in bits */
  1091. #define REG_TYPE_ID_BITS 6
  1092. #define REG_TYPE_ID_MAX_VAL ((1 << REG_TYPE_ID_BITS) - 1)
  1093. /* width of block ID in bits */
  1094. #define BLOCK_ID_BITS 8
  1095. #define BLOCK_ID_MAX_VAL ((1 << BLOCK_ID_BITS) - 1)
  1096. /******************************** Idle Check *********************************/
  1097. /* max number of idle check predicate immediates */
  1098. #define MAX_IDLE_CHK_PRED_IMM 3
  1099. /* max number of idle check argument registers */
  1100. #define MAX_IDLE_CHK_READ_REGS 3
  1101. /* max number of idle check loops */
  1102. #define MAX_IDLE_CHK_LOOPS 0x10000
  1103. /* max idle check address increment */
  1104. #define MAX_IDLE_CHK_INCREMENT 0x10000
  1105. /* inicates an undefined idle check line index */
  1106. #define IDLE_CHK_UNDEFINED_LINE_IDX 0xffffff
  1107. /* max number of register values following the idle check header */
  1108. #define IDLE_CHK_MAX_DUMP_REGS 2
  1109. /* arguments for IDLE_CHK_MACRO_TYPE_QM_RD_WR */
  1110. #define IDLE_CHK_QM_RD_WR_PTR 0
  1111. #define IDLE_CHK_QM_RD_WR_BANK 1
  1112. /**************************************/
  1113. /* HSI Functions constants and macros */
  1114. /**************************************/
  1115. /* Number of VLAN priorities */
  1116. #define NUM_OF_VLAN_PRIORITIES 8
  1117. /* the MCP Trace meta data signautre is duplicated in the perl script that
  1118. * generats the NVRAM images.
  1119. */
  1120. #define MCP_TRACE_META_IMAGE_SIGNATURE 0x669955aa
  1121. /* Binary buffer header */
  1122. struct bin_buffer_hdr {
  1123. u32 offset;
  1124. u32 length /* buffer length in bytes */;
  1125. };
  1126. /* binary buffer types */
  1127. enum bin_buffer_type {
  1128. BIN_BUF_FW_VER_INFO /* fw_ver_info struct */,
  1129. BIN_BUF_INIT_CMD /* init commands */,
  1130. BIN_BUF_INIT_VAL /* init data */,
  1131. BIN_BUF_INIT_MODE_TREE /* init modes tree */,
  1132. BIN_BUF_IRO /* internal RAM offsets array */,
  1133. MAX_BIN_BUFFER_TYPE
  1134. };
  1135. /* Chip IDs */
  1136. enum chip_ids {
  1137. CHIP_BB_A0 /* BB A0 chip ID */,
  1138. CHIP_BB_B0 /* BB B0 chip ID */,
  1139. CHIP_K2 /* AH chip ID */,
  1140. MAX_CHIP_IDS
  1141. };
  1142. struct init_array_raw_hdr {
  1143. __le32 data;
  1144. #define INIT_ARRAY_RAW_HDR_TYPE_MASK 0xF
  1145. #define INIT_ARRAY_RAW_HDR_TYPE_SHIFT 0
  1146. #define INIT_ARRAY_RAW_HDR_PARAMS_MASK 0xFFFFFFF /* init array params */
  1147. #define INIT_ARRAY_RAW_HDR_PARAMS_SHIFT 4
  1148. };
  1149. struct init_array_standard_hdr {
  1150. __le32 data;
  1151. #define INIT_ARRAY_STANDARD_HDR_TYPE_MASK 0xF
  1152. #define INIT_ARRAY_STANDARD_HDR_TYPE_SHIFT 0
  1153. #define INIT_ARRAY_STANDARD_HDR_SIZE_MASK 0xFFFFFFF
  1154. #define INIT_ARRAY_STANDARD_HDR_SIZE_SHIFT 4
  1155. };
  1156. struct init_array_zipped_hdr {
  1157. __le32 data;
  1158. #define INIT_ARRAY_ZIPPED_HDR_TYPE_MASK 0xF
  1159. #define INIT_ARRAY_ZIPPED_HDR_TYPE_SHIFT 0
  1160. #define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_MASK 0xFFFFFFF
  1161. #define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_SHIFT 4
  1162. };
  1163. struct init_array_pattern_hdr {
  1164. __le32 data;
  1165. #define INIT_ARRAY_PATTERN_HDR_TYPE_MASK 0xF
  1166. #define INIT_ARRAY_PATTERN_HDR_TYPE_SHIFT 0
  1167. #define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_MASK 0xF
  1168. #define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_SHIFT 4
  1169. #define INIT_ARRAY_PATTERN_HDR_REPETITIONS_MASK 0xFFFFFF
  1170. #define INIT_ARRAY_PATTERN_HDR_REPETITIONS_SHIFT 8
  1171. };
  1172. union init_array_hdr {
  1173. struct init_array_raw_hdr raw /* raw init array header */;
  1174. struct init_array_standard_hdr standard;
  1175. struct init_array_zipped_hdr zipped /* zipped init array header */;
  1176. struct init_array_pattern_hdr pattern /* pattern init array header */;
  1177. };
  1178. enum init_array_types {
  1179. INIT_ARR_STANDARD /* standard init array */,
  1180. INIT_ARR_ZIPPED /* zipped init array */,
  1181. INIT_ARR_PATTERN /* a repeated pattern */,
  1182. MAX_INIT_ARRAY_TYPES
  1183. };
  1184. /* init operation: callback */
  1185. struct init_callback_op {
  1186. __le32 op_data;
  1187. #define INIT_CALLBACK_OP_OP_MASK 0xF
  1188. #define INIT_CALLBACK_OP_OP_SHIFT 0
  1189. #define INIT_CALLBACK_OP_RESERVED_MASK 0xFFFFFFF
  1190. #define INIT_CALLBACK_OP_RESERVED_SHIFT 4
  1191. __le16 callback_id /* Callback ID */;
  1192. __le16 block_id /* Blocks ID */;
  1193. };
  1194. /* init operation: delay */
  1195. struct init_delay_op {
  1196. __le32 op_data;
  1197. #define INIT_DELAY_OP_OP_MASK 0xF
  1198. #define INIT_DELAY_OP_OP_SHIFT 0
  1199. #define INIT_DELAY_OP_RESERVED_MASK 0xFFFFFFF
  1200. #define INIT_DELAY_OP_RESERVED_SHIFT 4
  1201. __le32 delay /* delay in us */;
  1202. };
  1203. /* init operation: if_mode */
  1204. struct init_if_mode_op {
  1205. __le32 op_data;
  1206. #define INIT_IF_MODE_OP_OP_MASK 0xF
  1207. #define INIT_IF_MODE_OP_OP_SHIFT 0
  1208. #define INIT_IF_MODE_OP_RESERVED1_MASK 0xFFF
  1209. #define INIT_IF_MODE_OP_RESERVED1_SHIFT 4
  1210. #define INIT_IF_MODE_OP_CMD_OFFSET_MASK 0xFFFF
  1211. #define INIT_IF_MODE_OP_CMD_OFFSET_SHIFT 16
  1212. __le16 reserved2;
  1213. __le16 modes_buf_offset;
  1214. };
  1215. /* init operation: if_phase */
  1216. struct init_if_phase_op {
  1217. __le32 op_data;
  1218. #define INIT_IF_PHASE_OP_OP_MASK 0xF
  1219. #define INIT_IF_PHASE_OP_OP_SHIFT 0
  1220. #define INIT_IF_PHASE_OP_DMAE_ENABLE_MASK 0x1
  1221. #define INIT_IF_PHASE_OP_DMAE_ENABLE_SHIFT 4
  1222. #define INIT_IF_PHASE_OP_RESERVED1_MASK 0x7FF
  1223. #define INIT_IF_PHASE_OP_RESERVED1_SHIFT 5
  1224. #define INIT_IF_PHASE_OP_CMD_OFFSET_MASK 0xFFFF
  1225. #define INIT_IF_PHASE_OP_CMD_OFFSET_SHIFT 16
  1226. __le32 phase_data;
  1227. #define INIT_IF_PHASE_OP_PHASE_MASK 0xFF /* Init phase */
  1228. #define INIT_IF_PHASE_OP_PHASE_SHIFT 0
  1229. #define INIT_IF_PHASE_OP_RESERVED2_MASK 0xFF
  1230. #define INIT_IF_PHASE_OP_RESERVED2_SHIFT 8
  1231. #define INIT_IF_PHASE_OP_PHASE_ID_MASK 0xFFFF /* Init phase ID */
  1232. #define INIT_IF_PHASE_OP_PHASE_ID_SHIFT 16
  1233. };
  1234. /* init mode operators */
  1235. enum init_mode_ops {
  1236. INIT_MODE_OP_NOT /* init mode not operator */,
  1237. INIT_MODE_OP_OR /* init mode or operator */,
  1238. INIT_MODE_OP_AND /* init mode and operator */,
  1239. MAX_INIT_MODE_OPS
  1240. };
  1241. /* init operation: raw */
  1242. struct init_raw_op {
  1243. __le32 op_data;
  1244. #define INIT_RAW_OP_OP_MASK 0xF
  1245. #define INIT_RAW_OP_OP_SHIFT 0
  1246. #define INIT_RAW_OP_PARAM1_MASK 0xFFFFFFF /* init param 1 */
  1247. #define INIT_RAW_OP_PARAM1_SHIFT 4
  1248. __le32 param2 /* Init param 2 */;
  1249. };
  1250. /* init array params */
  1251. struct init_op_array_params {
  1252. __le16 size /* array size in dwords */;
  1253. __le16 offset /* array start offset in dwords */;
  1254. };
  1255. /* Write init operation arguments */
  1256. union init_write_args {
  1257. __le32 inline_val;
  1258. __le32 zeros_count;
  1259. __le32 array_offset;
  1260. struct init_op_array_params runtime;
  1261. };
  1262. /* init operation: write */
  1263. struct init_write_op {
  1264. __le32 data;
  1265. #define INIT_WRITE_OP_OP_MASK 0xF
  1266. #define INIT_WRITE_OP_OP_SHIFT 0
  1267. #define INIT_WRITE_OP_SOURCE_MASK 0x7
  1268. #define INIT_WRITE_OP_SOURCE_SHIFT 4
  1269. #define INIT_WRITE_OP_RESERVED_MASK 0x1
  1270. #define INIT_WRITE_OP_RESERVED_SHIFT 7
  1271. #define INIT_WRITE_OP_WIDE_BUS_MASK 0x1
  1272. #define INIT_WRITE_OP_WIDE_BUS_SHIFT 8
  1273. #define INIT_WRITE_OP_ADDRESS_MASK 0x7FFFFF
  1274. #define INIT_WRITE_OP_ADDRESS_SHIFT 9
  1275. union init_write_args args /* Write init operation arguments */;
  1276. };
  1277. /* init operation: read */
  1278. struct init_read_op {
  1279. __le32 op_data;
  1280. #define INIT_READ_OP_OP_MASK 0xF
  1281. #define INIT_READ_OP_OP_SHIFT 0
  1282. #define INIT_READ_OP_POLL_TYPE_MASK 0xF
  1283. #define INIT_READ_OP_POLL_TYPE_SHIFT 4
  1284. #define INIT_READ_OP_RESERVED_MASK 0x1
  1285. #define INIT_READ_OP_RESERVED_SHIFT 8
  1286. #define INIT_READ_OP_ADDRESS_MASK 0x7FFFFF
  1287. #define INIT_READ_OP_ADDRESS_SHIFT 9
  1288. __le32 expected_val;
  1289. };
  1290. /* Init operations union */
  1291. union init_op {
  1292. struct init_raw_op raw /* raw init operation */;
  1293. struct init_write_op write /* write init operation */;
  1294. struct init_read_op read /* read init operation */;
  1295. struct init_if_mode_op if_mode /* if_mode init operation */;
  1296. struct init_if_phase_op if_phase /* if_phase init operation */;
  1297. struct init_callback_op callback /* callback init operation */;
  1298. struct init_delay_op delay /* delay init operation */;
  1299. };
  1300. /* Init command operation types */
  1301. enum init_op_types {
  1302. INIT_OP_READ /* GRC read init command */,
  1303. INIT_OP_WRITE /* GRC write init command */,
  1304. INIT_OP_IF_MODE,
  1305. INIT_OP_IF_PHASE,
  1306. INIT_OP_DELAY /* delay init command */,
  1307. INIT_OP_CALLBACK /* callback init command */,
  1308. MAX_INIT_OP_TYPES
  1309. };
  1310. enum init_poll_types {
  1311. INIT_POLL_NONE /* No polling */,
  1312. INIT_POLL_EQ /* init value is included in the init command */,
  1313. INIT_POLL_OR /* init value is all zeros */,
  1314. INIT_POLL_AND /* init value is an array of values */,
  1315. MAX_INIT_POLL_TYPES
  1316. };
  1317. /* init source types */
  1318. enum init_source_types {
  1319. INIT_SRC_INLINE /* init value is included in the init command */,
  1320. INIT_SRC_ZEROS /* init value is all zeros */,
  1321. INIT_SRC_ARRAY /* init value is an array of values */,
  1322. INIT_SRC_RUNTIME /* init value is provided during runtime */,
  1323. MAX_INIT_SOURCE_TYPES
  1324. };
  1325. /* Internal RAM Offsets macro data */
  1326. struct iro {
  1327. u32 base /* RAM field offset */;
  1328. u16 m1 /* multiplier 1 */;
  1329. u16 m2 /* multiplier 2 */;
  1330. u16 m3 /* multiplier 3 */;
  1331. u16 size /* RAM field size */;
  1332. };
  1333. /* QM per-port init parameters */
  1334. struct init_qm_port_params {
  1335. u8 active /* Indicates if this port is active */;
  1336. u8 num_active_phys_tcs;
  1337. u16 num_pbf_cmd_lines;
  1338. u16 num_btb_blocks;
  1339. __le16 reserved;
  1340. };
  1341. /* QM per-PQ init parameters */
  1342. struct init_qm_pq_params {
  1343. u8 vport_id /* VPORT ID */;
  1344. u8 tc_id /* TC ID */;
  1345. u8 wrr_group /* WRR group */;
  1346. u8 reserved;
  1347. };
  1348. /* QM per-vport init parameters */
  1349. struct init_qm_vport_params {
  1350. u32 vport_rl;
  1351. u16 vport_wfq;
  1352. u16 first_tx_pq_id[NUM_OF_TCS];
  1353. };
  1354. /* Win 2 */
  1355. #define GTT_BAR0_MAP_REG_IGU_CMD \
  1356. 0x00f000UL
  1357. /* Win 3 */
  1358. #define GTT_BAR0_MAP_REG_TSDM_RAM \
  1359. 0x010000UL
  1360. /* Win 4 */
  1361. #define GTT_BAR0_MAP_REG_MSDM_RAM \
  1362. 0x011000UL
  1363. /* Win 5 */
  1364. #define GTT_BAR0_MAP_REG_MSDM_RAM_1024 \
  1365. 0x012000UL
  1366. /* Win 6 */
  1367. #define GTT_BAR0_MAP_REG_USDM_RAM \
  1368. 0x013000UL
  1369. /* Win 7 */
  1370. #define GTT_BAR0_MAP_REG_USDM_RAM_1024 \
  1371. 0x014000UL
  1372. /* Win 8 */
  1373. #define GTT_BAR0_MAP_REG_USDM_RAM_2048 \
  1374. 0x015000UL
  1375. /* Win 9 */
  1376. #define GTT_BAR0_MAP_REG_XSDM_RAM \
  1377. 0x016000UL
  1378. /* Win 10 */
  1379. #define GTT_BAR0_MAP_REG_YSDM_RAM \
  1380. 0x017000UL
  1381. /* Win 11 */
  1382. #define GTT_BAR0_MAP_REG_PSDM_RAM \
  1383. 0x018000UL
  1384. /**
  1385. * @brief qed_qm_pf_mem_size - prepare QM ILT sizes
  1386. *
  1387. * Returns the required host memory size in 4KB units.
  1388. * Must be called before all QM init HSI functions.
  1389. *
  1390. * @param pf_id - physical function ID
  1391. * @param num_pf_cids - number of connections used by this PF
  1392. * @param num_vf_cids - number of connections used by VFs of this PF
  1393. * @param num_tids - number of tasks used by this PF
  1394. * @param num_pf_pqs - number of PQs used by this PF
  1395. * @param num_vf_pqs - number of PQs used by VFs of this PF
  1396. *
  1397. * @return The required host memory size in 4KB units.
  1398. */
  1399. u32 qed_qm_pf_mem_size(u8 pf_id,
  1400. u32 num_pf_cids,
  1401. u32 num_vf_cids,
  1402. u32 num_tids,
  1403. u16 num_pf_pqs,
  1404. u16 num_vf_pqs);
  1405. struct qed_qm_common_rt_init_params {
  1406. u8 max_ports_per_engine;
  1407. u8 max_phys_tcs_per_port;
  1408. bool pf_rl_en;
  1409. bool pf_wfq_en;
  1410. bool vport_rl_en;
  1411. bool vport_wfq_en;
  1412. struct init_qm_port_params *port_params;
  1413. };
  1414. /**
  1415. * @brief qed_qm_common_rt_init - Prepare QM runtime init values for the
  1416. * engine phase.
  1417. *
  1418. * @param p_hwfn
  1419. * @param max_ports_per_engine - max number of ports per engine in HW
  1420. * @param max_phys_tcs_per_port - max number of physical TCs per port in HW
  1421. * @param pf_rl_en - enable per-PF rate limiters
  1422. * @param pf_wfq_en - enable per-PF WFQ
  1423. * @param vport_rl_en - enable per-VPORT rate limiters
  1424. * @param vport_wfq_en - enable per-VPORT WFQ
  1425. * @param port_params - array of size MAX_NUM_PORTS with
  1426. * arameters for each port
  1427. *
  1428. * @return 0 on success, -1 on error.
  1429. */
  1430. int qed_qm_common_rt_init(
  1431. struct qed_hwfn *p_hwfn,
  1432. struct qed_qm_common_rt_init_params *p_params);
  1433. struct qed_qm_pf_rt_init_params {
  1434. u8 port_id;
  1435. u8 pf_id;
  1436. u8 max_phys_tcs_per_port;
  1437. bool is_first_pf;
  1438. u32 num_pf_cids;
  1439. u32 num_vf_cids;
  1440. u32 num_tids;
  1441. u16 start_pq;
  1442. u16 num_pf_pqs;
  1443. u16 num_vf_pqs;
  1444. u8 start_vport;
  1445. u8 num_vports;
  1446. u8 pf_wfq;
  1447. u32 pf_rl;
  1448. struct init_qm_pq_params *pq_params;
  1449. struct init_qm_vport_params *vport_params;
  1450. };
  1451. int qed_qm_pf_rt_init(struct qed_hwfn *p_hwfn,
  1452. struct qed_ptt *p_ptt,
  1453. struct qed_qm_pf_rt_init_params *p_params);
  1454. /**
  1455. * @brief qed_init_pf_rl Initializes the rate limit of the specified PF
  1456. *
  1457. * @param p_hwfn
  1458. * @param p_ptt - ptt window used for writing the registers
  1459. * @param pf_id - PF ID
  1460. * @param pf_rl - rate limit in Mb/sec units
  1461. *
  1462. * @return 0 on success, -1 on error.
  1463. */
  1464. int qed_init_pf_rl(struct qed_hwfn *p_hwfn,
  1465. struct qed_ptt *p_ptt,
  1466. u8 pf_id,
  1467. u32 pf_rl);
  1468. /**
  1469. * @brief qed_init_vport_rl Initializes the rate limit of the specified VPORT
  1470. *
  1471. * @param p_hwfn
  1472. * @param p_ptt - ptt window used for writing the registers
  1473. * @param vport_id - VPORT ID
  1474. * @param vport_rl - rate limit in Mb/sec units
  1475. *
  1476. * @return 0 on success, -1 on error.
  1477. */
  1478. int qed_init_vport_rl(struct qed_hwfn *p_hwfn,
  1479. struct qed_ptt *p_ptt,
  1480. u8 vport_id,
  1481. u32 vport_rl);
  1482. /**
  1483. * @brief qed_send_qm_stop_cmd Sends a stop command to the QM
  1484. *
  1485. * @param p_hwfn
  1486. * @param p_ptt - ptt window used for writing the registers
  1487. * @param is_release_cmd - true for release, false for stop.
  1488. * @param is_tx_pq - true for Tx PQs, false for Other PQs.
  1489. * @param start_pq - first PQ ID to stop
  1490. * @param num_pqs - Number of PQs to stop, starting from start_pq.
  1491. *
  1492. * @return bool, true if successful, false if timeout occurred while waiting
  1493. * for QM command done.
  1494. */
  1495. bool qed_send_qm_stop_cmd(struct qed_hwfn *p_hwfn,
  1496. struct qed_ptt *p_ptt,
  1497. bool is_release_cmd,
  1498. bool is_tx_pq,
  1499. u16 start_pq,
  1500. u16 num_pqs);
  1501. /* Ystorm flow control mode. Use enum fw_flow_ctrl_mode */
  1502. #define YSTORM_FLOW_CONTROL_MODE_OFFSET (IRO[0].base)
  1503. #define YSTORM_FLOW_CONTROL_MODE_SIZE (IRO[0].size)
  1504. /* Tstorm port statistics */
  1505. #define TSTORM_PORT_STAT_OFFSET(port_id) (IRO[1].base + ((port_id) * IRO[1].m1))
  1506. #define TSTORM_PORT_STAT_SIZE (IRO[1].size)
  1507. /* Tstorm ll2 port statistics */
  1508. #define TSTORM_LL2_PORT_STAT_OFFSET(port_id) \
  1509. (IRO[2].base + ((port_id) * IRO[2].m1))
  1510. #define TSTORM_LL2_PORT_STAT_SIZE (IRO[2].size)
  1511. /* Ustorm VF-PF Channel ready flag */
  1512. #define USTORM_VF_PF_CHANNEL_READY_OFFSET(vf_id) \
  1513. (IRO[3].base + ((vf_id) * IRO[3].m1))
  1514. #define USTORM_VF_PF_CHANNEL_READY_SIZE (IRO[3].size)
  1515. /* Ustorm Final flr cleanup ack */
  1516. #define USTORM_FLR_FINAL_ACK_OFFSET(pf_id) (IRO[4].base + ((pf_id) * IRO[4].m1))
  1517. #define USTORM_FLR_FINAL_ACK_SIZE (IRO[4].size)
  1518. /* Ustorm Event ring consumer */
  1519. #define USTORM_EQE_CONS_OFFSET(pf_id) (IRO[5].base + ((pf_id) * IRO[5].m1))
  1520. #define USTORM_EQE_CONS_SIZE (IRO[5].size)
  1521. /* Ustorm Common Queue ring consumer */
  1522. #define USTORM_COMMON_QUEUE_CONS_OFFSET(global_queue_id) \
  1523. (IRO[6].base + ((global_queue_id) * IRO[6].m1))
  1524. #define USTORM_COMMON_QUEUE_CONS_SIZE (IRO[6].size)
  1525. /* Xstorm Integration Test Data */
  1526. #define XSTORM_INTEG_TEST_DATA_OFFSET (IRO[7].base)
  1527. #define XSTORM_INTEG_TEST_DATA_SIZE (IRO[7].size)
  1528. /* Ystorm Integration Test Data */
  1529. #define YSTORM_INTEG_TEST_DATA_OFFSET (IRO[8].base)
  1530. #define YSTORM_INTEG_TEST_DATA_SIZE (IRO[8].size)
  1531. /* Pstorm Integration Test Data */
  1532. #define PSTORM_INTEG_TEST_DATA_OFFSET (IRO[9].base)
  1533. #define PSTORM_INTEG_TEST_DATA_SIZE (IRO[9].size)
  1534. /* Tstorm Integration Test Data */
  1535. #define TSTORM_INTEG_TEST_DATA_OFFSET (IRO[10].base)
  1536. #define TSTORM_INTEG_TEST_DATA_SIZE (IRO[10].size)
  1537. /* Mstorm Integration Test Data */
  1538. #define MSTORM_INTEG_TEST_DATA_OFFSET (IRO[11].base)
  1539. #define MSTORM_INTEG_TEST_DATA_SIZE (IRO[11].size)
  1540. /* Ustorm Integration Test Data */
  1541. #define USTORM_INTEG_TEST_DATA_OFFSET (IRO[12].base)
  1542. #define USTORM_INTEG_TEST_DATA_SIZE (IRO[12].size)
  1543. /* Tstorm producers */
  1544. #define TSTORM_LL2_RX_PRODS_OFFSET(core_rx_queue_id) \
  1545. (IRO[13].base + ((core_rx_queue_id) * IRO[13].m1))
  1546. #define TSTORM_LL2_RX_PRODS_SIZE (IRO[13].size)
  1547. /* Tstorm LightL2 queue statistics */
  1548. #define CORE_LL2_TSTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \
  1549. (IRO[14].base + ((core_rx_queue_id) * IRO[14].m1))
  1550. #define CORE_LL2_TSTORM_PER_QUEUE_STAT_SIZE (IRO[14].size)
  1551. /* Ustorm LiteL2 queue statistics */
  1552. #define CORE_LL2_USTORM_PER_QUEUE_STAT_OFFSET(core_rx_queue_id) \
  1553. (IRO[15].base + ((core_rx_queue_id) * IRO[15].m1))
  1554. #define CORE_LL2_USTORM_PER_QUEUE_STAT_SIZE (IRO[15].size)
  1555. /* Pstorm LiteL2 queue statistics */
  1556. #define CORE_LL2_PSTORM_PER_QUEUE_STAT_OFFSET(core_tx_stats_id) \
  1557. (IRO[16].base + ((core_tx_stats_id) * IRO[16].m1))
  1558. #define CORE_LL2_PSTORM_PER_QUEUE_STAT_SIZE (IRO[16].size)
  1559. /* Mstorm queue statistics */
  1560. #define MSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
  1561. (IRO[17].base + ((stat_counter_id) * IRO[17].m1))
  1562. #define MSTORM_QUEUE_STAT_SIZE (IRO[17].size)
  1563. /* Mstorm producers */
  1564. #define MSTORM_PRODS_OFFSET(queue_id) (IRO[18].base + ((queue_id) * IRO[18].m1))
  1565. #define MSTORM_PRODS_SIZE (IRO[18].size)
  1566. /* TPA agregation timeout in us resolution (on ASIC) */
  1567. #define MSTORM_TPA_TIMEOUT_US_OFFSET (IRO[19].base)
  1568. #define MSTORM_TPA_TIMEOUT_US_SIZE (IRO[19].size)
  1569. /* Ustorm queue statistics */
  1570. #define USTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
  1571. (IRO[20].base + ((stat_counter_id) * IRO[20].m1))
  1572. #define USTORM_QUEUE_STAT_SIZE (IRO[20].size)
  1573. /* Ustorm queue zone */
  1574. #define USTORM_ETH_QUEUE_ZONE_OFFSET(queue_id) \
  1575. (IRO[21].base + ((queue_id) * IRO[21].m1))
  1576. #define USTORM_ETH_QUEUE_ZONE_SIZE (IRO[21].size)
  1577. /* Pstorm queue statistics */
  1578. #define PSTORM_QUEUE_STAT_OFFSET(stat_counter_id) \
  1579. (IRO[22].base + ((stat_counter_id) * IRO[22].m1))
  1580. #define PSTORM_QUEUE_STAT_SIZE (IRO[22].size)
  1581. /* Tstorm last parser message */
  1582. #define TSTORM_ETH_PRS_INPUT_OFFSET (IRO[23].base)
  1583. #define TSTORM_ETH_PRS_INPUT_SIZE (IRO[23].size)
  1584. /* Tstorm Eth limit Rx rate */
  1585. #define ETH_RX_RATE_LIMIT_OFFSET(pf_id) (IRO[24].base + ((pf_id) * IRO[24].m1))
  1586. #define ETH_RX_RATE_LIMIT_SIZE (IRO[24].size)
  1587. /* Ystorm queue zone */
  1588. #define YSTORM_ETH_QUEUE_ZONE_OFFSET(queue_id) \
  1589. (IRO[25].base + ((queue_id) * IRO[25].m1))
  1590. #define YSTORM_ETH_QUEUE_ZONE_SIZE (IRO[25].size)
  1591. /* Ystorm cqe producer */
  1592. #define YSTORM_TOE_CQ_PROD_OFFSET(rss_id) \
  1593. (IRO[26].base + ((rss_id) * IRO[26].m1))
  1594. #define YSTORM_TOE_CQ_PROD_SIZE (IRO[26].size)
  1595. /* Ustorm cqe producer */
  1596. #define USTORM_TOE_CQ_PROD_OFFSET(rss_id) \
  1597. (IRO[27].base + ((rss_id) * IRO[27].m1))
  1598. #define USTORM_TOE_CQ_PROD_SIZE (IRO[27].size)
  1599. /* Ustorm grq producer */
  1600. #define USTORM_TOE_GRQ_PROD_OFFSET(pf_id) \
  1601. (IRO[28].base + ((pf_id) * IRO[28].m1))
  1602. #define USTORM_TOE_GRQ_PROD_SIZE (IRO[28].size)
  1603. /* Tstorm cmdq-cons of given command queue-id */
  1604. #define TSTORM_SCSI_CMDQ_CONS_OFFSET(cmdq_queue_id) \
  1605. (IRO[29].base + ((cmdq_queue_id) * IRO[29].m1))
  1606. #define TSTORM_SCSI_CMDQ_CONS_SIZE (IRO[29].size)
  1607. /* Mstorm rq-cons of given queue-id */
  1608. #define MSTORM_SCSI_RQ_CONS_OFFSET(rq_queue_id) \
  1609. (IRO[30].base + ((rq_queue_id) * IRO[30].m1))
  1610. #define MSTORM_SCSI_RQ_CONS_SIZE (IRO[30].size)
  1611. /* Mstorm bdq-external-producer of given BDQ function ID, BDqueue-id */
  1612. #define MSTORM_SCSI_BDQ_EXT_PROD_OFFSET(func_id, bdq_id) \
  1613. (IRO[31].base + ((func_id) * IRO[31].m1) + ((bdq_id) * IRO[31].m2))
  1614. #define MSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[31].size)
  1615. /* Tstorm (reflects M-Storm) bdq-external-producer of given fn ID, BDqueue-id */
  1616. #define TSTORM_SCSI_BDQ_EXT_PROD_OFFSET(func_id, bdq_id) \
  1617. (IRO[32].base + ((func_id) * IRO[32].m1) + ((bdq_id) * IRO[32].m2))
  1618. #define TSTORM_SCSI_BDQ_EXT_PROD_SIZE (IRO[32].size)
  1619. /* Tstorm iSCSI RX stats */
  1620. #define TSTORM_ISCSI_RX_STATS_OFFSET(pf_id) \
  1621. (IRO[33].base + ((pf_id) * IRO[33].m1))
  1622. #define TSTORM_ISCSI_RX_STATS_SIZE (IRO[33].size)
  1623. /* Mstorm iSCSI RX stats */
  1624. #define MSTORM_ISCSI_RX_STATS_OFFSET(pf_id) \
  1625. (IRO[34].base + ((pf_id) * IRO[34].m1))
  1626. #define MSTORM_ISCSI_RX_STATS_SIZE (IRO[34].size)
  1627. /* Ustorm iSCSI RX stats */
  1628. #define USTORM_ISCSI_RX_STATS_OFFSET(pf_id) \
  1629. (IRO[35].base + ((pf_id) * IRO[35].m1))
  1630. #define USTORM_ISCSI_RX_STATS_SIZE (IRO[35].size)
  1631. /* Xstorm iSCSI TX stats */
  1632. #define XSTORM_ISCSI_TX_STATS_OFFSET(pf_id) \
  1633. (IRO[36].base + ((pf_id) * IRO[36].m1))
  1634. #define XSTORM_ISCSI_TX_STATS_SIZE (IRO[36].size)
  1635. /* Ystorm iSCSI TX stats */
  1636. #define YSTORM_ISCSI_TX_STATS_OFFSET(pf_id) \
  1637. (IRO[37].base + ((pf_id) * IRO[37].m1))
  1638. #define YSTORM_ISCSI_TX_STATS_SIZE (IRO[37].size)
  1639. /* Pstorm iSCSI TX stats */
  1640. #define PSTORM_ISCSI_TX_STATS_OFFSET(pf_id) \
  1641. (IRO[38].base + ((pf_id) * IRO[38].m1))
  1642. #define PSTORM_ISCSI_TX_STATS_SIZE (IRO[38].size)
  1643. /* Tstorm FCoE RX stats */
  1644. #define TSTORM_FCOE_RX_STATS_OFFSET(pf_id) \
  1645. (IRO[39].base + ((pf_id) * IRO[39].m1))
  1646. #define TSTORM_FCOE_RX_STATS_SIZE (IRO[39].size)
  1647. /* Mstorm FCoE RX stats */
  1648. #define MSTORM_FCOE_RX_STATS_OFFSET(pf_id) \
  1649. (IRO[40].base + ((pf_id) * IRO[40].m1))
  1650. #define MSTORM_FCOE_RX_STATS_SIZE (IRO[40].size)
  1651. /* Pstorm FCoE TX stats */
  1652. #define PSTORM_FCOE_TX_STATS_OFFSET(pf_id) \
  1653. (IRO[41].base + ((pf_id) * IRO[41].m1))
  1654. #define PSTORM_FCOE_TX_STATS_SIZE (IRO[41].size)
  1655. /* Pstorm RoCE statistics */
  1656. #define PSTORM_ROCE_STAT_OFFSET(stat_counter_id) \
  1657. (IRO[42].base + ((stat_counter_id) * IRO[42].m1))
  1658. #define PSTORM_ROCE_STAT_SIZE (IRO[42].size)
  1659. /* Tstorm RoCE statistics */
  1660. #define TSTORM_ROCE_STAT_OFFSET(stat_counter_id) \
  1661. (IRO[43].base + ((stat_counter_id) * IRO[43].m1))
  1662. #define TSTORM_ROCE_STAT_SIZE (IRO[43].size)
  1663. static const struct iro iro_arr[44] = {
  1664. { 0x10, 0x0, 0x0, 0x0, 0x8 },
  1665. { 0x47c8, 0x60, 0x0, 0x0, 0x60 },
  1666. { 0x5e30, 0x20, 0x0, 0x0, 0x20 },
  1667. { 0x510, 0x8, 0x0, 0x0, 0x4 },
  1668. { 0x490, 0x8, 0x0, 0x0, 0x4 },
  1669. { 0x10, 0x8, 0x0, 0x0, 0x2 },
  1670. { 0x90, 0x8, 0x0, 0x0, 0x2 },
  1671. { 0x4940, 0x0, 0x0, 0x0, 0x78 },
  1672. { 0x3de0, 0x0, 0x0, 0x0, 0x78 },
  1673. { 0x2998, 0x0, 0x0, 0x0, 0x78 },
  1674. { 0x4750, 0x0, 0x0, 0x0, 0x78 },
  1675. { 0x56d0, 0x0, 0x0, 0x0, 0x78 },
  1676. { 0x7e50, 0x0, 0x0, 0x0, 0x78 },
  1677. { 0x100, 0x8, 0x0, 0x0, 0x8 },
  1678. { 0x5c10, 0x10, 0x0, 0x0, 0x10 },
  1679. { 0xb508, 0x30, 0x0, 0x0, 0x30 },
  1680. { 0x95c0, 0x30, 0x0, 0x0, 0x30 },
  1681. { 0x58a0, 0x40, 0x0, 0x0, 0x40 },
  1682. { 0x200, 0x10, 0x0, 0x0, 0x8 },
  1683. { 0xa230, 0x0, 0x0, 0x0, 0x4 },
  1684. { 0x8058, 0x40, 0x0, 0x0, 0x30 },
  1685. { 0xd00, 0x8, 0x0, 0x0, 0x8 },
  1686. { 0x2b30, 0x80, 0x0, 0x0, 0x38 },
  1687. { 0xa808, 0x0, 0x0, 0x0, 0xf0 },
  1688. { 0xa8f8, 0x8, 0x0, 0x0, 0x8 },
  1689. { 0x80, 0x8, 0x0, 0x0, 0x8 },
  1690. { 0xac0, 0x8, 0x0, 0x0, 0x8 },
  1691. { 0x2580, 0x8, 0x0, 0x0, 0x8 },
  1692. { 0x2500, 0x8, 0x0, 0x0, 0x8 },
  1693. { 0x440, 0x8, 0x0, 0x0, 0x2 },
  1694. { 0x1800, 0x8, 0x0, 0x0, 0x2 },
  1695. { 0x1a00, 0x10, 0x8, 0x0, 0x2 },
  1696. { 0x640, 0x10, 0x8, 0x0, 0x2 },
  1697. { 0xd9b8, 0x38, 0x0, 0x0, 0x24 },
  1698. { 0x11048, 0x10, 0x0, 0x0, 0x8 },
  1699. { 0x11678, 0x38, 0x0, 0x0, 0x18 },
  1700. { 0xaec0, 0x30, 0x0, 0x0, 0x10 },
  1701. { 0x8700, 0x28, 0x0, 0x0, 0x18 },
  1702. { 0xec00, 0x10, 0x0, 0x0, 0x10 },
  1703. { 0xde38, 0x40, 0x0, 0x0, 0x30 },
  1704. { 0x121a8, 0x38, 0x0, 0x0, 0x8 },
  1705. { 0xf068, 0x20, 0x0, 0x0, 0x20 },
  1706. { 0x2b68, 0x80, 0x0, 0x0, 0x10 },
  1707. { 0x4ab8, 0x10, 0x0, 0x0, 0x10 },
  1708. };
  1709. /* Runtime array offsets */
  1710. #define DORQ_REG_PF_MAX_ICID_0_RT_OFFSET 0
  1711. #define DORQ_REG_PF_MAX_ICID_1_RT_OFFSET 1
  1712. #define DORQ_REG_PF_MAX_ICID_2_RT_OFFSET 2
  1713. #define DORQ_REG_PF_MAX_ICID_3_RT_OFFSET 3
  1714. #define DORQ_REG_PF_MAX_ICID_4_RT_OFFSET 4
  1715. #define DORQ_REG_PF_MAX_ICID_5_RT_OFFSET 5
  1716. #define DORQ_REG_PF_MAX_ICID_6_RT_OFFSET 6
  1717. #define DORQ_REG_PF_MAX_ICID_7_RT_OFFSET 7
  1718. #define DORQ_REG_VF_MAX_ICID_0_RT_OFFSET 8
  1719. #define DORQ_REG_VF_MAX_ICID_1_RT_OFFSET 9
  1720. #define DORQ_REG_VF_MAX_ICID_2_RT_OFFSET 10
  1721. #define DORQ_REG_VF_MAX_ICID_3_RT_OFFSET 11
  1722. #define DORQ_REG_VF_MAX_ICID_4_RT_OFFSET 12
  1723. #define DORQ_REG_VF_MAX_ICID_5_RT_OFFSET 13
  1724. #define DORQ_REG_VF_MAX_ICID_6_RT_OFFSET 14
  1725. #define DORQ_REG_VF_MAX_ICID_7_RT_OFFSET 15
  1726. #define DORQ_REG_PF_WAKE_ALL_RT_OFFSET 16
  1727. #define DORQ_REG_TAG1_ETHERTYPE_RT_OFFSET 17
  1728. #define IGU_REG_PF_CONFIGURATION_RT_OFFSET 18
  1729. #define IGU_REG_VF_CONFIGURATION_RT_OFFSET 19
  1730. #define IGU_REG_ATTN_MSG_ADDR_L_RT_OFFSET 20
  1731. #define IGU_REG_ATTN_MSG_ADDR_H_RT_OFFSET 21
  1732. #define IGU_REG_LEADING_EDGE_LATCH_RT_OFFSET 22
  1733. #define IGU_REG_TRAILING_EDGE_LATCH_RT_OFFSET 23
  1734. #define CAU_REG_CQE_AGG_UNIT_SIZE_RT_OFFSET 24
  1735. #define CAU_REG_SB_VAR_MEMORY_RT_OFFSET 761
  1736. #define CAU_REG_SB_VAR_MEMORY_RT_SIZE 736
  1737. #define CAU_REG_SB_VAR_MEMORY_RT_OFFSET 761
  1738. #define CAU_REG_SB_VAR_MEMORY_RT_SIZE 736
  1739. #define CAU_REG_SB_ADDR_MEMORY_RT_OFFSET 1497
  1740. #define CAU_REG_SB_ADDR_MEMORY_RT_SIZE 736
  1741. #define CAU_REG_PI_MEMORY_RT_OFFSET 2233
  1742. #define CAU_REG_PI_MEMORY_RT_SIZE 4416
  1743. #define PRS_REG_SEARCH_RESP_INITIATOR_TYPE_RT_OFFSET 6649
  1744. #define PRS_REG_TASK_ID_MAX_INITIATOR_PF_RT_OFFSET 6650
  1745. #define PRS_REG_TASK_ID_MAX_INITIATOR_VF_RT_OFFSET 6651
  1746. #define PRS_REG_TASK_ID_MAX_TARGET_PF_RT_OFFSET 6652
  1747. #define PRS_REG_TASK_ID_MAX_TARGET_VF_RT_OFFSET 6653
  1748. #define PRS_REG_SEARCH_TCP_RT_OFFSET 6654
  1749. #define PRS_REG_SEARCH_FCOE_RT_OFFSET 6655
  1750. #define PRS_REG_SEARCH_ROCE_RT_OFFSET 6656
  1751. #define PRS_REG_ROCE_DEST_QP_MAX_VF_RT_OFFSET 6657
  1752. #define PRS_REG_ROCE_DEST_QP_MAX_PF_RT_OFFSET 6658
  1753. #define PRS_REG_SEARCH_OPENFLOW_RT_OFFSET 6659
  1754. #define PRS_REG_SEARCH_NON_IP_AS_OPENFLOW_RT_OFFSET 6660
  1755. #define PRS_REG_OPENFLOW_SUPPORT_ONLY_KNOWN_OVER_IP_RT_OFFSET 6661
  1756. #define PRS_REG_OPENFLOW_SEARCH_KEY_MASK_RT_OFFSET 6662
  1757. #define PRS_REG_TAG_ETHERTYPE_0_RT_OFFSET 6663
  1758. #define PRS_REG_LIGHT_L2_ETHERTYPE_EN_RT_OFFSET 6664
  1759. #define SRC_REG_FIRSTFREE_RT_OFFSET 6665
  1760. #define SRC_REG_FIRSTFREE_RT_SIZE 2
  1761. #define SRC_REG_LASTFREE_RT_OFFSET 6667
  1762. #define SRC_REG_LASTFREE_RT_SIZE 2
  1763. #define SRC_REG_COUNTFREE_RT_OFFSET 6669
  1764. #define SRC_REG_NUMBER_HASH_BITS_RT_OFFSET 6670
  1765. #define PSWRQ2_REG_CDUT_P_SIZE_RT_OFFSET 6671
  1766. #define PSWRQ2_REG_CDUC_P_SIZE_RT_OFFSET 6672
  1767. #define PSWRQ2_REG_TM_P_SIZE_RT_OFFSET 6673
  1768. #define PSWRQ2_REG_QM_P_SIZE_RT_OFFSET 6674
  1769. #define PSWRQ2_REG_SRC_P_SIZE_RT_OFFSET 6675
  1770. #define PSWRQ2_REG_TM_FIRST_ILT_RT_OFFSET 6676
  1771. #define PSWRQ2_REG_TM_LAST_ILT_RT_OFFSET 6677
  1772. #define PSWRQ2_REG_QM_FIRST_ILT_RT_OFFSET 6678
  1773. #define PSWRQ2_REG_QM_LAST_ILT_RT_OFFSET 6679
  1774. #define PSWRQ2_REG_SRC_FIRST_ILT_RT_OFFSET 6680
  1775. #define PSWRQ2_REG_SRC_LAST_ILT_RT_OFFSET 6681
  1776. #define PSWRQ2_REG_CDUC_FIRST_ILT_RT_OFFSET 6682
  1777. #define PSWRQ2_REG_CDUC_LAST_ILT_RT_OFFSET 6683
  1778. #define PSWRQ2_REG_CDUT_FIRST_ILT_RT_OFFSET 6684
  1779. #define PSWRQ2_REG_CDUT_LAST_ILT_RT_OFFSET 6685
  1780. #define PSWRQ2_REG_TSDM_FIRST_ILT_RT_OFFSET 6686
  1781. #define PSWRQ2_REG_TSDM_LAST_ILT_RT_OFFSET 6687
  1782. #define PSWRQ2_REG_TM_NUMBER_OF_PF_BLOCKS_RT_OFFSET 6688
  1783. #define PSWRQ2_REG_CDUT_NUMBER_OF_PF_BLOCKS_RT_OFFSET 6689
  1784. #define PSWRQ2_REG_CDUC_NUMBER_OF_PF_BLOCKS_RT_OFFSET 6690
  1785. #define PSWRQ2_REG_TM_VF_BLOCKS_RT_OFFSET 6691
  1786. #define PSWRQ2_REG_CDUT_VF_BLOCKS_RT_OFFSET 6692
  1787. #define PSWRQ2_REG_CDUC_VF_BLOCKS_RT_OFFSET 6693
  1788. #define PSWRQ2_REG_TM_BLOCKS_FACTOR_RT_OFFSET 6694
  1789. #define PSWRQ2_REG_CDUT_BLOCKS_FACTOR_RT_OFFSET 6695
  1790. #define PSWRQ2_REG_CDUC_BLOCKS_FACTOR_RT_OFFSET 6696
  1791. #define PSWRQ2_REG_VF_BASE_RT_OFFSET 6697
  1792. #define PSWRQ2_REG_VF_LAST_ILT_RT_OFFSET 6698
  1793. #define PSWRQ2_REG_WR_MBS0_RT_OFFSET 6699
  1794. #define PSWRQ2_REG_RD_MBS0_RT_OFFSET 6700
  1795. #define PSWRQ2_REG_DRAM_ALIGN_WR_RT_OFFSET 6701
  1796. #define PSWRQ2_REG_DRAM_ALIGN_RD_RT_OFFSET 6702
  1797. #define PSWRQ2_REG_ILT_MEMORY_RT_OFFSET 6703
  1798. #define PSWRQ2_REG_ILT_MEMORY_RT_SIZE 22000
  1799. #define PGLUE_REG_B_VF_BASE_RT_OFFSET 28703
  1800. #define PGLUE_REG_B_CACHE_LINE_SIZE_RT_OFFSET 28704
  1801. #define PGLUE_REG_B_PF_BAR0_SIZE_RT_OFFSET 28705
  1802. #define PGLUE_REG_B_PF_BAR1_SIZE_RT_OFFSET 28706
  1803. #define PGLUE_REG_B_VF_BAR1_SIZE_RT_OFFSET 28707
  1804. #define TM_REG_VF_ENABLE_CONN_RT_OFFSET 28708
  1805. #define TM_REG_PF_ENABLE_CONN_RT_OFFSET 28709
  1806. #define TM_REG_PF_ENABLE_TASK_RT_OFFSET 28710
  1807. #define TM_REG_GROUP_SIZE_RESOLUTION_CONN_RT_OFFSET 28711
  1808. #define TM_REG_GROUP_SIZE_RESOLUTION_TASK_RT_OFFSET 28712
  1809. #define TM_REG_CONFIG_CONN_MEM_RT_OFFSET 28713
  1810. #define TM_REG_CONFIG_CONN_MEM_RT_SIZE 416
  1811. #define TM_REG_CONFIG_TASK_MEM_RT_OFFSET 29129
  1812. #define TM_REG_CONFIG_TASK_MEM_RT_SIZE 512
  1813. #define QM_REG_MAXPQSIZE_0_RT_OFFSET 29641
  1814. #define QM_REG_MAXPQSIZE_1_RT_OFFSET 29642
  1815. #define QM_REG_MAXPQSIZE_2_RT_OFFSET 29643
  1816. #define QM_REG_MAXPQSIZETXSEL_0_RT_OFFSET 29644
  1817. #define QM_REG_MAXPQSIZETXSEL_1_RT_OFFSET 29645
  1818. #define QM_REG_MAXPQSIZETXSEL_2_RT_OFFSET 29646
  1819. #define QM_REG_MAXPQSIZETXSEL_3_RT_OFFSET 29647
  1820. #define QM_REG_MAXPQSIZETXSEL_4_RT_OFFSET 29648
  1821. #define QM_REG_MAXPQSIZETXSEL_5_RT_OFFSET 29649
  1822. #define QM_REG_MAXPQSIZETXSEL_6_RT_OFFSET 29650
  1823. #define QM_REG_MAXPQSIZETXSEL_7_RT_OFFSET 29651
  1824. #define QM_REG_MAXPQSIZETXSEL_8_RT_OFFSET 29652
  1825. #define QM_REG_MAXPQSIZETXSEL_9_RT_OFFSET 29653
  1826. #define QM_REG_MAXPQSIZETXSEL_10_RT_OFFSET 29654
  1827. #define QM_REG_MAXPQSIZETXSEL_11_RT_OFFSET 29655
  1828. #define QM_REG_MAXPQSIZETXSEL_12_RT_OFFSET 29656
  1829. #define QM_REG_MAXPQSIZETXSEL_13_RT_OFFSET 29657
  1830. #define QM_REG_MAXPQSIZETXSEL_14_RT_OFFSET 29658
  1831. #define QM_REG_MAXPQSIZETXSEL_15_RT_OFFSET 29659
  1832. #define QM_REG_MAXPQSIZETXSEL_16_RT_OFFSET 29660
  1833. #define QM_REG_MAXPQSIZETXSEL_17_RT_OFFSET 29661
  1834. #define QM_REG_MAXPQSIZETXSEL_18_RT_OFFSET 29662
  1835. #define QM_REG_MAXPQSIZETXSEL_19_RT_OFFSET 29663
  1836. #define QM_REG_MAXPQSIZETXSEL_20_RT_OFFSET 29664
  1837. #define QM_REG_MAXPQSIZETXSEL_21_RT_OFFSET 29665
  1838. #define QM_REG_MAXPQSIZETXSEL_22_RT_OFFSET 29666
  1839. #define QM_REG_MAXPQSIZETXSEL_23_RT_OFFSET 29667
  1840. #define QM_REG_MAXPQSIZETXSEL_24_RT_OFFSET 29668
  1841. #define QM_REG_MAXPQSIZETXSEL_25_RT_OFFSET 29669
  1842. #define QM_REG_MAXPQSIZETXSEL_26_RT_OFFSET 29670
  1843. #define QM_REG_MAXPQSIZETXSEL_27_RT_OFFSET 29671
  1844. #define QM_REG_MAXPQSIZETXSEL_28_RT_OFFSET 29672
  1845. #define QM_REG_MAXPQSIZETXSEL_29_RT_OFFSET 29673
  1846. #define QM_REG_MAXPQSIZETXSEL_30_RT_OFFSET 29674
  1847. #define QM_REG_MAXPQSIZETXSEL_31_RT_OFFSET 29675
  1848. #define QM_REG_MAXPQSIZETXSEL_32_RT_OFFSET 29676
  1849. #define QM_REG_MAXPQSIZETXSEL_33_RT_OFFSET 29677
  1850. #define QM_REG_MAXPQSIZETXSEL_34_RT_OFFSET 29678
  1851. #define QM_REG_MAXPQSIZETXSEL_35_RT_OFFSET 29679
  1852. #define QM_REG_MAXPQSIZETXSEL_36_RT_OFFSET 29680
  1853. #define QM_REG_MAXPQSIZETXSEL_37_RT_OFFSET 29681
  1854. #define QM_REG_MAXPQSIZETXSEL_38_RT_OFFSET 29682
  1855. #define QM_REG_MAXPQSIZETXSEL_39_RT_OFFSET 29683
  1856. #define QM_REG_MAXPQSIZETXSEL_40_RT_OFFSET 29684
  1857. #define QM_REG_MAXPQSIZETXSEL_41_RT_OFFSET 29685
  1858. #define QM_REG_MAXPQSIZETXSEL_42_RT_OFFSET 29686
  1859. #define QM_REG_MAXPQSIZETXSEL_43_RT_OFFSET 29687
  1860. #define QM_REG_MAXPQSIZETXSEL_44_RT_OFFSET 29688
  1861. #define QM_REG_MAXPQSIZETXSEL_45_RT_OFFSET 29689
  1862. #define QM_REG_MAXPQSIZETXSEL_46_RT_OFFSET 29690
  1863. #define QM_REG_MAXPQSIZETXSEL_47_RT_OFFSET 29691
  1864. #define QM_REG_MAXPQSIZETXSEL_48_RT_OFFSET 29692
  1865. #define QM_REG_MAXPQSIZETXSEL_49_RT_OFFSET 29693
  1866. #define QM_REG_MAXPQSIZETXSEL_50_RT_OFFSET 29694
  1867. #define QM_REG_MAXPQSIZETXSEL_51_RT_OFFSET 29695
  1868. #define QM_REG_MAXPQSIZETXSEL_52_RT_OFFSET 29696
  1869. #define QM_REG_MAXPQSIZETXSEL_53_RT_OFFSET 29697
  1870. #define QM_REG_MAXPQSIZETXSEL_54_RT_OFFSET 29698
  1871. #define QM_REG_MAXPQSIZETXSEL_55_RT_OFFSET 29699
  1872. #define QM_REG_MAXPQSIZETXSEL_56_RT_OFFSET 29700
  1873. #define QM_REG_MAXPQSIZETXSEL_57_RT_OFFSET 29701
  1874. #define QM_REG_MAXPQSIZETXSEL_58_RT_OFFSET 29702
  1875. #define QM_REG_MAXPQSIZETXSEL_59_RT_OFFSET 29703
  1876. #define QM_REG_MAXPQSIZETXSEL_60_RT_OFFSET 29704
  1877. #define QM_REG_MAXPQSIZETXSEL_61_RT_OFFSET 29705
  1878. #define QM_REG_MAXPQSIZETXSEL_62_RT_OFFSET 29706
  1879. #define QM_REG_MAXPQSIZETXSEL_63_RT_OFFSET 29707
  1880. #define QM_REG_BASEADDROTHERPQ_RT_OFFSET 29708
  1881. #define QM_REG_BASEADDROTHERPQ_RT_SIZE 128
  1882. #define QM_REG_VOQCRDLINE_RT_OFFSET 29836
  1883. #define QM_REG_VOQCRDLINE_RT_SIZE 20
  1884. #define QM_REG_VOQINITCRDLINE_RT_OFFSET 29856
  1885. #define QM_REG_VOQINITCRDLINE_RT_SIZE 20
  1886. #define QM_REG_AFULLQMBYPTHRPFWFQ_RT_OFFSET 29876
  1887. #define QM_REG_AFULLQMBYPTHRVPWFQ_RT_OFFSET 29877
  1888. #define QM_REG_AFULLQMBYPTHRPFRL_RT_OFFSET 29878
  1889. #define QM_REG_AFULLQMBYPTHRGLBLRL_RT_OFFSET 29879
  1890. #define QM_REG_AFULLOPRTNSTCCRDMASK_RT_OFFSET 29880
  1891. #define QM_REG_WRROTHERPQGRP_0_RT_OFFSET 29881
  1892. #define QM_REG_WRROTHERPQGRP_1_RT_OFFSET 29882
  1893. #define QM_REG_WRROTHERPQGRP_2_RT_OFFSET 29883
  1894. #define QM_REG_WRROTHERPQGRP_3_RT_OFFSET 29884
  1895. #define QM_REG_WRROTHERPQGRP_4_RT_OFFSET 29885
  1896. #define QM_REG_WRROTHERPQGRP_5_RT_OFFSET 29886
  1897. #define QM_REG_WRROTHERPQGRP_6_RT_OFFSET 29887
  1898. #define QM_REG_WRROTHERPQGRP_7_RT_OFFSET 29888
  1899. #define QM_REG_WRROTHERPQGRP_8_RT_OFFSET 29889
  1900. #define QM_REG_WRROTHERPQGRP_9_RT_OFFSET 29890
  1901. #define QM_REG_WRROTHERPQGRP_10_RT_OFFSET 29891
  1902. #define QM_REG_WRROTHERPQGRP_11_RT_OFFSET 29892
  1903. #define QM_REG_WRROTHERPQGRP_12_RT_OFFSET 29893
  1904. #define QM_REG_WRROTHERPQGRP_13_RT_OFFSET 29894
  1905. #define QM_REG_WRROTHERPQGRP_14_RT_OFFSET 29895
  1906. #define QM_REG_WRROTHERPQGRP_15_RT_OFFSET 29896
  1907. #define QM_REG_WRROTHERGRPWEIGHT_0_RT_OFFSET 29897
  1908. #define QM_REG_WRROTHERGRPWEIGHT_1_RT_OFFSET 29898
  1909. #define QM_REG_WRROTHERGRPWEIGHT_2_RT_OFFSET 29899
  1910. #define QM_REG_WRROTHERGRPWEIGHT_3_RT_OFFSET 29900
  1911. #define QM_REG_WRRTXGRPWEIGHT_0_RT_OFFSET 29901
  1912. #define QM_REG_WRRTXGRPWEIGHT_1_RT_OFFSET 29902
  1913. #define QM_REG_PQTX2PF_0_RT_OFFSET 29903
  1914. #define QM_REG_PQTX2PF_1_RT_OFFSET 29904
  1915. #define QM_REG_PQTX2PF_2_RT_OFFSET 29905
  1916. #define QM_REG_PQTX2PF_3_RT_OFFSET 29906
  1917. #define QM_REG_PQTX2PF_4_RT_OFFSET 29907
  1918. #define QM_REG_PQTX2PF_5_RT_OFFSET 29908
  1919. #define QM_REG_PQTX2PF_6_RT_OFFSET 29909
  1920. #define QM_REG_PQTX2PF_7_RT_OFFSET 29910
  1921. #define QM_REG_PQTX2PF_8_RT_OFFSET 29911
  1922. #define QM_REG_PQTX2PF_9_RT_OFFSET 29912
  1923. #define QM_REG_PQTX2PF_10_RT_OFFSET 29913
  1924. #define QM_REG_PQTX2PF_11_RT_OFFSET 29914
  1925. #define QM_REG_PQTX2PF_12_RT_OFFSET 29915
  1926. #define QM_REG_PQTX2PF_13_RT_OFFSET 29916
  1927. #define QM_REG_PQTX2PF_14_RT_OFFSET 29917
  1928. #define QM_REG_PQTX2PF_15_RT_OFFSET 29918
  1929. #define QM_REG_PQTX2PF_16_RT_OFFSET 29919
  1930. #define QM_REG_PQTX2PF_17_RT_OFFSET 29920
  1931. #define QM_REG_PQTX2PF_18_RT_OFFSET 29921
  1932. #define QM_REG_PQTX2PF_19_RT_OFFSET 29922
  1933. #define QM_REG_PQTX2PF_20_RT_OFFSET 29923
  1934. #define QM_REG_PQTX2PF_21_RT_OFFSET 29924
  1935. #define QM_REG_PQTX2PF_22_RT_OFFSET 29925
  1936. #define QM_REG_PQTX2PF_23_RT_OFFSET 29926
  1937. #define QM_REG_PQTX2PF_24_RT_OFFSET 29927
  1938. #define QM_REG_PQTX2PF_25_RT_OFFSET 29928
  1939. #define QM_REG_PQTX2PF_26_RT_OFFSET 29929
  1940. #define QM_REG_PQTX2PF_27_RT_OFFSET 29930
  1941. #define QM_REG_PQTX2PF_28_RT_OFFSET 29931
  1942. #define QM_REG_PQTX2PF_29_RT_OFFSET 29932
  1943. #define QM_REG_PQTX2PF_30_RT_OFFSET 29933
  1944. #define QM_REG_PQTX2PF_31_RT_OFFSET 29934
  1945. #define QM_REG_PQTX2PF_32_RT_OFFSET 29935
  1946. #define QM_REG_PQTX2PF_33_RT_OFFSET 29936
  1947. #define QM_REG_PQTX2PF_34_RT_OFFSET 29937
  1948. #define QM_REG_PQTX2PF_35_RT_OFFSET 29938
  1949. #define QM_REG_PQTX2PF_36_RT_OFFSET 29939
  1950. #define QM_REG_PQTX2PF_37_RT_OFFSET 29940
  1951. #define QM_REG_PQTX2PF_38_RT_OFFSET 29941
  1952. #define QM_REG_PQTX2PF_39_RT_OFFSET 29942
  1953. #define QM_REG_PQTX2PF_40_RT_OFFSET 29943
  1954. #define QM_REG_PQTX2PF_41_RT_OFFSET 29944
  1955. #define QM_REG_PQTX2PF_42_RT_OFFSET 29945
  1956. #define QM_REG_PQTX2PF_43_RT_OFFSET 29946
  1957. #define QM_REG_PQTX2PF_44_RT_OFFSET 29947
  1958. #define QM_REG_PQTX2PF_45_RT_OFFSET 29948
  1959. #define QM_REG_PQTX2PF_46_RT_OFFSET 29949
  1960. #define QM_REG_PQTX2PF_47_RT_OFFSET 29950
  1961. #define QM_REG_PQTX2PF_48_RT_OFFSET 29951
  1962. #define QM_REG_PQTX2PF_49_RT_OFFSET 29952
  1963. #define QM_REG_PQTX2PF_50_RT_OFFSET 29953
  1964. #define QM_REG_PQTX2PF_51_RT_OFFSET 29954
  1965. #define QM_REG_PQTX2PF_52_RT_OFFSET 29955
  1966. #define QM_REG_PQTX2PF_53_RT_OFFSET 29956
  1967. #define QM_REG_PQTX2PF_54_RT_OFFSET 29957
  1968. #define QM_REG_PQTX2PF_55_RT_OFFSET 29958
  1969. #define QM_REG_PQTX2PF_56_RT_OFFSET 29959
  1970. #define QM_REG_PQTX2PF_57_RT_OFFSET 29960
  1971. #define QM_REG_PQTX2PF_58_RT_OFFSET 29961
  1972. #define QM_REG_PQTX2PF_59_RT_OFFSET 29962
  1973. #define QM_REG_PQTX2PF_60_RT_OFFSET 29963
  1974. #define QM_REG_PQTX2PF_61_RT_OFFSET 29964
  1975. #define QM_REG_PQTX2PF_62_RT_OFFSET 29965
  1976. #define QM_REG_PQTX2PF_63_RT_OFFSET 29966
  1977. #define QM_REG_PQOTHER2PF_0_RT_OFFSET 29967
  1978. #define QM_REG_PQOTHER2PF_1_RT_OFFSET 29968
  1979. #define QM_REG_PQOTHER2PF_2_RT_OFFSET 29969
  1980. #define QM_REG_PQOTHER2PF_3_RT_OFFSET 29970
  1981. #define QM_REG_PQOTHER2PF_4_RT_OFFSET 29971
  1982. #define QM_REG_PQOTHER2PF_5_RT_OFFSET 29972
  1983. #define QM_REG_PQOTHER2PF_6_RT_OFFSET 29973
  1984. #define QM_REG_PQOTHER2PF_7_RT_OFFSET 29974
  1985. #define QM_REG_PQOTHER2PF_8_RT_OFFSET 29975
  1986. #define QM_REG_PQOTHER2PF_9_RT_OFFSET 29976
  1987. #define QM_REG_PQOTHER2PF_10_RT_OFFSET 29977
  1988. #define QM_REG_PQOTHER2PF_11_RT_OFFSET 29978
  1989. #define QM_REG_PQOTHER2PF_12_RT_OFFSET 29979
  1990. #define QM_REG_PQOTHER2PF_13_RT_OFFSET 29980
  1991. #define QM_REG_PQOTHER2PF_14_RT_OFFSET 29981
  1992. #define QM_REG_PQOTHER2PF_15_RT_OFFSET 29982
  1993. #define QM_REG_RLGLBLPERIOD_0_RT_OFFSET 29983
  1994. #define QM_REG_RLGLBLPERIOD_1_RT_OFFSET 29984
  1995. #define QM_REG_RLGLBLPERIODTIMER_0_RT_OFFSET 29985
  1996. #define QM_REG_RLGLBLPERIODTIMER_1_RT_OFFSET 29986
  1997. #define QM_REG_RLGLBLPERIODSEL_0_RT_OFFSET 29987
  1998. #define QM_REG_RLGLBLPERIODSEL_1_RT_OFFSET 29988
  1999. #define QM_REG_RLGLBLPERIODSEL_2_RT_OFFSET 29989
  2000. #define QM_REG_RLGLBLPERIODSEL_3_RT_OFFSET 29990
  2001. #define QM_REG_RLGLBLPERIODSEL_4_RT_OFFSET 29991
  2002. #define QM_REG_RLGLBLPERIODSEL_5_RT_OFFSET 29992
  2003. #define QM_REG_RLGLBLPERIODSEL_6_RT_OFFSET 29993
  2004. #define QM_REG_RLGLBLPERIODSEL_7_RT_OFFSET 29994
  2005. #define QM_REG_RLGLBLINCVAL_RT_OFFSET 29995
  2006. #define QM_REG_RLGLBLINCVAL_RT_SIZE 256
  2007. #define QM_REG_RLGLBLUPPERBOUND_RT_OFFSET 30251
  2008. #define QM_REG_RLGLBLUPPERBOUND_RT_SIZE 256
  2009. #define QM_REG_RLGLBLCRD_RT_OFFSET 30507
  2010. #define QM_REG_RLGLBLCRD_RT_SIZE 256
  2011. #define QM_REG_RLGLBLENABLE_RT_OFFSET 30763
  2012. #define QM_REG_RLPFPERIOD_RT_OFFSET 30764
  2013. #define QM_REG_RLPFPERIODTIMER_RT_OFFSET 30765
  2014. #define QM_REG_RLPFINCVAL_RT_OFFSET 30766
  2015. #define QM_REG_RLPFINCVAL_RT_SIZE 16
  2016. #define QM_REG_RLPFUPPERBOUND_RT_OFFSET 30782
  2017. #define QM_REG_RLPFUPPERBOUND_RT_SIZE 16
  2018. #define QM_REG_RLPFCRD_RT_OFFSET 30798
  2019. #define QM_REG_RLPFCRD_RT_SIZE 16
  2020. #define QM_REG_RLPFENABLE_RT_OFFSET 30814
  2021. #define QM_REG_RLPFVOQENABLE_RT_OFFSET 30815
  2022. #define QM_REG_WFQPFWEIGHT_RT_OFFSET 30816
  2023. #define QM_REG_WFQPFWEIGHT_RT_SIZE 16
  2024. #define QM_REG_WFQPFUPPERBOUND_RT_OFFSET 30832
  2025. #define QM_REG_WFQPFUPPERBOUND_RT_SIZE 16
  2026. #define QM_REG_WFQPFCRD_RT_OFFSET 30848
  2027. #define QM_REG_WFQPFCRD_RT_SIZE 160
  2028. #define QM_REG_WFQPFENABLE_RT_OFFSET 31008
  2029. #define QM_REG_WFQVPENABLE_RT_OFFSET 31009
  2030. #define QM_REG_BASEADDRTXPQ_RT_OFFSET 31010
  2031. #define QM_REG_BASEADDRTXPQ_RT_SIZE 512
  2032. #define QM_REG_TXPQMAP_RT_OFFSET 31522
  2033. #define QM_REG_TXPQMAP_RT_SIZE 512
  2034. #define QM_REG_WFQVPWEIGHT_RT_OFFSET 32034
  2035. #define QM_REG_WFQVPWEIGHT_RT_SIZE 512
  2036. #define QM_REG_WFQVPCRD_RT_OFFSET 32546
  2037. #define QM_REG_WFQVPCRD_RT_SIZE 512
  2038. #define QM_REG_WFQVPMAP_RT_OFFSET 33058
  2039. #define QM_REG_WFQVPMAP_RT_SIZE 512
  2040. #define QM_REG_WFQPFCRD_MSB_RT_OFFSET 33570
  2041. #define QM_REG_WFQPFCRD_MSB_RT_SIZE 160
  2042. #define NIG_REG_TAG_ETHERTYPE_0_RT_OFFSET 33730
  2043. #define NIG_REG_OUTER_TAG_VALUE_LIST0_RT_OFFSET 33731
  2044. #define NIG_REG_OUTER_TAG_VALUE_LIST1_RT_OFFSET 33732
  2045. #define NIG_REG_OUTER_TAG_VALUE_LIST2_RT_OFFSET 33733
  2046. #define NIG_REG_OUTER_TAG_VALUE_LIST3_RT_OFFSET 33734
  2047. #define NIG_REG_OUTER_TAG_VALUE_MASK_RT_OFFSET 33735
  2048. #define NIG_REG_LLH_FUNC_TAGMAC_CLS_TYPE_RT_OFFSET 33736
  2049. #define NIG_REG_LLH_FUNC_TAG_EN_RT_OFFSET 33737
  2050. #define NIG_REG_LLH_FUNC_TAG_EN_RT_SIZE 4
  2051. #define NIG_REG_LLH_FUNC_TAG_HDR_SEL_RT_OFFSET 33741
  2052. #define NIG_REG_LLH_FUNC_TAG_HDR_SEL_RT_SIZE 4
  2053. #define NIG_REG_LLH_FUNC_TAG_VALUE_RT_OFFSET 33745
  2054. #define NIG_REG_LLH_FUNC_TAG_VALUE_RT_SIZE 4
  2055. #define NIG_REG_LLH_FUNC_NO_TAG_RT_OFFSET 33749
  2056. #define NIG_REG_LLH_FUNC_FILTER_VALUE_RT_OFFSET 33750
  2057. #define NIG_REG_LLH_FUNC_FILTER_VALUE_RT_SIZE 32
  2058. #define NIG_REG_LLH_FUNC_FILTER_EN_RT_OFFSET 33782
  2059. #define NIG_REG_LLH_FUNC_FILTER_EN_RT_SIZE 16
  2060. #define NIG_REG_LLH_FUNC_FILTER_MODE_RT_OFFSET 33798
  2061. #define NIG_REG_LLH_FUNC_FILTER_MODE_RT_SIZE 16
  2062. #define NIG_REG_LLH_FUNC_FILTER_PROTOCOL_TYPE_RT_OFFSET 33814
  2063. #define NIG_REG_LLH_FUNC_FILTER_PROTOCOL_TYPE_RT_SIZE 16
  2064. #define NIG_REG_LLH_FUNC_FILTER_HDR_SEL_RT_OFFSET 33830
  2065. #define NIG_REG_LLH_FUNC_FILTER_HDR_SEL_RT_SIZE 16
  2066. #define NIG_REG_TX_EDPM_CTRL_RT_OFFSET 33846
  2067. #define CDU_REG_CID_ADDR_PARAMS_RT_OFFSET 33847
  2068. #define CDU_REG_SEGMENT0_PARAMS_RT_OFFSET 33848
  2069. #define CDU_REG_SEGMENT1_PARAMS_RT_OFFSET 33849
  2070. #define CDU_REG_PF_SEG0_TYPE_OFFSET_RT_OFFSET 33850
  2071. #define CDU_REG_PF_SEG1_TYPE_OFFSET_RT_OFFSET 33851
  2072. #define CDU_REG_PF_SEG2_TYPE_OFFSET_RT_OFFSET 33852
  2073. #define CDU_REG_PF_SEG3_TYPE_OFFSET_RT_OFFSET 33853
  2074. #define CDU_REG_PF_FL_SEG0_TYPE_OFFSET_RT_OFFSET 33854
  2075. #define CDU_REG_PF_FL_SEG1_TYPE_OFFSET_RT_OFFSET 33855
  2076. #define CDU_REG_PF_FL_SEG2_TYPE_OFFSET_RT_OFFSET 33856
  2077. #define CDU_REG_PF_FL_SEG3_TYPE_OFFSET_RT_OFFSET 33857
  2078. #define CDU_REG_VF_SEG_TYPE_OFFSET_RT_OFFSET 33858
  2079. #define CDU_REG_VF_FL_SEG_TYPE_OFFSET_RT_OFFSET 33859
  2080. #define PBF_REG_TAG_ETHERTYPE_0_RT_OFFSET 33860
  2081. #define PBF_REG_BTB_SHARED_AREA_SIZE_RT_OFFSET 33861
  2082. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ0_RT_OFFSET 33862
  2083. #define PBF_REG_BTB_GUARANTEED_VOQ0_RT_OFFSET 33863
  2084. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ0_RT_OFFSET 33864
  2085. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ1_RT_OFFSET 33865
  2086. #define PBF_REG_BTB_GUARANTEED_VOQ1_RT_OFFSET 33866
  2087. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ1_RT_OFFSET 33867
  2088. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ2_RT_OFFSET 33868
  2089. #define PBF_REG_BTB_GUARANTEED_VOQ2_RT_OFFSET 33869
  2090. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ2_RT_OFFSET 33870
  2091. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ3_RT_OFFSET 33871
  2092. #define PBF_REG_BTB_GUARANTEED_VOQ3_RT_OFFSET 33872
  2093. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ3_RT_OFFSET 33873
  2094. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ4_RT_OFFSET 33874
  2095. #define PBF_REG_BTB_GUARANTEED_VOQ4_RT_OFFSET 33875
  2096. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ4_RT_OFFSET 33876
  2097. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ5_RT_OFFSET 33877
  2098. #define PBF_REG_BTB_GUARANTEED_VOQ5_RT_OFFSET 33878
  2099. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ5_RT_OFFSET 33879
  2100. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ6_RT_OFFSET 33880
  2101. #define PBF_REG_BTB_GUARANTEED_VOQ6_RT_OFFSET 33881
  2102. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ6_RT_OFFSET 33882
  2103. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ7_RT_OFFSET 33883
  2104. #define PBF_REG_BTB_GUARANTEED_VOQ7_RT_OFFSET 33884
  2105. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ7_RT_OFFSET 33885
  2106. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ8_RT_OFFSET 33886
  2107. #define PBF_REG_BTB_GUARANTEED_VOQ8_RT_OFFSET 33887
  2108. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ8_RT_OFFSET 33888
  2109. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ9_RT_OFFSET 33889
  2110. #define PBF_REG_BTB_GUARANTEED_VOQ9_RT_OFFSET 33890
  2111. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ9_RT_OFFSET 33891
  2112. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ10_RT_OFFSET 33892
  2113. #define PBF_REG_BTB_GUARANTEED_VOQ10_RT_OFFSET 33893
  2114. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ10_RT_OFFSET 33894
  2115. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ11_RT_OFFSET 33895
  2116. #define PBF_REG_BTB_GUARANTEED_VOQ11_RT_OFFSET 33896
  2117. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ11_RT_OFFSET 33897
  2118. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ12_RT_OFFSET 33898
  2119. #define PBF_REG_BTB_GUARANTEED_VOQ12_RT_OFFSET 33899
  2120. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ12_RT_OFFSET 33900
  2121. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ13_RT_OFFSET 33901
  2122. #define PBF_REG_BTB_GUARANTEED_VOQ13_RT_OFFSET 33902
  2123. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ13_RT_OFFSET 33903
  2124. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ14_RT_OFFSET 33904
  2125. #define PBF_REG_BTB_GUARANTEED_VOQ14_RT_OFFSET 33905
  2126. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ14_RT_OFFSET 33906
  2127. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ15_RT_OFFSET 33907
  2128. #define PBF_REG_BTB_GUARANTEED_VOQ15_RT_OFFSET 33908
  2129. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ15_RT_OFFSET 33909
  2130. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ16_RT_OFFSET 33910
  2131. #define PBF_REG_BTB_GUARANTEED_VOQ16_RT_OFFSET 33911
  2132. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ16_RT_OFFSET 33912
  2133. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ17_RT_OFFSET 33913
  2134. #define PBF_REG_BTB_GUARANTEED_VOQ17_RT_OFFSET 33914
  2135. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ17_RT_OFFSET 33915
  2136. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ18_RT_OFFSET 33916
  2137. #define PBF_REG_BTB_GUARANTEED_VOQ18_RT_OFFSET 33917
  2138. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ18_RT_OFFSET 33918
  2139. #define PBF_REG_YCMD_QS_NUM_LINES_VOQ19_RT_OFFSET 33919
  2140. #define PBF_REG_BTB_GUARANTEED_VOQ19_RT_OFFSET 33920
  2141. #define PBF_REG_BTB_SHARED_AREA_SETUP_VOQ19_RT_OFFSET 33921
  2142. #define XCM_REG_CON_PHY_Q3_RT_OFFSET 33922
  2143. #define RUNTIME_ARRAY_SIZE 33923
  2144. /* The eth storm context for the Tstorm */
  2145. struct tstorm_eth_conn_st_ctx {
  2146. __le32 reserved[4];
  2147. };
  2148. /* The eth storm context for the Pstorm */
  2149. struct pstorm_eth_conn_st_ctx {
  2150. __le32 reserved[8];
  2151. };
  2152. /* The eth storm context for the Xstorm */
  2153. struct xstorm_eth_conn_st_ctx {
  2154. __le32 reserved[60];
  2155. };
  2156. struct xstorm_eth_conn_ag_ctx {
  2157. u8 reserved0 /* cdu_validation */;
  2158. u8 eth_state /* state */;
  2159. u8 flags0;
  2160. #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_MASK 0x1
  2161. #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM0_SHIFT 0
  2162. #define XSTORM_ETH_CONN_AG_CTX_RESERVED1_MASK 0x1
  2163. #define XSTORM_ETH_CONN_AG_CTX_RESERVED1_SHIFT 1
  2164. #define XSTORM_ETH_CONN_AG_CTX_RESERVED2_MASK 0x1
  2165. #define XSTORM_ETH_CONN_AG_CTX_RESERVED2_SHIFT 2
  2166. #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_MASK 0x1
  2167. #define XSTORM_ETH_CONN_AG_CTX_EXIST_IN_QM3_SHIFT 3
  2168. #define XSTORM_ETH_CONN_AG_CTX_RESERVED3_MASK 0x1 /* bit4 */
  2169. #define XSTORM_ETH_CONN_AG_CTX_RESERVED3_SHIFT 4
  2170. #define XSTORM_ETH_CONN_AG_CTX_RESERVED4_MASK 0x1
  2171. #define XSTORM_ETH_CONN_AG_CTX_RESERVED4_SHIFT 5
  2172. #define XSTORM_ETH_CONN_AG_CTX_RESERVED5_MASK 0x1 /* bit6 */
  2173. #define XSTORM_ETH_CONN_AG_CTX_RESERVED5_SHIFT 6
  2174. #define XSTORM_ETH_CONN_AG_CTX_RESERVED6_MASK 0x1 /* bit7 */
  2175. #define XSTORM_ETH_CONN_AG_CTX_RESERVED6_SHIFT 7
  2176. u8 flags1;
  2177. #define XSTORM_ETH_CONN_AG_CTX_RESERVED7_MASK 0x1 /* bit8 */
  2178. #define XSTORM_ETH_CONN_AG_CTX_RESERVED7_SHIFT 0
  2179. #define XSTORM_ETH_CONN_AG_CTX_RESERVED8_MASK 0x1 /* bit9 */
  2180. #define XSTORM_ETH_CONN_AG_CTX_RESERVED8_SHIFT 1
  2181. #define XSTORM_ETH_CONN_AG_CTX_RESERVED9_MASK 0x1 /* bit10 */
  2182. #define XSTORM_ETH_CONN_AG_CTX_RESERVED9_SHIFT 2
  2183. #define XSTORM_ETH_CONN_AG_CTX_BIT11_MASK 0x1 /* bit11 */
  2184. #define XSTORM_ETH_CONN_AG_CTX_BIT11_SHIFT 3
  2185. #define XSTORM_ETH_CONN_AG_CTX_BIT12_MASK 0x1 /* bit12 */
  2186. #define XSTORM_ETH_CONN_AG_CTX_BIT12_SHIFT 4
  2187. #define XSTORM_ETH_CONN_AG_CTX_BIT13_MASK 0x1 /* bit13 */
  2188. #define XSTORM_ETH_CONN_AG_CTX_BIT13_SHIFT 5
  2189. #define XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_MASK 0x1 /* bit14 */
  2190. #define XSTORM_ETH_CONN_AG_CTX_TX_RULE_ACTIVE_SHIFT 6
  2191. #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_MASK 0x1 /* bit15 */
  2192. #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_ACTIVE_SHIFT 7
  2193. u8 flags2;
  2194. #define XSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3 /* timer0cf */
  2195. #define XSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 0
  2196. #define XSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3 /* timer1cf */
  2197. #define XSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 2
  2198. #define XSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3 /* timer2cf */
  2199. #define XSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 4
  2200. #define XSTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3
  2201. #define XSTORM_ETH_CONN_AG_CTX_CF3_SHIFT 6
  2202. u8 flags3;
  2203. #define XSTORM_ETH_CONN_AG_CTX_CF4_MASK 0x3 /* cf4 */
  2204. #define XSTORM_ETH_CONN_AG_CTX_CF4_SHIFT 0
  2205. #define XSTORM_ETH_CONN_AG_CTX_CF5_MASK 0x3 /* cf5 */
  2206. #define XSTORM_ETH_CONN_AG_CTX_CF5_SHIFT 2
  2207. #define XSTORM_ETH_CONN_AG_CTX_CF6_MASK 0x3 /* cf6 */
  2208. #define XSTORM_ETH_CONN_AG_CTX_CF6_SHIFT 4
  2209. #define XSTORM_ETH_CONN_AG_CTX_CF7_MASK 0x3 /* cf7 */
  2210. #define XSTORM_ETH_CONN_AG_CTX_CF7_SHIFT 6
  2211. u8 flags4;
  2212. #define XSTORM_ETH_CONN_AG_CTX_CF8_MASK 0x3 /* cf8 */
  2213. #define XSTORM_ETH_CONN_AG_CTX_CF8_SHIFT 0
  2214. #define XSTORM_ETH_CONN_AG_CTX_CF9_MASK 0x3 /* cf9 */
  2215. #define XSTORM_ETH_CONN_AG_CTX_CF9_SHIFT 2
  2216. #define XSTORM_ETH_CONN_AG_CTX_CF10_MASK 0x3 /* cf10 */
  2217. #define XSTORM_ETH_CONN_AG_CTX_CF10_SHIFT 4
  2218. #define XSTORM_ETH_CONN_AG_CTX_CF11_MASK 0x3 /* cf11 */
  2219. #define XSTORM_ETH_CONN_AG_CTX_CF11_SHIFT 6
  2220. u8 flags5;
  2221. #define XSTORM_ETH_CONN_AG_CTX_CF12_MASK 0x3 /* cf12 */
  2222. #define XSTORM_ETH_CONN_AG_CTX_CF12_SHIFT 0
  2223. #define XSTORM_ETH_CONN_AG_CTX_CF13_MASK 0x3 /* cf13 */
  2224. #define XSTORM_ETH_CONN_AG_CTX_CF13_SHIFT 2
  2225. #define XSTORM_ETH_CONN_AG_CTX_CF14_MASK 0x3 /* cf14 */
  2226. #define XSTORM_ETH_CONN_AG_CTX_CF14_SHIFT 4
  2227. #define XSTORM_ETH_CONN_AG_CTX_CF15_MASK 0x3 /* cf15 */
  2228. #define XSTORM_ETH_CONN_AG_CTX_CF15_SHIFT 6
  2229. u8 flags6;
  2230. #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_MASK 0x3 /* cf16 */
  2231. #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_SHIFT 0
  2232. #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_MASK 0x3
  2233. #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_SHIFT 2
  2234. #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_MASK 0x3 /* cf18 */
  2235. #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_SHIFT 4
  2236. #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_MASK 0x3 /* cf19 */
  2237. #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_SHIFT 6
  2238. u8 flags7;
  2239. #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_MASK 0x3 /* cf20 */
  2240. #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_SHIFT 0
  2241. #define XSTORM_ETH_CONN_AG_CTX_RESERVED10_MASK 0x3 /* cf21 */
  2242. #define XSTORM_ETH_CONN_AG_CTX_RESERVED10_SHIFT 2
  2243. #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_MASK 0x3 /* cf22 */
  2244. #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_SHIFT 4
  2245. #define XSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1 /* cf0en */
  2246. #define XSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 6
  2247. #define XSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1 /* cf1en */
  2248. #define XSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 7
  2249. u8 flags8;
  2250. #define XSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1 /* cf2en */
  2251. #define XSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 0
  2252. #define XSTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1 /* cf3en */
  2253. #define XSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 1
  2254. #define XSTORM_ETH_CONN_AG_CTX_CF4EN_MASK 0x1 /* cf4en */
  2255. #define XSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT 2
  2256. #define XSTORM_ETH_CONN_AG_CTX_CF5EN_MASK 0x1 /* cf5en */
  2257. #define XSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT 3
  2258. #define XSTORM_ETH_CONN_AG_CTX_CF6EN_MASK 0x1 /* cf6en */
  2259. #define XSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT 4
  2260. #define XSTORM_ETH_CONN_AG_CTX_CF7EN_MASK 0x1 /* cf7en */
  2261. #define XSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT 5
  2262. #define XSTORM_ETH_CONN_AG_CTX_CF8EN_MASK 0x1 /* cf8en */
  2263. #define XSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT 6
  2264. #define XSTORM_ETH_CONN_AG_CTX_CF9EN_MASK 0x1 /* cf9en */
  2265. #define XSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT 7
  2266. u8 flags9;
  2267. #define XSTORM_ETH_CONN_AG_CTX_CF10EN_MASK 0x1 /* cf10en */
  2268. #define XSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT 0
  2269. #define XSTORM_ETH_CONN_AG_CTX_CF11EN_MASK 0x1 /* cf11en */
  2270. #define XSTORM_ETH_CONN_AG_CTX_CF11EN_SHIFT 1
  2271. #define XSTORM_ETH_CONN_AG_CTX_CF12EN_MASK 0x1 /* cf12en */
  2272. #define XSTORM_ETH_CONN_AG_CTX_CF12EN_SHIFT 2
  2273. #define XSTORM_ETH_CONN_AG_CTX_CF13EN_MASK 0x1 /* cf13en */
  2274. #define XSTORM_ETH_CONN_AG_CTX_CF13EN_SHIFT 3
  2275. #define XSTORM_ETH_CONN_AG_CTX_CF14EN_MASK 0x1 /* cf14en */
  2276. #define XSTORM_ETH_CONN_AG_CTX_CF14EN_SHIFT 4
  2277. #define XSTORM_ETH_CONN_AG_CTX_CF15EN_MASK 0x1 /* cf15en */
  2278. #define XSTORM_ETH_CONN_AG_CTX_CF15EN_SHIFT 5
  2279. #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_MASK 0x1 /* cf16en */
  2280. #define XSTORM_ETH_CONN_AG_CTX_GO_TO_BD_CONS_CF_EN_SHIFT 6
  2281. #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_MASK 0x1
  2282. #define XSTORM_ETH_CONN_AG_CTX_MULTI_UNICAST_CF_EN_SHIFT 7
  2283. u8 flags10;
  2284. #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_MASK 0x1 /* cf18en */
  2285. #define XSTORM_ETH_CONN_AG_CTX_DQ_CF_EN_SHIFT 0
  2286. #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_MASK 0x1 /* cf19en */
  2287. #define XSTORM_ETH_CONN_AG_CTX_TERMINATE_CF_EN_SHIFT 1
  2288. #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_MASK 0x1 /* cf20en */
  2289. #define XSTORM_ETH_CONN_AG_CTX_FLUSH_Q0_EN_SHIFT 2
  2290. #define XSTORM_ETH_CONN_AG_CTX_RESERVED11_MASK 0x1 /* cf21en */
  2291. #define XSTORM_ETH_CONN_AG_CTX_RESERVED11_SHIFT 3
  2292. #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_MASK 0x1 /* cf22en */
  2293. #define XSTORM_ETH_CONN_AG_CTX_SLOW_PATH_EN_SHIFT 4
  2294. #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_MASK 0x1 /* cf23en */
  2295. #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_EN_RESERVED_SHIFT 5
  2296. #define XSTORM_ETH_CONN_AG_CTX_RESERVED12_MASK 0x1 /* rule0en */
  2297. #define XSTORM_ETH_CONN_AG_CTX_RESERVED12_SHIFT 6
  2298. #define XSTORM_ETH_CONN_AG_CTX_RESERVED13_MASK 0x1 /* rule1en */
  2299. #define XSTORM_ETH_CONN_AG_CTX_RESERVED13_SHIFT 7
  2300. u8 flags11;
  2301. #define XSTORM_ETH_CONN_AG_CTX_RESERVED14_MASK 0x1 /* rule2en */
  2302. #define XSTORM_ETH_CONN_AG_CTX_RESERVED14_SHIFT 0
  2303. #define XSTORM_ETH_CONN_AG_CTX_RESERVED15_MASK 0x1 /* rule3en */
  2304. #define XSTORM_ETH_CONN_AG_CTX_RESERVED15_SHIFT 1
  2305. #define XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_MASK 0x1 /* rule4en */
  2306. #define XSTORM_ETH_CONN_AG_CTX_TX_DEC_RULE_EN_SHIFT 2
  2307. #define XSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1 /* rule5en */
  2308. #define XSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 3
  2309. #define XSTORM_ETH_CONN_AG_CTX_RULE6EN_MASK 0x1 /* rule6en */
  2310. #define XSTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT 4
  2311. #define XSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1 /* rule7en */
  2312. #define XSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 5
  2313. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_MASK 0x1 /* rule8en */
  2314. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED1_SHIFT 6
  2315. #define XSTORM_ETH_CONN_AG_CTX_RULE9EN_MASK 0x1 /* rule9en */
  2316. #define XSTORM_ETH_CONN_AG_CTX_RULE9EN_SHIFT 7
  2317. u8 flags12;
  2318. #define XSTORM_ETH_CONN_AG_CTX_RULE10EN_MASK 0x1 /* rule10en */
  2319. #define XSTORM_ETH_CONN_AG_CTX_RULE10EN_SHIFT 0
  2320. #define XSTORM_ETH_CONN_AG_CTX_RULE11EN_MASK 0x1 /* rule11en */
  2321. #define XSTORM_ETH_CONN_AG_CTX_RULE11EN_SHIFT 1
  2322. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_MASK 0x1 /* rule12en */
  2323. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED2_SHIFT 2
  2324. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_MASK 0x1 /* rule13en */
  2325. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED3_SHIFT 3
  2326. #define XSTORM_ETH_CONN_AG_CTX_RULE14EN_MASK 0x1 /* rule14en */
  2327. #define XSTORM_ETH_CONN_AG_CTX_RULE14EN_SHIFT 4
  2328. #define XSTORM_ETH_CONN_AG_CTX_RULE15EN_MASK 0x1 /* rule15en */
  2329. #define XSTORM_ETH_CONN_AG_CTX_RULE15EN_SHIFT 5
  2330. #define XSTORM_ETH_CONN_AG_CTX_RULE16EN_MASK 0x1 /* rule16en */
  2331. #define XSTORM_ETH_CONN_AG_CTX_RULE16EN_SHIFT 6
  2332. #define XSTORM_ETH_CONN_AG_CTX_RULE17EN_MASK 0x1 /* rule17en */
  2333. #define XSTORM_ETH_CONN_AG_CTX_RULE17EN_SHIFT 7
  2334. u8 flags13;
  2335. #define XSTORM_ETH_CONN_AG_CTX_RULE18EN_MASK 0x1 /* rule18en */
  2336. #define XSTORM_ETH_CONN_AG_CTX_RULE18EN_SHIFT 0
  2337. #define XSTORM_ETH_CONN_AG_CTX_RULE19EN_MASK 0x1 /* rule19en */
  2338. #define XSTORM_ETH_CONN_AG_CTX_RULE19EN_SHIFT 1
  2339. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_MASK 0x1 /* rule20en */
  2340. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED4_SHIFT 2
  2341. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_MASK 0x1 /* rule21en */
  2342. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED5_SHIFT 3
  2343. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_MASK 0x1 /* rule22en */
  2344. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED6_SHIFT 4
  2345. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_MASK 0x1 /* rule23en */
  2346. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED7_SHIFT 5
  2347. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_MASK 0x1 /* rule24en */
  2348. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED8_SHIFT 6
  2349. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_MASK 0x1 /* rule25en */
  2350. #define XSTORM_ETH_CONN_AG_CTX_A0_RESERVED9_SHIFT 7
  2351. u8 flags14;
  2352. #define XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_MASK 0x1 /* bit16 */
  2353. #define XSTORM_ETH_CONN_AG_CTX_EDPM_USE_EXT_HDR_SHIFT 0
  2354. #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_MASK 0x1 /* bit17 */
  2355. #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_RAW_L3L4_SHIFT 1
  2356. #define XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_MASK 0x1 /* bit18 */
  2357. #define XSTORM_ETH_CONN_AG_CTX_EDPM_INBAND_PROP_HDR_SHIFT 2
  2358. #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_MASK 0x1 /* bit19 */
  2359. #define XSTORM_ETH_CONN_AG_CTX_EDPM_SEND_EXT_TUNNEL_SHIFT 3
  2360. #define XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_MASK 0x1 /* bit20 */
  2361. #define XSTORM_ETH_CONN_AG_CTX_L2_EDPM_ENABLE_SHIFT 4
  2362. #define XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_MASK 0x1 /* bit21 */
  2363. #define XSTORM_ETH_CONN_AG_CTX_ROCE_EDPM_ENABLE_SHIFT 5
  2364. #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_MASK 0x3 /* cf23 */
  2365. #define XSTORM_ETH_CONN_AG_CTX_TPH_ENABLE_SHIFT 6
  2366. u8 edpm_event_id /* byte2 */;
  2367. __le16 physical_q0 /* physical_q0 */;
  2368. __le16 word1 /* physical_q1 */;
  2369. __le16 edpm_num_bds /* physical_q2 */;
  2370. __le16 tx_bd_cons /* word3 */;
  2371. __le16 tx_bd_prod /* word4 */;
  2372. __le16 go_to_bd_cons /* word5 */;
  2373. __le16 conn_dpi /* conn_dpi */;
  2374. u8 byte3 /* byte3 */;
  2375. u8 byte4 /* byte4 */;
  2376. u8 byte5 /* byte5 */;
  2377. u8 byte6 /* byte6 */;
  2378. __le32 reg0 /* reg0 */;
  2379. __le32 reg1 /* reg1 */;
  2380. __le32 reg2 /* reg2 */;
  2381. __le32 reg3 /* reg3 */;
  2382. __le32 reg4 /* reg4 */;
  2383. __le32 reg5 /* cf_array0 */;
  2384. __le32 reg6 /* cf_array1 */;
  2385. __le16 word7 /* word7 */;
  2386. __le16 word8 /* word8 */;
  2387. __le16 word9 /* word9 */;
  2388. __le16 word10 /* word10 */;
  2389. __le32 reg7 /* reg7 */;
  2390. __le32 reg8 /* reg8 */;
  2391. __le32 reg9 /* reg9 */;
  2392. u8 byte7 /* byte7 */;
  2393. u8 byte8 /* byte8 */;
  2394. u8 byte9 /* byte9 */;
  2395. u8 byte10 /* byte10 */;
  2396. u8 byte11 /* byte11 */;
  2397. u8 byte12 /* byte12 */;
  2398. u8 byte13 /* byte13 */;
  2399. u8 byte14 /* byte14 */;
  2400. u8 byte15 /* byte15 */;
  2401. u8 byte16 /* byte16 */;
  2402. __le16 word11 /* word11 */;
  2403. __le32 reg10 /* reg10 */;
  2404. __le32 reg11 /* reg11 */;
  2405. __le32 reg12 /* reg12 */;
  2406. __le32 reg13 /* reg13 */;
  2407. __le32 reg14 /* reg14 */;
  2408. __le32 reg15 /* reg15 */;
  2409. __le32 reg16 /* reg16 */;
  2410. __le32 reg17 /* reg17 */;
  2411. __le32 reg18 /* reg18 */;
  2412. __le32 reg19 /* reg19 */;
  2413. __le16 word12 /* word12 */;
  2414. __le16 word13 /* word13 */;
  2415. __le16 word14 /* word14 */;
  2416. __le16 word15 /* word15 */;
  2417. };
  2418. /* The eth storm context for the Ystorm */
  2419. struct ystorm_eth_conn_st_ctx {
  2420. __le32 reserved[8];
  2421. };
  2422. struct ystorm_eth_conn_ag_ctx {
  2423. u8 byte0 /* cdu_validation */;
  2424. u8 byte1 /* state */;
  2425. u8 flags0;
  2426. #define YSTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1 /* exist_in_qm0 */
  2427. #define YSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0
  2428. #define YSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1 /* exist_in_qm1 */
  2429. #define YSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
  2430. #define YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK 0x3 /* cf0 */
  2431. #define YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT 2
  2432. #define YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_MASK 0x3 /* cf1 */
  2433. #define YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_SHIFT 4
  2434. #define YSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3 /* cf2 */
  2435. #define YSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6
  2436. u8 flags1;
  2437. #define YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK 0x1 /* cf0en */
  2438. #define YSTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT 0
  2439. #define YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_MASK 0x1 /* cf1en */
  2440. #define YSTORM_ETH_CONN_AG_CTX_PMD_TERMINATE_CF_EN_SHIFT 1
  2441. #define YSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1 /* cf2en */
  2442. #define YSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2
  2443. #define YSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1 /* rule0en */
  2444. #define YSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 3
  2445. #define YSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1 /* rule1en */
  2446. #define YSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 4
  2447. #define YSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1 /* rule2en */
  2448. #define YSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 5
  2449. #define YSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1 /* rule3en */
  2450. #define YSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 6
  2451. #define YSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1 /* rule4en */
  2452. #define YSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 7
  2453. u8 byte2 /* byte2 */;
  2454. u8 byte3 /* byte3 */;
  2455. __le16 word0 /* word0 */;
  2456. __le32 terminate_spqe /* reg0 */;
  2457. __le32 reg1 /* reg1 */;
  2458. __le16 tx_bd_cons_upd /* word1 */;
  2459. __le16 word2 /* word2 */;
  2460. __le16 word3 /* word3 */;
  2461. __le16 word4 /* word4 */;
  2462. __le32 reg2 /* reg2 */;
  2463. __le32 reg3 /* reg3 */;
  2464. };
  2465. struct tstorm_eth_conn_ag_ctx {
  2466. u8 byte0 /* cdu_validation */;
  2467. u8 byte1 /* state */;
  2468. u8 flags0;
  2469. #define TSTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1 /* exist_in_qm0 */
  2470. #define TSTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0
  2471. #define TSTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1 /* exist_in_qm1 */
  2472. #define TSTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
  2473. #define TSTORM_ETH_CONN_AG_CTX_BIT2_MASK 0x1 /* bit2 */
  2474. #define TSTORM_ETH_CONN_AG_CTX_BIT2_SHIFT 2
  2475. #define TSTORM_ETH_CONN_AG_CTX_BIT3_MASK 0x1 /* bit3 */
  2476. #define TSTORM_ETH_CONN_AG_CTX_BIT3_SHIFT 3
  2477. #define TSTORM_ETH_CONN_AG_CTX_BIT4_MASK 0x1 /* bit4 */
  2478. #define TSTORM_ETH_CONN_AG_CTX_BIT4_SHIFT 4
  2479. #define TSTORM_ETH_CONN_AG_CTX_BIT5_MASK 0x1 /* bit5 */
  2480. #define TSTORM_ETH_CONN_AG_CTX_BIT5_SHIFT 5
  2481. #define TSTORM_ETH_CONN_AG_CTX_CF0_MASK 0x3 /* timer0cf */
  2482. #define TSTORM_ETH_CONN_AG_CTX_CF0_SHIFT 6
  2483. u8 flags1;
  2484. #define TSTORM_ETH_CONN_AG_CTX_CF1_MASK 0x3 /* timer1cf */
  2485. #define TSTORM_ETH_CONN_AG_CTX_CF1_SHIFT 0
  2486. #define TSTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3 /* timer2cf */
  2487. #define TSTORM_ETH_CONN_AG_CTX_CF2_SHIFT 2
  2488. #define TSTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3 /* timer_stop_all */
  2489. #define TSTORM_ETH_CONN_AG_CTX_CF3_SHIFT 4
  2490. #define TSTORM_ETH_CONN_AG_CTX_CF4_MASK 0x3 /* cf4 */
  2491. #define TSTORM_ETH_CONN_AG_CTX_CF4_SHIFT 6
  2492. u8 flags2;
  2493. #define TSTORM_ETH_CONN_AG_CTX_CF5_MASK 0x3 /* cf5 */
  2494. #define TSTORM_ETH_CONN_AG_CTX_CF5_SHIFT 0
  2495. #define TSTORM_ETH_CONN_AG_CTX_CF6_MASK 0x3 /* cf6 */
  2496. #define TSTORM_ETH_CONN_AG_CTX_CF6_SHIFT 2
  2497. #define TSTORM_ETH_CONN_AG_CTX_CF7_MASK 0x3 /* cf7 */
  2498. #define TSTORM_ETH_CONN_AG_CTX_CF7_SHIFT 4
  2499. #define TSTORM_ETH_CONN_AG_CTX_CF8_MASK 0x3 /* cf8 */
  2500. #define TSTORM_ETH_CONN_AG_CTX_CF8_SHIFT 6
  2501. u8 flags3;
  2502. #define TSTORM_ETH_CONN_AG_CTX_CF9_MASK 0x3 /* cf9 */
  2503. #define TSTORM_ETH_CONN_AG_CTX_CF9_SHIFT 0
  2504. #define TSTORM_ETH_CONN_AG_CTX_CF10_MASK 0x3 /* cf10 */
  2505. #define TSTORM_ETH_CONN_AG_CTX_CF10_SHIFT 2
  2506. #define TSTORM_ETH_CONN_AG_CTX_CF0EN_MASK 0x1 /* cf0en */
  2507. #define TSTORM_ETH_CONN_AG_CTX_CF0EN_SHIFT 4
  2508. #define TSTORM_ETH_CONN_AG_CTX_CF1EN_MASK 0x1 /* cf1en */
  2509. #define TSTORM_ETH_CONN_AG_CTX_CF1EN_SHIFT 5
  2510. #define TSTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1 /* cf2en */
  2511. #define TSTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 6
  2512. #define TSTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1 /* cf3en */
  2513. #define TSTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 7
  2514. u8 flags4;
  2515. #define TSTORM_ETH_CONN_AG_CTX_CF4EN_MASK 0x1 /* cf4en */
  2516. #define TSTORM_ETH_CONN_AG_CTX_CF4EN_SHIFT 0
  2517. #define TSTORM_ETH_CONN_AG_CTX_CF5EN_MASK 0x1 /* cf5en */
  2518. #define TSTORM_ETH_CONN_AG_CTX_CF5EN_SHIFT 1
  2519. #define TSTORM_ETH_CONN_AG_CTX_CF6EN_MASK 0x1 /* cf6en */
  2520. #define TSTORM_ETH_CONN_AG_CTX_CF6EN_SHIFT 2
  2521. #define TSTORM_ETH_CONN_AG_CTX_CF7EN_MASK 0x1 /* cf7en */
  2522. #define TSTORM_ETH_CONN_AG_CTX_CF7EN_SHIFT 3
  2523. #define TSTORM_ETH_CONN_AG_CTX_CF8EN_MASK 0x1 /* cf8en */
  2524. #define TSTORM_ETH_CONN_AG_CTX_CF8EN_SHIFT 4
  2525. #define TSTORM_ETH_CONN_AG_CTX_CF9EN_MASK 0x1 /* cf9en */
  2526. #define TSTORM_ETH_CONN_AG_CTX_CF9EN_SHIFT 5
  2527. #define TSTORM_ETH_CONN_AG_CTX_CF10EN_MASK 0x1 /* cf10en */
  2528. #define TSTORM_ETH_CONN_AG_CTX_CF10EN_SHIFT 6
  2529. #define TSTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1 /* rule0en */
  2530. #define TSTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 7
  2531. u8 flags5;
  2532. #define TSTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1 /* rule1en */
  2533. #define TSTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 0
  2534. #define TSTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1 /* rule2en */
  2535. #define TSTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 1
  2536. #define TSTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1 /* rule3en */
  2537. #define TSTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 2
  2538. #define TSTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1 /* rule4en */
  2539. #define TSTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 3
  2540. #define TSTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1 /* rule5en */
  2541. #define TSTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 4
  2542. #define TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_MASK 0x1 /* rule6en */
  2543. #define TSTORM_ETH_CONN_AG_CTX_RX_BD_EN_SHIFT 5
  2544. #define TSTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1 /* rule7en */
  2545. #define TSTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 6
  2546. #define TSTORM_ETH_CONN_AG_CTX_RULE8EN_MASK 0x1 /* rule8en */
  2547. #define TSTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT 7
  2548. __le32 reg0 /* reg0 */;
  2549. __le32 reg1 /* reg1 */;
  2550. __le32 reg2 /* reg2 */;
  2551. __le32 reg3 /* reg3 */;
  2552. __le32 reg4 /* reg4 */;
  2553. __le32 reg5 /* reg5 */;
  2554. __le32 reg6 /* reg6 */;
  2555. __le32 reg7 /* reg7 */;
  2556. __le32 reg8 /* reg8 */;
  2557. u8 byte2 /* byte2 */;
  2558. u8 byte3 /* byte3 */;
  2559. __le16 rx_bd_cons /* word0 */;
  2560. u8 byte4 /* byte4 */;
  2561. u8 byte5 /* byte5 */;
  2562. __le16 rx_bd_prod /* word1 */;
  2563. __le16 word2 /* conn_dpi */;
  2564. __le16 word3 /* word3 */;
  2565. __le32 reg9 /* reg9 */;
  2566. __le32 reg10 /* reg10 */;
  2567. };
  2568. struct ustorm_eth_conn_ag_ctx {
  2569. u8 byte0 /* cdu_validation */;
  2570. u8 byte1 /* state */;
  2571. u8 flags0;
  2572. #define USTORM_ETH_CONN_AG_CTX_BIT0_MASK 0x1 /* exist_in_qm0 */
  2573. #define USTORM_ETH_CONN_AG_CTX_BIT0_SHIFT 0
  2574. #define USTORM_ETH_CONN_AG_CTX_BIT1_MASK 0x1 /* exist_in_qm1 */
  2575. #define USTORM_ETH_CONN_AG_CTX_BIT1_SHIFT 1
  2576. #define USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_MASK 0x3 /* timer0cf */
  2577. #define USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_SHIFT 2
  2578. #define USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_MASK 0x3 /* timer1cf */
  2579. #define USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_SHIFT 4
  2580. #define USTORM_ETH_CONN_AG_CTX_CF2_MASK 0x3 /* timer2cf */
  2581. #define USTORM_ETH_CONN_AG_CTX_CF2_SHIFT 6
  2582. u8 flags1;
  2583. #define USTORM_ETH_CONN_AG_CTX_CF3_MASK 0x3 /* timer_stop_all */
  2584. #define USTORM_ETH_CONN_AG_CTX_CF3_SHIFT 0
  2585. #define USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_MASK 0x3 /* cf4 */
  2586. #define USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_SHIFT 2
  2587. #define USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_MASK 0x3 /* cf5 */
  2588. #define USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_SHIFT 4
  2589. #define USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_MASK 0x3 /* cf6 */
  2590. #define USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_SHIFT 6
  2591. u8 flags2;
  2592. #define USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_MASK 0x1 /* cf0en */
  2593. #define USTORM_ETH_CONN_AG_CTX_TX_PMD_TERMINATE_CF_EN_SHIFT 0
  2594. #define USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_MASK 0x1 /* cf1en */
  2595. #define USTORM_ETH_CONN_AG_CTX_RX_PMD_TERMINATE_CF_EN_SHIFT 1
  2596. #define USTORM_ETH_CONN_AG_CTX_CF2EN_MASK 0x1 /* cf2en */
  2597. #define USTORM_ETH_CONN_AG_CTX_CF2EN_SHIFT 2
  2598. #define USTORM_ETH_CONN_AG_CTX_CF3EN_MASK 0x1 /* cf3en */
  2599. #define USTORM_ETH_CONN_AG_CTX_CF3EN_SHIFT 3
  2600. #define USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_MASK 0x1 /* cf4en */
  2601. #define USTORM_ETH_CONN_AG_CTX_TX_ARM_CF_EN_SHIFT 4
  2602. #define USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_MASK 0x1 /* cf5en */
  2603. #define USTORM_ETH_CONN_AG_CTX_RX_ARM_CF_EN_SHIFT 5
  2604. #define USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_MASK 0x1 /* cf6en */
  2605. #define USTORM_ETH_CONN_AG_CTX_TX_BD_CONS_UPD_CF_EN_SHIFT 6
  2606. #define USTORM_ETH_CONN_AG_CTX_RULE0EN_MASK 0x1 /* rule0en */
  2607. #define USTORM_ETH_CONN_AG_CTX_RULE0EN_SHIFT 7
  2608. u8 flags3;
  2609. #define USTORM_ETH_CONN_AG_CTX_RULE1EN_MASK 0x1 /* rule1en */
  2610. #define USTORM_ETH_CONN_AG_CTX_RULE1EN_SHIFT 0
  2611. #define USTORM_ETH_CONN_AG_CTX_RULE2EN_MASK 0x1 /* rule2en */
  2612. #define USTORM_ETH_CONN_AG_CTX_RULE2EN_SHIFT 1
  2613. #define USTORM_ETH_CONN_AG_CTX_RULE3EN_MASK 0x1 /* rule3en */
  2614. #define USTORM_ETH_CONN_AG_CTX_RULE3EN_SHIFT 2
  2615. #define USTORM_ETH_CONN_AG_CTX_RULE4EN_MASK 0x1 /* rule4en */
  2616. #define USTORM_ETH_CONN_AG_CTX_RULE4EN_SHIFT 3
  2617. #define USTORM_ETH_CONN_AG_CTX_RULE5EN_MASK 0x1 /* rule5en */
  2618. #define USTORM_ETH_CONN_AG_CTX_RULE5EN_SHIFT 4
  2619. #define USTORM_ETH_CONN_AG_CTX_RULE6EN_MASK 0x1 /* rule6en */
  2620. #define USTORM_ETH_CONN_AG_CTX_RULE6EN_SHIFT 5
  2621. #define USTORM_ETH_CONN_AG_CTX_RULE7EN_MASK 0x1 /* rule7en */
  2622. #define USTORM_ETH_CONN_AG_CTX_RULE7EN_SHIFT 6
  2623. #define USTORM_ETH_CONN_AG_CTX_RULE8EN_MASK 0x1 /* rule8en */
  2624. #define USTORM_ETH_CONN_AG_CTX_RULE8EN_SHIFT 7
  2625. u8 byte2 /* byte2 */;
  2626. u8 byte3 /* byte3 */;
  2627. __le16 word0 /* conn_dpi */;
  2628. __le16 tx_bd_cons /* word1 */;
  2629. __le32 reg0 /* reg0 */;
  2630. __le32 reg1 /* reg1 */;
  2631. __le32 reg2 /* reg2 */;
  2632. __le32 tx_int_coallecing_timeset /* reg3 */;
  2633. __le16 tx_drv_bd_cons /* word2 */;
  2634. __le16 rx_drv_cqe_cons /* word3 */;
  2635. };
  2636. /* The eth storm context for the Ustorm */
  2637. struct ustorm_eth_conn_st_ctx {
  2638. __le32 reserved[40];
  2639. };
  2640. /* The eth storm context for the Mstorm */
  2641. struct mstorm_eth_conn_st_ctx {
  2642. __le32 reserved[8];
  2643. };
  2644. /* eth connection context */
  2645. struct eth_conn_context {
  2646. struct tstorm_eth_conn_st_ctx tstorm_st_context;
  2647. struct regpair tstorm_st_padding[2];
  2648. struct pstorm_eth_conn_st_ctx pstorm_st_context;
  2649. struct xstorm_eth_conn_st_ctx xstorm_st_context;
  2650. struct xstorm_eth_conn_ag_ctx xstorm_ag_context;
  2651. struct ystorm_eth_conn_st_ctx ystorm_st_context;
  2652. struct ystorm_eth_conn_ag_ctx ystorm_ag_context;
  2653. struct tstorm_eth_conn_ag_ctx tstorm_ag_context;
  2654. struct ustorm_eth_conn_ag_ctx ustorm_ag_context;
  2655. struct ustorm_eth_conn_st_ctx ustorm_st_context;
  2656. struct mstorm_eth_conn_st_ctx mstorm_st_context;
  2657. };
  2658. enum eth_filter_action {
  2659. ETH_FILTER_ACTION_REMOVE,
  2660. ETH_FILTER_ACTION_ADD,
  2661. ETH_FILTER_ACTION_REMOVE_ALL,
  2662. MAX_ETH_FILTER_ACTION
  2663. };
  2664. struct eth_filter_cmd {
  2665. u8 type /* Filter Type (MAC/VLAN/Pair/VNI) */;
  2666. u8 vport_id /* the vport id */;
  2667. u8 action /* filter command action: add/remove/replace */;
  2668. u8 reserved0;
  2669. __le32 vni;
  2670. __le16 mac_lsb;
  2671. __le16 mac_mid;
  2672. __le16 mac_msb;
  2673. __le16 vlan_id;
  2674. };
  2675. struct eth_filter_cmd_header {
  2676. u8 rx;
  2677. u8 tx;
  2678. u8 cmd_cnt;
  2679. u8 assert_on_error;
  2680. u8 reserved1[4];
  2681. };
  2682. enum eth_filter_type {
  2683. ETH_FILTER_TYPE_MAC,
  2684. ETH_FILTER_TYPE_VLAN,
  2685. ETH_FILTER_TYPE_PAIR,
  2686. ETH_FILTER_TYPE_INNER_MAC,
  2687. ETH_FILTER_TYPE_INNER_VLAN,
  2688. ETH_FILTER_TYPE_INNER_PAIR,
  2689. ETH_FILTER_TYPE_INNER_MAC_VNI_PAIR,
  2690. ETH_FILTER_TYPE_MAC_VNI_PAIR,
  2691. ETH_FILTER_TYPE_VNI,
  2692. MAX_ETH_FILTER_TYPE
  2693. };
  2694. enum eth_ramrod_cmd_id {
  2695. ETH_RAMROD_UNUSED,
  2696. ETH_RAMROD_VPORT_START /* VPort Start Ramrod */,
  2697. ETH_RAMROD_VPORT_UPDATE /* VPort Update Ramrod */,
  2698. ETH_RAMROD_VPORT_STOP /* VPort Stop Ramrod */,
  2699. ETH_RAMROD_RX_QUEUE_START /* RX Queue Start Ramrod */,
  2700. ETH_RAMROD_RX_QUEUE_STOP /* RX Queue Stop Ramrod */,
  2701. ETH_RAMROD_TX_QUEUE_START /* TX Queue Start Ramrod */,
  2702. ETH_RAMROD_TX_QUEUE_STOP /* TX Queue Stop Ramrod */,
  2703. ETH_RAMROD_FILTERS_UPDATE /* Add or Remove Mac/Vlan/Pair filters */,
  2704. ETH_RAMROD_RX_QUEUE_UPDATE /* RX Queue Update Ramrod */,
  2705. ETH_RAMROD_RESERVED,
  2706. ETH_RAMROD_RESERVED2,
  2707. ETH_RAMROD_RESERVED3,
  2708. ETH_RAMROD_RESERVED4,
  2709. ETH_RAMROD_RESERVED5,
  2710. ETH_RAMROD_RESERVED6,
  2711. ETH_RAMROD_RESERVED7,
  2712. ETH_RAMROD_RESERVED8,
  2713. MAX_ETH_RAMROD_CMD_ID
  2714. };
  2715. enum eth_tx_err {
  2716. ETH_TX_ERR_DROP /* Drop erronous packet. */,
  2717. ETH_TX_ERR_ASSERT_MALICIOUS,
  2718. MAX_ETH_TX_ERR
  2719. };
  2720. struct eth_tx_err_vals {
  2721. __le16 values;
  2722. #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_MASK 0x1
  2723. #define ETH_TX_ERR_VALS_ILLEGAL_VLAN_MODE_SHIFT 0
  2724. #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_MASK 0x1
  2725. #define ETH_TX_ERR_VALS_PACKET_TOO_SMALL_SHIFT 1
  2726. #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_MASK 0x1
  2727. #define ETH_TX_ERR_VALS_ANTI_SPOOFING_ERR_SHIFT 2
  2728. #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_MASK 0x1
  2729. #define ETH_TX_ERR_VALS_ILLEGAL_INBAND_TAGS_SHIFT 3
  2730. #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_MASK 0x1
  2731. #define ETH_TX_ERR_VALS_VLAN_INSERTION_W_INBAND_TAG_SHIFT 4
  2732. #define ETH_TX_ERR_VALS_MTU_VIOLATION_MASK 0x1
  2733. #define ETH_TX_ERR_VALS_MTU_VIOLATION_SHIFT 5
  2734. #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_MASK 0x1
  2735. #define ETH_TX_ERR_VALS_ILLEGAL_CONTROL_FRAME_SHIFT 6
  2736. #define ETH_TX_ERR_VALS_RESERVED_MASK 0x1FF
  2737. #define ETH_TX_ERR_VALS_RESERVED_SHIFT 7
  2738. };
  2739. struct eth_vport_rss_config {
  2740. __le16 capabilities;
  2741. #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_MASK 0x1
  2742. #define ETH_VPORT_RSS_CONFIG_IPV4_CAPABILITY_SHIFT 0
  2743. #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_MASK 0x1
  2744. #define ETH_VPORT_RSS_CONFIG_IPV6_CAPABILITY_SHIFT 1
  2745. #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_MASK 0x1
  2746. #define ETH_VPORT_RSS_CONFIG_IPV4_TCP_CAPABILITY_SHIFT 2
  2747. #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_MASK 0x1
  2748. #define ETH_VPORT_RSS_CONFIG_IPV6_TCP_CAPABILITY_SHIFT 3
  2749. #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_MASK 0x1
  2750. #define ETH_VPORT_RSS_CONFIG_IPV4_UDP_CAPABILITY_SHIFT 4
  2751. #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_MASK 0x1
  2752. #define ETH_VPORT_RSS_CONFIG_IPV6_UDP_CAPABILITY_SHIFT 5
  2753. #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_MASK 0x1
  2754. #define ETH_VPORT_RSS_CONFIG_EN_5_TUPLE_CAPABILITY_SHIFT 6
  2755. #define ETH_VPORT_RSS_CONFIG_RESERVED0_MASK 0x1FF
  2756. #define ETH_VPORT_RSS_CONFIG_RESERVED0_SHIFT 7
  2757. u8 rss_id;
  2758. u8 rss_mode;
  2759. u8 update_rss_key;
  2760. u8 update_rss_ind_table;
  2761. u8 update_rss_capabilities;
  2762. u8 tbl_size;
  2763. __le32 reserved2[2];
  2764. __le16 indirection_table[ETH_RSS_IND_TABLE_ENTRIES_NUM];
  2765. __le32 rss_key[ETH_RSS_KEY_SIZE_REGS];
  2766. __le32 reserved3[2];
  2767. };
  2768. enum eth_vport_rss_mode {
  2769. ETH_VPORT_RSS_MODE_DISABLED,
  2770. ETH_VPORT_RSS_MODE_REGULAR,
  2771. MAX_ETH_VPORT_RSS_MODE
  2772. };
  2773. struct eth_vport_rx_mode {
  2774. __le16 state;
  2775. #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_MASK 0x1
  2776. #define ETH_VPORT_RX_MODE_UCAST_DROP_ALL_SHIFT 0
  2777. #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_MASK 0x1
  2778. #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_ALL_SHIFT 1
  2779. #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_MASK 0x1
  2780. #define ETH_VPORT_RX_MODE_UCAST_ACCEPT_UNMATCHED_SHIFT 2
  2781. #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_MASK 0x1
  2782. #define ETH_VPORT_RX_MODE_MCAST_DROP_ALL_SHIFT 3
  2783. #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_MASK 0x1
  2784. #define ETH_VPORT_RX_MODE_MCAST_ACCEPT_ALL_SHIFT 4
  2785. #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_MASK 0x1
  2786. #define ETH_VPORT_RX_MODE_BCAST_ACCEPT_ALL_SHIFT 5
  2787. #define ETH_VPORT_RX_MODE_RESERVED1_MASK 0x3FF
  2788. #define ETH_VPORT_RX_MODE_RESERVED1_SHIFT 6
  2789. __le16 reserved2[3];
  2790. };
  2791. struct eth_vport_tpa_param {
  2792. u8 tpa_ipv4_en_flg;
  2793. u8 tpa_ipv6_en_flg;
  2794. u8 tpa_ipv4_tunn_en_flg;
  2795. u8 tpa_ipv6_tunn_en_flg;
  2796. u8 tpa_pkt_split_flg;
  2797. u8 tpa_hdr_data_split_flg;
  2798. u8 tpa_gro_consistent_flg;
  2799. u8 tpa_max_aggs_num;
  2800. u16 tpa_max_size;
  2801. u16 tpa_min_size_to_start;
  2802. u16 tpa_min_size_to_cont;
  2803. u8 max_buff_num;
  2804. u8 reserved;
  2805. };
  2806. struct eth_vport_tx_mode {
  2807. __le16 state;
  2808. #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_MASK 0x1
  2809. #define ETH_VPORT_TX_MODE_UCAST_DROP_ALL_SHIFT 0
  2810. #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_MASK 0x1
  2811. #define ETH_VPORT_TX_MODE_UCAST_ACCEPT_ALL_SHIFT 1
  2812. #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_MASK 0x1
  2813. #define ETH_VPORT_TX_MODE_MCAST_DROP_ALL_SHIFT 2
  2814. #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_MASK 0x1
  2815. #define ETH_VPORT_TX_MODE_MCAST_ACCEPT_ALL_SHIFT 3
  2816. #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_MASK 0x1
  2817. #define ETH_VPORT_TX_MODE_BCAST_ACCEPT_ALL_SHIFT 4
  2818. #define ETH_VPORT_TX_MODE_RESERVED1_MASK 0x7FF
  2819. #define ETH_VPORT_TX_MODE_RESERVED1_SHIFT 5
  2820. __le16 reserved2[3];
  2821. };
  2822. struct rx_queue_start_ramrod_data {
  2823. __le16 rx_queue_id;
  2824. __le16 num_of_pbl_pages;
  2825. __le16 bd_max_bytes;
  2826. __le16 sb_id;
  2827. u8 sb_index;
  2828. u8 vport_id;
  2829. u8 default_rss_queue_flg;
  2830. u8 complete_cqe_flg;
  2831. u8 complete_event_flg;
  2832. u8 stats_counter_id;
  2833. u8 pin_context;
  2834. u8 pxp_tph_valid_bd;
  2835. u8 pxp_tph_valid_pkt;
  2836. u8 pxp_st_hint;
  2837. __le16 pxp_st_index;
  2838. u8 pmd_mode;
  2839. u8 notify_en;
  2840. u8 toggle_val;
  2841. u8 reserved[7];
  2842. __le16 reserved1;
  2843. struct regpair cqe_pbl_addr;
  2844. struct regpair bd_base;
  2845. struct regpair reserved2;
  2846. };
  2847. struct rx_queue_stop_ramrod_data {
  2848. __le16 rx_queue_id;
  2849. u8 complete_cqe_flg;
  2850. u8 complete_event_flg;
  2851. u8 vport_id;
  2852. u8 reserved[3];
  2853. };
  2854. struct rx_queue_update_ramrod_data {
  2855. __le16 rx_queue_id;
  2856. u8 complete_cqe_flg;
  2857. u8 complete_event_flg;
  2858. u8 vport_id;
  2859. u8 reserved[4];
  2860. u8 reserved1;
  2861. u8 reserved2;
  2862. u8 reserved3;
  2863. __le16 reserved4;
  2864. __le16 reserved5;
  2865. struct regpair reserved6;
  2866. };
  2867. struct tx_queue_start_ramrod_data {
  2868. __le16 sb_id;
  2869. u8 sb_index;
  2870. u8 vport_id;
  2871. u8 reserved0;
  2872. u8 stats_counter_id;
  2873. __le16 qm_pq_id;
  2874. u8 flags;
  2875. #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_MASK 0x1
  2876. #define TX_QUEUE_START_RAMROD_DATA_DISABLE_OPPORTUNISTIC_SHIFT 0
  2877. #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_MASK 0x1
  2878. #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_PKT_DUP_SHIFT 1
  2879. #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_TX_DEST_MASK 0x1
  2880. #define TX_QUEUE_START_RAMROD_DATA_TEST_MODE_TX_DEST_SHIFT 2
  2881. #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_MASK 0x1
  2882. #define TX_QUEUE_START_RAMROD_DATA_PMD_MODE_SHIFT 3
  2883. #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_MASK 0x1
  2884. #define TX_QUEUE_START_RAMROD_DATA_NOTIFY_EN_SHIFT 4
  2885. #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_MASK 0x1
  2886. #define TX_QUEUE_START_RAMROD_DATA_PIN_CONTEXT_SHIFT 5
  2887. #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_MASK 0x3
  2888. #define TX_QUEUE_START_RAMROD_DATA_RESERVED1_SHIFT 6
  2889. u8 pxp_st_hint;
  2890. u8 pxp_tph_valid_bd;
  2891. u8 pxp_tph_valid_pkt;
  2892. __le16 pxp_st_index;
  2893. __le16 comp_agg_size;
  2894. __le16 queue_zone_id;
  2895. __le16 test_dup_count;
  2896. __le16 pbl_size;
  2897. __le16 tx_queue_id;
  2898. struct regpair pbl_base_addr;
  2899. struct regpair bd_cons_address;
  2900. };
  2901. struct tx_queue_stop_ramrod_data {
  2902. __le16 reserved[4];
  2903. };
  2904. struct vport_filter_update_ramrod_data {
  2905. struct eth_filter_cmd_header filter_cmd_hdr;
  2906. struct eth_filter_cmd filter_cmds[ETH_FILTER_RULES_COUNT];
  2907. };
  2908. struct vport_start_ramrod_data {
  2909. u8 vport_id;
  2910. u8 sw_fid;
  2911. __le16 mtu;
  2912. u8 drop_ttl0_en;
  2913. u8 inner_vlan_removal_en;
  2914. struct eth_vport_rx_mode rx_mode;
  2915. struct eth_vport_tx_mode tx_mode;
  2916. struct eth_vport_tpa_param tpa_param;
  2917. __le16 default_vlan;
  2918. u8 tx_switching_en;
  2919. u8 anti_spoofing_en;
  2920. u8 default_vlan_en;
  2921. u8 handle_ptp_pkts;
  2922. u8 silent_vlan_removal_en;
  2923. u8 untagged;
  2924. struct eth_tx_err_vals tx_err_behav;
  2925. u8 zero_placement_offset;
  2926. u8 reserved[7];
  2927. };
  2928. struct vport_stop_ramrod_data {
  2929. u8 vport_id;
  2930. u8 reserved[7];
  2931. };
  2932. struct vport_update_ramrod_data_cmn {
  2933. u8 vport_id;
  2934. u8 update_rx_active_flg;
  2935. u8 rx_active_flg;
  2936. u8 update_tx_active_flg;
  2937. u8 tx_active_flg;
  2938. u8 update_rx_mode_flg;
  2939. u8 update_tx_mode_flg;
  2940. u8 update_approx_mcast_flg;
  2941. u8 update_rss_flg;
  2942. u8 update_inner_vlan_removal_en_flg;
  2943. u8 inner_vlan_removal_en;
  2944. u8 update_tpa_param_flg;
  2945. u8 update_tpa_en_flg;
  2946. u8 update_tx_switching_en_flg;
  2947. u8 tx_switching_en;
  2948. u8 update_anti_spoofing_en_flg;
  2949. u8 anti_spoofing_en;
  2950. u8 update_handle_ptp_pkts;
  2951. u8 handle_ptp_pkts;
  2952. u8 update_default_vlan_en_flg;
  2953. u8 default_vlan_en;
  2954. u8 update_default_vlan_flg;
  2955. __le16 default_vlan;
  2956. u8 update_accept_any_vlan_flg;
  2957. u8 accept_any_vlan;
  2958. u8 silent_vlan_removal_en;
  2959. u8 update_mtu_flg;
  2960. __le16 mtu;
  2961. u8 reserved[2];
  2962. };
  2963. struct vport_update_ramrod_mcast {
  2964. __le32 bins[ETH_MULTICAST_MAC_BINS_IN_REGS];
  2965. };
  2966. struct vport_update_ramrod_data {
  2967. struct vport_update_ramrod_data_cmn common;
  2968. struct eth_vport_rx_mode rx_mode;
  2969. struct eth_vport_tx_mode tx_mode;
  2970. struct eth_vport_tpa_param tpa_param;
  2971. struct vport_update_ramrod_mcast approx_mcast;
  2972. struct eth_vport_rss_config rss_config;
  2973. };
  2974. #define VF_MAX_STATIC 192 /* In case of K2 */
  2975. #define MCP_GLOB_PATH_MAX 2
  2976. #define MCP_PORT_MAX 2 /* Global */
  2977. #define MCP_GLOB_PORT_MAX 4 /* Global */
  2978. #define MCP_GLOB_FUNC_MAX 16 /* Global */
  2979. typedef u32 offsize_t; /* In DWORDS !!! */
  2980. /* Offset from the beginning of the MCP scratchpad */
  2981. #define OFFSIZE_OFFSET_SHIFT 0
  2982. #define OFFSIZE_OFFSET_MASK 0x0000ffff
  2983. /* Size of specific element (not the whole array if any) */
  2984. #define OFFSIZE_SIZE_SHIFT 16
  2985. #define OFFSIZE_SIZE_MASK 0xffff0000
  2986. /* SECTION_OFFSET is calculating the offset in bytes out of offsize */
  2987. #define SECTION_OFFSET(_offsize) ((((_offsize & \
  2988. OFFSIZE_OFFSET_MASK) >> \
  2989. OFFSIZE_OFFSET_SHIFT) << 2))
  2990. /* QED_SECTION_SIZE is calculating the size in bytes out of offsize */
  2991. #define QED_SECTION_SIZE(_offsize) (((_offsize & \
  2992. OFFSIZE_SIZE_MASK) >> \
  2993. OFFSIZE_SIZE_SHIFT) << 2)
  2994. /* SECTION_ADDR returns the GRC addr of a section, given offsize and index
  2995. * within section.
  2996. */
  2997. #define SECTION_ADDR(_offsize, idx) (MCP_REG_SCRATCH + \
  2998. SECTION_OFFSET(_offsize) + \
  2999. (QED_SECTION_SIZE(_offsize) * idx))
  3000. /* SECTION_OFFSIZE_ADDR returns the GRC addr to the offsize address.
  3001. * Use offsetof, since the OFFSETUP collide with the firmware definition
  3002. */
  3003. #define SECTION_OFFSIZE_ADDR(_pub_base, _section) (_pub_base + \
  3004. offsetof(struct \
  3005. mcp_public_data, \
  3006. sections[_section]))
  3007. /* PHY configuration */
  3008. struct pmm_phy_cfg {
  3009. u32 speed;
  3010. #define PMM_SPEED_AUTONEG 0
  3011. u32 pause; /* bitmask */
  3012. #define PMM_PAUSE_NONE 0x0
  3013. #define PMM_PAUSE_AUTONEG 0x1
  3014. #define PMM_PAUSE_RX 0x2
  3015. #define PMM_PAUSE_TX 0x4
  3016. u32 adv_speed; /* Default should be the speed_cap_mask */
  3017. u32 loopback_mode;
  3018. #define PMM_LOOPBACK_NONE 0
  3019. #define PMM_LOOPBACK_INT_PHY 1
  3020. #define PMM_LOOPBACK_EXT_PHY 2
  3021. #define PMM_LOOPBACK_EXT 3
  3022. #define PMM_LOOPBACK_MAC 4
  3023. /* features */
  3024. u32 feature_config_flags;
  3025. };
  3026. struct port_mf_cfg {
  3027. u32 dynamic_cfg; /* device control channel */
  3028. #define PORT_MF_CFG_OV_TAG_MASK 0x0000ffff
  3029. #define PORT_MF_CFG_OV_TAG_SHIFT 0
  3030. #define PORT_MF_CFG_OV_TAG_DEFAULT PORT_MF_CFG_OV_TAG_MASK
  3031. u32 reserved[1];
  3032. };
  3033. /* DO NOT add new fields in the middle
  3034. * MUST be synced with struct pmm_stats_map
  3035. */
  3036. struct pmm_stats {
  3037. u64 r64; /* 0x00 (Offset 0x00 ) RX 64-byte frame counter*/
  3038. u64 r127; /* 0x01 (Offset 0x08 ) RX 65 to 127 byte frame counter*/
  3039. u64 r255;
  3040. u64 r511;
  3041. u64 r1023;
  3042. u64 r1518;
  3043. u64 r1522;
  3044. u64 r2047;
  3045. u64 r4095;
  3046. u64 r9216;
  3047. u64 r16383;
  3048. u64 rfcs; /* 0x0F (Offset 0x58 ) RX FCS error frame counter*/
  3049. u64 rxcf; /* 0x10 (Offset 0x60 ) RX control frame counter*/
  3050. u64 rxpf; /* 0x11 (Offset 0x68 ) RX pause frame counter*/
  3051. u64 rxpp; /* 0x12 (Offset 0x70 ) RX PFC frame counter*/
  3052. u64 raln; /* 0x16 (Offset 0x78 ) RX alignment error counter*/
  3053. u64 rfcr; /* 0x19 (Offset 0x80 ) RX false carrier counter */
  3054. u64 rovr; /* 0x1A (Offset 0x88 ) RX oversized frame counter*/
  3055. u64 rjbr; /* 0x1B (Offset 0x90 ) RX jabber frame counter */
  3056. u64 rund; /* 0x34 (Offset 0x98 ) RX undersized frame counter */
  3057. u64 rfrg; /* 0x35 (Offset 0xa0 ) RX fragment counter */
  3058. u64 t64; /* 0x40 (Offset 0xa8 ) TX 64-byte frame counter */
  3059. u64 t127;
  3060. u64 t255;
  3061. u64 t511;
  3062. u64 t1023;
  3063. u64 t1518;
  3064. u64 t2047;
  3065. u64 t4095;
  3066. u64 t9216;
  3067. u64 t16383;
  3068. u64 txpf; /* 0x50 (Offset 0xf8 ) TX pause frame counter */
  3069. u64 txpp; /* 0x51 (Offset 0x100) TX PFC frame counter */
  3070. u64 tlpiec;
  3071. u64 tncl;
  3072. u64 rbyte; /* 0x3d (Offset 0x118) RX byte counter */
  3073. u64 rxuca; /* 0x0c (Offset 0x120) RX UC frame counter */
  3074. u64 rxmca; /* 0x0d (Offset 0x128) RX MC frame counter */
  3075. u64 rxbca; /* 0x0e (Offset 0x130) RX BC frame counter */
  3076. u64 rxpok;
  3077. u64 tbyte; /* 0x6f (Offset 0x140) TX byte counter */
  3078. u64 txuca; /* 0x4d (Offset 0x148) TX UC frame counter */
  3079. u64 txmca; /* 0x4e (Offset 0x150) TX MC frame counter */
  3080. u64 txbca; /* 0x4f (Offset 0x158) TX BC frame counter */
  3081. u64 txcf; /* 0x54 (Offset 0x160) TX control frame counter */
  3082. };
  3083. struct brb_stats {
  3084. u64 brb_truncate[8];
  3085. u64 brb_discard[8];
  3086. };
  3087. struct port_stats {
  3088. struct brb_stats brb;
  3089. struct pmm_stats pmm;
  3090. };
  3091. #define CMT_TEAM0 0
  3092. #define CMT_TEAM1 1
  3093. #define CMT_TEAM_MAX 2
  3094. struct couple_mode_teaming {
  3095. u8 port_cmt[MCP_GLOB_PORT_MAX];
  3096. #define PORT_CMT_IN_TEAM BIT(0)
  3097. #define PORT_CMT_PORT_ROLE BIT(1)
  3098. #define PORT_CMT_PORT_INACTIVE (0 << 1)
  3099. #define PORT_CMT_PORT_ACTIVE BIT(1)
  3100. #define PORT_CMT_TEAM_MASK BIT(2)
  3101. #define PORT_CMT_TEAM0 (0 << 2)
  3102. #define PORT_CMT_TEAM1 BIT(2)
  3103. };
  3104. /**************************************
  3105. * LLDP and DCBX HSI structures
  3106. **************************************/
  3107. #define LLDP_CHASSIS_ID_STAT_LEN 4
  3108. #define LLDP_PORT_ID_STAT_LEN 4
  3109. #define DCBX_MAX_APP_PROTOCOL 32
  3110. #define MAX_SYSTEM_LLDP_TLV_DATA 32
  3111. enum lldp_agent_e {
  3112. LLDP_NEAREST_BRIDGE = 0,
  3113. LLDP_NEAREST_NON_TPMR_BRIDGE,
  3114. LLDP_NEAREST_CUSTOMER_BRIDGE,
  3115. LLDP_MAX_LLDP_AGENTS
  3116. };
  3117. struct lldp_config_params_s {
  3118. u32 config;
  3119. #define LLDP_CONFIG_TX_INTERVAL_MASK 0x000000ff
  3120. #define LLDP_CONFIG_TX_INTERVAL_SHIFT 0
  3121. #define LLDP_CONFIG_HOLD_MASK 0x00000f00
  3122. #define LLDP_CONFIG_HOLD_SHIFT 8
  3123. #define LLDP_CONFIG_MAX_CREDIT_MASK 0x0000f000
  3124. #define LLDP_CONFIG_MAX_CREDIT_SHIFT 12
  3125. #define LLDP_CONFIG_ENABLE_RX_MASK 0x40000000
  3126. #define LLDP_CONFIG_ENABLE_RX_SHIFT 30
  3127. #define LLDP_CONFIG_ENABLE_TX_MASK 0x80000000
  3128. #define LLDP_CONFIG_ENABLE_TX_SHIFT 31
  3129. u32 local_chassis_id[LLDP_CHASSIS_ID_STAT_LEN];
  3130. u32 local_port_id[LLDP_PORT_ID_STAT_LEN];
  3131. };
  3132. struct lldp_status_params_s {
  3133. u32 prefix_seq_num;
  3134. u32 status; /* TBD */
  3135. /* Holds remote Chassis ID TLV header, subtype and 9B of payload. */
  3136. u32 peer_chassis_id[LLDP_CHASSIS_ID_STAT_LEN];
  3137. /* Holds remote Port ID TLV header, subtype and 9B of payload. */
  3138. u32 peer_port_id[LLDP_PORT_ID_STAT_LEN];
  3139. u32 suffix_seq_num;
  3140. };
  3141. struct dcbx_ets_feature {
  3142. u32 flags;
  3143. #define DCBX_ETS_ENABLED_MASK 0x00000001
  3144. #define DCBX_ETS_ENABLED_SHIFT 0
  3145. #define DCBX_ETS_WILLING_MASK 0x00000002
  3146. #define DCBX_ETS_WILLING_SHIFT 1
  3147. #define DCBX_ETS_ERROR_MASK 0x00000004
  3148. #define DCBX_ETS_ERROR_SHIFT 2
  3149. #define DCBX_ETS_CBS_MASK 0x00000008
  3150. #define DCBX_ETS_CBS_SHIFT 3
  3151. #define DCBX_ETS_MAX_TCS_MASK 0x000000f0
  3152. #define DCBX_ETS_MAX_TCS_SHIFT 4
  3153. u32 pri_tc_tbl[1];
  3154. #define DCBX_ISCSI_OOO_TC 4
  3155. #define NIG_ETS_ISCSI_OOO_CLIENT_OFFSET (DCBX_ISCSI_OOO_TC + 1)
  3156. u32 tc_bw_tbl[2];
  3157. u32 tc_tsa_tbl[2];
  3158. #define DCBX_ETS_TSA_STRICT 0
  3159. #define DCBX_ETS_TSA_CBS 1
  3160. #define DCBX_ETS_TSA_ETS 2
  3161. };
  3162. struct dcbx_app_priority_entry {
  3163. u32 entry;
  3164. #define DCBX_APP_PRI_MAP_MASK 0x000000ff
  3165. #define DCBX_APP_PRI_MAP_SHIFT 0
  3166. #define DCBX_APP_PRI_0 0x01
  3167. #define DCBX_APP_PRI_1 0x02
  3168. #define DCBX_APP_PRI_2 0x04
  3169. #define DCBX_APP_PRI_3 0x08
  3170. #define DCBX_APP_PRI_4 0x10
  3171. #define DCBX_APP_PRI_5 0x20
  3172. #define DCBX_APP_PRI_6 0x40
  3173. #define DCBX_APP_PRI_7 0x80
  3174. #define DCBX_APP_SF_MASK 0x00000300
  3175. #define DCBX_APP_SF_SHIFT 8
  3176. #define DCBX_APP_SF_ETHTYPE 0
  3177. #define DCBX_APP_SF_PORT 1
  3178. #define DCBX_APP_PROTOCOL_ID_MASK 0xffff0000
  3179. #define DCBX_APP_PROTOCOL_ID_SHIFT 16
  3180. };
  3181. /* FW structure in BE */
  3182. struct dcbx_app_priority_feature {
  3183. u32 flags;
  3184. #define DCBX_APP_ENABLED_MASK 0x00000001
  3185. #define DCBX_APP_ENABLED_SHIFT 0
  3186. #define DCBX_APP_WILLING_MASK 0x00000002
  3187. #define DCBX_APP_WILLING_SHIFT 1
  3188. #define DCBX_APP_ERROR_MASK 0x00000004
  3189. #define DCBX_APP_ERROR_SHIFT 2
  3190. /* Not in use
  3191. * #define DCBX_APP_DEFAULT_PRI_MASK 0x00000f00
  3192. * #define DCBX_APP_DEFAULT_PRI_SHIFT 8
  3193. */
  3194. #define DCBX_APP_MAX_TCS_MASK 0x0000f000
  3195. #define DCBX_APP_MAX_TCS_SHIFT 12
  3196. #define DCBX_APP_NUM_ENTRIES_MASK 0x00ff0000
  3197. #define DCBX_APP_NUM_ENTRIES_SHIFT 16
  3198. struct dcbx_app_priority_entry app_pri_tbl[DCBX_MAX_APP_PROTOCOL];
  3199. };
  3200. /* FW structure in BE */
  3201. struct dcbx_features {
  3202. /* PG feature */
  3203. struct dcbx_ets_feature ets;
  3204. /* PFC feature */
  3205. u32 pfc;
  3206. #define DCBX_PFC_PRI_EN_BITMAP_MASK 0x000000ff
  3207. #define DCBX_PFC_PRI_EN_BITMAP_SHIFT 0
  3208. #define DCBX_PFC_PRI_EN_BITMAP_PRI_0 0x01
  3209. #define DCBX_PFC_PRI_EN_BITMAP_PRI_1 0x02
  3210. #define DCBX_PFC_PRI_EN_BITMAP_PRI_2 0x04
  3211. #define DCBX_PFC_PRI_EN_BITMAP_PRI_3 0x08
  3212. #define DCBX_PFC_PRI_EN_BITMAP_PRI_4 0x10
  3213. #define DCBX_PFC_PRI_EN_BITMAP_PRI_5 0x20
  3214. #define DCBX_PFC_PRI_EN_BITMAP_PRI_6 0x40
  3215. #define DCBX_PFC_PRI_EN_BITMAP_PRI_7 0x80
  3216. #define DCBX_PFC_FLAGS_MASK 0x0000ff00
  3217. #define DCBX_PFC_FLAGS_SHIFT 8
  3218. #define DCBX_PFC_CAPS_MASK 0x00000f00
  3219. #define DCBX_PFC_CAPS_SHIFT 8
  3220. #define DCBX_PFC_MBC_MASK 0x00004000
  3221. #define DCBX_PFC_MBC_SHIFT 14
  3222. #define DCBX_PFC_WILLING_MASK 0x00008000
  3223. #define DCBX_PFC_WILLING_SHIFT 15
  3224. #define DCBX_PFC_ENABLED_MASK 0x00010000
  3225. #define DCBX_PFC_ENABLED_SHIFT 16
  3226. #define DCBX_PFC_ERROR_MASK 0x00020000
  3227. #define DCBX_PFC_ERROR_SHIFT 17
  3228. /* APP feature */
  3229. struct dcbx_app_priority_feature app;
  3230. };
  3231. struct dcbx_local_params {
  3232. u32 config;
  3233. #define DCBX_CONFIG_VERSION_MASK 0x00000003
  3234. #define DCBX_CONFIG_VERSION_SHIFT 0
  3235. #define DCBX_CONFIG_VERSION_DISABLED 0
  3236. #define DCBX_CONFIG_VERSION_IEEE 1
  3237. #define DCBX_CONFIG_VERSION_CEE 2
  3238. u32 flags;
  3239. struct dcbx_features features;
  3240. };
  3241. struct dcbx_mib {
  3242. u32 prefix_seq_num;
  3243. u32 flags;
  3244. struct dcbx_features features;
  3245. u32 suffix_seq_num;
  3246. };
  3247. struct lldp_system_tlvs_buffer_s {
  3248. u16 valid;
  3249. u16 length;
  3250. u32 data[MAX_SYSTEM_LLDP_TLV_DATA];
  3251. };
  3252. /**************************************/
  3253. /* */
  3254. /* P U B L I C G L O B A L */
  3255. /* */
  3256. /**************************************/
  3257. struct public_global {
  3258. u32 max_path;
  3259. #define MAX_PATH_BIG_BEAR 2
  3260. #define MAX_PATH_K2 1
  3261. u32 max_ports;
  3262. #define MODE_1P 1
  3263. #define MODE_2P 2
  3264. #define MODE_3P 3
  3265. #define MODE_4P 4
  3266. u32 debug_mb_offset;
  3267. u32 phymod_dbg_mb_offset;
  3268. struct couple_mode_teaming cmt;
  3269. s32 internal_temperature;
  3270. u32 mfw_ver;
  3271. u32 running_bundle_id;
  3272. };
  3273. /**************************************/
  3274. /* */
  3275. /* P U B L I C P A T H */
  3276. /* */
  3277. /**************************************/
  3278. /****************************************************************************
  3279. * Shared Memory 2 Region *
  3280. ****************************************************************************/
  3281. /* The fw_flr_ack is actually built in the following way: */
  3282. /* 8 bit: PF ack */
  3283. /* 128 bit: VF ack */
  3284. /* 8 bit: ios_dis_ack */
  3285. /* In order to maintain endianity in the mailbox hsi, we want to keep using */
  3286. /* u32. The fw must have the VF right after the PF since this is how it */
  3287. /* access arrays(it expects always the VF to reside after the PF, and that */
  3288. /* makes the calculation much easier for it. ) */
  3289. /* In order to answer both limitations, and keep the struct small, the code */
  3290. /* will abuse the structure defined here to achieve the actual partition */
  3291. /* above */
  3292. /****************************************************************************/
  3293. struct fw_flr_mb {
  3294. u32 aggint;
  3295. u32 opgen_addr;
  3296. u32 accum_ack; /* 0..15:PF, 16..207:VF, 256..271:IOV_DIS */
  3297. #define ACCUM_ACK_PF_BASE 0
  3298. #define ACCUM_ACK_PF_SHIFT 0
  3299. #define ACCUM_ACK_VF_BASE 8
  3300. #define ACCUM_ACK_VF_SHIFT 3
  3301. #define ACCUM_ACK_IOV_DIS_BASE 256
  3302. #define ACCUM_ACK_IOV_DIS_SHIFT 8
  3303. };
  3304. struct public_path {
  3305. struct fw_flr_mb flr_mb;
  3306. u32 mcp_vf_disabled[VF_MAX_STATIC / 32];
  3307. u32 process_kill;
  3308. #define PROCESS_KILL_COUNTER_MASK 0x0000ffff
  3309. #define PROCESS_KILL_COUNTER_SHIFT 0
  3310. #define PROCESS_KILL_GLOB_AEU_BIT_MASK 0xffff0000
  3311. #define PROCESS_KILL_GLOB_AEU_BIT_SHIFT 16
  3312. #define GLOBAL_AEU_BIT(aeu_reg_id, aeu_bit) (aeu_reg_id * 32 + aeu_bit)
  3313. };
  3314. /**************************************/
  3315. /* */
  3316. /* P U B L I C P O R T */
  3317. /* */
  3318. /**************************************/
  3319. /****************************************************************************
  3320. * Driver <-> FW Mailbox *
  3321. ****************************************************************************/
  3322. struct public_port {
  3323. u32 validity_map; /* 0x0 (4*2 = 0x8) */
  3324. /* validity bits */
  3325. #define MCP_VALIDITY_PCI_CFG 0x00100000
  3326. #define MCP_VALIDITY_MB 0x00200000
  3327. #define MCP_VALIDITY_DEV_INFO 0x00400000
  3328. #define MCP_VALIDITY_RESERVED 0x00000007
  3329. /* One licensing bit should be set */
  3330. #define MCP_VALIDITY_LIC_KEY_IN_EFFECT_MASK 0x00000038
  3331. #define MCP_VALIDITY_LIC_MANUF_KEY_IN_EFFECT 0x00000008
  3332. #define MCP_VALIDITY_LIC_UPGRADE_KEY_IN_EFFECT 0x00000010
  3333. #define MCP_VALIDITY_LIC_NO_KEY_IN_EFFECT 0x00000020
  3334. /* Active MFW */
  3335. #define MCP_VALIDITY_ACTIVE_MFW_UNKNOWN 0x00000000
  3336. #define MCP_VALIDITY_ACTIVE_MFW_MASK 0x000001c0
  3337. #define MCP_VALIDITY_ACTIVE_MFW_NCSI 0x00000040
  3338. #define MCP_VALIDITY_ACTIVE_MFW_NONE 0x000001c0
  3339. u32 link_status;
  3340. #define LINK_STATUS_LINK_UP \
  3341. 0x00000001
  3342. #define LINK_STATUS_SPEED_AND_DUPLEX_MASK 0x0000001e
  3343. #define LINK_STATUS_SPEED_AND_DUPLEX_1000THD BIT(1)
  3344. #define LINK_STATUS_SPEED_AND_DUPLEX_1000TFD (2 << 1)
  3345. #define LINK_STATUS_SPEED_AND_DUPLEX_10G (3 << 1)
  3346. #define LINK_STATUS_SPEED_AND_DUPLEX_20G (4 << 1)
  3347. #define LINK_STATUS_SPEED_AND_DUPLEX_40G (5 << 1)
  3348. #define LINK_STATUS_SPEED_AND_DUPLEX_50G (6 << 1)
  3349. #define LINK_STATUS_SPEED_AND_DUPLEX_100G (7 << 1)
  3350. #define LINK_STATUS_SPEED_AND_DUPLEX_25G (8 << 1)
  3351. #define LINK_STATUS_AUTO_NEGOTIATE_ENABLED 0x00000020
  3352. #define LINK_STATUS_AUTO_NEGOTIATE_COMPLETE 0x00000040
  3353. #define LINK_STATUS_PARALLEL_DETECTION_USED 0x00000080
  3354. #define LINK_STATUS_PFC_ENABLED \
  3355. 0x00000100
  3356. #define LINK_STATUS_LINK_PARTNER_1000TFD_CAPABLE 0x00000200
  3357. #define LINK_STATUS_LINK_PARTNER_1000THD_CAPABLE 0x00000400
  3358. #define LINK_STATUS_LINK_PARTNER_10G_CAPABLE 0x00000800
  3359. #define LINK_STATUS_LINK_PARTNER_20G_CAPABLE 0x00001000
  3360. #define LINK_STATUS_LINK_PARTNER_40G_CAPABLE 0x00002000
  3361. #define LINK_STATUS_LINK_PARTNER_50G_CAPABLE 0x00004000
  3362. #define LINK_STATUS_LINK_PARTNER_100G_CAPABLE 0x00008000
  3363. #define LINK_STATUS_LINK_PARTNER_25G_CAPABLE 0x00010000
  3364. #define LINK_STATUS_LINK_PARTNER_FLOW_CONTROL_MASK 0x000C0000
  3365. #define LINK_STATUS_LINK_PARTNER_NOT_PAUSE_CAPABLE (0 << 18)
  3366. #define LINK_STATUS_LINK_PARTNER_SYMMETRIC_PAUSE BIT(18)
  3367. #define LINK_STATUS_LINK_PARTNER_ASYMMETRIC_PAUSE (2 << 18)
  3368. #define LINK_STATUS_LINK_PARTNER_BOTH_PAUSE (3 << 18)
  3369. #define LINK_STATUS_SFP_TX_FAULT \
  3370. 0x00100000
  3371. #define LINK_STATUS_TX_FLOW_CONTROL_ENABLED 0x00200000
  3372. #define LINK_STATUS_RX_FLOW_CONTROL_ENABLED 0x00400000
  3373. u32 link_status1;
  3374. u32 ext_phy_fw_version;
  3375. u32 drv_phy_cfg_addr;
  3376. u32 port_stx;
  3377. u32 stat_nig_timer;
  3378. struct port_mf_cfg port_mf_config;
  3379. struct port_stats stats;
  3380. u32 media_type;
  3381. #define MEDIA_UNSPECIFIED 0x0
  3382. #define MEDIA_SFPP_10G_FIBER 0x1
  3383. #define MEDIA_XFP_FIBER 0x2
  3384. #define MEDIA_DA_TWINAX 0x3
  3385. #define MEDIA_BASE_T 0x4
  3386. #define MEDIA_SFP_1G_FIBER 0x5
  3387. #define MEDIA_KR 0xf0
  3388. #define MEDIA_NOT_PRESENT 0xff
  3389. u32 lfa_status;
  3390. #define LFA_LINK_FLAP_REASON_OFFSET 0
  3391. #define LFA_LINK_FLAP_REASON_MASK 0x000000ff
  3392. #define LFA_NO_REASON (0 << 0)
  3393. #define LFA_LINK_DOWN BIT(0)
  3394. #define LFA_FORCE_INIT BIT(1)
  3395. #define LFA_LOOPBACK_MISMATCH BIT(2)
  3396. #define LFA_SPEED_MISMATCH BIT(3)
  3397. #define LFA_FLOW_CTRL_MISMATCH BIT(4)
  3398. #define LFA_ADV_SPEED_MISMATCH BIT(5)
  3399. #define LINK_FLAP_AVOIDANCE_COUNT_OFFSET 8
  3400. #define LINK_FLAP_AVOIDANCE_COUNT_MASK 0x0000ff00
  3401. #define LINK_FLAP_COUNT_OFFSET 16
  3402. #define LINK_FLAP_COUNT_MASK 0x00ff0000
  3403. u32 link_change_count;
  3404. /* LLDP params */
  3405. struct lldp_config_params_s lldp_config_params[
  3406. LLDP_MAX_LLDP_AGENTS];
  3407. struct lldp_status_params_s lldp_status_params[
  3408. LLDP_MAX_LLDP_AGENTS];
  3409. struct lldp_system_tlvs_buffer_s system_lldp_tlvs_buf;
  3410. /* DCBX related MIB */
  3411. struct dcbx_local_params local_admin_dcbx_mib;
  3412. struct dcbx_mib remote_dcbx_mib;
  3413. struct dcbx_mib operational_dcbx_mib;
  3414. u32 fc_npiv_nvram_tbl_addr;
  3415. u32 fc_npiv_nvram_tbl_size;
  3416. u32 transceiver_data;
  3417. #define PMM_TRANSCEIVER_STATE_MASK 0x000000FF
  3418. #define PMM_TRANSCEIVER_STATE_SHIFT 0x00000000
  3419. #define PMM_TRANSCEIVER_STATE_PRESENT 0x00000001
  3420. };
  3421. /**************************************/
  3422. /* */
  3423. /* P U B L I C F U N C */
  3424. /* */
  3425. /**************************************/
  3426. struct public_func {
  3427. u32 iscsi_boot_signature;
  3428. u32 iscsi_boot_block_offset;
  3429. u32 mtu_size;
  3430. u32 c2s_pcp_map_lower;
  3431. u32 c2s_pcp_map_upper;
  3432. u32 c2s_pcp_map_default;
  3433. u32 reserved[4];
  3434. u32 config;
  3435. /* E/R/I/D */
  3436. /* function 0 of each port cannot be hidden */
  3437. #define FUNC_MF_CFG_FUNC_HIDE 0x00000001
  3438. #define FUNC_MF_CFG_PAUSE_ON_HOST_RING 0x00000002
  3439. #define FUNC_MF_CFG_PAUSE_ON_HOST_RING_SHIFT 0x00000001
  3440. #define FUNC_MF_CFG_PROTOCOL_MASK 0x000000f0
  3441. #define FUNC_MF_CFG_PROTOCOL_SHIFT 4
  3442. #define FUNC_MF_CFG_PROTOCOL_ETHERNET 0x00000000
  3443. #define FUNC_MF_CFG_PROTOCOL_ISCSI 0x00000010
  3444. #define FUNC_MF_CFG_PROTOCOL_FCOE 0x00000020
  3445. #define FUNC_MF_CFG_PROTOCOL_ROCE 0x00000030
  3446. #define FUNC_MF_CFG_PROTOCOL_MAX 0x00000030
  3447. /* MINBW, MAXBW */
  3448. /* value range - 0..100, increments in 1 % */
  3449. #define FUNC_MF_CFG_MIN_BW_MASK 0x0000ff00
  3450. #define FUNC_MF_CFG_MIN_BW_SHIFT 8
  3451. #define FUNC_MF_CFG_MIN_BW_DEFAULT 0x00000000
  3452. #define FUNC_MF_CFG_MAX_BW_MASK 0x00ff0000
  3453. #define FUNC_MF_CFG_MAX_BW_SHIFT 16
  3454. #define FUNC_MF_CFG_MAX_BW_DEFAULT 0x00640000
  3455. u32 status;
  3456. #define FUNC_STATUS_VLINK_DOWN 0x00000001
  3457. u32 mac_upper; /* MAC */
  3458. #define FUNC_MF_CFG_UPPERMAC_MASK 0x0000ffff
  3459. #define FUNC_MF_CFG_UPPERMAC_SHIFT 0
  3460. #define FUNC_MF_CFG_UPPERMAC_DEFAULT FUNC_MF_CFG_UPPERMAC_MASK
  3461. u32 mac_lower;
  3462. #define FUNC_MF_CFG_LOWERMAC_DEFAULT 0xffffffff
  3463. u32 fcoe_wwn_port_name_upper;
  3464. u32 fcoe_wwn_port_name_lower;
  3465. u32 fcoe_wwn_node_name_upper;
  3466. u32 fcoe_wwn_node_name_lower;
  3467. u32 ovlan_stag; /* tags */
  3468. #define FUNC_MF_CFG_OV_STAG_MASK 0x0000ffff
  3469. #define FUNC_MF_CFG_OV_STAG_SHIFT 0
  3470. #define FUNC_MF_CFG_OV_STAG_DEFAULT FUNC_MF_CFG_OV_STAG_MASK
  3471. u32 pf_allocation; /* vf per pf */
  3472. u32 preserve_data; /* Will be used bt CCM */
  3473. u32 driver_last_activity_ts;
  3474. u32 drv_ack_vf_disabled[VF_MAX_STATIC / 32]; /* 0x0044 */
  3475. u32 drv_id;
  3476. #define DRV_ID_PDA_COMP_VER_MASK 0x0000ffff
  3477. #define DRV_ID_PDA_COMP_VER_SHIFT 0
  3478. #define DRV_ID_MCP_HSI_VER_MASK 0x00ff0000
  3479. #define DRV_ID_MCP_HSI_VER_SHIFT 16
  3480. #define DRV_ID_MCP_HSI_VER_CURRENT BIT(DRV_ID_MCP_HSI_VER_SHIFT)
  3481. #define DRV_ID_DRV_TYPE_MASK 0x7f000000
  3482. #define DRV_ID_DRV_TYPE_SHIFT 24
  3483. #define DRV_ID_DRV_TYPE_UNKNOWN (0 << DRV_ID_DRV_TYPE_SHIFT)
  3484. #define DRV_ID_DRV_TYPE_LINUX (1 << DRV_ID_DRV_TYPE_SHIFT)
  3485. #define DRV_ID_DRV_TYPE_WINDOWS (2 << DRV_ID_DRV_TYPE_SHIFT)
  3486. #define DRV_ID_DRV_TYPE_DIAG (3 << DRV_ID_DRV_TYPE_SHIFT)
  3487. #define DRV_ID_DRV_TYPE_PREBOOT (4 << DRV_ID_DRV_TYPE_SHIFT)
  3488. #define DRV_ID_DRV_TYPE_SOLARIS (5 << DRV_ID_DRV_TYPE_SHIFT)
  3489. #define DRV_ID_DRV_TYPE_VMWARE (6 << DRV_ID_DRV_TYPE_SHIFT)
  3490. #define DRV_ID_DRV_TYPE_FREEBSD (7 << DRV_ID_DRV_TYPE_SHIFT)
  3491. #define DRV_ID_DRV_TYPE_AIX (8 << DRV_ID_DRV_TYPE_SHIFT)
  3492. #define DRV_ID_DRV_INIT_HW_MASK 0x80000000
  3493. #define DRV_ID_DRV_INIT_HW_SHIFT 31
  3494. #define DRV_ID_DRV_INIT_HW_FLAG BIT(DRV_ID_DRV_INIT_HW_SHIFT)
  3495. };
  3496. /**************************************/
  3497. /* */
  3498. /* P U B L I C M B */
  3499. /* */
  3500. /**************************************/
  3501. /* This is the only section that the driver can write to, and each */
  3502. /* Basically each driver request to set feature parameters,
  3503. * will be done using a different command, which will be linked
  3504. * to a specific data structure from the union below.
  3505. * For huge strucuture, the common blank structure should be used.
  3506. */
  3507. struct mcp_mac {
  3508. u32 mac_upper; /* Upper 16 bits are always zeroes */
  3509. u32 mac_lower;
  3510. };
  3511. struct mcp_val64 {
  3512. u32 lo;
  3513. u32 hi;
  3514. };
  3515. struct mcp_file_att {
  3516. u32 nvm_start_addr;
  3517. u32 len;
  3518. };
  3519. #define MCP_DRV_VER_STR_SIZE 16
  3520. #define MCP_DRV_VER_STR_SIZE_DWORD (MCP_DRV_VER_STR_SIZE / sizeof(u32))
  3521. #define MCP_DRV_NVM_BUF_LEN 32
  3522. struct drv_version_stc {
  3523. u32 version;
  3524. u8 name[MCP_DRV_VER_STR_SIZE - 4];
  3525. };
  3526. union drv_union_data {
  3527. u32 ver_str[MCP_DRV_VER_STR_SIZE_DWORD];
  3528. struct mcp_mac wol_mac;
  3529. struct pmm_phy_cfg drv_phy_cfg;
  3530. struct mcp_val64 val64; /* For PHY / AVS commands */
  3531. u8 raw_data[MCP_DRV_NVM_BUF_LEN];
  3532. struct mcp_file_att file_att;
  3533. u32 ack_vf_disabled[VF_MAX_STATIC / 32];
  3534. struct drv_version_stc drv_version;
  3535. };
  3536. struct public_drv_mb {
  3537. u32 drv_mb_header;
  3538. #define DRV_MSG_CODE_MASK 0xffff0000
  3539. #define DRV_MSG_CODE_LOAD_REQ 0x10000000
  3540. #define DRV_MSG_CODE_LOAD_DONE 0x11000000
  3541. #define DRV_MSG_CODE_INIT_HW 0x12000000
  3542. #define DRV_MSG_CODE_UNLOAD_REQ 0x20000000
  3543. #define DRV_MSG_CODE_UNLOAD_DONE 0x21000000
  3544. #define DRV_MSG_CODE_INIT_PHY 0x22000000
  3545. /* Params - FORCE - Reinitialize the link regardless of LFA */
  3546. /* - DONT_CARE - Don't flap the link if up */
  3547. #define DRV_MSG_CODE_LINK_RESET 0x23000000
  3548. #define DRV_MSG_CODE_SET_LLDP 0x24000000
  3549. #define DRV_MSG_CODE_SET_DCBX 0x25000000
  3550. #define DRV_MSG_CODE_NIG_DRAIN 0x30000000
  3551. #define DRV_MSG_CODE_INITIATE_FLR 0x02000000
  3552. #define DRV_MSG_CODE_VF_DISABLED_DONE 0xc0000000
  3553. #define DRV_MSG_CODE_CFG_VF_MSIX 0xc0010000
  3554. #define DRV_MSG_CODE_NVM_PUT_FILE_BEGIN 0x00010000
  3555. #define DRV_MSG_CODE_NVM_PUT_FILE_DATA 0x00020000
  3556. #define DRV_MSG_CODE_NVM_GET_FILE_ATT 0x00030000
  3557. #define DRV_MSG_CODE_NVM_READ_NVRAM 0x00050000
  3558. #define DRV_MSG_CODE_NVM_WRITE_NVRAM 0x00060000
  3559. #define DRV_MSG_CODE_NVM_DEL_FILE 0x00080000
  3560. #define DRV_MSG_CODE_MCP_RESET 0x00090000
  3561. #define DRV_MSG_CODE_SET_SECURE_MODE 0x000a0000
  3562. #define DRV_MSG_CODE_PHY_RAW_READ 0x000b0000
  3563. #define DRV_MSG_CODE_PHY_RAW_WRITE 0x000c0000
  3564. #define DRV_MSG_CODE_PHY_CORE_READ 0x000d0000
  3565. #define DRV_MSG_CODE_PHY_CORE_WRITE 0x000e0000
  3566. #define DRV_MSG_CODE_SET_VERSION 0x000f0000
  3567. #define DRV_MSG_CODE_SET_LED_MODE 0x00200000
  3568. #define DRV_MSG_SEQ_NUMBER_MASK 0x0000ffff
  3569. u32 drv_mb_param;
  3570. /* UNLOAD_REQ params */
  3571. #define DRV_MB_PARAM_UNLOAD_WOL_UNKNOWN 0x00000000
  3572. #define DRV_MB_PARAM_UNLOAD_WOL_MCP 0x00000001
  3573. #define DRV_MB_PARAM_UNLOAD_WOL_DISABLED 0x00000002
  3574. #define DRV_MB_PARAM_UNLOAD_WOL_ENABLED 0x00000003
  3575. /* UNLOAD_DONE_params */
  3576. #define DRV_MB_PARAM_UNLOAD_NON_D3_POWER 0x00000001
  3577. /* INIT_PHY params */
  3578. #define DRV_MB_PARAM_INIT_PHY_FORCE 0x00000001
  3579. #define DRV_MB_PARAM_INIT_PHY_DONT_CARE 0x00000002
  3580. /* LLDP / DCBX params*/
  3581. #define DRV_MB_PARAM_LLDP_SEND_MASK 0x00000001
  3582. #define DRV_MB_PARAM_LLDP_SEND_SHIFT 0
  3583. #define DRV_MB_PARAM_LLDP_AGENT_MASK 0x00000006
  3584. #define DRV_MB_PARAM_LLDP_AGENT_SHIFT 1
  3585. #define DRV_MB_PARAM_DCBX_NOTIFY_MASK 0x00000008
  3586. #define DRV_MB_PARAM_DCBX_NOTIFY_SHIFT 3
  3587. #define DRV_MB_PARAM_NIG_DRAIN_PERIOD_MS_MASK 0x000000FF
  3588. #define DRV_MB_PARAM_NIG_DRAIN_PERIOD_MS_SHIFT 0
  3589. #define DRV_MB_PARAM_NVM_PUT_FILE_BEGIN_MFW 0x1
  3590. #define DRV_MB_PARAM_NVM_PUT_FILE_BEGIN_IMAGE 0x2
  3591. #define DRV_MB_PARAM_NVM_OFFSET_SHIFT 0
  3592. #define DRV_MB_PARAM_NVM_OFFSET_MASK 0x00FFFFFF
  3593. #define DRV_MB_PARAM_NVM_LEN_SHIFT 24
  3594. #define DRV_MB_PARAM_NVM_LEN_MASK 0xFF000000
  3595. #define DRV_MB_PARAM_PHY_ADDR_SHIFT 0
  3596. #define DRV_MB_PARAM_PHY_ADDR_MASK 0x1FF0FFFF
  3597. #define DRV_MB_PARAM_PHY_LANE_SHIFT 16
  3598. #define DRV_MB_PARAM_PHY_LANE_MASK 0x000F0000
  3599. #define DRV_MB_PARAM_PHY_SELECT_PORT_SHIFT 29
  3600. #define DRV_MB_PARAM_PHY_SELECT_PORT_MASK 0x20000000
  3601. #define DRV_MB_PARAM_PHY_PORT_SHIFT 30
  3602. #define DRV_MB_PARAM_PHY_PORT_MASK 0xc0000000
  3603. /* configure vf MSIX params*/
  3604. #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_SHIFT 0
  3605. #define DRV_MB_PARAM_CFG_VF_MSIX_VF_ID_MASK 0x000000FF
  3606. #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_SHIFT 8
  3607. #define DRV_MB_PARAM_CFG_VF_MSIX_SB_NUM_MASK 0x0000FF00
  3608. #define DRV_MB_PARAM_SET_LED_MODE_OPER 0x0
  3609. #define DRV_MB_PARAM_SET_LED_MODE_ON 0x1
  3610. #define DRV_MB_PARAM_SET_LED_MODE_OFF 0x2
  3611. u32 fw_mb_header;
  3612. #define FW_MSG_CODE_MASK 0xffff0000
  3613. #define FW_MSG_CODE_DRV_LOAD_ENGINE 0x10100000
  3614. #define FW_MSG_CODE_DRV_LOAD_PORT 0x10110000
  3615. #define FW_MSG_CODE_DRV_LOAD_FUNCTION 0x10120000
  3616. #define FW_MSG_CODE_DRV_LOAD_REFUSED_PDA 0x10200000
  3617. #define FW_MSG_CODE_DRV_LOAD_REFUSED_HSI 0x10210000
  3618. #define FW_MSG_CODE_DRV_LOAD_REFUSED_DIAG 0x10220000
  3619. #define FW_MSG_CODE_DRV_LOAD_DONE 0x11100000
  3620. #define FW_MSG_CODE_DRV_UNLOAD_ENGINE 0x20110000
  3621. #define FW_MSG_CODE_DRV_UNLOAD_PORT 0x20120000
  3622. #define FW_MSG_CODE_DRV_UNLOAD_FUNCTION 0x20130000
  3623. #define FW_MSG_CODE_DRV_UNLOAD_DONE 0x21100000
  3624. #define FW_MSG_CODE_INIT_PHY_DONE 0x21200000
  3625. #define FW_MSG_CODE_INIT_PHY_ERR_INVALID_ARGS 0x21300000
  3626. #define FW_MSG_CODE_LINK_RESET_DONE 0x23000000
  3627. #define FW_MSG_CODE_SET_LLDP_DONE 0x24000000
  3628. #define FW_MSG_CODE_SET_LLDP_UNSUPPORTED_AGENT 0x24010000
  3629. #define FW_MSG_CODE_SET_DCBX_DONE 0x25000000
  3630. #define FW_MSG_CODE_NIG_DRAIN_DONE 0x30000000
  3631. #define FW_MSG_CODE_VF_DISABLED_DONE 0xb0000000
  3632. #define FW_MSG_CODE_DRV_CFG_VF_MSIX_DONE 0xb0010000
  3633. #define FW_MSG_CODE_FLR_ACK 0x02000000
  3634. #define FW_MSG_CODE_FLR_NACK 0x02100000
  3635. #define FW_MSG_CODE_NVM_OK 0x00010000
  3636. #define FW_MSG_CODE_NVM_INVALID_MODE 0x00020000
  3637. #define FW_MSG_CODE_NVM_PREV_CMD_WAS_NOT_FINISHED 0x00030000
  3638. #define FW_MSG_CODE_NVM_FAILED_TO_ALLOCATE_PAGE 0x00040000
  3639. #define FW_MSG_CODE_NVM_INVALID_DIR_FOUND 0x00050000
  3640. #define FW_MSG_CODE_NVM_PAGE_NOT_FOUND 0x00060000
  3641. #define FW_MSG_CODE_NVM_FAILED_PARSING_BNDLE_HEADER 0x00070000
  3642. #define FW_MSG_CODE_NVM_FAILED_PARSING_IMAGE_HEADER 0x00080000
  3643. #define FW_MSG_CODE_NVM_PARSING_OUT_OF_SYNC 0x00090000
  3644. #define FW_MSG_CODE_NVM_FAILED_UPDATING_DIR 0x000a0000
  3645. #define FW_MSG_CODE_NVM_FAILED_TO_FREE_PAGE 0x000b0000
  3646. #define FW_MSG_CODE_NVM_FILE_NOT_FOUND 0x000c0000
  3647. #define FW_MSG_CODE_NVM_OPERATION_FAILED 0x000d0000
  3648. #define FW_MSG_CODE_NVM_FAILED_UNALIGNED 0x000e0000
  3649. #define FW_MSG_CODE_NVM_BAD_OFFSET 0x000f0000
  3650. #define FW_MSG_CODE_NVM_BAD_SIGNATURE 0x00100000
  3651. #define FW_MSG_CODE_NVM_FILE_READ_ONLY 0x00200000
  3652. #define FW_MSG_CODE_NVM_UNKNOWN_FILE 0x00300000
  3653. #define FW_MSG_CODE_NVM_PUT_FILE_FINISH_OK 0x00400000
  3654. #define FW_MSG_CODE_MCP_RESET_REJECT 0x00600000
  3655. #define FW_MSG_CODE_PHY_OK 0x00110000
  3656. #define FW_MSG_CODE_PHY_ERROR 0x00120000
  3657. #define FW_MSG_CODE_SET_SECURE_MODE_ERROR 0x00130000
  3658. #define FW_MSG_CODE_SET_SECURE_MODE_OK 0x00140000
  3659. #define FW_MSG_MODE_PHY_PRIVILEGE_ERROR 0x00150000
  3660. #define FW_MSG_CODE_OK 0x00160000
  3661. #define FW_MSG_SEQ_NUMBER_MASK 0x0000ffff
  3662. u32 fw_mb_param;
  3663. u32 drv_pulse_mb;
  3664. #define DRV_PULSE_SEQ_MASK 0x00007fff
  3665. #define DRV_PULSE_SYSTEM_TIME_MASK 0xffff0000
  3666. #define DRV_PULSE_ALWAYS_ALIVE 0x00008000
  3667. u32 mcp_pulse_mb;
  3668. #define MCP_PULSE_SEQ_MASK 0x00007fff
  3669. #define MCP_PULSE_ALWAYS_ALIVE 0x00008000
  3670. #define MCP_EVENT_MASK 0xffff0000
  3671. #define MCP_EVENT_OTHER_DRIVER_RESET_REQ 0x00010000
  3672. union drv_union_data union_data;
  3673. };
  3674. /* MFW - DRV MB */
  3675. /**********************************************************************
  3676. * Description
  3677. * Incremental Aggregative
  3678. * 8-bit MFW counter per message
  3679. * 8-bit ack-counter per message
  3680. * Capabilities
  3681. * Provides up to 256 aggregative message per type
  3682. * Provides 4 message types in dword
  3683. * Message type pointers to byte offset
  3684. * Backward Compatibility by using sizeof for the counters.
  3685. * No lock requires for 32bit messages
  3686. * Limitations:
  3687. * In case of messages greater than 32bit, a dedicated mechanism(e.g lock)
  3688. * is required to prevent data corruption.
  3689. **********************************************************************/
  3690. enum MFW_DRV_MSG_TYPE {
  3691. MFW_DRV_MSG_LINK_CHANGE,
  3692. MFW_DRV_MSG_FLR_FW_ACK_FAILED,
  3693. MFW_DRV_MSG_VF_DISABLED,
  3694. MFW_DRV_MSG_LLDP_DATA_UPDATED,
  3695. MFW_DRV_MSG_DCBX_REMOTE_MIB_UPDATED,
  3696. MFW_DRV_MSG_DCBX_OPERATIONAL_MIB_UPDATED,
  3697. MFW_DRV_MSG_ERROR_RECOVERY,
  3698. MFW_DRV_MSG_BW_UPDATE,
  3699. MFW_DRV_MSG_S_TAG_UPDATE,
  3700. MFW_DRV_MSG_GET_LAN_STATS,
  3701. MFW_DRV_MSG_GET_FCOE_STATS,
  3702. MFW_DRV_MSG_GET_ISCSI_STATS,
  3703. MFW_DRV_MSG_GET_RDMA_STATS,
  3704. MFW_DRV_MSG_FAILURE_DETECTED,
  3705. MFW_DRV_MSG_TRANSCEIVER_STATE_CHANGE,
  3706. MFW_DRV_MSG_MAX
  3707. };
  3708. #define MFW_DRV_MSG_MAX_DWORDS(msgs) (((msgs - 1) >> 2) + 1)
  3709. #define MFW_DRV_MSG_DWORD(msg_id) (msg_id >> 2)
  3710. #define MFW_DRV_MSG_OFFSET(msg_id) ((msg_id & 0x3) << 3)
  3711. #define MFW_DRV_MSG_MASK(msg_id) (0xff << MFW_DRV_MSG_OFFSET(msg_id))
  3712. struct public_mfw_mb {
  3713. u32 sup_msgs;
  3714. u32 msg[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)];
  3715. u32 ack[MFW_DRV_MSG_MAX_DWORDS(MFW_DRV_MSG_MAX)];
  3716. };
  3717. /**************************************/
  3718. /* */
  3719. /* P U B L I C D A T A */
  3720. /* */
  3721. /**************************************/
  3722. enum public_sections {
  3723. PUBLIC_DRV_MB, /* Points to the first drv_mb of path0 */
  3724. PUBLIC_MFW_MB, /* Points to the first mfw_mb of path0 */
  3725. PUBLIC_GLOBAL,
  3726. PUBLIC_PATH,
  3727. PUBLIC_PORT,
  3728. PUBLIC_FUNC,
  3729. PUBLIC_MAX_SECTIONS
  3730. };
  3731. struct drv_ver_info_stc {
  3732. u32 ver;
  3733. u8 name[32];
  3734. };
  3735. struct mcp_public_data {
  3736. /* The sections fields is an array */
  3737. u32 num_sections;
  3738. offsize_t sections[PUBLIC_MAX_SECTIONS];
  3739. struct public_drv_mb drv_mb[MCP_GLOB_FUNC_MAX];
  3740. struct public_mfw_mb mfw_mb[MCP_GLOB_FUNC_MAX];
  3741. struct public_global global;
  3742. struct public_path path[MCP_GLOB_PATH_MAX];
  3743. struct public_port port[MCP_GLOB_PORT_MAX];
  3744. struct public_func func[MCP_GLOB_FUNC_MAX];
  3745. struct drv_ver_info_stc drv_info;
  3746. };
  3747. struct nvm_cfg_mac_address {
  3748. u32 mac_addr_hi;
  3749. #define NVM_CFG_MAC_ADDRESS_HI_MASK 0x0000FFFF
  3750. #define NVM_CFG_MAC_ADDRESS_HI_OFFSET 0
  3751. u32 mac_addr_lo;
  3752. };
  3753. /******************************************
  3754. * nvm_cfg1 structs
  3755. ******************************************/
  3756. struct nvm_cfg1_glob {
  3757. u32 generic_cont0; /* 0x0 */
  3758. #define NVM_CFG1_GLOB_BOARD_SWAP_MASK 0x0000000F
  3759. #define NVM_CFG1_GLOB_BOARD_SWAP_OFFSET 0
  3760. #define NVM_CFG1_GLOB_BOARD_SWAP_NONE 0x0
  3761. #define NVM_CFG1_GLOB_BOARD_SWAP_PATH 0x1
  3762. #define NVM_CFG1_GLOB_BOARD_SWAP_PORT 0x2
  3763. #define NVM_CFG1_GLOB_BOARD_SWAP_BOTH 0x3
  3764. #define NVM_CFG1_GLOB_MF_MODE_MASK 0x00000FF0
  3765. #define NVM_CFG1_GLOB_MF_MODE_OFFSET 4
  3766. #define NVM_CFG1_GLOB_MF_MODE_MF_ALLOWED 0x0
  3767. #define NVM_CFG1_GLOB_MF_MODE_DEFAULT 0x1
  3768. #define NVM_CFG1_GLOB_MF_MODE_SPIO4 0x2
  3769. #define NVM_CFG1_GLOB_MF_MODE_NPAR1_0 0x3
  3770. #define NVM_CFG1_GLOB_MF_MODE_NPAR1_5 0x4
  3771. #define NVM_CFG1_GLOB_MF_MODE_NPAR2_0 0x5
  3772. #define NVM_CFG1_GLOB_MF_MODE_BD 0x6
  3773. #define NVM_CFG1_GLOB_MF_MODE_UFP 0x7
  3774. #define NVM_CFG1_GLOB_FAN_FAILURE_ENFORCEMENT_MASK 0x00001000
  3775. #define NVM_CFG1_GLOB_FAN_FAILURE_ENFORCEMENT_OFFSET 12
  3776. #define NVM_CFG1_GLOB_FAN_FAILURE_ENFORCEMENT_DISABLED 0x0
  3777. #define NVM_CFG1_GLOB_FAN_FAILURE_ENFORCEMENT_ENABLED 0x1
  3778. #define NVM_CFG1_GLOB_AVS_MARGIN_LOW_MASK 0x001FE000
  3779. #define NVM_CFG1_GLOB_AVS_MARGIN_LOW_OFFSET 13
  3780. #define NVM_CFG1_GLOB_AVS_MARGIN_HIGH_MASK 0x1FE00000
  3781. #define NVM_CFG1_GLOB_AVS_MARGIN_HIGH_OFFSET 21
  3782. #define NVM_CFG1_GLOB_ENABLE_SRIOV_MASK 0x20000000
  3783. #define NVM_CFG1_GLOB_ENABLE_SRIOV_OFFSET 29
  3784. #define NVM_CFG1_GLOB_ENABLE_SRIOV_DISABLED 0x0
  3785. #define NVM_CFG1_GLOB_ENABLE_SRIOV_ENABLED 0x1
  3786. #define NVM_CFG1_GLOB_ENABLE_ATC_MASK 0x40000000
  3787. #define NVM_CFG1_GLOB_ENABLE_ATC_OFFSET 30
  3788. #define NVM_CFG1_GLOB_ENABLE_ATC_DISABLED 0x0
  3789. #define NVM_CFG1_GLOB_ENABLE_ATC_ENABLED 0x1
  3790. #define NVM_CFG1_GLOB_CLOCK_SLOWDOWN_MASK 0x80000000
  3791. #define NVM_CFG1_GLOB_CLOCK_SLOWDOWN_OFFSET 31
  3792. #define NVM_CFG1_GLOB_CLOCK_SLOWDOWN_DISABLED 0x0
  3793. #define NVM_CFG1_GLOB_CLOCK_SLOWDOWN_ENABLED 0x1
  3794. u32 engineering_change[3]; /* 0x4 */
  3795. u32 manufacturing_id; /* 0x10 */
  3796. u32 serial_number[4]; /* 0x14 */
  3797. u32 pcie_cfg; /* 0x24 */
  3798. #define NVM_CFG1_GLOB_PCI_GEN_MASK 0x00000003
  3799. #define NVM_CFG1_GLOB_PCI_GEN_OFFSET 0
  3800. #define NVM_CFG1_GLOB_PCI_GEN_PCI_GEN1 0x0
  3801. #define NVM_CFG1_GLOB_PCI_GEN_PCI_GEN2 0x1
  3802. #define NVM_CFG1_GLOB_PCI_GEN_PCI_GEN3 0x2
  3803. #define NVM_CFG1_GLOB_BEACON_WOL_ENABLED_MASK 0x00000004
  3804. #define NVM_CFG1_GLOB_BEACON_WOL_ENABLED_OFFSET 2
  3805. #define NVM_CFG1_GLOB_BEACON_WOL_ENABLED_DISABLED 0x0
  3806. #define NVM_CFG1_GLOB_BEACON_WOL_ENABLED_ENABLED 0x1
  3807. #define NVM_CFG1_GLOB_ASPM_SUPPORT_MASK 0x00000018
  3808. #define NVM_CFG1_GLOB_ASPM_SUPPORT_OFFSET 3
  3809. #define NVM_CFG1_GLOB_ASPM_SUPPORT_L0S_L1_ENABLED 0x0
  3810. #define NVM_CFG1_GLOB_ASPM_SUPPORT_L0S_DISABLED 0x1
  3811. #define NVM_CFG1_GLOB_ASPM_SUPPORT_L1_DISABLED 0x2
  3812. #define NVM_CFG1_GLOB_ASPM_SUPPORT_L0S_L1_DISABLED 0x3
  3813. #define NVM_CFG1_GLOB_PREVENT_PCIE_L1_MENTRY_MASK 0x00000020
  3814. #define NVM_CFG1_GLOB_PREVENT_PCIE_L1_MENTRY_OFFSET 5
  3815. #define NVM_CFG1_GLOB_PREVENT_PCIE_L1_MENTRY_DISABLED 0x0
  3816. #define NVM_CFG1_GLOB_PREVENT_PCIE_L1_MENTRY_ENABLED 0x1
  3817. #define NVM_CFG1_GLOB_PCIE_G2_TX_AMPLITUDE_MASK 0x000003C0
  3818. #define NVM_CFG1_GLOB_PCIE_G2_TX_AMPLITUDE_OFFSET 6
  3819. #define NVM_CFG1_GLOB_PCIE_PREEMPHASIS_MASK 0x00001C00
  3820. #define NVM_CFG1_GLOB_PCIE_PREEMPHASIS_OFFSET 10
  3821. #define NVM_CFG1_GLOB_PCIE_PREEMPHASIS_HW 0x0
  3822. #define NVM_CFG1_GLOB_PCIE_PREEMPHASIS_0DB 0x1
  3823. #define NVM_CFG1_GLOB_PCIE_PREEMPHASIS_3_5DB 0x2
  3824. #define NVM_CFG1_GLOB_PCIE_PREEMPHASIS_6_0DB 0x3
  3825. #define NVM_CFG1_GLOB_WWN_NODE_PREFIX0_MASK 0x001FE000
  3826. #define NVM_CFG1_GLOB_WWN_NODE_PREFIX0_OFFSET 13
  3827. #define NVM_CFG1_GLOB_WWN_NODE_PREFIX1_MASK 0x1FE00000
  3828. #define NVM_CFG1_GLOB_WWN_NODE_PREFIX1_OFFSET 21
  3829. #define NVM_CFG1_GLOB_NCSI_PACKAGE_ID_MASK 0x60000000
  3830. #define NVM_CFG1_GLOB_NCSI_PACKAGE_ID_OFFSET 29
  3831. u32 mgmt_traffic; /* 0x28 */
  3832. #define NVM_CFG1_GLOB_RESERVED60_MASK 0x00000001
  3833. #define NVM_CFG1_GLOB_RESERVED60_OFFSET 0
  3834. #define NVM_CFG1_GLOB_RESERVED60_100KHZ 0x0
  3835. #define NVM_CFG1_GLOB_RESERVED60_400KHZ 0x1
  3836. #define NVM_CFG1_GLOB_WWN_PORT_PREFIX0_MASK 0x000001FE
  3837. #define NVM_CFG1_GLOB_WWN_PORT_PREFIX0_OFFSET 1
  3838. #define NVM_CFG1_GLOB_WWN_PORT_PREFIX1_MASK 0x0001FE00
  3839. #define NVM_CFG1_GLOB_WWN_PORT_PREFIX1_OFFSET 9
  3840. #define NVM_CFG1_GLOB_SMBUS_ADDRESS_MASK 0x01FE0000
  3841. #define NVM_CFG1_GLOB_SMBUS_ADDRESS_OFFSET 17
  3842. #define NVM_CFG1_GLOB_SIDEBAND_MODE_MASK 0x06000000
  3843. #define NVM_CFG1_GLOB_SIDEBAND_MODE_OFFSET 25
  3844. #define NVM_CFG1_GLOB_SIDEBAND_MODE_DISABLED 0x0
  3845. #define NVM_CFG1_GLOB_SIDEBAND_MODE_RMII 0x1
  3846. #define NVM_CFG1_GLOB_SIDEBAND_MODE_SGMII 0x2
  3847. u32 core_cfg; /* 0x2C */
  3848. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_MASK 0x000000FF
  3849. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_OFFSET 0
  3850. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_DE_2X40G 0x0
  3851. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_DE_2X50G 0x1
  3852. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_DE_1X100G 0x2
  3853. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_DE_4X10G_F 0x3
  3854. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_DE_4X10G_E 0x4
  3855. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_DE_4X20G 0x5
  3856. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_DE_1X40G 0xB
  3857. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_DE_2X25G 0xC
  3858. #define NVM_CFG1_GLOB_NETWORK_PORT_MODE_DE_1X25G 0xD
  3859. #define NVM_CFG1_GLOB_EAGLE_ENFORCE_TX_FIR_CFG_MASK 0x00000100
  3860. #define NVM_CFG1_GLOB_EAGLE_ENFORCE_TX_FIR_CFG_OFFSET 8
  3861. #define NVM_CFG1_GLOB_EAGLE_ENFORCE_TX_FIR_CFG_DISABLED 0x0
  3862. #define NVM_CFG1_GLOB_EAGLE_ENFORCE_TX_FIR_CFG_ENABLED 0x1
  3863. #define NVM_CFG1_GLOB_FALCON_ENFORCE_TX_FIR_CFG_MASK 0x00000200
  3864. #define NVM_CFG1_GLOB_FALCON_ENFORCE_TX_FIR_CFG_OFFSET 9
  3865. #define NVM_CFG1_GLOB_FALCON_ENFORCE_TX_FIR_CFG_DISABLED 0x0
  3866. #define NVM_CFG1_GLOB_FALCON_ENFORCE_TX_FIR_CFG_ENABLED 0x1
  3867. #define NVM_CFG1_GLOB_EAGLE_CORE_ADDR_MASK 0x0003FC00
  3868. #define NVM_CFG1_GLOB_EAGLE_CORE_ADDR_OFFSET 10
  3869. #define NVM_CFG1_GLOB_FALCON_CORE_ADDR_MASK 0x03FC0000
  3870. #define NVM_CFG1_GLOB_FALCON_CORE_ADDR_OFFSET 18
  3871. #define NVM_CFG1_GLOB_AVS_MODE_MASK 0x1C000000
  3872. #define NVM_CFG1_GLOB_AVS_MODE_OFFSET 26
  3873. #define NVM_CFG1_GLOB_AVS_MODE_CLOSE_LOOP 0x0
  3874. #define NVM_CFG1_GLOB_AVS_MODE_OPEN_LOOP 0x1
  3875. #define NVM_CFG1_GLOB_AVS_MODE_DISABLED 0x3
  3876. #define NVM_CFG1_GLOB_OVERRIDE_SECURE_MODE_MASK 0x60000000
  3877. #define NVM_CFG1_GLOB_OVERRIDE_SECURE_MODE_OFFSET 29
  3878. #define NVM_CFG1_GLOB_OVERRIDE_SECURE_MODE_DISABLED 0x0
  3879. #define NVM_CFG1_GLOB_OVERRIDE_SECURE_MODE_ENABLED 0x1
  3880. u32 e_lane_cfg1; /* 0x30 */
  3881. #define NVM_CFG1_GLOB_RX_LANE0_SWAP_MASK 0x0000000F
  3882. #define NVM_CFG1_GLOB_RX_LANE0_SWAP_OFFSET 0
  3883. #define NVM_CFG1_GLOB_RX_LANE1_SWAP_MASK 0x000000F0
  3884. #define NVM_CFG1_GLOB_RX_LANE1_SWAP_OFFSET 4
  3885. #define NVM_CFG1_GLOB_RX_LANE2_SWAP_MASK 0x00000F00
  3886. #define NVM_CFG1_GLOB_RX_LANE2_SWAP_OFFSET 8
  3887. #define NVM_CFG1_GLOB_RX_LANE3_SWAP_MASK 0x0000F000
  3888. #define NVM_CFG1_GLOB_RX_LANE3_SWAP_OFFSET 12
  3889. #define NVM_CFG1_GLOB_TX_LANE0_SWAP_MASK 0x000F0000
  3890. #define NVM_CFG1_GLOB_TX_LANE0_SWAP_OFFSET 16
  3891. #define NVM_CFG1_GLOB_TX_LANE1_SWAP_MASK 0x00F00000
  3892. #define NVM_CFG1_GLOB_TX_LANE1_SWAP_OFFSET 20
  3893. #define NVM_CFG1_GLOB_TX_LANE2_SWAP_MASK 0x0F000000
  3894. #define NVM_CFG1_GLOB_TX_LANE2_SWAP_OFFSET 24
  3895. #define NVM_CFG1_GLOB_TX_LANE3_SWAP_MASK 0xF0000000
  3896. #define NVM_CFG1_GLOB_TX_LANE3_SWAP_OFFSET 28
  3897. u32 e_lane_cfg2; /* 0x34 */
  3898. #define NVM_CFG1_GLOB_RX_LANE0_POL_FLIP_MASK 0x00000001
  3899. #define NVM_CFG1_GLOB_RX_LANE0_POL_FLIP_OFFSET 0
  3900. #define NVM_CFG1_GLOB_RX_LANE1_POL_FLIP_MASK 0x00000002
  3901. #define NVM_CFG1_GLOB_RX_LANE1_POL_FLIP_OFFSET 1
  3902. #define NVM_CFG1_GLOB_RX_LANE2_POL_FLIP_MASK 0x00000004
  3903. #define NVM_CFG1_GLOB_RX_LANE2_POL_FLIP_OFFSET 2
  3904. #define NVM_CFG1_GLOB_RX_LANE3_POL_FLIP_MASK 0x00000008
  3905. #define NVM_CFG1_GLOB_RX_LANE3_POL_FLIP_OFFSET 3
  3906. #define NVM_CFG1_GLOB_TX_LANE0_POL_FLIP_MASK 0x00000010
  3907. #define NVM_CFG1_GLOB_TX_LANE0_POL_FLIP_OFFSET 4
  3908. #define NVM_CFG1_GLOB_TX_LANE1_POL_FLIP_MASK 0x00000020
  3909. #define NVM_CFG1_GLOB_TX_LANE1_POL_FLIP_OFFSET 5
  3910. #define NVM_CFG1_GLOB_TX_LANE2_POL_FLIP_MASK 0x00000040
  3911. #define NVM_CFG1_GLOB_TX_LANE2_POL_FLIP_OFFSET 6
  3912. #define NVM_CFG1_GLOB_TX_LANE3_POL_FLIP_MASK 0x00000080
  3913. #define NVM_CFG1_GLOB_TX_LANE3_POL_FLIP_OFFSET 7
  3914. #define NVM_CFG1_GLOB_SMBUS_MODE_MASK 0x00000F00
  3915. #define NVM_CFG1_GLOB_SMBUS_MODE_OFFSET 8
  3916. #define NVM_CFG1_GLOB_SMBUS_MODE_DISABLED 0x0
  3917. #define NVM_CFG1_GLOB_SMBUS_MODE_100KHZ 0x1
  3918. #define NVM_CFG1_GLOB_SMBUS_MODE_400KHZ 0x2
  3919. #define NVM_CFG1_GLOB_NCSI_MASK 0x0000F000
  3920. #define NVM_CFG1_GLOB_NCSI_OFFSET 12
  3921. #define NVM_CFG1_GLOB_NCSI_DISABLED 0x0
  3922. #define NVM_CFG1_GLOB_NCSI_ENABLED 0x1
  3923. u32 f_lane_cfg1; /* 0x38 */
  3924. #define NVM_CFG1_GLOB_RX_LANE0_SWAP_MASK 0x0000000F
  3925. #define NVM_CFG1_GLOB_RX_LANE0_SWAP_OFFSET 0
  3926. #define NVM_CFG1_GLOB_RX_LANE1_SWAP_MASK 0x000000F0
  3927. #define NVM_CFG1_GLOB_RX_LANE1_SWAP_OFFSET 4
  3928. #define NVM_CFG1_GLOB_RX_LANE2_SWAP_MASK 0x00000F00
  3929. #define NVM_CFG1_GLOB_RX_LANE2_SWAP_OFFSET 8
  3930. #define NVM_CFG1_GLOB_RX_LANE3_SWAP_MASK 0x0000F000
  3931. #define NVM_CFG1_GLOB_RX_LANE3_SWAP_OFFSET 12
  3932. #define NVM_CFG1_GLOB_TX_LANE0_SWAP_MASK 0x000F0000
  3933. #define NVM_CFG1_GLOB_TX_LANE0_SWAP_OFFSET 16
  3934. #define NVM_CFG1_GLOB_TX_LANE1_SWAP_MASK 0x00F00000
  3935. #define NVM_CFG1_GLOB_TX_LANE1_SWAP_OFFSET 20
  3936. #define NVM_CFG1_GLOB_TX_LANE2_SWAP_MASK 0x0F000000
  3937. #define NVM_CFG1_GLOB_TX_LANE2_SWAP_OFFSET 24
  3938. #define NVM_CFG1_GLOB_TX_LANE3_SWAP_MASK 0xF0000000
  3939. #define NVM_CFG1_GLOB_TX_LANE3_SWAP_OFFSET 28
  3940. u32 f_lane_cfg2; /* 0x3C */
  3941. #define NVM_CFG1_GLOB_RX_LANE0_POL_FLIP_MASK 0x00000001
  3942. #define NVM_CFG1_GLOB_RX_LANE0_POL_FLIP_OFFSET 0
  3943. #define NVM_CFG1_GLOB_RX_LANE1_POL_FLIP_MASK 0x00000002
  3944. #define NVM_CFG1_GLOB_RX_LANE1_POL_FLIP_OFFSET 1
  3945. #define NVM_CFG1_GLOB_RX_LANE2_POL_FLIP_MASK 0x00000004
  3946. #define NVM_CFG1_GLOB_RX_LANE2_POL_FLIP_OFFSET 2
  3947. #define NVM_CFG1_GLOB_RX_LANE3_POL_FLIP_MASK 0x00000008
  3948. #define NVM_CFG1_GLOB_RX_LANE3_POL_FLIP_OFFSET 3
  3949. #define NVM_CFG1_GLOB_TX_LANE0_POL_FLIP_MASK 0x00000010
  3950. #define NVM_CFG1_GLOB_TX_LANE0_POL_FLIP_OFFSET 4
  3951. #define NVM_CFG1_GLOB_TX_LANE1_POL_FLIP_MASK 0x00000020
  3952. #define NVM_CFG1_GLOB_TX_LANE1_POL_FLIP_OFFSET 5
  3953. #define NVM_CFG1_GLOB_TX_LANE2_POL_FLIP_MASK 0x00000040
  3954. #define NVM_CFG1_GLOB_TX_LANE2_POL_FLIP_OFFSET 6
  3955. #define NVM_CFG1_GLOB_TX_LANE3_POL_FLIP_MASK 0x00000080
  3956. #define NVM_CFG1_GLOB_TX_LANE3_POL_FLIP_OFFSET 7
  3957. u32 eagle_preemphasis; /* 0x40 */
  3958. #define NVM_CFG1_GLOB_LANE0_PREEMP_MASK 0x000000FF
  3959. #define NVM_CFG1_GLOB_LANE0_PREEMP_OFFSET 0
  3960. #define NVM_CFG1_GLOB_LANE1_PREEMP_MASK 0x0000FF00
  3961. #define NVM_CFG1_GLOB_LANE1_PREEMP_OFFSET 8
  3962. #define NVM_CFG1_GLOB_LANE2_PREEMP_MASK 0x00FF0000
  3963. #define NVM_CFG1_GLOB_LANE2_PREEMP_OFFSET 16
  3964. #define NVM_CFG1_GLOB_LANE3_PREEMP_MASK 0xFF000000
  3965. #define NVM_CFG1_GLOB_LANE3_PREEMP_OFFSET 24
  3966. u32 eagle_driver_current; /* 0x44 */
  3967. #define NVM_CFG1_GLOB_LANE0_AMP_MASK 0x000000FF
  3968. #define NVM_CFG1_GLOB_LANE0_AMP_OFFSET 0
  3969. #define NVM_CFG1_GLOB_LANE1_AMP_MASK 0x0000FF00
  3970. #define NVM_CFG1_GLOB_LANE1_AMP_OFFSET 8
  3971. #define NVM_CFG1_GLOB_LANE2_AMP_MASK 0x00FF0000
  3972. #define NVM_CFG1_GLOB_LANE2_AMP_OFFSET 16
  3973. #define NVM_CFG1_GLOB_LANE3_AMP_MASK 0xFF000000
  3974. #define NVM_CFG1_GLOB_LANE3_AMP_OFFSET 24
  3975. u32 falcon_preemphasis; /* 0x48 */
  3976. #define NVM_CFG1_GLOB_LANE0_PREEMP_MASK 0x000000FF
  3977. #define NVM_CFG1_GLOB_LANE0_PREEMP_OFFSET 0
  3978. #define NVM_CFG1_GLOB_LANE1_PREEMP_MASK 0x0000FF00
  3979. #define NVM_CFG1_GLOB_LANE1_PREEMP_OFFSET 8
  3980. #define NVM_CFG1_GLOB_LANE2_PREEMP_MASK 0x00FF0000
  3981. #define NVM_CFG1_GLOB_LANE2_PREEMP_OFFSET 16
  3982. #define NVM_CFG1_GLOB_LANE3_PREEMP_MASK 0xFF000000
  3983. #define NVM_CFG1_GLOB_LANE3_PREEMP_OFFSET 24
  3984. u32 falcon_driver_current; /* 0x4C */
  3985. #define NVM_CFG1_GLOB_LANE0_AMP_MASK 0x000000FF
  3986. #define NVM_CFG1_GLOB_LANE0_AMP_OFFSET 0
  3987. #define NVM_CFG1_GLOB_LANE1_AMP_MASK 0x0000FF00
  3988. #define NVM_CFG1_GLOB_LANE1_AMP_OFFSET 8
  3989. #define NVM_CFG1_GLOB_LANE2_AMP_MASK 0x00FF0000
  3990. #define NVM_CFG1_GLOB_LANE2_AMP_OFFSET 16
  3991. #define NVM_CFG1_GLOB_LANE3_AMP_MASK 0xFF000000
  3992. #define NVM_CFG1_GLOB_LANE3_AMP_OFFSET 24
  3993. u32 pci_id; /* 0x50 */
  3994. #define NVM_CFG1_GLOB_VENDOR_ID_MASK 0x0000FFFF
  3995. #define NVM_CFG1_GLOB_VENDOR_ID_OFFSET 0
  3996. u32 pci_subsys_id; /* 0x54 */
  3997. #define NVM_CFG1_GLOB_SUBSYSTEM_VENDOR_ID_MASK 0x0000FFFF
  3998. #define NVM_CFG1_GLOB_SUBSYSTEM_VENDOR_ID_OFFSET 0
  3999. #define NVM_CFG1_GLOB_SUBSYSTEM_DEVICE_ID_MASK 0xFFFF0000
  4000. #define NVM_CFG1_GLOB_SUBSYSTEM_DEVICE_ID_OFFSET 16
  4001. u32 bar; /* 0x58 */
  4002. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_MASK 0x0000000F
  4003. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_OFFSET 0
  4004. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_DISABLED 0x0
  4005. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_2K 0x1
  4006. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_4K 0x2
  4007. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_8K 0x3
  4008. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_16K 0x4
  4009. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_32K 0x5
  4010. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_64K 0x6
  4011. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_128K 0x7
  4012. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_256K 0x8
  4013. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_512K 0x9
  4014. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_1M 0xA
  4015. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_2M 0xB
  4016. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_4M 0xC
  4017. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_8M 0xD
  4018. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_16M 0xE
  4019. #define NVM_CFG1_GLOB_EXPANSION_ROM_SIZE_32M 0xF
  4020. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_MASK 0x000000F0
  4021. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_OFFSET 4
  4022. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_DISABLED 0x0
  4023. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_4K 0x1
  4024. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_8K 0x2
  4025. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_16K 0x3
  4026. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_32K 0x4
  4027. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_64K 0x5
  4028. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_128K 0x6
  4029. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_256K 0x7
  4030. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_512K 0x8
  4031. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_1M 0x9
  4032. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_2M 0xA
  4033. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_4M 0xB
  4034. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_8M 0xC
  4035. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_16M 0xD
  4036. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_32M 0xE
  4037. #define NVM_CFG1_GLOB_VF_PCI_BAR2_SIZE_64M 0xF
  4038. #define NVM_CFG1_GLOB_BAR2_SIZE_MASK 0x00000F00
  4039. #define NVM_CFG1_GLOB_BAR2_SIZE_OFFSET 8
  4040. #define NVM_CFG1_GLOB_BAR2_SIZE_DISABLED 0x0
  4041. #define NVM_CFG1_GLOB_BAR2_SIZE_64K 0x1
  4042. #define NVM_CFG1_GLOB_BAR2_SIZE_128K 0x2
  4043. #define NVM_CFG1_GLOB_BAR2_SIZE_256K 0x3
  4044. #define NVM_CFG1_GLOB_BAR2_SIZE_512K 0x4
  4045. #define NVM_CFG1_GLOB_BAR2_SIZE_1M 0x5
  4046. #define NVM_CFG1_GLOB_BAR2_SIZE_2M 0x6
  4047. #define NVM_CFG1_GLOB_BAR2_SIZE_4M 0x7
  4048. #define NVM_CFG1_GLOB_BAR2_SIZE_8M 0x8
  4049. #define NVM_CFG1_GLOB_BAR2_SIZE_16M 0x9
  4050. #define NVM_CFG1_GLOB_BAR2_SIZE_32M 0xA
  4051. #define NVM_CFG1_GLOB_BAR2_SIZE_64M 0xB
  4052. #define NVM_CFG1_GLOB_BAR2_SIZE_128M 0xC
  4053. #define NVM_CFG1_GLOB_BAR2_SIZE_256M 0xD
  4054. #define NVM_CFG1_GLOB_BAR2_SIZE_512M 0xE
  4055. #define NVM_CFG1_GLOB_BAR2_SIZE_1G 0xF
  4056. u32 eagle_txfir_main; /* 0x5C */
  4057. #define NVM_CFG1_GLOB_LANE0_TXFIR_MAIN_MASK 0x000000FF
  4058. #define NVM_CFG1_GLOB_LANE0_TXFIR_MAIN_OFFSET 0
  4059. #define NVM_CFG1_GLOB_LANE1_TXFIR_MAIN_MASK 0x0000FF00
  4060. #define NVM_CFG1_GLOB_LANE1_TXFIR_MAIN_OFFSET 8
  4061. #define NVM_CFG1_GLOB_LANE2_TXFIR_MAIN_MASK 0x00FF0000
  4062. #define NVM_CFG1_GLOB_LANE2_TXFIR_MAIN_OFFSET 16
  4063. #define NVM_CFG1_GLOB_LANE3_TXFIR_MAIN_MASK 0xFF000000
  4064. #define NVM_CFG1_GLOB_LANE3_TXFIR_MAIN_OFFSET 24
  4065. u32 eagle_txfir_post; /* 0x60 */
  4066. #define NVM_CFG1_GLOB_LANE0_TXFIR_POST_MASK 0x000000FF
  4067. #define NVM_CFG1_GLOB_LANE0_TXFIR_POST_OFFSET 0
  4068. #define NVM_CFG1_GLOB_LANE1_TXFIR_POST_MASK 0x0000FF00
  4069. #define NVM_CFG1_GLOB_LANE1_TXFIR_POST_OFFSET 8
  4070. #define NVM_CFG1_GLOB_LANE2_TXFIR_POST_MASK 0x00FF0000
  4071. #define NVM_CFG1_GLOB_LANE2_TXFIR_POST_OFFSET 16
  4072. #define NVM_CFG1_GLOB_LANE3_TXFIR_POST_MASK 0xFF000000
  4073. #define NVM_CFG1_GLOB_LANE3_TXFIR_POST_OFFSET 24
  4074. u32 falcon_txfir_main; /* 0x64 */
  4075. #define NVM_CFG1_GLOB_LANE0_TXFIR_MAIN_MASK 0x000000FF
  4076. #define NVM_CFG1_GLOB_LANE0_TXFIR_MAIN_OFFSET 0
  4077. #define NVM_CFG1_GLOB_LANE1_TXFIR_MAIN_MASK 0x0000FF00
  4078. #define NVM_CFG1_GLOB_LANE1_TXFIR_MAIN_OFFSET 8
  4079. #define NVM_CFG1_GLOB_LANE2_TXFIR_MAIN_MASK 0x00FF0000
  4080. #define NVM_CFG1_GLOB_LANE2_TXFIR_MAIN_OFFSET 16
  4081. #define NVM_CFG1_GLOB_LANE3_TXFIR_MAIN_MASK 0xFF000000
  4082. #define NVM_CFG1_GLOB_LANE3_TXFIR_MAIN_OFFSET 24
  4083. u32 falcon_txfir_post; /* 0x68 */
  4084. #define NVM_CFG1_GLOB_LANE0_TXFIR_POST_MASK 0x000000FF
  4085. #define NVM_CFG1_GLOB_LANE0_TXFIR_POST_OFFSET 0
  4086. #define NVM_CFG1_GLOB_LANE1_TXFIR_POST_MASK 0x0000FF00
  4087. #define NVM_CFG1_GLOB_LANE1_TXFIR_POST_OFFSET 8
  4088. #define NVM_CFG1_GLOB_LANE2_TXFIR_POST_MASK 0x00FF0000
  4089. #define NVM_CFG1_GLOB_LANE2_TXFIR_POST_OFFSET 16
  4090. #define NVM_CFG1_GLOB_LANE3_TXFIR_POST_MASK 0xFF000000
  4091. #define NVM_CFG1_GLOB_LANE3_TXFIR_POST_OFFSET 24
  4092. u32 manufacture_ver; /* 0x6C */
  4093. #define NVM_CFG1_GLOB_MANUF0_VER_MASK 0x0000003F
  4094. #define NVM_CFG1_GLOB_MANUF0_VER_OFFSET 0
  4095. #define NVM_CFG1_GLOB_MANUF1_VER_MASK 0x00000FC0
  4096. #define NVM_CFG1_GLOB_MANUF1_VER_OFFSET 6
  4097. #define NVM_CFG1_GLOB_MANUF2_VER_MASK 0x0003F000
  4098. #define NVM_CFG1_GLOB_MANUF2_VER_OFFSET 12
  4099. #define NVM_CFG1_GLOB_MANUF3_VER_MASK 0x00FC0000
  4100. #define NVM_CFG1_GLOB_MANUF3_VER_OFFSET 18
  4101. #define NVM_CFG1_GLOB_MANUF4_VER_MASK 0x3F000000
  4102. #define NVM_CFG1_GLOB_MANUF4_VER_OFFSET 24
  4103. u32 manufacture_time; /* 0x70 */
  4104. #define NVM_CFG1_GLOB_MANUF0_TIME_MASK 0x0000003F
  4105. #define NVM_CFG1_GLOB_MANUF0_TIME_OFFSET 0
  4106. #define NVM_CFG1_GLOB_MANUF1_TIME_MASK 0x00000FC0
  4107. #define NVM_CFG1_GLOB_MANUF1_TIME_OFFSET 6
  4108. #define NVM_CFG1_GLOB_MANUF2_TIME_MASK 0x0003F000
  4109. #define NVM_CFG1_GLOB_MANUF2_TIME_OFFSET 12
  4110. u32 led_global_settings; /* 0x74 */
  4111. #define NVM_CFG1_GLOB_LED_SWAP_0_MASK 0x0000000F
  4112. #define NVM_CFG1_GLOB_LED_SWAP_0_OFFSET 0
  4113. #define NVM_CFG1_GLOB_LED_SWAP_1_MASK 0x000000F0
  4114. #define NVM_CFG1_GLOB_LED_SWAP_1_OFFSET 4
  4115. #define NVM_CFG1_GLOB_LED_SWAP_2_MASK 0x00000F00
  4116. #define NVM_CFG1_GLOB_LED_SWAP_2_OFFSET 8
  4117. #define NVM_CFG1_GLOB_LED_SWAP_3_MASK 0x0000F000
  4118. #define NVM_CFG1_GLOB_LED_SWAP_3_OFFSET 12
  4119. u32 generic_cont1; /* 0x78 */
  4120. #define NVM_CFG1_GLOB_AVS_DAC_CODE_MASK 0x000003FF
  4121. #define NVM_CFG1_GLOB_AVS_DAC_CODE_OFFSET 0
  4122. u32 mbi_version; /* 0x7C */
  4123. #define NVM_CFG1_GLOB_MBI_VERSION_0_MASK 0x000000FF
  4124. #define NVM_CFG1_GLOB_MBI_VERSION_0_OFFSET 0
  4125. #define NVM_CFG1_GLOB_MBI_VERSION_1_MASK 0x0000FF00
  4126. #define NVM_CFG1_GLOB_MBI_VERSION_1_OFFSET 8
  4127. #define NVM_CFG1_GLOB_MBI_VERSION_2_MASK 0x00FF0000
  4128. #define NVM_CFG1_GLOB_MBI_VERSION_2_OFFSET 16
  4129. u32 mbi_date; /* 0x80 */
  4130. u32 misc_sig; /* 0x84 */
  4131. /* Define the GPIO mapping to switch i2c mux */
  4132. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO_0_MASK 0x000000FF
  4133. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO_0_OFFSET 0
  4134. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO_1_MASK 0x0000FF00
  4135. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO_1_OFFSET 8
  4136. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__NA 0x0
  4137. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO0 0x1
  4138. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO1 0x2
  4139. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO2 0x3
  4140. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO3 0x4
  4141. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO4 0x5
  4142. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO5 0x6
  4143. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO6 0x7
  4144. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO7 0x8
  4145. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO8 0x9
  4146. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO9 0xA
  4147. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO10 0xB
  4148. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO11 0xC
  4149. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO12 0xD
  4150. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO13 0xE
  4151. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO14 0xF
  4152. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO15 0x10
  4153. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO16 0x11
  4154. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO17 0x12
  4155. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO18 0x13
  4156. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO19 0x14
  4157. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO20 0x15
  4158. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO21 0x16
  4159. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO22 0x17
  4160. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO23 0x18
  4161. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO24 0x19
  4162. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO25 0x1A
  4163. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO26 0x1B
  4164. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO27 0x1C
  4165. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO28 0x1D
  4166. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO29 0x1E
  4167. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO30 0x1F
  4168. #define NVM_CFG1_GLOB_I2C_MUX_SEL_GPIO__GPIO31 0x20
  4169. u32 device_capabilities; /* 0x88 */
  4170. #define NVM_CFG1_GLOB_DEVICE_CAPABILITIES_ETHERNET 0x1
  4171. u32 power_dissipated; /* 0x8C */
  4172. u32 power_consumed; /* 0x90 */
  4173. u32 efi_version; /* 0x94 */
  4174. u32 reserved[42]; /* 0x98 */
  4175. };
  4176. struct nvm_cfg1_path {
  4177. u32 reserved[30]; /* 0x0 */
  4178. };
  4179. struct nvm_cfg1_port {
  4180. u32 reserved__m_relocated_to_option_123; /* 0x0 */
  4181. u32 reserved__m_relocated_to_option_124; /* 0x4 */
  4182. u32 generic_cont0; /* 0x8 */
  4183. #define NVM_CFG1_PORT_LED_MODE_MASK 0x000000FF
  4184. #define NVM_CFG1_PORT_LED_MODE_OFFSET 0
  4185. #define NVM_CFG1_PORT_LED_MODE_MAC1 0x0
  4186. #define NVM_CFG1_PORT_LED_MODE_PHY1 0x1
  4187. #define NVM_CFG1_PORT_LED_MODE_PHY2 0x2
  4188. #define NVM_CFG1_PORT_LED_MODE_PHY3 0x3
  4189. #define NVM_CFG1_PORT_LED_MODE_MAC2 0x4
  4190. #define NVM_CFG1_PORT_LED_MODE_PHY4 0x5
  4191. #define NVM_CFG1_PORT_LED_MODE_PHY5 0x6
  4192. #define NVM_CFG1_PORT_LED_MODE_PHY6 0x7
  4193. #define NVM_CFG1_PORT_LED_MODE_MAC3 0x8
  4194. #define NVM_CFG1_PORT_LED_MODE_PHY7 0x9
  4195. #define NVM_CFG1_PORT_LED_MODE_PHY8 0xA
  4196. #define NVM_CFG1_PORT_LED_MODE_PHY9 0xB
  4197. #define NVM_CFG1_PORT_LED_MODE_MAC4 0xC
  4198. #define NVM_CFG1_PORT_LED_MODE_PHY10 0xD
  4199. #define NVM_CFG1_PORT_LED_MODE_PHY11 0xE
  4200. #define NVM_CFG1_PORT_LED_MODE_PHY12 0xF
  4201. #define NVM_CFG1_PORT_ROCE_PRIORITY_MASK 0x0000FF00
  4202. #define NVM_CFG1_PORT_ROCE_PRIORITY_OFFSET 8
  4203. #define NVM_CFG1_PORT_DCBX_MODE_MASK 0x000F0000
  4204. #define NVM_CFG1_PORT_DCBX_MODE_OFFSET 16
  4205. #define NVM_CFG1_PORT_DCBX_MODE_DISABLED 0x0
  4206. #define NVM_CFG1_PORT_DCBX_MODE_IEEE 0x1
  4207. #define NVM_CFG1_PORT_DCBX_MODE_CEE 0x2
  4208. #define NVM_CFG1_PORT_DCBX_MODE_DYNAMIC 0x3
  4209. #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_MASK 0x00F00000
  4210. #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_OFFSET 20
  4211. #define NVM_CFG1_PORT_DEFAULT_ENABLED_PROTOCOLS_ETHERNET 0x1
  4212. u32 pcie_cfg; /* 0xC */
  4213. #define NVM_CFG1_PORT_RESERVED15_MASK 0x00000007
  4214. #define NVM_CFG1_PORT_RESERVED15_OFFSET 0
  4215. u32 features; /* 0x10 */
  4216. #define NVM_CFG1_PORT_ENABLE_WOL_ON_ACPI_PATTERN_MASK 0x00000001
  4217. #define NVM_CFG1_PORT_ENABLE_WOL_ON_ACPI_PATTERN_OFFSET 0
  4218. #define NVM_CFG1_PORT_ENABLE_WOL_ON_ACPI_PATTERN_DISABLED 0x0
  4219. #define NVM_CFG1_PORT_ENABLE_WOL_ON_ACPI_PATTERN_ENABLED 0x1
  4220. #define NVM_CFG1_PORT_MAGIC_PACKET_WOL_MASK 0x00000002
  4221. #define NVM_CFG1_PORT_MAGIC_PACKET_WOL_OFFSET 1
  4222. #define NVM_CFG1_PORT_MAGIC_PACKET_WOL_DISABLED 0x0
  4223. #define NVM_CFG1_PORT_MAGIC_PACKET_WOL_ENABLED 0x1
  4224. u32 speed_cap_mask; /* 0x14 */
  4225. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_MASK 0x0000FFFF
  4226. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_OFFSET 0
  4227. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_1G 0x1
  4228. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_10G 0x2
  4229. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_25G 0x8
  4230. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_40G 0x10
  4231. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_50G 0x20
  4232. #define NVM_CFG1_PORT_DRV_SPEED_CAPABILITY_MASK_100G 0x40
  4233. #define NVM_CFG1_PORT_MFW_SPEED_CAPABILITY_MASK_MASK 0xFFFF0000
  4234. #define NVM_CFG1_PORT_MFW_SPEED_CAPABILITY_MASK_OFFSET 16
  4235. #define NVM_CFG1_PORT_MFW_SPEED_CAPABILITY_MASK_1G 0x1
  4236. #define NVM_CFG1_PORT_MFW_SPEED_CAPABILITY_MASK_10G 0x2
  4237. #define NVM_CFG1_PORT_MFW_SPEED_CAPABILITY_MASK_25G 0x8
  4238. #define NVM_CFG1_PORT_MFW_SPEED_CAPABILITY_MASK_40G 0x10
  4239. #define NVM_CFG1_PORT_MFW_SPEED_CAPABILITY_MASK_50G 0x20
  4240. #define NVM_CFG1_PORT_MFW_SPEED_CAPABILITY_MASK_100G 0x40
  4241. u32 link_settings; /* 0x18 */
  4242. #define NVM_CFG1_PORT_DRV_LINK_SPEED_MASK 0x0000000F
  4243. #define NVM_CFG1_PORT_DRV_LINK_SPEED_OFFSET 0
  4244. #define NVM_CFG1_PORT_DRV_LINK_SPEED_AUTONEG 0x0
  4245. #define NVM_CFG1_PORT_DRV_LINK_SPEED_1G 0x1
  4246. #define NVM_CFG1_PORT_DRV_LINK_SPEED_10G 0x2
  4247. #define NVM_CFG1_PORT_DRV_LINK_SPEED_25G 0x4
  4248. #define NVM_CFG1_PORT_DRV_LINK_SPEED_40G 0x5
  4249. #define NVM_CFG1_PORT_DRV_LINK_SPEED_50G 0x6
  4250. #define NVM_CFG1_PORT_DRV_LINK_SPEED_100G 0x7
  4251. #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_MASK 0x00000070
  4252. #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_OFFSET 4
  4253. #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_AUTONEG 0x1
  4254. #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_RX 0x2
  4255. #define NVM_CFG1_PORT_DRV_FLOW_CONTROL_TX 0x4
  4256. #define NVM_CFG1_PORT_MFW_LINK_SPEED_MASK 0x00000780
  4257. #define NVM_CFG1_PORT_MFW_LINK_SPEED_OFFSET 7
  4258. #define NVM_CFG1_PORT_MFW_LINK_SPEED_AUTONEG 0x0
  4259. #define NVM_CFG1_PORT_MFW_LINK_SPEED_1G 0x1
  4260. #define NVM_CFG1_PORT_MFW_LINK_SPEED_10G 0x2
  4261. #define NVM_CFG1_PORT_MFW_LINK_SPEED_25G 0x4
  4262. #define NVM_CFG1_PORT_MFW_LINK_SPEED_40G 0x5
  4263. #define NVM_CFG1_PORT_MFW_LINK_SPEED_50G 0x6
  4264. #define NVM_CFG1_PORT_MFW_LINK_SPEED_100G 0x7
  4265. #define NVM_CFG1_PORT_MFW_FLOW_CONTROL_MASK 0x00003800
  4266. #define NVM_CFG1_PORT_MFW_FLOW_CONTROL_OFFSET 11
  4267. #define NVM_CFG1_PORT_MFW_FLOW_CONTROL_AUTONEG 0x1
  4268. #define NVM_CFG1_PORT_MFW_FLOW_CONTROL_RX 0x2
  4269. #define NVM_CFG1_PORT_MFW_FLOW_CONTROL_TX 0x4
  4270. #define NVM_CFG1_PORT_OPTIC_MODULE_VENDOR_ENFORCEMENT_MASK 0x00004000
  4271. #define NVM_CFG1_PORT_OPTIC_MODULE_VENDOR_ENFORCEMENT_OFFSET 14
  4272. #define NVM_CFG1_PORT_OPTIC_MODULE_VENDOR_ENFORCEMENT_DISABLED 0x0
  4273. #define NVM_CFG1_PORT_OPTIC_MODULE_VENDOR_ENFORCEMENT_ENABLED 0x1
  4274. u32 phy_cfg; /* 0x1C */
  4275. #define NVM_CFG1_PORT_OPTIONAL_LINK_MODES_MASK 0x0000FFFF
  4276. #define NVM_CFG1_PORT_OPTIONAL_LINK_MODES_OFFSET 0
  4277. #define NVM_CFG1_PORT_OPTIONAL_LINK_MODES_HIGIG 0x1
  4278. #define NVM_CFG1_PORT_OPTIONAL_LINK_MODES_SCRAMBLER 0x2
  4279. #define NVM_CFG1_PORT_OPTIONAL_LINK_MODES_FIBER 0x4
  4280. #define NVM_CFG1_PORT_OPTIONAL_LINK_MODES_DISABLE_CL72_AN 0x8
  4281. #define NVM_CFG1_PORT_OPTIONAL_LINK_MODES_DISABLE_FEC_AN 0x10
  4282. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_MASK 0x00FF0000
  4283. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_OFFSET 16
  4284. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_BYPASS 0x0
  4285. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_KR 0x2
  4286. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_KR2 0x3
  4287. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_KR4 0x4
  4288. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_XFI 0x8
  4289. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_SFI 0x9
  4290. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_1000X 0xB
  4291. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_SGMII 0xC
  4292. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_XLAUI 0x11
  4293. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_XLPPI 0x12
  4294. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_CAUI 0x21
  4295. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_CPPI 0x22
  4296. #define NVM_CFG1_PORT_SERDES_NET_INTERFACE_25GAUI 0x31
  4297. #define NVM_CFG1_PORT_AN_MODE_MASK 0xFF000000
  4298. #define NVM_CFG1_PORT_AN_MODE_OFFSET 24
  4299. #define NVM_CFG1_PORT_AN_MODE_NONE 0x0
  4300. #define NVM_CFG1_PORT_AN_MODE_CL73 0x1
  4301. #define NVM_CFG1_PORT_AN_MODE_CL37 0x2
  4302. #define NVM_CFG1_PORT_AN_MODE_CL73_BAM 0x3
  4303. #define NVM_CFG1_PORT_AN_MODE_CL37_BAM 0x4
  4304. #define NVM_CFG1_PORT_AN_MODE_HPAM 0x5
  4305. #define NVM_CFG1_PORT_AN_MODE_SGMII 0x6
  4306. u32 mgmt_traffic; /* 0x20 */
  4307. #define NVM_CFG1_PORT_RESERVED61_MASK 0x0000000F
  4308. #define NVM_CFG1_PORT_RESERVED61_OFFSET 0
  4309. u32 ext_phy; /* 0x24 */
  4310. #define NVM_CFG1_PORT_EXTERNAL_PHY_TYPE_MASK 0x000000FF
  4311. #define NVM_CFG1_PORT_EXTERNAL_PHY_TYPE_OFFSET 0
  4312. #define NVM_CFG1_PORT_EXTERNAL_PHY_TYPE_NONE 0x0
  4313. #define NVM_CFG1_PORT_EXTERNAL_PHY_TYPE_BCM84844 0x1
  4314. #define NVM_CFG1_PORT_EXTERNAL_PHY_ADDRESS_MASK 0x0000FF00
  4315. #define NVM_CFG1_PORT_EXTERNAL_PHY_ADDRESS_OFFSET 8
  4316. u32 mba_cfg1; /* 0x28 */
  4317. #define NVM_CFG1_PORT_PREBOOT_OPROM_MASK 0x00000001
  4318. #define NVM_CFG1_PORT_PREBOOT_OPROM_OFFSET 0
  4319. #define NVM_CFG1_PORT_PREBOOT_OPROM_DISABLED 0x0
  4320. #define NVM_CFG1_PORT_PREBOOT_OPROM_ENABLED 0x1
  4321. #define NVM_CFG1_PORT_RESERVED__M_MBA_BOOT_TYPE_MASK 0x00000006
  4322. #define NVM_CFG1_PORT_RESERVED__M_MBA_BOOT_TYPE_OFFSET 1
  4323. #define NVM_CFG1_PORT_MBA_DELAY_TIME_MASK 0x00000078
  4324. #define NVM_CFG1_PORT_MBA_DELAY_TIME_OFFSET 3
  4325. #define NVM_CFG1_PORT_MBA_SETUP_HOT_KEY_MASK 0x00000080
  4326. #define NVM_CFG1_PORT_MBA_SETUP_HOT_KEY_OFFSET 7
  4327. #define NVM_CFG1_PORT_MBA_SETUP_HOT_KEY_CTRL_S 0x0
  4328. #define NVM_CFG1_PORT_MBA_SETUP_HOT_KEY_CTRL_B 0x1
  4329. #define NVM_CFG1_PORT_MBA_HIDE_SETUP_PROMPT_MASK 0x00000100
  4330. #define NVM_CFG1_PORT_MBA_HIDE_SETUP_PROMPT_OFFSET 8
  4331. #define NVM_CFG1_PORT_MBA_HIDE_SETUP_PROMPT_DISABLED 0x0
  4332. #define NVM_CFG1_PORT_MBA_HIDE_SETUP_PROMPT_ENABLED 0x1
  4333. #define NVM_CFG1_PORT_RESERVED5_MASK 0x0001FE00
  4334. #define NVM_CFG1_PORT_RESERVED5_OFFSET 9
  4335. #define NVM_CFG1_PORT_PREBOOT_LINK_SPEED_MASK 0x001E0000
  4336. #define NVM_CFG1_PORT_PREBOOT_LINK_SPEED_OFFSET 17
  4337. #define NVM_CFG1_PORT_PREBOOT_LINK_SPEED_AUTONEG 0x0
  4338. #define NVM_CFG1_PORT_PREBOOT_LINK_SPEED_1G 0x1
  4339. #define NVM_CFG1_PORT_PREBOOT_LINK_SPEED_10G 0x2
  4340. #define NVM_CFG1_PORT_PREBOOT_LINK_SPEED_25G 0x4
  4341. #define NVM_CFG1_PORT_PREBOOT_LINK_SPEED_40G 0x5
  4342. #define NVM_CFG1_PORT_PREBOOT_LINK_SPEED_50G 0x6
  4343. #define NVM_CFG1_PORT_PREBOOT_LINK_SPEED_100G 0x7
  4344. #define NVM_CFG1_PORT_PREBOOT_LINK_SPEED_SMARTLINQ 0x8
  4345. #define NVM_CFG1_PORT_RESERVED__M_MBA_BOOT_RETRY_COUNT_MASK 0x00E00000
  4346. #define NVM_CFG1_PORT_RESERVED__M_MBA_BOOT_RETRY_COUNT_OFFSET 21
  4347. u32 mba_cfg2; /* 0x2C */
  4348. #define NVM_CFG1_PORT_RESERVED65_MASK 0x0000FFFF
  4349. #define NVM_CFG1_PORT_RESERVED65_OFFSET 0
  4350. #define NVM_CFG1_PORT_RESERVED66_MASK 0x00010000
  4351. #define NVM_CFG1_PORT_RESERVED66_OFFSET 16
  4352. u32 vf_cfg; /* 0x30 */
  4353. #define NVM_CFG1_PORT_RESERVED8_MASK 0x0000FFFF
  4354. #define NVM_CFG1_PORT_RESERVED8_OFFSET 0
  4355. #define NVM_CFG1_PORT_RESERVED6_MASK 0x000F0000
  4356. #define NVM_CFG1_PORT_RESERVED6_OFFSET 16
  4357. struct nvm_cfg_mac_address lldp_mac_address; /* 0x34 */
  4358. u32 led_port_settings; /* 0x3C */
  4359. #define NVM_CFG1_PORT_LANE_LED_SPD_0_SEL_MASK 0x000000FF
  4360. #define NVM_CFG1_PORT_LANE_LED_SPD_0_SEL_OFFSET 0
  4361. #define NVM_CFG1_PORT_LANE_LED_SPD_1_SEL_MASK 0x0000FF00
  4362. #define NVM_CFG1_PORT_LANE_LED_SPD_1_SEL_OFFSET 8
  4363. #define NVM_CFG1_PORT_LANE_LED_SPD_2_SEL_MASK 0x00FF0000
  4364. #define NVM_CFG1_PORT_LANE_LED_SPD_2_SEL_OFFSET 16
  4365. #define NVM_CFG1_PORT_LANE_LED_SPD__SEL_1G 0x1
  4366. #define NVM_CFG1_PORT_LANE_LED_SPD__SEL_10G 0x2
  4367. #define NVM_CFG1_PORT_LANE_LED_SPD__SEL_25G 0x8
  4368. #define NVM_CFG1_PORT_LANE_LED_SPD__SEL_40G 0x10
  4369. #define NVM_CFG1_PORT_LANE_LED_SPD__SEL_50G 0x20
  4370. #define NVM_CFG1_PORT_LANE_LED_SPD__SEL_100G 0x40
  4371. u32 transceiver_00; /* 0x40 */
  4372. /* Define for mapping of transceiver signal module absent */
  4373. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_MASK 0x000000FF
  4374. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_OFFSET 0
  4375. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_NA 0x0
  4376. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO0 0x1
  4377. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO1 0x2
  4378. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO2 0x3
  4379. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO3 0x4
  4380. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO4 0x5
  4381. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO5 0x6
  4382. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO6 0x7
  4383. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO7 0x8
  4384. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO8 0x9
  4385. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO9 0xA
  4386. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO10 0xB
  4387. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO11 0xC
  4388. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO12 0xD
  4389. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO13 0xE
  4390. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO14 0xF
  4391. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO15 0x10
  4392. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO16 0x11
  4393. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO17 0x12
  4394. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO18 0x13
  4395. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO19 0x14
  4396. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO20 0x15
  4397. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO21 0x16
  4398. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO22 0x17
  4399. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO23 0x18
  4400. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO24 0x19
  4401. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO25 0x1A
  4402. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO26 0x1B
  4403. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO27 0x1C
  4404. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO28 0x1D
  4405. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO29 0x1E
  4406. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO30 0x1F
  4407. #define NVM_CFG1_PORT_TRANS_MODULE_ABS_GPIO31 0x20
  4408. /* Define the GPIO mux settings to switch i2c mux to this port */
  4409. #define NVM_CFG1_PORT_I2C_MUX_SEL_VALUE_0_MASK 0x00000F00
  4410. #define NVM_CFG1_PORT_I2C_MUX_SEL_VALUE_0_OFFSET 8
  4411. #define NVM_CFG1_PORT_I2C_MUX_SEL_VALUE_1_MASK 0x0000F000
  4412. #define NVM_CFG1_PORT_I2C_MUX_SEL_VALUE_1_OFFSET 12
  4413. u32 reserved[133]; /* 0x44 */
  4414. };
  4415. struct nvm_cfg1_func {
  4416. struct nvm_cfg_mac_address mac_address; /* 0x0 */
  4417. u32 rsrv1; /* 0x8 */
  4418. #define NVM_CFG1_FUNC_RESERVED1_MASK 0x0000FFFF
  4419. #define NVM_CFG1_FUNC_RESERVED1_OFFSET 0
  4420. #define NVM_CFG1_FUNC_RESERVED2_MASK 0xFFFF0000
  4421. #define NVM_CFG1_FUNC_RESERVED2_OFFSET 16
  4422. u32 rsrv2; /* 0xC */
  4423. #define NVM_CFG1_FUNC_RESERVED3_MASK 0x0000FFFF
  4424. #define NVM_CFG1_FUNC_RESERVED3_OFFSET 0
  4425. #define NVM_CFG1_FUNC_RESERVED4_MASK 0xFFFF0000
  4426. #define NVM_CFG1_FUNC_RESERVED4_OFFSET 16
  4427. u32 device_id; /* 0x10 */
  4428. #define NVM_CFG1_FUNC_MF_VENDOR_DEVICE_ID_MASK 0x0000FFFF
  4429. #define NVM_CFG1_FUNC_MF_VENDOR_DEVICE_ID_OFFSET 0
  4430. #define NVM_CFG1_FUNC_RESERVED77_MASK 0xFFFF0000
  4431. #define NVM_CFG1_FUNC_RESERVED77_OFFSET 16
  4432. u32 cmn_cfg; /* 0x14 */
  4433. #define NVM_CFG1_FUNC_PREBOOT_BOOT_PROTOCOL_MASK 0x00000007
  4434. #define NVM_CFG1_FUNC_PREBOOT_BOOT_PROTOCOL_OFFSET 0
  4435. #define NVM_CFG1_FUNC_PREBOOT_BOOT_PROTOCOL_PXE 0x0
  4436. #define NVM_CFG1_FUNC_PREBOOT_BOOT_PROTOCOL_ISCSI_BOOT 0x3
  4437. #define NVM_CFG1_FUNC_PREBOOT_BOOT_PROTOCOL_FCOE_BOOT 0x4
  4438. #define NVM_CFG1_FUNC_PREBOOT_BOOT_PROTOCOL_NONE 0x7
  4439. #define NVM_CFG1_FUNC_VF_PCI_DEVICE_ID_MASK 0x0007FFF8
  4440. #define NVM_CFG1_FUNC_VF_PCI_DEVICE_ID_OFFSET 3
  4441. #define NVM_CFG1_FUNC_PERSONALITY_MASK 0x00780000
  4442. #define NVM_CFG1_FUNC_PERSONALITY_OFFSET 19
  4443. #define NVM_CFG1_FUNC_PERSONALITY_ETHERNET 0x0
  4444. #define NVM_CFG1_FUNC_PERSONALITY_ISCSI 0x1
  4445. #define NVM_CFG1_FUNC_PERSONALITY_FCOE 0x2
  4446. #define NVM_CFG1_FUNC_PERSONALITY_ROCE 0x3
  4447. #define NVM_CFG1_FUNC_BANDWIDTH_WEIGHT_MASK 0x7F800000
  4448. #define NVM_CFG1_FUNC_BANDWIDTH_WEIGHT_OFFSET 23
  4449. #define NVM_CFG1_FUNC_PAUSE_ON_HOST_RING_MASK 0x80000000
  4450. #define NVM_CFG1_FUNC_PAUSE_ON_HOST_RING_OFFSET 31
  4451. #define NVM_CFG1_FUNC_PAUSE_ON_HOST_RING_DISABLED 0x0
  4452. #define NVM_CFG1_FUNC_PAUSE_ON_HOST_RING_ENABLED 0x1
  4453. u32 pci_cfg; /* 0x18 */
  4454. #define NVM_CFG1_FUNC_NUMBER_OF_VFS_PER_PF_MASK 0x0000007F
  4455. #define NVM_CFG1_FUNC_NUMBER_OF_VFS_PER_PF_OFFSET 0
  4456. #define NVM_CFG1_FUNC_RESERVESD12_MASK 0x00003F80
  4457. #define NVM_CFG1_FUNC_RESERVESD12_OFFSET 7
  4458. #define NVM_CFG1_FUNC_BAR1_SIZE_MASK 0x0003C000
  4459. #define NVM_CFG1_FUNC_BAR1_SIZE_OFFSET 14
  4460. #define NVM_CFG1_FUNC_BAR1_SIZE_DISABLED 0x0
  4461. #define NVM_CFG1_FUNC_BAR1_SIZE_64K 0x1
  4462. #define NVM_CFG1_FUNC_BAR1_SIZE_128K 0x2
  4463. #define NVM_CFG1_FUNC_BAR1_SIZE_256K 0x3
  4464. #define NVM_CFG1_FUNC_BAR1_SIZE_512K 0x4
  4465. #define NVM_CFG1_FUNC_BAR1_SIZE_1M 0x5
  4466. #define NVM_CFG1_FUNC_BAR1_SIZE_2M 0x6
  4467. #define NVM_CFG1_FUNC_BAR1_SIZE_4M 0x7
  4468. #define NVM_CFG1_FUNC_BAR1_SIZE_8M 0x8
  4469. #define NVM_CFG1_FUNC_BAR1_SIZE_16M 0x9
  4470. #define NVM_CFG1_FUNC_BAR1_SIZE_32M 0xA
  4471. #define NVM_CFG1_FUNC_BAR1_SIZE_64M 0xB
  4472. #define NVM_CFG1_FUNC_BAR1_SIZE_128M 0xC
  4473. #define NVM_CFG1_FUNC_BAR1_SIZE_256M 0xD
  4474. #define NVM_CFG1_FUNC_BAR1_SIZE_512M 0xE
  4475. #define NVM_CFG1_FUNC_BAR1_SIZE_1G 0xF
  4476. #define NVM_CFG1_FUNC_MAX_BANDWIDTH_MASK 0x03FC0000
  4477. #define NVM_CFG1_FUNC_MAX_BANDWIDTH_OFFSET 18
  4478. struct nvm_cfg_mac_address fcoe_node_wwn_mac_addr; /* 0x1C */
  4479. struct nvm_cfg_mac_address fcoe_port_wwn_mac_addr; /* 0x24 */
  4480. u32 preboot_generic_cfg; /* 0x2C */
  4481. u32 reserved[8]; /* 0x30 */
  4482. };
  4483. struct nvm_cfg1 {
  4484. struct nvm_cfg1_glob glob; /* 0x0 */
  4485. struct nvm_cfg1_path path[MCP_GLOB_PATH_MAX]; /* 0x140 */
  4486. struct nvm_cfg1_port port[MCP_GLOB_PORT_MAX]; /* 0x230 */
  4487. struct nvm_cfg1_func func[MCP_GLOB_FUNC_MAX]; /* 0xB90 */
  4488. };
  4489. /******************************************
  4490. * nvm_cfg structs
  4491. ******************************************/
  4492. enum nvm_cfg_sections {
  4493. NVM_CFG_SECTION_NVM_CFG1,
  4494. NVM_CFG_SECTION_MAX
  4495. };
  4496. struct nvm_cfg {
  4497. u32 num_sections;
  4498. u32 sections_offset[NVM_CFG_SECTION_MAX];
  4499. struct nvm_cfg1 cfg1;
  4500. };
  4501. #define PORT_0 0
  4502. #define PORT_1 1
  4503. #define PORT_2 2
  4504. #define PORT_3 3
  4505. extern struct spad_layout g_spad;
  4506. #define MCP_SPAD_SIZE 0x00028000 /* 160 KB */
  4507. #define SPAD_OFFSET(addr) (((u32)addr - (u32)CPU_SPAD_BASE))
  4508. #define TO_OFFSIZE(_offset, _size) \
  4509. (u32)((((u32)(_offset) >> 2) << OFFSIZE_OFFSET_SHIFT) | \
  4510. (((u32)(_size) >> 2) << OFFSIZE_SIZE_SHIFT))
  4511. enum spad_sections {
  4512. SPAD_SECTION_TRACE,
  4513. SPAD_SECTION_NVM_CFG,
  4514. SPAD_SECTION_PUBLIC,
  4515. SPAD_SECTION_PRIVATE,
  4516. SPAD_SECTION_MAX
  4517. };
  4518. struct spad_layout {
  4519. struct nvm_cfg nvm_cfg;
  4520. struct mcp_public_data public_data;
  4521. };
  4522. #define CRC_MAGIC_VALUE 0xDEBB20E3
  4523. #define CRC32_POLYNOMIAL 0xEDB88320
  4524. #define NVM_CRC_SIZE (sizeof(u32))
  4525. enum nvm_sw_arbitrator {
  4526. NVM_SW_ARB_HOST,
  4527. NVM_SW_ARB_MCP,
  4528. NVM_SW_ARB_UART,
  4529. NVM_SW_ARB_RESERVED
  4530. };
  4531. /****************************************************************************
  4532. * Boot Strap Region *
  4533. ****************************************************************************/
  4534. struct legacy_bootstrap_region {
  4535. u32 magic_value;
  4536. #define NVM_MAGIC_VALUE 0x669955aa
  4537. u32 sram_start_addr;
  4538. u32 code_len; /* boot code length (in dwords) */
  4539. u32 code_start_addr;
  4540. u32 crc; /* 32-bit CRC */
  4541. };
  4542. /****************************************************************************
  4543. * Directories Region *
  4544. ****************************************************************************/
  4545. struct nvm_code_entry {
  4546. u32 image_type; /* Image type */
  4547. u32 nvm_start_addr; /* NVM address of the image */
  4548. u32 len; /* Include CRC */
  4549. u32 sram_start_addr;
  4550. u32 sram_run_addr; /* Relevant in case of MIM only */
  4551. };
  4552. enum nvm_image_type {
  4553. NVM_TYPE_TIM1 = 0x01,
  4554. NVM_TYPE_TIM2 = 0x02,
  4555. NVM_TYPE_MIM1 = 0x03,
  4556. NVM_TYPE_MIM2 = 0x04,
  4557. NVM_TYPE_MBA = 0x05,
  4558. NVM_TYPE_MODULES_PN = 0x06,
  4559. NVM_TYPE_VPD = 0x07,
  4560. NVM_TYPE_MFW_TRACE1 = 0x08,
  4561. NVM_TYPE_MFW_TRACE2 = 0x09,
  4562. NVM_TYPE_NVM_CFG1 = 0x0a,
  4563. NVM_TYPE_L2B = 0x0b,
  4564. NVM_TYPE_DIR1 = 0x0c,
  4565. NVM_TYPE_EAGLE_FW1 = 0x0d,
  4566. NVM_TYPE_FALCON_FW1 = 0x0e,
  4567. NVM_TYPE_PCIE_FW1 = 0x0f,
  4568. NVM_TYPE_HW_SET = 0x10,
  4569. NVM_TYPE_LIM = 0x11,
  4570. NVM_TYPE_AVS_FW1 = 0x12,
  4571. NVM_TYPE_DIR2 = 0x13,
  4572. NVM_TYPE_CCM = 0x14,
  4573. NVM_TYPE_EAGLE_FW2 = 0x15,
  4574. NVM_TYPE_FALCON_FW2 = 0x16,
  4575. NVM_TYPE_PCIE_FW2 = 0x17,
  4576. NVM_TYPE_AVS_FW2 = 0x18,
  4577. NVM_TYPE_MAX,
  4578. };
  4579. #define MAX_NVM_DIR_ENTRIES 200
  4580. struct nvm_dir {
  4581. s32 seq;
  4582. #define NVM_DIR_NEXT_MFW_MASK 0x00000001
  4583. #define NVM_DIR_SEQ_MASK 0xfffffffe
  4584. #define NVM_DIR_NEXT_MFW(seq) ((seq) & NVM_DIR_NEXT_MFW_MASK)
  4585. #define IS_DIR_SEQ_VALID(seq) ((seq & NVM_DIR_SEQ_MASK) != NVM_DIR_SEQ_MASK)
  4586. u32 num_images;
  4587. u32 rsrv;
  4588. struct nvm_code_entry code[1]; /* Up to MAX_NVM_DIR_ENTRIES */
  4589. };
  4590. #define NVM_DIR_SIZE(_num_images) (sizeof(struct nvm_dir) + \
  4591. (_num_images - \
  4592. 1) * sizeof(struct nvm_code_entry) + \
  4593. NVM_CRC_SIZE)
  4594. struct nvm_vpd_image {
  4595. u32 format_revision;
  4596. #define VPD_IMAGE_VERSION 1
  4597. /* This array length depends on the number of VPD fields */
  4598. u8 vpd_data[1];
  4599. };
  4600. /****************************************************************************
  4601. * NVRAM FULL MAP *
  4602. ****************************************************************************/
  4603. #define DIR_ID_1 (0)
  4604. #define DIR_ID_2 (1)
  4605. #define MAX_DIR_IDS (2)
  4606. #define MFW_BUNDLE_1 (0)
  4607. #define MFW_BUNDLE_2 (1)
  4608. #define MAX_MFW_BUNDLES (2)
  4609. #define FLASH_PAGE_SIZE 0x1000
  4610. #define NVM_DIR_MAX_SIZE (FLASH_PAGE_SIZE) /* 4Kb */
  4611. #define ASIC_MIM_MAX_SIZE (300 * FLASH_PAGE_SIZE) /* 1.2Mb */
  4612. #define FPGA_MIM_MAX_SIZE (25 * FLASH_PAGE_SIZE) /* 60Kb */
  4613. #define LIM_MAX_SIZE ((2 * \
  4614. FLASH_PAGE_SIZE) - \
  4615. sizeof(struct legacy_bootstrap_region) - \
  4616. NVM_RSV_SIZE)
  4617. #define LIM_OFFSET (NVM_OFFSET(lim_image))
  4618. #define NVM_RSV_SIZE (44)
  4619. #define MIM_MAX_SIZE(is_asic) ((is_asic) ? ASIC_MIM_MAX_SIZE : \
  4620. FPGA_MIM_MAX_SIZE)
  4621. #define MIM_OFFSET(idx, is_asic) (NVM_OFFSET(dir[MAX_MFW_BUNDLES]) + \
  4622. ((idx == \
  4623. NVM_TYPE_MIM2) ? MIM_MAX_SIZE(is_asic) : 0))
  4624. #define NVM_FIXED_AREA_SIZE(is_asic) (sizeof(struct nvm_image) + \
  4625. MIM_MAX_SIZE(is_asic) * 2)
  4626. union nvm_dir_union {
  4627. struct nvm_dir dir;
  4628. u8 page[FLASH_PAGE_SIZE];
  4629. };
  4630. /* Address
  4631. * +-------------------+ 0x000000
  4632. * | Bootstrap: |
  4633. * | magic_number |
  4634. * | sram_start_addr |
  4635. * | code_len |
  4636. * | code_start_addr |
  4637. * | crc |
  4638. * +-------------------+ 0x000014
  4639. * | rsrv |
  4640. * +-------------------+ 0x000040
  4641. * | LIM |
  4642. * +-------------------+ 0x002000
  4643. * | Dir1 |
  4644. * +-------------------+ 0x003000
  4645. * | Dir2 |
  4646. * +-------------------+ 0x004000
  4647. * | MIM1 |
  4648. * +-------------------+ 0x130000
  4649. * | MIM2 |
  4650. * +-------------------+ 0x25C000
  4651. * | Rest Images: |
  4652. * | TIM1/2 |
  4653. * | MFW_TRACE1/2 |
  4654. * | Eagle/Falcon FW |
  4655. * | PCIE/AVS FW |
  4656. * | MBA/CCM/L2B |
  4657. * | VPD |
  4658. * | optic_modules |
  4659. * | ... |
  4660. * +-------------------+ 0x400000
  4661. */
  4662. struct nvm_image {
  4663. /*********** !!! FIXED SECTIONS !!! DO NOT MODIFY !!! **********************/
  4664. /* NVM Offset (size) */
  4665. struct legacy_bootstrap_region bootstrap;
  4666. u8 rsrv[NVM_RSV_SIZE];
  4667. u8 lim_image[LIM_MAX_SIZE];
  4668. union nvm_dir_union dir[MAX_MFW_BUNDLES];
  4669. /* MIM1_IMAGE 0x004000 (0x12c000) */
  4670. /* MIM2_IMAGE 0x130000 (0x12c000) */
  4671. /*********** !!! FIXED SECTIONS !!! DO NOT MODIFY !!! **********************/
  4672. }; /* 0x134 */
  4673. #define NVM_OFFSET(f) ((u32_t)((int_ptr_t)(&(((struct nvm_image *)0)->f))))
  4674. struct hw_set_info {
  4675. u32 reg_type;
  4676. #define GRC_REG_TYPE 1
  4677. #define PHY_REG_TYPE 2
  4678. #define PCI_REG_TYPE 4
  4679. u32 bank_num;
  4680. u32 pf_num;
  4681. u32 operation;
  4682. #define READ_OP 1
  4683. #define WRITE_OP 2
  4684. #define RMW_SET_OP 3
  4685. #define RMW_CLR_OP 4
  4686. u32 reg_addr;
  4687. u32 reg_data;
  4688. u32 reset_type;
  4689. #define POR_RESET_TYPE BIT(0)
  4690. #define HARD_RESET_TYPE BIT(1)
  4691. #define CORE_RESET_TYPE BIT(2)
  4692. #define MCP_RESET_TYPE BIT(3)
  4693. #define PERSET_ASSERT BIT(4)
  4694. #define PERSET_DEASSERT BIT(5)
  4695. };
  4696. struct hw_set_image {
  4697. u32 format_version;
  4698. #define HW_SET_IMAGE_VERSION 1
  4699. u32 no_hw_sets;
  4700. /* This array length depends on the no_hw_sets */
  4701. struct hw_set_info hw_sets[1];
  4702. };
  4703. #endif