Adapter.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. /***********************************
  2. * Adapter.h
  3. ************************************/
  4. #ifndef __ADAPTER_H__
  5. #define __ADAPTER_H__
  6. #define MAX_FRAGMENTEDIP_CLASSIFICATION_ENTRIES 256
  7. #include "Debug.h"
  8. struct _LEADER
  9. {
  10. USHORT Vcid;
  11. USHORT PLength;
  12. UCHAR Status;
  13. UCHAR Unused[3];
  14. }__attribute__((packed));
  15. typedef struct _LEADER LEADER,*PLEADER;
  16. struct _PACKETTOSEND
  17. {
  18. LEADER Leader;
  19. UCHAR ucPayload;
  20. }__attribute__((packed));
  21. typedef struct _PACKETTOSEND PACKETTOSEND, *PPACKETTOSEND;
  22. struct _CONTROL_PACKET
  23. {
  24. PVOID ControlBuff;
  25. UINT ControlBuffLen;
  26. struct _CONTROL_PACKET* next;
  27. }__attribute__((packed));
  28. typedef struct _CONTROL_PACKET CONTROL_PACKET,*PCONTROL_PACKET;
  29. struct link_request
  30. {
  31. LEADER Leader;
  32. UCHAR szData[4];
  33. }__attribute__((packed));
  34. typedef struct link_request LINK_REQUEST, *PLINK_REQUEST;
  35. //classification extension is added
  36. typedef struct _ADD_CONNECTION
  37. {
  38. ULONG SrcIpAddressCount;
  39. ULONG SrcIpAddress[MAX_CONNECTIONS];
  40. ULONG SrcIpMask[MAX_CONNECTIONS];
  41. ULONG DestIpAddressCount;
  42. ULONG DestIpAddress[MAX_CONNECTIONS];
  43. ULONG DestIpMask[MAX_CONNECTIONS];
  44. USHORT SrcPortBegin;
  45. USHORT SrcPortEnd;
  46. USHORT DestPortBegin;
  47. USHORT DestPortEnd;
  48. UCHAR SrcTOS;
  49. UCHAR SrcProtocol;
  50. } ADD_CONNECTION,*PADD_CONNECTION;
  51. typedef struct _CLASSIFICATION_RULE
  52. {
  53. UCHAR ucIPSrcAddrLen;
  54. UCHAR ucIPSrcAddr[32];
  55. UCHAR ucIPDestAddrLen;
  56. UCHAR ucIPDestAddr[32];
  57. UCHAR ucSrcPortRangeLen;
  58. UCHAR ucSrcPortRange[4];
  59. UCHAR ucDestPortRangeLen;
  60. UCHAR ucDestPortRange[4];
  61. USHORT usVcid;
  62. } CLASSIFICATION_RULE,*PCLASSIFICATION_RULE;
  63. typedef struct _CLASSIFICATION_ONLY
  64. {
  65. USHORT usVcid;
  66. ULONG DestIpAddress;
  67. ULONG DestIpMask;
  68. USHORT usPortLo;
  69. USHORT usPortHi;
  70. BOOLEAN bIpVersion;
  71. UCHAR ucDestinationAddress[16];
  72. } CLASSIFICATION_ONLY, *PCLASSIFICATION_ONLY;
  73. #define MAX_IP_RANGE_LENGTH 4
  74. #define MAX_PORT_RANGE 4
  75. #define MAX_PROTOCOL_LENGTH 32
  76. #define IPV6_ADDRESS_SIZEINBYTES 0x10
  77. typedef union _U_IP_ADDRESS
  78. {
  79. struct
  80. {
  81. ULONG ulIpv4Addr[MAX_IP_RANGE_LENGTH];//Source Ip Address Range
  82. ULONG ulIpv4Mask[MAX_IP_RANGE_LENGTH];//Source Ip Mask Address Range
  83. };
  84. struct
  85. {
  86. ULONG ulIpv6Addr[MAX_IP_RANGE_LENGTH * 4];//Source Ip Address Range
  87. ULONG ulIpv6Mask[MAX_IP_RANGE_LENGTH * 4];//Source Ip Mask Address Range
  88. };
  89. struct
  90. {
  91. UCHAR ucIpv4Address[MAX_IP_RANGE_LENGTH * IP_LENGTH_OF_ADDRESS];
  92. UCHAR ucIpv4Mask[MAX_IP_RANGE_LENGTH * IP_LENGTH_OF_ADDRESS];
  93. };
  94. struct
  95. {
  96. UCHAR ucIpv6Address[MAX_IP_RANGE_LENGTH * IPV6_ADDRESS_SIZEINBYTES];
  97. UCHAR ucIpv6Mask[MAX_IP_RANGE_LENGTH * IPV6_ADDRESS_SIZEINBYTES];
  98. };
  99. }U_IP_ADDRESS;
  100. struct _packet_info;
  101. typedef struct _S_HDR_SUPRESSION_CONTEXTINFO
  102. {
  103. UCHAR ucaHdrSupressionInBuf[MAX_PHS_LENGTHS]; //Intermediate buffer to accumulate pkt Header for PHS
  104. UCHAR ucaHdrSupressionOutBuf[MAX_PHS_LENGTHS + PHSI_LEN]; //Intermediate buffer containing pkt Header after PHS
  105. }S_HDR_SUPRESSION_CONTEXTINFO;
  106. typedef struct _S_CLASSIFIER_RULE
  107. {
  108. ULONG ulSFID;
  109. UCHAR ucReserved[2];
  110. B_UINT16 uiClassifierRuleIndex;
  111. BOOLEAN bUsed;
  112. USHORT usVCID_Value;
  113. B_UINT8 u8ClassifierRulePriority; //This field detemines the Classifier Priority
  114. U_IP_ADDRESS stSrcIpAddress;
  115. UCHAR ucIPSourceAddressLength;//Ip Source Address Length
  116. U_IP_ADDRESS stDestIpAddress;
  117. UCHAR ucIPDestinationAddressLength;//Ip Destination Address Length
  118. UCHAR ucIPTypeOfServiceLength;//Type of service Length
  119. UCHAR ucTosLow;//Tos Low
  120. UCHAR ucTosHigh;//Tos High
  121. UCHAR ucTosMask;//Tos Mask
  122. UCHAR ucProtocolLength;//protocol Length
  123. UCHAR ucProtocol[MAX_PROTOCOL_LENGTH];//protocol Length
  124. USHORT usSrcPortRangeLo[MAX_PORT_RANGE];
  125. USHORT usSrcPortRangeHi[MAX_PORT_RANGE];
  126. UCHAR ucSrcPortRangeLength;
  127. USHORT usDestPortRangeLo[MAX_PORT_RANGE];
  128. USHORT usDestPortRangeHi[MAX_PORT_RANGE];
  129. UCHAR ucDestPortRangeLength;
  130. BOOLEAN bProtocolValid;
  131. BOOLEAN bTOSValid;
  132. BOOLEAN bDestIpValid;
  133. BOOLEAN bSrcIpValid;
  134. //For IPv6 Addressing
  135. UCHAR ucDirection;
  136. BOOLEAN bIpv6Protocol;
  137. UINT32 u32PHSRuleID;
  138. S_PHS_RULE sPhsRule;
  139. UCHAR u8AssociatedPHSI;
  140. //Classification fields for ETH CS
  141. UCHAR ucEthCSSrcMACLen;
  142. UCHAR au8EThCSSrcMAC[MAC_ADDRESS_SIZE];
  143. UCHAR au8EThCSSrcMACMask[MAC_ADDRESS_SIZE];
  144. UCHAR ucEthCSDestMACLen;
  145. UCHAR au8EThCSDestMAC[MAC_ADDRESS_SIZE];
  146. UCHAR au8EThCSDestMACMask[MAC_ADDRESS_SIZE];
  147. UCHAR ucEtherTypeLen;
  148. UCHAR au8EthCSEtherType[NUM_ETHERTYPE_BYTES];
  149. UCHAR usUserPriority[2];
  150. USHORT usVLANID;
  151. USHORT usValidityBitMap;
  152. }S_CLASSIFIER_RULE;
  153. //typedef struct _S_CLASSIFIER_RULE S_CLASSIFIER_RULE;
  154. typedef struct _S_FRAGMENTED_PACKET_INFO
  155. {
  156. BOOLEAN bUsed;
  157. ULONG ulSrcIpAddress;
  158. USHORT usIpIdentification;
  159. S_CLASSIFIER_RULE *pstMatchedClassifierEntry;
  160. BOOLEAN bOutOfOrderFragment;
  161. }S_FRAGMENTED_PACKET_INFO,*PS_FRAGMENTED_PACKET_INFO;
  162. struct _packet_info
  163. {
  164. //classification extension Rule
  165. ULONG ulSFID;
  166. USHORT usVCID_Value;
  167. UINT uiThreshold;
  168. // This field determines the priority of the SF Queues
  169. B_UINT8 u8TrafficPriority;
  170. BOOLEAN bValid;
  171. BOOLEAN bActive;
  172. BOOLEAN bActivateRequestSent;
  173. B_UINT8 u8QueueType;//BE or rtPS
  174. UINT uiMaxBucketSize;//maximum size of the bucket for the queue
  175. UINT uiCurrentQueueDepthOnTarget;
  176. UINT uiCurrentBytesOnHost;
  177. UINT uiCurrentPacketsOnHost;
  178. UINT uiDroppedCountBytes;
  179. UINT uiDroppedCountPackets;
  180. UINT uiSentBytes;
  181. UINT uiSentPackets;
  182. UINT uiCurrentDrainRate;
  183. UINT uiThisPeriodSentBytes;
  184. LARGE_INTEGER liDrainCalculated;
  185. UINT uiCurrentTokenCount;
  186. LARGE_INTEGER liLastUpdateTokenAt;
  187. UINT uiMaxAllowedRate;
  188. UINT NumOfPacketsSent;
  189. UCHAR ucDirection;
  190. USHORT usCID;
  191. S_MIBS_EXTSERVICEFLOW_PARAMETERS stMibsExtServiceFlowTable;
  192. UINT uiCurrentRxRate;
  193. UINT uiThisPeriodRxBytes;
  194. UINT uiTotalRxBytes;
  195. UINT uiTotalTxBytes;
  196. UINT uiPendedLast;
  197. UCHAR ucIpVersion;
  198. union
  199. {
  200. struct
  201. {
  202. struct sk_buff* FirstTxQueue;
  203. struct sk_buff* LastTxQueue;
  204. };
  205. struct
  206. {
  207. struct sk_buff* ControlHead;
  208. struct sk_buff* ControlTail;
  209. };
  210. };
  211. BOOLEAN bProtocolValid;
  212. BOOLEAN bTOSValid;
  213. BOOLEAN bDestIpValid;
  214. BOOLEAN bSrcIpValid;
  215. BOOLEAN bActiveSet;
  216. BOOLEAN bAdmittedSet;
  217. BOOLEAN bAuthorizedSet;
  218. BOOLEAN bClassifierPriority;
  219. UCHAR ucServiceClassName[MAX_CLASS_NAME_LENGTH];
  220. BOOLEAN bHeaderSuppressionEnabled;
  221. spinlock_t SFQueueLock;
  222. void *pstSFIndication;
  223. struct timeval stLastUpdateTokenAt;
  224. atomic_t uiPerSFTxResourceCount;
  225. UINT uiMaxLatency;
  226. UCHAR bIPCSSupport;
  227. UCHAR bEthCSSupport;
  228. };
  229. typedef struct _packet_info PacketInfo;
  230. typedef struct _PER_TARANG_DATA
  231. {
  232. struct _PER_TARANG_DATA * next;
  233. struct _MINI_ADAPTER * Adapter;
  234. struct sk_buff* RxAppControlHead;
  235. struct sk_buff* RxAppControlTail;
  236. volatile INT AppCtrlQueueLen;
  237. BOOLEAN MacTracingEnabled;
  238. BOOLEAN bApplicationToExit;
  239. S_MIBS_DROPPED_APP_CNTRL_MESSAGES stDroppedAppCntrlMsgs;
  240. ULONG RxCntrlMsgBitMask;
  241. } PER_TARANG_DATA, *PPER_TARANG_DATA;
  242. #ifdef REL_4_1
  243. typedef struct _TARGET_PARAMS
  244. {
  245. B_UINT32 m_u32CfgVersion;
  246. // Scanning Related Params
  247. B_UINT32 m_u32CenterFrequency;
  248. B_UINT32 m_u32BandAScan;
  249. B_UINT32 m_u32BandBScan;
  250. B_UINT32 m_u32BandCScan;
  251. // QoS Params
  252. B_UINT32 m_u32minGrantsize; // size of minimum grant is 0 or 6
  253. B_UINT32 m_u32PHSEnable;
  254. // HO Params
  255. B_UINT32 m_u32HoEnable;
  256. B_UINT32 m_u32HoReserved1;
  257. B_UINT32 m_u32HoReserved2;
  258. // Power Control Params
  259. B_UINT32 m_u32MimoEnable;
  260. B_UINT32 m_u32SecurityEnable;
  261. /*
  262. * bit 1: 1 Idlemode enable;
  263. * bit 2: 1 Sleepmode Enable
  264. */
  265. B_UINT32 m_u32PowerSavingModesEnable;
  266. /* PowerSaving Mode Options:
  267. bit 0 = 1: CPE mode - to keep pcmcia if alive;
  268. bit 1 = 1: CINR reporing in Idlemode Msg
  269. bit 2 = 1: Default PSC Enable in sleepmode*/
  270. B_UINT32 m_u32PowerSavingModeOptions;
  271. B_UINT32 m_u32ArqEnable;
  272. // From Version #3, the HARQ section renamed as general
  273. B_UINT32 m_u32HarqEnable;
  274. // EEPROM Param Location
  275. B_UINT32 m_u32EEPROMFlag;
  276. /* BINARY TYPE - 4th MSByte:
  277. * Interface Type - 3rd MSByte:
  278. * Vendor Type - 2nd MSByte
  279. */
  280. // Unused - LSByte
  281. B_UINT32 m_u32Customize;
  282. B_UINT32 m_u32ConfigBW; /* In Hz */
  283. B_UINT32 m_u32ShutDownTimer;
  284. B_UINT32 m_u32RadioParameter;
  285. B_UINT32 m_u32PhyParameter1;
  286. B_UINT32 m_u32PhyParameter2;
  287. B_UINT32 m_u32PhyParameter3;
  288. /* in eval mode only;
  289. * lower 16bits = basic cid for testing;
  290. * then bit 16 is test cqich,
  291. * bit 17 test init rang;
  292. * bit 18 test periodic rang
  293. * bit 19 is test harq ack/nack
  294. */
  295. B_UINT32 m_u32TestOptions;
  296. B_UINT32 m_u32MaxMACDataperDLFrame;
  297. B_UINT32 m_u32MaxMACDataperULFrame;
  298. B_UINT32 m_u32Corr2MacFlags;
  299. //adding driver params.
  300. B_UINT32 HostDrvrConfig1;
  301. B_UINT32 HostDrvrConfig2;
  302. B_UINT32 HostDrvrConfig3;
  303. B_UINT32 HostDrvrConfig4;
  304. B_UINT32 HostDrvrConfig5;
  305. B_UINT32 HostDrvrConfig6;
  306. B_UINT32 m_u32SegmentedPUSCenable;
  307. // BAMC enable - but 4.x does not support this feature
  308. // This is added just to sync 4.x and 5.x CFGs
  309. B_UINT32 m_u32BandAMCEnable;
  310. } STARGETPARAMS, *PSTARGETPARAMS;
  311. #endif
  312. typedef struct _STTARGETDSXBUFFER
  313. {
  314. ULONG ulTargetDsxBuffer;
  315. B_UINT16 tid;
  316. BOOLEAN valid;
  317. }STTARGETDSXBUFFER, *PSTTARGETDSXBUFFER;
  318. typedef INT (*FP_FLASH_WRITE)(struct _MINI_ADAPTER*,UINT,PVOID);
  319. typedef INT (*FP_FLASH_WRITE_STATUS)(struct _MINI_ADAPTER*,UINT,PVOID);
  320. /**
  321. Driver adapter data structure
  322. */
  323. struct _MINI_ADAPTER
  324. {
  325. struct _MINI_ADAPTER *next;
  326. struct net_device *dev;
  327. u32 msg_enable;
  328. CHAR *caDsxReqResp;
  329. atomic_t ApplicationRunning;
  330. volatile INT CtrlQueueLen;
  331. atomic_t AppCtrlQueueLen;
  332. BOOLEAN AppCtrlQueueOverFlow;
  333. atomic_t CurrentApplicationCount;
  334. atomic_t RegisteredApplicationCount;
  335. BOOLEAN LinkUpStatus;
  336. BOOLEAN TimerActive;
  337. u32 StatisticsPointer;
  338. struct sk_buff *RxControlHead;
  339. struct sk_buff *RxControlTail;
  340. struct semaphore RxAppControlQueuelock;
  341. struct semaphore fw_download_sema;
  342. PPER_TARANG_DATA pTarangs;
  343. spinlock_t control_queue_lock;
  344. wait_queue_head_t process_read_wait_queue;
  345. // the pointer to the first packet we have queued in send
  346. // deserialized miniport support variables
  347. atomic_t TotalPacketCount;
  348. atomic_t TxPktAvail;
  349. // this to keep track of the Tx and Rx MailBox Registers.
  350. atomic_t CurrNumFreeTxDesc;
  351. // to keep track the no of byte received
  352. USHORT PrevNumRecvDescs;
  353. USHORT CurrNumRecvDescs;
  354. UINT u32TotalDSD;
  355. PacketInfo PackInfo[NO_OF_QUEUES];
  356. S_CLASSIFIER_RULE astClassifierTable[MAX_CLASSIFIERS];
  357. BOOLEAN TransferMode;
  358. /*************** qos ******************/
  359. BOOLEAN bETHCSEnabled;
  360. ULONG BEBucketSize;
  361. ULONG rtPSBucketSize;
  362. UCHAR LinkStatus;
  363. BOOLEAN AutoLinkUp;
  364. BOOLEAN AutoSyncup;
  365. int major;
  366. int minor;
  367. wait_queue_head_t tx_packet_wait_queue;
  368. wait_queue_head_t process_rx_cntrlpkt;
  369. atomic_t process_waiting;
  370. BOOLEAN fw_download_done;
  371. char *txctlpacket[MAX_CNTRL_PKTS];
  372. atomic_t cntrlpktCnt ;
  373. atomic_t index_app_read_cntrlpkt;
  374. atomic_t index_wr_txcntrlpkt;
  375. atomic_t index_rd_txcntrlpkt;
  376. UINT index_datpkt;
  377. struct semaphore rdmwrmsync;
  378. STTARGETDSXBUFFER astTargetDsxBuffer[MAX_TARGET_DSX_BUFFERS];
  379. ULONG ulFreeTargetBufferCnt;
  380. ULONG ulCurrentTargetBuffer;
  381. ULONG ulTotalTargetBuffersAvailable;
  382. unsigned long chip_id;
  383. wait_queue_head_t lowpower_mode_wait_queue;
  384. BOOLEAN bFlashBoot;
  385. BOOLEAN bBinDownloaded;
  386. BOOLEAN bCfgDownloaded;
  387. BOOLEAN bSyncUpRequestSent;
  388. USHORT usBestEffortQueueIndex;
  389. wait_queue_head_t ioctl_fw_dnld_wait_queue;
  390. BOOLEAN waiting_to_fw_download_done;
  391. pid_t fw_download_process_pid;
  392. PSTARGETPARAMS pstargetparams;
  393. BOOLEAN device_removed;
  394. BOOLEAN DeviceAccess;
  395. BOOLEAN bIsAutoCorrectEnabled;
  396. BOOLEAN bDDRInitDone;
  397. INT DDRSetting;
  398. ULONG ulPowerSaveMode;
  399. spinlock_t txtransmitlock;
  400. B_UINT8 txtransmit_running;
  401. /* Thread for control packet handling */
  402. struct task_struct *control_packet_handler;
  403. /* thread for transmitting packets. */
  404. struct task_struct *transmit_packet_thread;
  405. /* LED Related Structures */
  406. LED_INFO_STRUCT LEDInfo;
  407. /* Driver State for LED Blinking */
  408. LedEventInfo_t DriverState;
  409. /* Interface Specific */
  410. PVOID pvInterfaceAdapter;
  411. int (*bcm_file_download)( PVOID,
  412. struct file *,
  413. unsigned int);
  414. int (*bcm_file_readback_from_chip)( PVOID,
  415. struct file *,
  416. unsigned int);
  417. INT (*interface_rdm)(PVOID,
  418. UINT ,
  419. PVOID ,
  420. INT);
  421. INT (*interface_wrm)(PVOID,
  422. UINT ,
  423. PVOID ,
  424. INT);
  425. int (*interface_transmit)(PVOID, PVOID , UINT);
  426. BOOLEAN IdleMode;
  427. BOOLEAN bDregRequestSentInIdleMode;
  428. BOOLEAN bTriedToWakeUpFromlowPowerMode;
  429. BOOLEAN bShutStatus;
  430. BOOLEAN bWakeUpDevice;
  431. unsigned int usIdleModePattern;
  432. //BOOLEAN bTriedToWakeUpFromShutdown;
  433. BOOLEAN bLinkDownRequested;
  434. int downloadDDR;
  435. PHS_DEVICE_EXTENSION stBCMPhsContext;
  436. S_HDR_SUPRESSION_CONTEXTINFO stPhsTxContextInfo;
  437. uint8_t ucaPHSPktRestoreBuf[2048];
  438. uint8_t bPHSEnabled;
  439. BOOLEAN AutoFirmDld;
  440. BOOLEAN bMipsConfig;
  441. BOOLEAN bDPLLConfig;
  442. UINT32 aTxPktSizeHist[MIBS_MAX_HIST_ENTRIES];
  443. UINT32 aRxPktSizeHist[MIBS_MAX_HIST_ENTRIES];
  444. S_FRAGMENTED_PACKET_INFO astFragmentedPktClassifierTable[MAX_FRAGMENTEDIP_CLASSIFICATION_ENTRIES];
  445. atomic_t uiMBupdate;
  446. UINT32 PmuMode;
  447. NVM_TYPE eNVMType;
  448. UINT uiSectorSize;
  449. UINT uiSectorSizeInCFG;
  450. BOOLEAN bSectorSizeOverride;
  451. BOOLEAN bStatusWrite;
  452. UINT uiNVMDSDSize;
  453. UINT uiVendorExtnFlag;
  454. //it will always represent chosen DSD at any point of time.
  455. // Generally it is Active DSD but in case of NVM RD/WR it might be different.
  456. UINT ulFlashCalStart;
  457. ULONG ulFlashControlSectionStart;
  458. ULONG ulFlashWriteSize;
  459. ULONG ulFlashID;
  460. FP_FLASH_WRITE fpFlashWrite;
  461. FP_FLASH_WRITE_STATUS fpFlashWriteWithStatusCheck;
  462. struct semaphore NVMRdmWrmLock;
  463. struct device *pstCreatedClassDevice;
  464. // BOOLEAN InterfaceUpStatus;
  465. PFLASH2X_CS_INFO psFlash2xCSInfo;
  466. PFLASH_CS_INFO psFlashCSInfo ;
  467. PFLASH2X_VENDORSPECIFIC_INFO psFlash2xVendorInfo;
  468. UINT uiFlashBaseAdd; //Flash start address
  469. UINT uiActiveISOOffset; //Active ISO offset chosen before f/w download
  470. FLASH2X_SECTION_VAL eActiveISO; //Active ISO section val
  471. FLASH2X_SECTION_VAL eActiveDSD; //Active DSD val chosen before f/w download
  472. UINT uiActiveDSDOffsetAtFwDld; //For accessing Active DSD chosen before f/w download
  473. UINT uiFlashLayoutMajorVersion ;
  474. UINT uiFlashLayoutMinorVersion;
  475. BOOLEAN bAllDSDWriteAllow ;
  476. BOOLEAN bSigCorrupted ;
  477. //this should be set who so ever want to change the Headers. after Wrtie it should be reset immediately.
  478. BOOLEAN bHeaderChangeAllowed ;
  479. INT SelectedChip ;
  480. BOOLEAN bEndPointHalted;
  481. //while bFlashRawRead will be true, Driver ignore map lay out and consider flash as of without any map.
  482. BOOLEAN bFlashRawRead;
  483. BOOLEAN bPreparingForLowPowerMode ;
  484. BOOLEAN bDoSuspend ;
  485. UINT syscfgBefFwDld ;
  486. BOOLEAN StopAllXaction ;
  487. UINT32 liTimeSinceLastNetEntry; //Used to Support extended CAPI requirements from
  488. struct semaphore LowPowerModeSync;
  489. ULONG liDrainCalculated;
  490. UINT gpioBitMap;
  491. S_BCM_DEBUG_STATE stDebugState;
  492. };
  493. typedef struct _MINI_ADAPTER MINI_ADAPTER, *PMINI_ADAPTER;
  494. #define GET_BCM_ADAPTER(net_dev) netdev_priv(net_dev)
  495. struct _ETH_HEADER_STRUC {
  496. UCHAR au8DestinationAddress[6];
  497. UCHAR au8SourceAddress[6];
  498. USHORT u16Etype;
  499. }__attribute__((packed));
  500. typedef struct _ETH_HEADER_STRUC ETH_HEADER_STRUC, *PETH_HEADER_STRUC;
  501. typedef struct FirmwareInfo
  502. {
  503. void __user * pvMappedFirmwareAddress;
  504. ULONG u32FirmwareLength;
  505. ULONG u32StartingAddress;
  506. }__attribute__((packed)) FIRMWARE_INFO, *PFIRMWARE_INFO;
  507. // holds the value of net_device structure..
  508. extern struct net_device *gblpnetdev;
  509. typedef struct _cntl_pkt{
  510. PMINI_ADAPTER Adapter;
  511. PLEADER PLeader;
  512. }cntl_pkt;
  513. typedef LINK_REQUEST CONTROL_MESSAGE;
  514. typedef struct _DDR_SETTING
  515. {
  516. UINT ulRegAddress;
  517. UINT ulRegValue;
  518. }DDR_SETTING, *PDDR_SETTING;
  519. typedef DDR_SETTING DDR_SET_NODE, *PDDR_SET_NODE;
  520. INT
  521. InitAdapter(PMINI_ADAPTER psAdapter);
  522. // =====================================================================
  523. // Beceem vendor request codes for EP0
  524. // =====================================================================
  525. #define BCM_REQUEST_READ 0x2
  526. #define BCM_REQUEST_WRITE 0x1
  527. #define EP2_MPS_REG 0x0F0110A0
  528. #define EP2_MPS 0x40
  529. #define EP2_CFG_REG 0x0F0110A8
  530. #define EP2_CFG_INT 0x27
  531. #define EP2_CFG_BULK 0x25
  532. #define EP4_MPS_REG 0x0F0110F0
  533. #define EP4_MPS 0x8C
  534. #define EP4_CFG_REG 0x0F0110F8
  535. #define ISO_MPS_REG 0x0F0110C8
  536. #define ISO_MPS 0x00000000
  537. #define EP1 0
  538. #define EP2 1
  539. #define EP3 2
  540. #define EP4 3
  541. #define EP5 4
  542. #define EP6 5
  543. typedef enum eInterface_setting
  544. {
  545. DEFAULT_SETTING_0 = 0,
  546. ALTERNATE_SETTING_1 = 1,
  547. }INTERFACE_SETTING;
  548. #endif //__ADAPTER_H__