- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am developer of an open source project ndiswrapper (http://ndiswrapper.sourceforge.net) that enables users in Linux to use Windows drivers for (wireless) network cards.
Using ndiswrapper with driver for PRO/1000 network card, I noticed couple of issues (although this card has open source drivers, I decided to use ndiswrapper to see how well both work). With the latest 64-bit driver for XP (version Intel,04/13/2007,9.8.20.0), under 64-bit Linux, everything seems to work. However, during resume (from S3), when MiniportSetInformation is called to set power (OID_PNP_SET_POWER), the driver calls NdisMSleep (with 10000 us, 20000 us and 15000 us, successively) before MiniportSetInformation returns. However, MiniportSetInformation runs at DISPATCH_LEVEL, where sleep is not allowed. This causes Linux kernel to issue 'scheduling while atomic' warning. This, I believe, is a bug in Windows driver - if it needs to wait, it could return NDIS_STATUS_PENDING to MiniportSetInformation and can then call NdisSleep when it is at PASSIVE_LEVEL.
Another issue is that the latest 32-bit driver for XP (version 04/13/2007,9.8.20.0) and ndiswrapper under 32-bit, causes the first call to MiniportHandleInterrupt to crash kernel. It seems to refer to an uninitialized field. This could very well be due to ndiswrapper and not XP driver, in which case, I would like to know what it is so this can be fixed in ndiswrapper.
Neither of these issues is relevant to using e1000 in Linux, but I am posting them here so you can improve Windows drivers. For more information, feel free to followup or email me.
Using ndiswrapper with driver for PRO/1000 network card, I noticed couple of issues (although this card has open source drivers, I decided to use ndiswrapper to see how well both work). With the latest 64-bit driver for XP (version Intel,04/13/2007,9.8.20.0), under 64-bit Linux, everything seems to work. However, during resume (from S3), when MiniportSetInformation is called to set power (OID_PNP_SET_POWER), the driver calls NdisMSleep (with 10000 us, 20000 us and 15000 us, successively) before MiniportSetInformation returns. However, MiniportSetInformation runs at DISPATCH_LEVEL, where sleep is not allowed. This causes Linux kernel to issue 'scheduling while atomic' warning. This, I believe, is a bug in Windows driver - if it needs to wait, it could return NDIS_STATUS_PENDING to MiniportSetInformation and can then call NdisSleep when it is at PASSIVE_LEVEL.
Another issue is that the latest 32-bit driver for XP (version 04/13/2007,9.8.20.0) and ndiswrapper under 32-bit, causes the first call to MiniportHandleInterrupt to crash kernel. It seems to refer to an uninitialized field. This could very well be due to ndiswrapper and not XP driver, in which case, I would like to know what it is so this can be fixed in ndiswrapper.
Neither of these issues is relevant to using e1000 in Linux, but I am posting them here so you can improve Windows drivers. For more information, feel free to followup or email me.
Link Copied
0 Replies

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page