⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 core_ibcd.h

📁 6440linuxDriver的源代码
💻 H
字号:
/* Proposed Interface Between Core Driver and Discover Engine (IBCD)ObjectiveLooking for an interface to help extend the flexibility, since Discover Engine is planned to be used for different applications while the core driver has limited resource and dedicated function need.*/#define SAS_ADDR_SIZE				8#define MAXIMUM_DEVICE_PER_EXPANDER 36#define MAXIMUM_DISCOVER_REQUESTS 12#define CONTINUEREMAINDER 0xe0#define FINDBOUNDARY      0xe1/* TgtDevMap structure for core driver.*/typedef struct _Target_Dev{	MV_U8		Connection;	MV_U8		DevType;	MV_U8 		PhyId;		/* If SATA device, set PhyId of expander which attached sata device */	MV_U8		TargetBits; /* from Response.Discover.TargetBits */	MV_U8		NegotiatedLinkRate:4; 	MV_U8		MaxLinkRateCapability:4; /* give four bits for Max linkrate */ 	MV_U8		Reserved0[3];	MV_U8		DevSASAddr[SAS_ADDR_SIZE];}Target_Dev, *pTarget_Dev;typedef struct _Target_Info{	MV_U8		TotalDevCounts;	/* Total device(only include SAS/SATA) counts attached behind a dedicated expander */	MV_U8		TgtId;			/* dedicated expander ID */	MV_U8		PhyCount;	MV_U8		TargetBits;		/* from Response.Discover.TargetBits */	/* info needed by API */	MV_U16		MaxRouteIndexes;	MV_U8		NegotiatedLinkRate; /* for SAS speed setting */	MV_U8		ParentPhyCount;	MV_U8		ParentPhyId[MAX_WIDEPORT_PHYS];	MV_U8		VendorID[16];	MV_U8		ProductID[24];	MV_U8		ProductRev[8];	MV_U8		ComponentVendorID[16];	MV_U16		ComponentID;	MV_U8		ComponentRevisionID;	MV_U8		phyIdToContinueDisc;	MV_U8		ParentSASAddr[SAS_ADDR_SIZE];	MV_U8		SASAddr[SAS_ADDR_SIZE];}Target_Info, *pTarget_Info;typedef struct _Target_Dev_Map{	Target_Info	Info;	Target_Dev	TgtDev[0];}Target_Dev_Map, *pTarget_Dev_Map;enum {	MAP_TGT_COUNT = 0,	MAP_TGT_INFO};enum {	STATUS_REQUEST_OK = 0,	STATUS_REQUEST_QUEUE_FULL};/*  Discover Engine will provide the following functions to call:*//* Get cached memory quota of discover engine for internal use */MV_VOID DISC_GetResource(OUT MV_U32 *Size, IN MV_U8 MaxTgt, IN MV_U16 MaxDev);		/* Give assigned memory pointer and size for discover engine */MV_VOID DISC_SetResource(IN MV_PVOID pDISC_Extension, IN MV_U32 Size);		 /* Do a discover behind a dedicated expander from a dedicated port */MV_VOID DISC_DoDiscover(IN MV_PVOID pDISC_Extension, IN MV_PVOID PortExtension, IN MV_U8 *SasAddr, IN MV_U8 NegotiatedLinkRate, IN void (*pCallBack)(MV_PVOID pDiscoveryExtension,MV_PVOID This));/* Check a discover state behind a dedicated expander from a dedicated port */MV_VOID DISC_CheckDiscoverState(IN MV_PVOID pDISC_Extension, IN MV_PVOID PortExtension, IN MV_U8 TgtId, MV_U8 *State);		 MV_VOID DISC_CancelDiscover(IN MV_PVOID pDISC_Extension, IN MV_PVOID PortExtension);		 /* return a short form of device map behind a dedicated port/expander for the core driver use INPUT:	Code - MAP_TGT_COUNT or MAP_TGT_INFO. 			MAP_TGT_COUNT: return number of discovered targets.			MAP_TGT_INFO:  return number of devices attached to target[TgtIndex], if pTgtDevMap is not NULL, will also return its device array.	TgtIndex - Index to the target array, 0..n.	pTgtDevMap - Pointer to allocated information memory.How it works from the core driver:1. call MAP_TGT_COUNT to get target count.2. for each target indicated by TgtIndex,  	2a. get number of devices on this target with a NULL pTgtDevMap.	2b. after calculating required memory, get device array.*/ MV_U8 DISC_GetTgtDevMap(IN MV_PVOID pDISC_Extension, IN MV_PVOID PortExtension, IN MV_U8 Code, IN MV_U8 TgtIndex, OUT MV_PVOID pTgtDevMap);/*  Core Driver will provide the following functions to call:*//* tell core driver to issue a SMP command from a dedicated port/expander *///MV_VOID CORE_IssueSMPRequest(IN MV_PVOID PortExtension, IN MV_U8 *SasAddr, IN MV_PVOID pSMPReq, IN void (*pCallBack)(MV_PVOID pDISC_Extension, MV_PVOID PortExtension, MV_U8 *SasAddr, MV_PVOID pSMPReq), MV_PVOID Context);		/* tell core driver to get port sas address and root expander sas address from a dedicated port *///MV_VOID CORE_GetPortAddress(IN MV_PVOID PortExtension, OUT MV_U8 *SasAddr);/* ToDo:1. SMP request context.2. function details.Limitation:1. based on existing driver.2. only one internal request per target(expander) is reserved for use (one SMP command at one time).*/  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -