From: Stan Smith Date: Fri, 8 Oct 2010 22:26:01 +0000 (+0000) Subject: [SRP] fix device ID recognition problem with SRPT target OpenSolaris B134. X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=3255feec5e1718891c41f867098038d5fb22a7a1;p=~shefty%2Frdma-win.git [SRP] fix device ID recognition problem with SRPT target OpenSolaris B134. git-svn-id: svn://openib.tc.cornell.edu/gen1@2967 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/branches/WOF2-3/ulp/srp/kernel/ib_srp.inx b/branches/WOF2-3/ulp/srp/kernel/ib_srp.inx index 5b57db83..9e1e169f 100644 --- a/branches/WOF2-3/ulp/srp/kernel/ib_srp.inx +++ b/branches/WOF2-3/ulp/srp/kernel/ib_srp.inx @@ -41,19 +41,25 @@ ibsrp.sys=1 %SRP.DeviceDesc% = SRP.DDInstall,IBA\C0100c609ep0108r0001, \ IBA\Cff00c609ep0108r0001, \ IBA\C0100c609ep0108, \ - IBA\Cff00c609ep0108 + IBA\Cff00c609ep0108, \ + IBA\C0100c690ep0108r0001, \ + IBA\C0100c690ep0108 [SRP.DeviceSection.ntamd64] %SRP.DeviceDesc% = SRP.DDInstall,IBA\C0100c609ep0108r0001, \ IBA\Cff00c609ep0108r0001, \ IBA\C0100c609ep0108, \ - IBA\Cff00c609ep0108 + IBA\Cff00c609ep0108, \ + IBA\C0100c690ep0108r0001, \ + IBA\C0100c690ep0108 [SRP.DeviceSection.ntia64] %SRP.DeviceDesc% = SRP.DDInstall,IBA\C0100c609ep0108r0001, \ IBA\Cff00c609ep0108r0001, \ IBA\C0100c609ep0108, \ - IBA\Cff00c609ep0108 + IBA\Cff00c609ep0108, \ + IBA\C0100c690ep0108r0001, \ + IBA\C0100c690ep0108 [VFx.DeviceSection] ; empty since we don't support W9x/Me diff --git a/branches/WOF2-3/ulp/srp/kernel/srp.h b/branches/WOF2-3/ulp/srp/kernel/srp.h index 626af3ec..c6a68704 100644 --- a/branches/WOF2-3/ulp/srp/kernel/srp.h +++ b/branches/WOF2-3/ulp/srp/kernel/srp.h @@ -43,6 +43,7 @@ #define SRP_IO_CLASS CL_HTON16(0x0100) /* T10 changed */ #define SRP_IO_CLASS_R10 CL_HTON16(0xff00) /* FF + high 8 bits of NCITS OUI */ #define SRP_IO_SUBCLASS CL_HTON16(0x609e) /* Low 16 bits of NCITS OUI */ +#define SRP_IO_SUBCLASS_SUN CL_HTON16(0x690e) /* Low 16 bits of NCITS OUI erroneously sent by SUN */ #define SRP_PROTOCOL 0x0108 /* T10 administered identifier */ #define SRP_PROTOCOL_VER 0x0001 /* Approved standard version */ #define SRP_SERVICE_NAME_PREFIX "SRP.T10:" diff --git a/branches/WOF2-3/ulp/srp/kernel/srp_hba.c b/branches/WOF2-3/ulp/srp/kernel/srp_hba.c index 7bfcdd4c..fca08a08 100644 --- a/branches/WOF2-3/ulp/srp/kernel/srp_hba.c +++ b/branches/WOF2-3/ulp/srp/kernel/srp_hba.c @@ -403,6 +403,11 @@ __srp_validate_ioc( ("Not an SRP CLASS(0x%x)/SUBCLASS(0x%x).\n", cl_ntoh16( p_ioc_rec->info.profile.io_class ), cl_ntoh16( p_ioc_rec->info.profile.io_subclass )) ); +#if defined(SRP_IO_SUBCLASS_SUN) + if ( p_ioc_rec->info.profile.io_subclass == SRP_IO_SUBCLASS_SUN ) + __srp_dump_ioc_info( &p_ioc_rec->info ); + if ( p_ioc_rec->info.profile.io_subclass != SRP_IO_SUBCLASS_SUN ) +#endif return FALSE; } @@ -416,6 +421,9 @@ __srp_validate_ioc( { SRP_PRINT_EXIT( TRACE_LEVEL_ERROR, SRP_DBG_ERROR, ("Not an SRP PROTOCOL/PROTOCOL_VER.\n") ); +#if defined(SRP_IO_SUBCLASS_SUN) + if ( p_ioc_rec->info.profile.io_subclass != SRP_IO_SUBCLASS_SUN ) +#endif return FALSE; } diff --git a/trunk/ulp/srp/kernel/ib_srp.inx b/trunk/ulp/srp/kernel/ib_srp.inx index 5b57db83..9e1e169f 100644 --- a/trunk/ulp/srp/kernel/ib_srp.inx +++ b/trunk/ulp/srp/kernel/ib_srp.inx @@ -41,19 +41,25 @@ ibsrp.sys=1 %SRP.DeviceDesc% = SRP.DDInstall,IBA\C0100c609ep0108r0001, \ IBA\Cff00c609ep0108r0001, \ IBA\C0100c609ep0108, \ - IBA\Cff00c609ep0108 + IBA\Cff00c609ep0108, \ + IBA\C0100c690ep0108r0001, \ + IBA\C0100c690ep0108 [SRP.DeviceSection.ntamd64] %SRP.DeviceDesc% = SRP.DDInstall,IBA\C0100c609ep0108r0001, \ IBA\Cff00c609ep0108r0001, \ IBA\C0100c609ep0108, \ - IBA\Cff00c609ep0108 + IBA\Cff00c609ep0108, \ + IBA\C0100c690ep0108r0001, \ + IBA\C0100c690ep0108 [SRP.DeviceSection.ntia64] %SRP.DeviceDesc% = SRP.DDInstall,IBA\C0100c609ep0108r0001, \ IBA\Cff00c609ep0108r0001, \ IBA\C0100c609ep0108, \ - IBA\Cff00c609ep0108 + IBA\Cff00c609ep0108, \ + IBA\C0100c690ep0108r0001, \ + IBA\C0100c690ep0108 [VFx.DeviceSection] ; empty since we don't support W9x/Me diff --git a/trunk/ulp/srp/kernel/srp.h b/trunk/ulp/srp/kernel/srp.h index 626af3ec..c6a68704 100644 --- a/trunk/ulp/srp/kernel/srp.h +++ b/trunk/ulp/srp/kernel/srp.h @@ -43,6 +43,7 @@ #define SRP_IO_CLASS CL_HTON16(0x0100) /* T10 changed */ #define SRP_IO_CLASS_R10 CL_HTON16(0xff00) /* FF + high 8 bits of NCITS OUI */ #define SRP_IO_SUBCLASS CL_HTON16(0x609e) /* Low 16 bits of NCITS OUI */ +#define SRP_IO_SUBCLASS_SUN CL_HTON16(0x690e) /* Low 16 bits of NCITS OUI erroneously sent by SUN */ #define SRP_PROTOCOL 0x0108 /* T10 administered identifier */ #define SRP_PROTOCOL_VER 0x0001 /* Approved standard version */ #define SRP_SERVICE_NAME_PREFIX "SRP.T10:" diff --git a/trunk/ulp/srp/kernel/srp_hba.c b/trunk/ulp/srp/kernel/srp_hba.c index 7bfcdd4c..fca08a08 100644 --- a/trunk/ulp/srp/kernel/srp_hba.c +++ b/trunk/ulp/srp/kernel/srp_hba.c @@ -403,6 +403,11 @@ __srp_validate_ioc( ("Not an SRP CLASS(0x%x)/SUBCLASS(0x%x).\n", cl_ntoh16( p_ioc_rec->info.profile.io_class ), cl_ntoh16( p_ioc_rec->info.profile.io_subclass )) ); +#if defined(SRP_IO_SUBCLASS_SUN) + if ( p_ioc_rec->info.profile.io_subclass == SRP_IO_SUBCLASS_SUN ) + __srp_dump_ioc_info( &p_ioc_rec->info ); + if ( p_ioc_rec->info.profile.io_subclass != SRP_IO_SUBCLASS_SUN ) +#endif return FALSE; } @@ -416,6 +421,9 @@ __srp_validate_ioc( { SRP_PRINT_EXIT( TRACE_LEVEL_ERROR, SRP_DBG_ERROR, ("Not an SRP PROTOCOL/PROTOCOL_VER.\n") ); +#if defined(SRP_IO_SUBCLASS_SUN) + if ( p_ioc_rec->info.profile.io_subclass != SRP_IO_SUBCLASS_SUN ) +#endif return FALSE; }