flyhobo
驱动小牛
驱动小牛
  • 注册日期2004-03-05
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1880回复:12

设置miniport的速率为100M和1G,奇怪的现象?!

楼主#
更多 发布于:2004-04-28 15:32
    我在miniport的QueryInformation例程中对OID_GEN_LINK_SPEED的处理设置为100M和1G后,但测试速率基本相同。
    我的miniport为虚拟的,没有真实的硬件,我通过安装多个虚拟网卡的办法测试其速率。收发测试程序分别绑定收发网卡,分别如下(以下数据在设置网卡速率为100M和1G时基本相同):
    安装两个虚拟网卡:一发一收,速率可达到65M左右。
    安装三个虚拟网卡:一发一收(一个空闲),速率可达到90M左右。
    安装四个虚拟网卡:一发一收(两个空闲),速率可达到150M左右。150M啊!
    为什么啊?我设置网卡的速率为100M啊!却能达到150M.这里我的miniport有问题吧!!
    
    那里还有控制网卡速率的接口?各位高手帮帮忙,指点一下。
____________________________________________________________
2004/4/29更正:
此虚拟网卡的测试速率为65M左右,没错!太少了!!!!
对于增加miniport会增加接收速度为我的miniport的一bug,原来安装两个时,每发送一个包就收到的一个包,当再增加一个miniport时,接收到的包也相应增加一个,可恨啊!这种错误都能犯!!!
大家原谅我吧!让大家费心了!!! :P

[编辑 -  4/29/04 by  flyhobo]
好好过日子
liusz
驱动牛犊
驱动牛犊
  • 注册日期2004-03-16
  • 最后登录2018-05-26
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望43点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-28 22:05

请教楼主:  如何安装多个虚拟网卡啊?

这句话应该如何理解:

对于指定的虚拟NIC,NDIS将在NdisIMInitializeDeviceInstance的环境中调用中间层驱动程序的MiniportInitialize函数对其进行初始化操作。如果中间层驱动程序导出了多个虚拟NIC,那么为使其可用于网络请求,驱动程序必须为每一个NIC调用NdisIMInitializeDeviceInstance函数进行初始化。这样可根据网络业务量,生成相应的数量的虚拟NIC。

多谢了,我可以另发帖子给分的。
flyhobo
驱动小牛
驱动小牛
  • 注册日期2004-03-05
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-29 08:45

请教楼主:  如何安装多个虚拟网卡啊?

这句话应该如何理解:

对于指定的虚拟NIC,NDIS将在NdisIMInitializeDeviceInstance的环境中调用中间层驱动程序的MiniportInitialize函数对其进行初始化操作。如果中间层驱动程序导出了多个虚拟NIC,那么为使其可用于网络请求,驱动程序必须为每一个NIC调用NdisIMInitializeDeviceInstance函数进行初始化。这样可根据网络业务量,生成相应的数量的虚拟NIC。

多谢了,我可以另发帖子给分的。

    惭愧啊!我也刚做miniport,你的问题估计我帮不上什么忙了?先简单说一下我的东西,希望对你有帮助。
    我的miniport是在2003ddk的netvmini的基础上修改的。至于安装多个虚拟网卡就是在添加新硬件里多添加几次了 :P
    另,你能把你的\"驱动程序超级宝典.chm \"给我一份吗?
    谢了先,flyhobo@hotmail.com

[编辑 -  4/29/04 by  flyhobo]
好好过日子
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-29 18:03
     为什么啊?我设置网卡的速率为100M啊!却能达到150M.这里我的miniport有问题吧!!

设置的速率只有显示的作用,Ndis并不会按照你给的速率把数据排队。
flyhobo
驱动小牛
驱动小牛
  • 注册日期2004-03-05
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-29 21:02
[quote]      为什么啊?我设置网卡的速率为100M啊!却能达到150M.这里我的miniport有问题吧!!

设置的速率只有显示的作用,Ndis并不会按照你给的速率把数据排队。 [/quote]
   那怎样才能提高miniport的速率哪?具体要做那方面的工作?我要实现千兆速率的网卡,最低速率要达到128M,最好能 256M或更多  :D
   好像有个Task Offload,是否必须支持才可以提高速率啊!望bingjie能指点一下。谢了!!


[编辑 -  4/29/04 by  flyhobo]
好好过日子
flyhobo
驱动小牛
驱动小牛
  • 注册日期2004-03-05
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-05-08 09:22
我顶,大家费心了帮帮忙 :P怎么才能提高miniport的速率啊!

[编辑 -  5/8/04 by  flyhobo]
好好过日子
flyhobo
驱动小牛
驱动小牛
  • 注册日期2004-03-05
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-11 14:37
我再顶
有人知道吗?
期待中………………
好好过日子
asmsys
驱动老牛
驱动老牛
  • 注册日期2002-03-29
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-05-11 15:44
网卡芯片的速度上不去,驱动有能怎么样呢?
flyhobo
驱动小牛
驱动小牛
  • 注册日期2004-03-05
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-05-11 15:54
网卡芯片的速度上不去,驱动有能怎么样呢?

我实现的是虚拟网卡,数据的收发另有硬件实现,就是我另外一个帖子问的NDIS_WDM怎么向另一个WDM发送IRP,我这里的硬件(N个)数据都要通过V_NDIS_WDM传递。

我还没有看DDK的Task Offload部分,不清楚所以想先问一下方向。
asmsys知道怎样做吗?
好好过日子
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-05-12 14:59
[quote我还没有看DDK的Task Offload部分,不清楚所以想先问一下方向。
asmsys知道怎样做吗? [/quote]
Task Offload是为了降低CPU计算Checksum、IPSec以及LargSend等负担,协议层不再计算IP/TCP/UDP的checksum以及TCP  Segmentation,而把这些交由底层的硬件来计算。如果你的硬件支持这些功能,则你可以报告Ndis支持TaskOffload,否则就不用。我估计你用多个虚拟网卡可以实现较高的速率同你的数据传递算法有关,多个网卡相当于在并行处理,而一个网卡是串行处理。这你只要仔细考虑数据的交互,应该可以解决这个问题。
flyhobo
驱动小牛
驱动小牛
  • 注册日期2004-03-05
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-05-12 15:05
[quote我还没有看DDK的Task Offload部分,不清楚所以想先问一下方向。
asmsys知道怎样做吗?

Task Offload是为了降低CPU计算Checksum、IPSec以及LargSend等负担,协议层不再计算IP/TCP/UDP的checksum以及TCP  Segmentation,而把这些交由底层的硬件来计算。如果你的硬件支持这些功能,则你可以报告Ndis支持TaskOffload,否则就不用。我估计你用多个虚拟网卡可以实现较高的速率同你的数据传递算法有关,多个网卡相当于在并行处理,而一个网卡是串行处理。这你只要仔细考虑数据的交互,应该可以解决这个问题。 [/quote]
首先感谢bingjie的指点!我的硬件没有这样的功能:(
我有一点还是不明白,我在miniport中自环数据上去的速率也只有60M字位,这是不是说明miniport也存在速率瓶颈?不知道千兆网卡的miniport怎么做的,还是我的miniport有问题啊?
好好过日子
bingjie
驱动小牛
驱动小牛
  • 注册日期2001-08-15
  • 最后登录2007-11-29
  • 粉丝0
  • 关注0
  • 积分36分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-05-12 15:14
我想这同你的MPSendPacket的实现有关,还有就是网卡的属性,应该设置为Deserilize,另外在MPQueryInformation中的SEND_BUFFER和RCV_BUFF的大小需要一个合适值
flyhobo
驱动小牛
驱动小牛
  • 注册日期2004-03-05
  • 最后登录2005-05-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-05-12 16:57
我想这同你的MPSendPacket的实现有关,还有就是网卡的属性,应该设置为Deserilize,另外在MPQueryInformation中的SEND_BUFFER和RCV_BUFF的大小需要一个合适值

我MPSendPacket实现就是简单得把MAC包拷贝到发送缓冲区,然后再构建一个Packet 然后Indicate to upper layers
miniport也设置为Deserilize了

>另外在MPQueryInformation中的SEND_BUFFER和RCV_BUFF的大小需要一个合适值
你是否指的是OID_GEN_TRANSMIT_BUFFER_SPACE和OID_GEN_RECEIVE_BUFFER_SPACE,好像都设置为了0啊,我的天哪,这是咋回事啊!这是微软的源码啊!
另我把实际的SEND_BUFFER和RCV_BUFF都开大了一倍,测试速率也没见变化的,郁闷!
好好过日子
游客

返回顶部