ludianjian
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2003-09-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1793回复:10

一个对passthru有意思的修改,请求指点(给分)

楼主#
更多 发布于:2003-05-26 16:22
passthru中数据的传输是primary网卡负责接受,secondary负责发送数据,我想把他们修改成每个网卡都是双工的,就是都能同时的收发,而且能平衡他们的流量。
我仔细看了passthru的源码,大致的熟悉了,其中数据的传输的具体细节还不是很清楚,只能做以下的修改。
修改之后,安装,能用,但是好像有很多的丢包问题而影响了效率
而且重启后,就只能是双工的发送,单工的接受了,不知道是不是我没有处理pnp事件?!!
请指教!
3x
------------------------------
在precomp.h中定义:
//**************************************
BOOLEAN isPrimaryTurn_send=TRUE;   //MPSend
BOOLEAN isPrimaryTurn_sends=TRUE;    //MPSendPackets
BOOLEAN isPrimaryTurn_receive=TRUE;    //PtReceive
BOOLEAN isPrimaryTurn_receivep=TRUE;  //PtReceivePacket

//***************************************

MPSend(MPSendPackets同):
//*********************************************
//修改这个地方,实现两个网卡的交替使用
//ASSERT (pAdapt->pSecondaryAdapt);
//pAdapt = pAdapt->pSecondaryAdapt;  

if(isPrimaryTurn_send)
{
pAdapt=pAdapt->pPrimaryAdapt;
isPrimaryTurn_send=FALSE;
DBGPRINTPRO(LEV_1,\"send is Pri. the val is: %d\",pAdapt->isSecondary)
}
else
{
pAdapt=pAdapt->pSecondaryAdapt;
isPrimaryTurn_send=TRUE;
DBGPRINTPRO(LEV_1,\"send is 2nd. the val is: %d\",! pAdapt->isSecondary)

}

//**************************************************

PtReceive(PtReceivePacket同):
//**************************
//how to change here
/*
if(pAdapt->isSecondary)
{
DBGPRINT(\"PASSTHRU GETTING RECIEVES ON SECONDARY\\n\");
ASSERT(0);
}
*/

//*********************************************
//修改这个地方,实现两个网卡的交替使用
//ASSERT (pAdapt->pSecondaryAdapt);
//pAdapt = pAdapt->pSecondaryAdapt;  

if(isPrimaryTurn_receive)
{
pAdapt=pAdapt->pPrimaryAdapt;
isPrimaryTurn_receive=FALSE;
}
else
{
pAdapt=pAdapt->pSecondaryAdapt;
isPrimaryTurn_receive=TRUE;
}

//**************************************************
PtReceiveComplete(PtSendComplete,PtTransferDataComplete,PtReceiveComplete,MPTransferData)
//*********************************************
//修改这个地方,
//ASSERT (pAdapt->pSecondaryAdapt);
//pAdapt = pAdapt->pSecondaryAdapt;  

//**************************************************

附件名称/大小 下载次数 最后更新
2003-05-26_passthru.rar (130KB)  9

最新喜欢:

dregsdregs
ludianjian
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2003-09-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-26 16:25
同时我这里能提供下列信息的查询,希望和大家交一个朋友:

CNKI(中国学术期刊)
?清华同方会议论文数据库
?维普全文数据库
?中国重机商务网
?中国博硕士学位论文库
?河北省高等学校数字图书馆
?全国期刊联合目录
?万方数据库
?国务院发展研究中心信息网
?PQDD(国际博硕士论文数据库)
?中国大陆地区UMI博士论文全文数据库
?EI(美国工程索引,请取消代理使用)
?Elsevier
?Kluwer
?WOSP(国际科技会议录索引)
?Springer― Link全文期刊
?Infobank(中国资讯行)
?科学(网络版)
?Nature在线
?美国Maney出版公司及英国皇家学会网络版期刊
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-26 16:36
因为你发送出去的报文的mac地址只能是一块网卡的mac地址,所以只会有一个网卡收包
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-26 17:14
你的机器上装了两块网卡么??

你的secondadapter是怎么得到的?你实现了LBFO?

如果没有,那你的secondadapter压根就是第一块网卡。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
LinX
驱动牛犊
驱动牛犊
  • 注册日期2002-08-19
  • 最后登录2007-07-05
  • 粉丝0
  • 关注0
  • 积分100分
  • 威望10点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-26 18:42
如果要改成同时\"收发\", 还需要解决如下问题:
1. 如何通过ROUTER. 每个IP地址对应于一个MAC地址.
2. 同时发送时, 需要修改以太网帧的SOURCE MAC地址段, 与相的   物理以太网卡的MAC地址对应.
3. 需要在初始化时分配好NDIS descriptors , NDIS_BUFFER等.
4. 当其中之一的物理卡不正常工作时, 怎样告诉上层的PROTOCOL DRIVER.同时, 还要解决问题1.
总之, 如改成同时\"收发\", 需要做很多工作.
ludianjian
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2003-09-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-26 22:09
谢谢各位的提醒,我总结一下我得到的问题了:
1)我安装了两个一样的网卡,为的就是实现LBFO;
2)我在网卡ip设置的时候将两个网卡的IP设置成一样的,因为PASSTHRU只是将PRIMARY网卡暴露,这样外面只是看到了一个地址,而且当一个网卡失效后,提升第二快网卡,这样还可以使用那个IP地址(我想省下一个IP地址);
3)我没有修改包里面的MAC地址,所以导致了发送数据不能正确的接受,最后导致了流失了数据包,重复的几率很大,才出现了效率很低的现象。但是要是修改了MAC地址,是不是要把网卡的接收方式设置成混合模式才行?不然他们对于接受包是不是会有丢包可能
4)对于“初始化时分配好NDIS descriptors , NDIS_BUFFER“我没有考虑过,我想知道PASSTHRU中的初始化,还不能?
5)对于“物理卡不正常工作时, 怎样告诉上层的PROTOCOL DRIVER.同时”,其实在网卡提升得过程中,应该已经实现了,我认为最主要的是那个网卡恢复回来的时候,我们竟怎么做?

谢谢以上的几位朋友的提示和帮助,请继续帮助我,分是不会少的,(:
我会块块的修改代码,再来请教大家
谢谢
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-27 08:51
你就只安装两块网卡????这样就能实现LBFO了么?

你的bundleid怎么修改的???
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
ludianjian
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2003-09-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-27 11:19
我在两个网卡的各自得BundleID处都设置成1,
上面那个属性param1我没有设置的。
这样应该没有问题的吧。
而且我看到了那个现象:两个网卡交替的发送数据报,就是那个发送报数字显示的地方,依次的增大
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-27 14:19
你修改的bundleid是在sfilter下面修改的还是在网卡的下面修改的?
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
ludianjian
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2003-09-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-05-27 15:17
使用sfilter修改的。
这个有什么关系吗?我看那个好像修该成功了,能工作的 :)
ludianjian
驱动牛犊
驱动牛犊
  • 注册日期2003-03-20
  • 最后登录2003-09-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-06-08 20:43
最近没有时间修改了
先奉上分
谢谢楼上大家
游客

返回顶部