阅读:1915回复:11
继续关注:千兆网卡的问题。关注就有分。总分100
小弟在下面一帖中提到了带Task Offload功能的千兆网卡引出的问题。
http://www.driverdevelop.com/forum/html_35288.html?1046685239 现在还有一个问题,在处理TCP数据包的时候,发现经我的驱动处理过的包到了离开本机后经常就被改了,UDP没有问题。改动的主要是TCP头部分,我做过处理的TCP包头又被改成处理前的样子了,这样可能有两个原因,一是我发送的时候数据链错了,二就是还是网卡驱动做了事情了,因为我的驱动在百兆网卡的情况下是好的,而我们知道Task Offload功能对数据包正确性的检查也只关心TCP包,所以我还是怀疑是网卡的问题,还请各位老大指点。 另外,如果是网卡问题的话,是否能将其功能彻底停掉?之前的帖子里我停掉网卡checksum计算功能办法是仅在TCP/IP向下查询的时候向其返回不支持的信息,总觉得这样好像不够,但对于checksum功能,其效果是好的。请教彻底停掉网卡Task Offload相关功能的方法。 [编辑 - 3/3/03 by SharpShooter] |
|
|
沙发#
发布于:2003-03-03 22:30
不懂就关注一下
|
|
|
板凳#
发布于:2003-03-03 22:40
小弟在下面一帖中提到了带Task Offload功能的千兆网卡引出的问题。 [quote] http://www.driverdevelop.com/forum/html_35288.html?1046685239 现在还有一个问题,在处理TCP数据包的时候,发现经我的驱动处理过的包到了离开本机后经常就被改了,UDP没有问题。改动的主要是TCP头部分,我做过处理的TCP包头又被改成处理前的样子了,这样可能有两个原因,一是我发送的时候数据链错了,二就是还是网卡驱动做了事情了,因为我的驱动在百兆网卡的情况下是好的,而我们知道Task Offload功能对数据包正确性的检查也只关心TCP包,所以我还是怀疑是网卡的问题,还请各位老大指点。 另外,如果是网卡问题的话,是否能将其功能彻底停掉?之前的帖子里我停掉网卡checksum计算功能办法是仅在TCP/IP向下查询的时候向其返回不支持的信息,总觉得这样好像不够,但对于checksum功能,其效果是好的。请教彻底停掉网卡Task Offload相关功能的方法。 [编辑 - 3/3/03 by SharpShooter] [/quote] 千M的网卡多半都实现了taskoffload的功能。 许多百M的网卡也实现了taskoffload的功能。 如果你在imd/hook driver中修改过数据包,那么最简单的 方法是禁用所有的taskoffload。 例如: if (Oid == OID_TCP_TASK_OFFLOAD) { // // Fail this -if- this driver performs data transformations // that can interfere with a lower driver\'s ability to offload // TCP tasks. // if (you want to disable taskoffload) { Status = NDIS_STATUS_NOT_SUPPORTED; break; } // } |
|
|
地板#
发布于:2003-03-03 23:09
如果你在imd/hook driver中修改过数据包,那么最简单的 多谢Hu版主指点。 我的做法是在上层查询的时候将返回的 NDIS_TASK_OFFLOAD_HEADER 中的 OffsetFirstTask 域置了0,应该是禁止所有 Offload 功能了吧?至少checksum是好了。明天试试版主的做法,再不行的话肯定就是我的程序有问题了。 |
|
|
地下室#
发布于:2003-03-04 13:24
你的千M网卡是什么牌子的?
我记得intel的网卡的属性里面就有设置该网卡是否支持task offload功能的。 |
|
|
5楼#
发布于:2003-03-04 13:38
你的千M网卡是什么牌子的? 没错,是因特尔的,我见过两种,以太口的pro/1000 M没有配置显示,光纤口的pro/1000 F有配置显示,不过我们总不能要求用户去配置吧。 今天试了Hu老大的办法,效果一样,可见是我的程序有问题了,正在查。 |
|
|
6楼#
发布于:2003-03-04 13:51
我用的PCI的网卡,里面有设置。你的程序里面是怎么改的?
|
|
|
7楼#
发布于:2003-03-04 15:43
我用的PCI的网卡,里面有设置。你的程序里面是怎么改的?我不知道在程序里如何逐项修改网卡的设置,只是用HU老大的办法,将其Task Offload功能全部关闭,或许之前说的我的办法也可以,但不如HU老板的办法简洁明了。 现在问题已经搞定,但道理还不是非常清楚,简单的说是我将一个MDL的MappedSystemVa换掉,但发出去的还是以前的Buffer,不明白为什么以前在百兆网卡上从来没有出现过问题,原理还是没有弄明白,我现在只是简单解决了一下,将原先的Buffer里也Copy入新Buffer的数据,问题暂时是没有了。说的不对的地方,还请各位指正。 |
|
|
8楼#
发布于:2003-03-04 16:40
mikeluo老大,不好意思,哥们本想给你5分的,不想你下面还有个帖子,一不小心就多给了你老大24分,实在不好意思,嗬嗬。
|
|
|
9楼#
发布于:2003-03-04 19:32
关注一下!
|
|
10楼#
发布于:2003-03-04 20:53
关注一下! 大哥你来晚了,分已经给过了。 |
|
|
11楼#
发布于:2003-03-05 10:14
heh 看来我也来晚了 那就不说了
|
|