|
Windows 2000 Network Driver Update
Contents
Implementing Support for Media Sense
Clarifications to the TCP/IP - NDIS Task Offload DDK Documentation
NDIS_TASK_OFFLOAD_HEADER Definition Revision
NDIS_TASK_OFFLOAD_HEADER Members
Comments
Revisions to Task Offload Objects
Querying an Adapter's Task-Offload Capabilities
Enabling an Adapter's Task-Offload Capabilities
Disabling an Adapter's Task-Offload Capabilities
Changing an Adapter's Task-Offload Capabilities
Changes to NDIS_TASK_OFFLOAD Structure
NDIS_TASK_OFFLOAD Definition
NDIS_TASK_OFFLOAD Members
Getting Ready for Large Memory-Enabled Windows
Building Drivers with Symbols (dbg and pdb)
ÀÌ ±â»ç´Â À©µµ¿ìÁî ÀÌõ DDKÀÇ ¹Ì·¡ release¿¡¼ Á¦°øµÉ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® À©µµ¿ìÁî ÀÌõ ³×Æ®¿öÅ© µå¶óÀ̹öµé¿¡ ´ëÇÑ »õ·Î¿î Á¤º¸¸¦ Á¦°øÇÑ´Ù. ÀÌ·¯ÇÑ Á¤º¸´Â À©µµ¿ìÁî ÀÌõÀ» À§ÇÑ µå¶óÀ̹öµéÀ» °³¹ßÇÏ´Â µå¶óÀ̹ö °³¹ßÀڵ鿡 ´ëÇÑ timely Á¤º¸¸¦ Á¦°øÇϱâ À§ÇØ ÀÌ¿ëµÉ ¼ö ÀÖ´Ù.
Implementing Support for Media Sense
¹Ìµð¾î ¼¾½º¸¦ À§ÇØ followÇÏ´Â Àü¹ÝÀûÀÎ ±ÔÄ¢Àº ´ÙÀ½°ú °°´Ù. : ¸¸¾à º¯È »óŰ¡ ¹ß»ýÇÏ¸é ¹Ìµð¾î À̺¥Æ®¸¦ ÀεðÄÉÀÌÆ®ÇÑ´Ù. ´ÙÀ½Àº ÀÀ¿ëÇÒ ¼ö ÀÖ´Â ½Ã³ª¸®¿ÀµéÀ» ¼³¸íÇÑ´Ù.
Connect/Disconnect
- ¸¸¾à ¿¬°áµÈ ÀåÄ¡°¡ ¿¬°áµÇÁö ¾Ê´Â´Ù¸é, 2Ãʳ» disconnect À̺¥Æ®¸¦ ¹ßÇàÇØ¾ß ÇÑ´Ù.
- ¸¸¾à ºñ¿¬°áµÈ ÀåÄ¡°¡ ¿¬°áµÇ¸é, 2Ãʳ» ¿¬°á À̺¥Æ®¸¦ ¹ß»ýÇØ¾ß ÇÑ´Ù.
Reset
- ¸¸¾à ¿¬°áµÈ ÀåÄ¡°¡ ¸®¼ÂµÇ¸é, ¾î¶² ºñ¿¬°á ȤÀº ¿¬°á À̺¥Æ®µéÀ»¸¦ ¹ß»ýÇÒ Çʿ䰡 ¾ø´Ù.
(Preferred) ȤÀº ÇϳªÀÇ ºñ¿¬°á ±×¸®°í ÇϳªÀÇ ¿¬°á À̺¥Æ®¸¦ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ¿¬°á À̺¥Æ®¸¦ ¹ß»ýÇϸé, À̰ÍÀº ¸®¼Â ¿Ï·áÈÄ 2Ãʳ»¿¡ ¹ß»ýÇØ¾ß ÇÑ´Ù.
- ¸¸¾à ºñ¿¬°á ÀåÄ¡°¡ ¸®¼ÂµÇ¸é, ¾î¶² ºñ¿¬°á À̺¥Æ®µéÀ» ¹ß»ýÇÒ Çʿ䰡 ¾ø´Ù.
Halt
- ¸¸¾à ¿¬°á ȤÀº ºñ¿¬°á ÀåÄ¡°¡ haltµÇ¸é, ¾î¶² ¹Ìµð¾î À̺¥Æ®µéÀ» ¹ß»ýÇÒ Çʿ䰡 ¾ø´Ù.
Load
- ¸¸¾à ¿¬°áµÈ ÀåÄ¡°¡ ·ÎµåµÇ¸é, Network Driver Interface Specification(NDIS) Àº ÀåÄ¡°¡ ¿¬°áµÇ¾ú´Ù°í ÃßÃøÇÏ°í ¿¬°á À̺¥Æ®¸¦ ¹ß»ýÇÒ Çʿ䰡 ¾ø´Ù. (Preferred) ȤÀº ÃʱâÈ ¿Ï·áÈÄ 2Ãʳ» ¿¬°á À̺¥Æ®¸¦ ¹ß»ýÇÏ´Â °ÍÀ» Çã¶ôÇÒ ¼ö ÀÖ´Ù.
- ¸¸¾à ºñ¿¬°á ÀåÄ¡°¡ ·ÎµåµÇ¸é, ÃʱâÈ ¿Ï·áÈÄ 2Ãʳ»¿¡ ºñ¿¬°á À̺¥Æ®¸¦ ¹ß»ýÇØ¾ß ÇÑ´Ù.
Sleep
- ¸¸¾à ¿¬°áµÈ ȤÀº ºñ¿¬°áµÈ ÀåÄ¡°¡ sleep »óÅ¿¡ ³õÀδٸé, ¹Ìµð¾î À̺¥Æ®¸¦ ¹ß»ýÇÒ Çʿ䰡 ¾ø´Ù.
- ¸¸¾à ¿¬°áµÈ ÀåÄ¡°¡ sleep »óÅ¿¡¼ ¹þ¾î³ª°í sleepÇÒ ¶§ ¿¬°áµÇ¸é, ¿¬°á À̺¥Æ®¸¦ ¹ß»ýÇÒ Çʿ䰡 ¾ø´Ù. (¹ø¿ª ´Ù½Ã)
- ¸¸¾à ºñ¿¬°á ÀåÄ¡°¡ sleep »óÅ¿¡¼ ¹þ¾î³ª°í sleepÇÒ ¶§ ºñ¿¬°áµÇ¸é, ºñ¿¬°á À̺¥Æ®¸¦ ¹ß»ýÇÒ Çʿ䰡 ¾ø´Ù.
- ¸¸¾à ¿¬°á »óŰ¡ ÀåÄ¡°¡ asleepÇÏ´Â µ¿¾È º¯ÇÑ´Ù¸é, ±ú¾î³µÀ» ¶§ ±ú¾î³ ÈÄ 2Ãʳ» »õ·Î¿î »óŸ¦ °¡¸®Å°´Â À̺¥Æ®¸¦ ¹ß»ýÇØ¾ß ÇÑ´Ù.
NOTES :
- ·ÎµùÇϰųª ±ú¾î³¯ ¶§, ÀåÄ¡´Â ¿¬°á »óŰ¡ °áÁ¤µÉ ¶§±îÁö OID_GEN_(CO_)MEDIA_CONNTECT_STATUS¿¡ ´ëÇÑ ÀÀ´äÀ» À¯ÁöÇØ¾ß ÇÑ´Ù.
- wake »óÅÂÀÇ °áÁ¤Àº Ãʱâȸ¦ ´À¸®°Ô ÇÒ Çʿ䰡 ¾ø´Ù.
- ¸®¼ÂµéÀº ¿¬°á »óŰ¡ °áÁ¤µÉ ¶§±îÁö ¿Ï¼ºÇÒ Çʿ䰡 ¾ø´Ù.
- ÅäÅ«¸µ ¾î´ðÅ͵é°ú µå¶óÀ̹öµéÀº Àü¿¡ ¾ð±ÞµÈ ¸ðµç »óȲµé¿¡¼ ¹Ìµð¾î À̺¥Æ®µéÀ» ¹ß»ýÇϱâ À§ÇØ 30ÃʱîÁö °É¸± ¼ö ÀÖ´Ù.
Clarifications to the TCP/IP - NDIS Task Offload DDK Documentation
NDIS¸¦ ÅëÇØ NIC Çϵå¿þ¾î¿¡ TCP/IP offloadµéÀ» ½ÇÇàÇÏÀÚ¸¶ÀÚ, ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®´Â clarificationÀÇ Çʿ信 ÀÇÇØ DDK ¹®¼ÀÇ ¸î¸î ¿µ¿ªµéÀÌ ÀÖ´Ù´Â °ÍÀ» ¾È´Ù. ÀÌ·¯ÇÑ clarificationµéÀº Çö ¹®¼¿¡¼ ¹ß»ýÇÏ´Â ¹®Á¦µéÀ» ´äÇÏ·Á°í ÇÑ´Ù. ´ÙÀ½ Á¤º¸´Â À©µµ¿ìÁî ÀÌõ DDK³» Ãß°¡µÇ°Å³ª º¯ÈµÈ °ÍÀÌ´Ù.
NDIS_TASK_OFFLOAD_HEADER Definition Revision
typedef struct _NDIS_TASK_OFFLOAD_HEADER
{
ULONG Version <>;
ULONG Size <>;
ULONG Reserved <>;
UCHAR OffsetFirstTask <>;
NDIS_ENCAPSULATION_FORMAT EncapsulationFormat <>;
} NDIS_TASK_OFFLOAD_HEADER, *PNDIS_TASK_OFFLOAD_HEADER;
NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼´Â ¹Ì´ÏÆ÷Æ®°¡ TCP/IP Àü¼Û °èÃþÀ¸·ÎºÎÅÍ offloadµÈ ŽºÅ©µéÀ» ÇàÇÏ´Â ¼Û½Å°ú ¼ö½Å ÆÐŶµéÀ» À§ÇÑ Ä¸½¶Èµ· Æ÷¸ËÀ» ÁöÁ¤ÇÑ´Ù.
NDIS_TASK_OFFLOAD_HEADER Members
Version
TCP/IP Àü¼Û °èÃþ¿¡ ÀÇÇØ Áö¿øµÇ´Â task-offload ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ °ªÀº Ç×»ó NDIS_TASK_OFFLOAD_VERSIONÀ¸·Î ¼³Á¤µÈ´Ù.
Size
NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼ÀÇ Å©±â¸¦ ¹ÙÀÌÆ®·Î ÁöÁ¤ÇÑ´Ù. Size´Â sizeof(NDIS_TASK_OFFLOAD_HEADER)·Î ¼³Á¤µÇ°í NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼ÀÇ ¹öÀüÀ» °áÁ¤Çϱâ À§ÇØ »ç¿ëµÈ´Ù.
Reserved
¿¹¾à
OffsetFirstTask
InformationBufferÀÇ ½ÃÀÛ¿¡¼ºÎÅÍ Ã¹ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼·Î ¿É¼ÂÀ» ¹ÙÀÌÆ®·Î ÁöÁ¤ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â OID_TCP_TASK_OFFLOADÀÇ Äõ¸®¿¡ ÀÀ´äÇÒ ¶§ ÀÌ °ªÀ» ¼³Á¤Çϴ åÀÓÀ» Áø´Ù. TCP/IP Àü¼Û °èÃþÀº OID_TCP_TASK_OFFLOAD¸¦ ¼³Á¤ÇÒ ¶§ ÀÌ °ªÀ» ¼³Á¤ÇÒ Ã¥ÀÓÀÌ ÀÖ´Ù. ¸¸¾à NDIS_TASK_OFFLOAD ±¸Á¶Ã¼°¡ InformationBuffer¿¡ ¾ø´Ù¸é, OffsetFirstTask´Â 0À¸·Î ¼³Á¤µÈ´Ù.
EncapsulationFormat
¹Ì´ÏÆ÷Æ®ÀÇ NICÀ» ÅëÇØ TCP/IP Àü¼Û °èÃþÀ¸·ÎºÎÅÍ È¤Àº TCP/IP Àü¼Û °èÃþ¿¡ Àü´ÞµÇ´Â ¼Û½Å°ú ¼ö½Å ÆÐŶµéÀ» À§ÇÑ Ä¸½¶È Æ÷¸ËÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ·¯ÇÑ Á¤º¸´Â ´ÙÀ½°ú Á¤ÀÇµÈ NDIS_ENCAPSULTION_FORMAT ±¸Á¶Ã¼·Î Æ÷¸ËȵȴÙ.
typedef struct _NDIS_ENCAPSULATION_FORMAT
{
NDIS_ENCAPSULATION Encapsulation
{
ULONG FixedHeaderSize:1;
ULONG Reserved:31;
} Flags;
ULONG EncapsulationHeaderSize;
} NDIS_ENCAPSULATION_FORMAT, *PNDIS_ENCAPSULATION_FORMAT;
ÀÌ·¯ÇÑ ±¸Á¶Ã¼ÀÇ ¸â¹öµéÀº ´ÙÀ½°ú °°Àº Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù. :
Encapsulation
´ÙÀ½ °ªµéÀÇ Çϳª·Î ĸ½¶È ŸÀÔÀ» ÁöÁ¤ÇÑ´Ù.
UNSPECIFIED_Encapsulation
¾Æ·¡ ¸®½ºÆ®µÈ ĸ½¶È¿Í´Â ´Ù¸¥ ĸ½¶È
NULL_Encapsulation
ÀÌ °ªÀº ¹Ì·¡ »ç¿ëÀ» À§ÇØ ¿¹¾àµÊ
IEEE_802_3_Encapsulation
IEEE 802.3 ĸ½¶È(Ethernet_DIX)
IEEE_802_5_Encapsulation
IEEE 802.5 encapsulation
LLC_SNAP_ROUTED_Encapsulation
¿¹¸¦ µé¾î, RFC 1483¿¡ ¼³¸íµÈ ¶ó¿ìÆ®µÈ ÇÁ·ÎÅäÄݵéÀ» À§ÇÑ LLC ĸ½¶È. À̰ÍÀº ¶ÇÇÑ Ethernet LLC/SNAP ĸ½¶È¸¦ ÀεðÄÉÀÌÆ®Çϱâ À§ÇØ »ç¿ëµÈ´Ù.
LLC_SNAP_BRIDGE_Encapsulation
ÀÌ °ªÀº ¹Ì·¡ »ç¿ëÀ» À§ÇØ ¿¹¾àµÊ.
FixedHeaderSize
ÀÌ Çʵå´Â Ç×»ó 1·Î ¼³Á¤µÈ´Ù. ĸ½¶È Çì´õ´Â °¢ ÆÐŶ¿¡¼ °°Àº Å©±â¶ó´Â °ÍÀ» °¡¸®Å²´Ù.
Reserved
ÀÌ °ªÀº ¿¹¾àµÊ.
EncapsulationHeaderSize
ĸ½¶È Çì´õÀÇ Å©±â¸¦ ¹ÙÀÌÆ®·Î ÁöÁ¤ÇÑ´Ù. ĸ½¶ÈµÈ Àü¼Û ÆÐŶ¿¡¼ ù IP Çì´õ´Â ÆÐŶÀÇ ½ÃÀÛÀ¸·ÎºÎÅÍ ÀÌ·¯ÇÑ ¿É¼Â¿¡¼ ½ÃÀÛÇÑ´Ù.
¼³¸í
TCP/IP Àü¼Û °èÃþÀÌ OID_TCP_TASK_OFFLOAD¸¦ Äõ¸®ÇÑ´Ù¸é, Äõ¸®¿Í °ü·ÃµÈ InformationBuffer³» NDIS_TASK_OFFLOAD_HEADER¸¦ ÃʱâÈÇϰí Àü´ÞÇÑ´Ù. ÀÌ·¯ÇÑ Äõ¸®¸¦ ¼ö½ÅÇÑ ¹Ì´ÏÆ÷Æ®´Â TCP/IP Àü¼Û °èÃþ¿¡ ÀÇÇØ 󸮵Ǵ ¼Û½Å°ú ¼ö½Å ÆÐŶµéÀ» À§ÇÑ Ä¸½¶È Æ÷¸Ë°ú ¹öÀüÀ» °áÁ¤Çϱâ À§ÇØ NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼¸¦ Á¶»çÇÑ´Ù. ¹Ì´ÏÆ÷Æ® ȤÀº NICÀº NICÀÌ ÀÌ·¯ÇÑ ÆÐŶµé¿¡¼ offload ŽºÅ©µéÀ» ÇàÇÒ ¼ö ÀÖ°Ô Çϱâ À§ÇØ ±×·¯ÇÑ ÆÐŶµé¿¡¼ ù IPÀÇ ½ÃÀÛ°ú ¸¶Âù°¡Áö·Î ĸ½¶È Çì´õÀÇ Æ÷¸ËÀ» °áÁ¤Çϱâ À§ÇØ Ä¸½¶È Á¤º¸¸¦ »ç¿ëÇÑ´Ù.
¹Ì´ÏÆ÷Æ®´Â NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼¿¡ ´ëÇÑ Çϳª ȤÀº
±× ÀÌ»óÀÇ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼µé(Áö¿øµÈ offload ŽºÅ©µé)À»
Ãß°¡ÇÔÀ¸·Î½á Äõ¸®¿¡ ÀÀ´äÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â InformationBufferÀÇ
½ÃÀÛÀ¸·ÎºÎÅÍ Ã¹ ŽºÅ©ÀÇ ¿É¼ÂÀÎ OffsetFirstTask¸¦ ¼³Á¤ÇÑ´Ù.
¹Ì´ÏÆ÷Æ®´Â NDIS_TASK_OFFLOAD_HEADER³» ´Ù¸¥ ÇʵåµéÀÇ ¾î¶² °ÍÀ» ¹Ù²ÙÁö ¾Ê´Â´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ ¹öÀü ³Ñ¹ö, Å©±â, ȤÀº ĸ½¶È Æ÷¸ËÀ» ÀÌÇØÇÏÁö ¾Ê´Â´Ù¸é, ¹Ì´ÏÆ÷Æ®´Â »óÅ NDIS_STATUS_NOT_SUPPORTED·Î Äõ¸®°¡ ½ÇÆÐÇÑ´Ù.
NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼³» TCP/IP Àü¼Û °èÃþ¿¡ ÀÇÇØ ÁöÁ¤µÈ ĸ½¶È Æ÷¸ËÀº NICÀ» ÅëÇØ TCP/IP Àü¼Û °èÃþÀ¸·ÎºÎÅÍ È¤Àº À¸·Î Àü´ÞµÈ ¼Û½Å°ú ¼ö½Å ÆÐŶµé¿¡ Àû¿ëÇÑ´Ù. ´ÜÁö ÇϳªÀÇ Ä¸½¶È Æ÷¸ËÀº NIC´ç ¾î¶² ÁÖ¾îÁø ½Ã°£¿¡ Áö¿øµÈ´Ù.
¸ðµç NICÀÇ task-offload ´É·ÂµéÀ» ºÒ°¡´ÉÇÏ°Ô Çϱâ À§ÇØ, TCP/IP Àü¼Û °èÃþÀº InformationBuffer³» ´ÜÁö NDIS_TASK_OFFLOAD_HEADER¸¦ Àü´ÞÇÔÀ¸·Î½á NDIS_TCP_TASK_OFFLOAD¸¦ ¼³Á¤ÇÑ´Ù.
¸¸¾à ¹Ì´ÏÆ÷Æ®¿Í NICÀÌ offload¸¦ Áö¿øÇÑ´Ù¸é, ¾Æ·¡ Å×ÀÌºí³»¿¡ ÀεðÄÉÀÌÆ®µÈ "ÇÊ¿äÇÑ" ĸ½¶È ŸÀÔÀ» À§ÇØ offload¸¦ ½ÇÇàÇÑ´Ù. Ãß°¡ÀûÀ¸·Î, ¹Ì´ÏÆ÷Æ®´Â ¸¸¾à ¹Ìµð¾î°¡ ´ÙÀ½ Å×ÀÌºí¿¡ ¼³¸íµÈ Çϳª ÀÌ»óÀÌ Áö¿øµÈ´Ù¸é, ´Ù¸¥ ÇÁ·¹ÀÓ Å¸ÀÔµéÀ» Áö¿øÇÒ °ÍÀÌ´Ù.
Media Type
Required encapsulation
Ethernet
IEEE_802_3_Encapsulation
(Optional :
LLC_SNAP_ROUTED_Encapsulation)
Token Ring
IEEE_802_5_Encapsulation
ATM(SLIP)
LLC_SNAP_ROUTED_Encapsulation
Other
UNSPECIFIED_Encapsulation
¸¸¾à NICÀÌ Çϳª ÀÌ»óÀÇ ÇÁ·¹ÀÓ Å¸ÀÔÀ» Áö¿øÇÑ´Ù¸é, °¢ ÇÁ·¹ÀÌ¹Ö Å¸ÀÔÀ» À§ÇØ ½ÇÇàµÈ ƯÁ¤ offload ŸÀÔµé(checksum, large send)Àº °°À» Çʿ䰡 ¾ø´Ù. ¿¹¸¦ µé¾î, Ethernet NICÀº checksumÀ» ½ÇÇàÇÒ °ÍÀ̰í IPSecÀº DIXÀ» À§ÇØ offloadÇÒ °ÍÀÌÁö¸¸ ´ÜÁö Sub-network Access Protocol(SNAP)À» À§Çؼ´Â checksum¸¸ÀÌ´Ù.
TCP Largesend ´É·ÂÀº ĸ½¶È Çì´õÀÇ Áö½ÄÀ» ¿ä±¸ÇÑ´Ù. ±×·¯¹Ç·Î, TCP Largesend ´É·ÂÀº ¸¸¾à ¹Ì´ÏÆ÷Æ®°¡ Encapsulation¿¡ ÁöÁ¤µÈ ĸ½¶È Æ÷ĹÀ» ÀνÄÇÏÁö ¸øÇÏ¸é ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ Á¦°øµÉ Çʿ䰡 ¾ø´Ù. TCP Largesend ´É·ÂÀº ¸¸¾à EncapsulationÀÌ UNSPECIFIED_EncapsulationÀ¸·Î ¼³Á¤µÈ´Ù¸é Á¦°øµÉ °ÍÀ̰í EncapsulationHeaderSize´Â ¹Ì´ÏÆ÷Æ®¿Í NIC¿¡ ÀÇÇØ Á¦°øµÈ ¹Ìµð¾î¸¦ À§ÇÑ encapsulation Çì´õÀÇ Å©±â·Î ¼³Á¤µÈ´Ù.
NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼¿¡¼ TCP/IP Àü¼Û °èÃþ¿¡ ÀÇÇØ ÁöÁ¤µÈ ĸ¼úÈ Æ÷¸ËÀº NICÀ» ÅëÇÑ TCP/IP Àü¼Û °èÃþÀ¸·ÎºÎÅÍ È¤Àº Àü¼Û °èÃþ¿¡ Àü´ÞµÇ´Â ¼Û½Å°ú ¼ö½Å ÆÐŶµé¿¡°Ô Àû¿ëÇÑ´Ù. ´ÜÁö ÇϳªÀÇ Ä¸½¶È Æ÷¸ËÀº ¾î¶² ÁÖ¾îÁø ½Ã°£¿¡ NIC´ç Áö¿øµÈ´Ù.
¸ðµç NICÀÇ task-offload ´É·ÂµéÀ» ºÒ°¡´ÉÇÏ°Ô Çϱâ À§ÇØ, TCP/IP Àü¼Û °èÃþÀº InformatioBuffer³» NDIS_TASK_OFFLOAD_HEADER¿¡ Àü´ÞÇÏ¸é¼ OID_TCP_TASK_OFFLOAD·Î ¼³Á¤ÇÑ´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡, TCP/IP Àü¼Û °èÃþÀº NDIS_TASK_OFFLOAD_HEADERÀÇ OffsetFirstTask ¸â¹ö¸¦ 0À¸·Î ¼³Á¤ÇÑ´Ù.
See also : NDIS_TASK_OFFLOAD, OID_TASK_OFFLOAD
Revisions to Task Offload Objects
À̰ÍÀº Windows 2000 DDK Network Design Guide, Chapter 16, Task Offload Objects¿¡ ´ëÇÑ °³Á¤ÀÌ´Ù. À̰ÍÀº ¹Ì¸® ³ª¿Â ¹®¼ÀÌ°í ¹Ù²î±â ½±´Ù.
´ÙÀ½ ÃÆ®´Â TCP/IP task-offload ¿¬»êµéÀ» Áö¿øÇÏ´Â OIDµéÀ» ¿ä¾àÇÑ´Ù. ±×·¯ÇÑ ¿¬»êµéÀÇ ¼³¸íÀ» À§ÇØ DDK³» Network Design GuideÀÇ Part 2¸¦ ºÁ¶ó.
Length Q S
Name
Arr M
M OID_TCP_TASK_OFFLOAD. Äõ¸®µÉ ¶§, NICÀÇ
task-offload ´É·ÂµéÀ» º¸°íÇϵµ·Ï ¹Ì´ÏÆ÷Æ®¿¡°Ô ¿ä±¸ÇÑ
´Ù. ¼³Á¤µÉ ¶§, ¹Ì´ÏÆ÷Æ®¿¡°Ô NICÀÇ Æ¯Á¤ task-offload ´É
·ÂµéÀ» °¡´ÉÇϵµ·Ï ¿ä±¸ÇÑ´Ù.
Arr
M OID_TCP_TASK_IPSEC_ADD_SA. NIC¿¡ ´ëÇÑ Çϳª ȤÀº
±× ÀÌ»óÀÇ security associations(SAs)À» Ãß°¡Çϵµ·Ï ¹Ì´Ï
Æ÷Æ®¿¡°Ô ¿ä±¸ÇÑ´Ù.
4
M OID_TCP_TASK_IPSEC_DELETE_SA. ¹Ì´ÏÆ÷Æ®¿¡°Ô NICÀ¸
·ÎºÎÅÍ SAÀ» Áö¿ìµµ·Ï ¿ä±¸ÇÑ´Ù.
TCP/IP Àü¼Û °èÃþÀº ¹Ì´ÏÆ÷Æ®ÀÇ NICÀÇ task-offload ´É·ÂµéÀ» °áÁ¤Çϱâ À§ÇØ
OID_TCP_TASK_OFFLOAD¸¦ Äõ¸®ÇÑ´Ù. NICÀÌ Áö¿øÇÏ´Â task-offload ´É·ÂµéÀ» °áÁ¤ÇÑ ÈÄ, TCP/IP Àü¼Û °èÃþ
ÇÁ·ÎÅäÄÝÀº ÀÌ·¯ÇÑ OID¸¦ ¼³Á¤Çؼ º¸°íµÈ ´É·ÂµéÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. TCP/IP ÇÁ·ÎÅäÄÝÀº ¶ÇÇÑ ÀÌ·¯ÇÑ OID¸¦ ¼³Á¤ÇÔÀ¸·Î½á ¸ðµç NICÀÇ task-offload ´É·ÂµéÀ» ºÒ°¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù.
´ÜÁö Ç×»ó ÇϳªÀÇ ÇÁ·ÎÅäÄÝÀº ƯÁ¤ NICÀÇ task-offload ´É·ÂµéÀ» °¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ´Ù.
OID_TCP_TASK_IPSEC_ADD_SA¿Í OID_TCP_TASK_IPSEC_DELETE_SA¿¡ ´ëÇÑ ´õ ¸¹Àº Á¤º¸¿¡ ´ëÇØ Windows 2000 DDK¸¦ ºÁ¶ó.
Querying an Adapter's Task-Offload Capabilities
TCP/IP Àü¼Û °èÃþÀº OID_TCP_TASK_OFFLOAD¸¦ Äõ¸®ÇÒ ¶§, InformationBuffer³»NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼¸¦ Á¦°øÇÑ´Ù. ÀÌ·¯ÇÑ ±¸Á¶Ã¼´Â ±×·¯ÇÑ ÆÐŶµé ³» ĸ½¶È Çì´õÀÇ Å©±â¿Í TCP/IP Àü¼Û °èÃþ¿¡ ÀÇÇØ ó¸®µÈ ¼Û½Å°ú ¼ö½Å ÆÐŶµéÀ» À§ÇÑ Ä¸½¶È Æ÷¸Ë°ú, TCP/IP Àü¼Û °èÃþ¿¡ ÀÇÇØ Á¦°øµÈ task-offload ¹öÀüÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ·¯ÇÑ Á¤º¸·Î, ¹Ì´ÏÆ÷Æ® ȤÀº NICÀº offload task¸¦ ÇàÇϱâ À§ÇØ ÇʼöÀÎ Àü¼Û ÆÐŶ³» ù IP Çì´õÀÇ ½ÃÀÛ¿¡ À§Ä¡ÇÒ ¼ö ÀÖ´Ù.
OID_TCP_TASK_OFFLOADÀÇ Äõ¸®¿¡ ´ëÇÑ ÀÀ´äÀ¸·Î, ¹Ì´ÏÆ÷Æ®´Â Çϳª ȤÀº ±× ÀÌ»óÀÇ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼µé¿¡ ÀÇÇØ Áï½Ã µû¸£´Â NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼¸¦ (InformationBuffer³») ¸®ÅÏÇÑ´Ù.
°¢ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼´Â ¹Ì´ÏÆ÷Æ® NIC¿¡ ÀÇÇØ Áö¿øµÈ task-offload ´É·ÂÀ» ¼³¸íÇÑ´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ®ÀÇ NICÀº ƯÁ¤ task-offload ´É·ÂÀÇ ´ÙÁß ¹öÀüµéÀ» Áö¿øÇÑ´Ù¸é, °¢ ¹öÀüÀ» À§ÇØ ÇϳªÀÇ NDIS_TASK_OFFLOAD¸¦ ¸®ÅÏÇØ¾ß ÇÑ´Ù.
°¢ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼´Â ±¸Á¶Ã¼°¡ Àû¿ëÇϴ ƯÁ¤ offload task¸¦ ÁöÁ¤ÇÏ´Â Task ¸â¹ö¸¦ °¡Áø´Ù. °¢ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼´Â ¶ÇÇÑ Æ¯Á¤ offload task¿¡ ¼ÓÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â TaskBuffer¸¦ °¡Áø´Ù. TaskBuffer³» Á¤º¸´Â ´ÙÀ½°ú °°Àº ±¸Á¶Ã¼µéÀÇ Çϳª·Î Æ÷¸ËµÈ´Ù.
- NDIS_TASK_TCP_IP_CHECKSUM - checksum offload ´É·ÂµéÀ» ÁöÁ¤ÇÑ´Ù.
- NDIS_TASK_IPSEC - IP Security offload ´É·ÂµéÀ» ÁöÁ¤ÇÑ´Ù.
- NDIS_TASK_TCP_LARGE_SEND - large-TCP-packet ¼¼±×¸ÕÅ×ÀÌ¼Ç ´É·ÂµéÀ» ÁöÁ¤ÇÑ´Ù.
Enabling an Adapter's Task-Offload Capabilities
NICÀÇ task-offload ´É·ÂµéÀ» Äõ¸®ÇÑ ÈÄ, TCP/IP Àü¼Û °èÃþÀº OID_TCP_TASK_OFFLOAD¸¦ ¼³Á¤ÇÔÀ¸·Î½á ÀÌ·¯ÇÑ Çϳª³ª ȤÀº ±× ÀÌ»óÀÇ ´É·ÂµéÀ» °¡´ÉÇÏ°Ô ÇÑ´Ù. OID_TCP_TASK_OFFLOAD¸¦ ¼³Á¤ÇÒ ¶§, TCP/IP Àü¼Û °èÃþÀº Àü¼Û °èÃþÀÌ °¡´ÉÇÏ°Ô ÇÏ´Â °¢ task-offload ´É·ÂÀ» À§ÇÑ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼¿¡ ÀÇÇØ Áï½Ã µû¸£´Â NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼¸¦ InformationBuffer ³» Á¦°øÇÑ´Ù.
Disabling an Adapter's Task-Offload Capabilities
NIC¿¡ ÀÇÇØ Á¦°øµÈ ¸ðµç task-offload ´É·ÂµéÀ» ºÒ°¡´ÉÇÏ°Ô Çϱâ À§ÇØ, TCP/IP Àü¼Û °èÃþÀº 0À¸·Î ¼³Á¤µÈ ÀÌ·¯ÇÑ ±¸Á¶Ã¼ÀÇ OffsetFirstTask ¸â¹ö¸¦ °¡Áø NDIS_TASK_OFFLOAD_HEADER ±¸Á¶Ã¼¸¦ InformationBuffer³» Àü´ÞÇÏ¸é¼ OID_TCP_TASK_OFFLOAD¸¦ ¼³Á¤ÇÑ´Ù.
Changing an Adapter's Task-Offload Capabilities
NIC¿¡ ÀÇÇØ Á¦°øµÈ task-offload ´É·ÂµéÀÇ ¼³Á¤À» ¹Ù²Ù±â À§ÇØ, TCP/IP Àü¼Û °èÃþÀº óÀ½ NICÀÇ task-offload ´É·ÂµéÀ» °¡´ÉÇÏ°Ô ÇÒ ¶§Ã³·³ OID_TCP_TASK_OFFLOAD¸¦ ¼³Á¤ÇÑ´Ù. ¹Ì´ÏÆ÷Æ®´Â Á¤È®ÇÏ°Ô °¡Àå ÃÖ±Ù OID_TCP_TASK_OFFLOADÀÇ ¼³Á¤À¸·Î ÁöÁ¤µÈ ÀÌ·¯ÇÑ ´É·ÂµéÀ» (±×¸®°í no others) °¡´ÉÇÏ°Ô ÇØ¾ß ÇÑ´Ù.
Changes to NDIS_TASK_OFFLOAD Structure
´ÙÀ½ º¯ÈµéÀº ƯÈ÷ OffsetNextTask ¸â¹ö¸¦ À§ÇØ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼·Î ¸¸µé¾îÁø´Ù. À̰ÍÀº ¹Ì¸® ¸¸µé¾îÁø ¹®¼ÀÌ°í ¹Ù²î±â ½±´Ù.
NDIS_TASK_OFFLOAD Definition
typedef struct _NDIS_TASK_OFFLOAD
{
ULONG Version <>;
ULONG Size <>;
NDIS_TASK Task <>;
ULONG OffsetNextTask <>;
ULONG TaskBufferLength <>;
UCHAR TaskBuffer <>[1];
} NDIS_TASK_OFFLOAD, *PNDIS_TASK_OFFLOAD;
OID_TCP_TASK_OFFLOAD¿¡ ÀÀ´äÀ¸·Î ¹Ì´ÏÆ÷Æ®¿¡ ÀÇÇØ Á¦°øµÉ ¶§, NDIS_TASK_OFFLOAD ±¸Á¶Ã¼´Â TCP/IP Àü¼Û °èÃþÀ¸·ÎºÎÅÍ offloadµÈ ƯÁ¤ ŸÀÔÀÇ task¸¦ ÇàÇϱâ À§ÇÑ NICÀÇ ´É·ÂµéÀ» ÁöÁ¤ÇÑ´Ù. OID_TCP_TASK_OFFLOADÀÇ ¼³Á¤À¸·Î TCP/IP Àü¼Û °èÃþ¿¡ ÀÇÇØ Á¦°øµÈ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼´Â TCP/IP Àü¼Û °èÃþÀÌ °¡´ÉÇÏ°Ô ÇÏ´Â offload task¸¦ ÁöÁ¤ÇÑ´Ù.
NDIS_TASK_OFFLOAD Members
Version
ÀÌ task-offload ´É·ÂÀÇ ¹öÀü ³Ñ¹ö¸¦ ÁöÁ¤ÇÑ´Ù. ¸¸¾à ¹Ì´ÏÆ÷Æ®ÀÇ NICÀÌ Æ¯Á¤ task-offload ´É·ÂÀÇ Çϳª ÀÌ»óÀÇ ¹öÀüÀ» Áö¿øÇÑ´Ù¸é, °¢ ¹öÀüÀÇ ´É·ÂÀº ºÐ¸®µÈ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼·Î ÀεðÄÉÀÌÆ®µÉ °ÍÀÌ´Ù. TCP/IP Àü¼Û °èÃþÀº ´ëºÎºÐ Àû´çÇÑ ¹öÀüÀ» °¡´ÉÇÏ°Ô ¼±ÅÃÇÑ´Ù.
Size
NDIS_TASK_OFFLOAD ±¸Á¶Ã¼ÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù. Size´Â sizeof(NDIS_TASK_OFFLOAD)·Î ¼³Á¤µÇ°í NDIS_TASK_OFFLOAD ±¸Á¶Ã¼ÀÇ ¹öÀüÀ» °áÁ¤Çϱâ À§ÇØ »ç¿ëµÈ´Ù.
Task
´ÙÀ½Áß Çϳª·Î offload task ŸÀÔÀ» ÁöÁ¤ÇÑ´Ù.
TcpIpChecksumNdisTask
Checksum offload. TaskBuffer´Â NDIS_TASK_TCP_IP_CHECKSUM ±¸Á¶Ã¼¸¦ Æ÷ÇÔÇÑ´Ù.
IpSecNdisTask
IP Security offload. TaskBuffer´Â NDIS_TASK_IPSEC ±¸Á¶Ã¼¸¦ Æ÷ÇÔÇÑ´Ù.
TcpLargeSendNdisTask
Segmentation offload. TaskBuffer´Â NDIS_TASK_TCP_LARGE_SEND ±¸Á¶Ã¼¸¦ Æ÷ÇÔÇÑ´Ù.
OffsetNextTask
InformationBuffer³» Çö NDIS_TASK_OFFLOAD ±¸Á¶Ã¼ÀÇ ½ÃÀÛ¿¡¼ ´ÙÀ½ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼±îÁöÀÇ ¿É¼ÂÀ» ¹ÙÀÌÆ®·Î ÁöÁ¤ÇÑ´Ù. ¸¸¾à ÀÌ·¯ÇÑ NDIS_TASK_OFFLOAD ±¸Á¶Ã¼°¡ InformationBuffer³» ¸¶Áö¸· ÇϳªÀ̸é, OffsetNextTask´Â 0À¸·Î ¼³Á¤µÈ´Ù.
TaskBufferLength
TaskBuffer¿¡¼ ±¸Á¶Ã¼ÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ÁöÁ¤ÇÑ´Ù.
TaskBuffer
Task¿¡ ÀÇÇØ ÀεðÄÉÀÌÆ®µÈ offload ŽºÅ© ƯÁ¤ÀÎ Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â °¡º¯ ±æÀÌ ¹è¿À» ÁöÁ¤ÇÑ´Ù. TaskBufferÀÇ ³»¿ëµéÀº Task ŸÀÔ¿¡ µû¶ó ¹Ù²ï´Ù.
Task type
Contents of TaskBuffer
TcpIpChecksumNdisTask NDIS_TASK_TCP_IP_CHECKSUM structure
IpSecNdisTask
NDIS_TASK_IPSEC structure
TcpLargeSendNdisTask NDIS_TASK_TCP_LARGE_SEND structure
Getting Ready for Large Memory-Enabled Windows
64-bit DMA¸¦ »ç¿ëÇÏ´Â µå¶óÀ̹öµéÀ» µµ¸ðÇϱâ À§ÇØ ±×¸®°í µå¶óÀ̹öµéÀÌ (ÆÛÆ÷¸Õ½º¸¦ Çâ»ó½Ã۱â À§ÇØ) ScatterGatherDma¸¦ »ç¿ëÇÏÁö ¾Êµµ·Ï Çϱâ À§ÇØ, ´ÙÀ½°ú °°Àº º¯ÈµéÀÌ NdisMAllocateMapRegisters ¿¡ ÀÖ´Ù. ÀÌ·¯ÇÑ º¯ÈµéÀº Ãʱ⠹®¹ýµé°ú backward ȣȯÀÌ´Ù. À̰ÍÀº Windows 2000 RC2 DDK¿¡¼ Æ÷Ç﵃ ¼ö ÀÖ´Ù.
Old Definition
EXPORT
NDIS_STATUS
NdisMAllocateMapRegisters(IN NDIS_HANDLE MiniportAdapterHandle,
IN UINT DmaChannel,
IN BOOLEAN Dma32bitAddress,
IN ULONG PhysicalMapRegistersNeeded,
IN ULONG MaximumPhysicalMapping);
New Definition for NdisMAllocateMapRegisters
typedef UCHAR NDIS_DMA_SIZE;
#define NDIS_DMA_24BITS 0
#define NDIS_DMA_32BITS 1
#define NDIS_DMA_64BITS 2
EXPORT
NDIS_STATUS
NdisMAllocateMapRegisters(IN NDIS_HANDLE MiniportAdapterHandle,
IN UINT DmaChannel,
IN NDIS_DMA_SIZE DmaSize,
IN ULONG PhysicalMapRegistersNeeded,
IN ULONG MaximumPhysicalMapping);
º¯È´Â À§ bold·Î ÇÏÀ̶óÀÌÆ®µÈ °÷ÀÌ´Ù. °ú°Å Á¤ÀÇ¿¡¼, FALSE´Â NDIS_DMA_24BITS·Î ¸ÊµÇ°í TRUE´Â NDIS_DMA_32BITS·Î ¸ÊµÈ´Ù. 64ºñÆ®µéÀ» Áö¿øÇÏ´Â µå¶óÀ̹öµéÀº NDIS_DMA_64BITS¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ´Ù. ±× ¹Û¿¡ ¸ðµç °ÍÀº °°ÀÌ ³²¾Æ ÀÖ´Ù. ¶ÇÇÑ ¸ÊµÈ ¸Þ¸ð¸® µð½ºÅ©¸³ÅÍ ¸®½ºÆ®(MDLs)µéÀº 4GB ¹°¸® ¸Þ¸ð¸® ÀÌ»óÀ» Áö¿øÇÏ´Â ½Ã½ºÅ۵鿡¼ 32ºñÆ® º¸´Ù Å« ¹°¸® ÁÖ¼Ò¿¡ °á°úµéÀ̶ó´Â °ÍÀ» ÁÖ¸ñÇ϶ó.
NOTE : NdisMAllocateMapRegisters ÇÔ¼ö¿¡ ´ëÇÑ È£Ãâ·Î MaximumPhysicalMapping ¸Å°³º¯¼ö¸¦ À§ÇÑ ÃÖ´ë °ªÀº 0xF000ÀÌ´Ù. 0xF000º¸´Ù Å« °ªÀ» ÁöÁ¤ÇÏ´Â °ÍÀº È£ÃâÀ» ½ÇÆÐ·Î ¾ß±âÇÒ ¼ö ÀÖ´Ù.
Building Drivers with Symbols (dbg and pdb)
ÀÌ ¼½¼ÇÀº build ȯ°æÀ» ¼³Á¤ÇÏ´Â °Í¿¡ ´ëÇÑ »õ·Î¿î Á¤º¸¸¦ Æ÷ÇÔÇÑ´Ù.
Linker Options. ¸¸¾à ¹ÙÀ̳ʸ®¸¦ ¹ß»ýÇϱâ À§ÇØ Build.exe¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é, linker(Link.exe)¿¡ ´ÙÀ½ ¿É¼ÇÀ» »ç¿ëÇ϶ó.
/Debugtype:CV,Fixup
Build ȯ°æ. ¸¸¾à ¹ÙÀ̳ʸ®¸¦ ¹ß»ýÇϱâ À§ÇØ Build.exe¸¦ »ç¿ëÇÑ´Ù¸é, ´ÙÀ½ ȯ°æ º¯¼öµéÀº non-split ¹ÙÀ̳ʸ®µé°ú non-stripped .pdb ÆÄÀϵéÀ» ¹ß»ýÇϱâ À§ÇØ ´ÙÀ½°ú °°Àº °ÍÀ» ¼³Á¤ÇÒ Çʿ䰡 ÀÖ´Ù.
set NTDEBUG =
set NTDBGFILES =
set BINPLACE_FLAGS =
ȯ°æ º¯¼ö %NTDEBUG%´Â build°¡ debug ȤÀº retail buildÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. ¾Æ¹«°Íµµ ¼³Á¤ÀÌ ¾ÈµÇ¾úÀ» ¶§, retail build·Î ÁöÁ¤ÇÑ´Ù. º¯¼ö %NTDBGFILES%´Â Build.exe¿¡°Ô ¹ÙÀ̳ʸ®¸¦ splitÇØ¼ .dbg ÆÄÀÏÀ» ¸¸µé¶ó°í Áö½ÃÇÑ´Ù. ¾Æ¹«°Íµµ ÁöÁ¤ÀÌ ¾ÈµÇ¸é, ¹ÙÀ̳ʸ®´Â unsplitÀ¸·Î ³²À» °ÍÀÌ´Ù.
º¯¼ö %NTDEBUGTYPE%´Â ¾î´À ŸÀÔÀÇ ½Éº¼¸¯ Á¤º¸¸¦ ¸¸µé °ÍÀΰ¡¸¦ ¸»ÇÑ´Ù. °ªÀÌ "windbg"·Î ¼³Á¤µÉ ¶§, ¸µÄ¿´Â CodeView Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â .pdb ÆÄÀÏÀ» ¸¸µç´Ù. À̰ÍÀº µð¹ö±ëÀ» À§ÇØ Áß¿äÇÑ ½Éº¼ Á¤º¸ÀÇ Å¸ÀÔÀÌ´Ù. ¸¶Áö¸·À¸·Î, º¯¼ö %BINPLACE_FLAGS%´Â private ½Éº¼ Á¤º¸°¡ ½Éº¼µé·ÎºÎÅÍ stripµÉÁö¸¦ ÁöÁ¤ÇÑ´Ù. ¾Æ¹«°Íµµ ¼³Á¤ÀÌ µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, private ½Éº¼¸¯ Á¤º¸´Â À̹ÌÁö·Î ³²À» °ÍÀÌ´Ù.
Call to action for network driver tips :
- Áú¹®µé ȤÀº commentsµéÀ» À§ÇØ, ndisfb@microsoft.comÀ¸·Î e-mail¸¦ º¸³»¶ó. º¸³¾ ¶§ À̸§, ŸÀÌÆ², ȸ»ç À̸§, ȸ»ç ŸÀÔ(IHV, ISV, ISP, OEM), ÀüÈ ¹øÈ£¿Í fax ¹øÈ£¸¦ Àû¾î¶ó.
|