How to send a unicast packet.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
How to send a unicast packet? Procedure Roughly takes the following path (when no errors or congestion): recv() - send() - sendDATA() and sendRTS() - start defer timer - deferHandler() - check_pktRTS() - transmit() - recv() - receive timer started - recv_timer() - recvCTS() - tx_resume() - start defer timer - rx_resume() - deferHandler() - check_pktTx() - transmit() - recv() - receive timer started - recv_timer() - recvACK() - tx_resume() - callback_ - rx_resume() - done! recv ( ) void Mac802_11::recv(Packet *p, Handler *h) { struct hdr_cmn *hdr = HDR_CMN(p); assert(initialized()); if( hdr-direction() == hdr_cmn::DOWN ) { send(p, h); return; } if(tx_active_ hdr-error() == 0) { hdr-error() = 1; } if(rx_state_ == MAC_IDLE) { setRxState(MAC_RECV); pktRx_ = p; mhRecv_.start(txtime(p)); } else { ……………………………………………………………………………………… } } send( ) sendDATA( ) Mac802_11::sendDATA(Packet *p) { hdr_cmn* ch = HDR_CMN(p); struct hdr_mac802_11* dh = HDR_MAC802_11(p); assert(pktTx_ == 0); ch-size() += phymib_.getHdrLen11(); dh-dh_fc.fc_protocol_version = MAC_ProtocolVersion; dh-dh_fc.fc_type = MAC_Type_Data; dh-dh_fc.fc_subtype = MAC_Subtype_Data; dh-dh_fc.fc_to_ds = 0; dh-dh_fc.fc_from_ds = 0; dh-dh_fc.fc_more_frag = 0; dh-dh_fc.fc_retry = 0; dh-dh_fc.fc_pwr_mgt = 0; dh-dh_fc.fc_more_data = 0; dh-dh_fc.fc_wep = 0; dh-dh_fc.fc_order = 0; /* store data tx time */ ch-txtime() = txtime(ch-size(), dataRate_); if((u_int32_t)ETHER_ADDR(dh-dh_ra) != MAC_BROADCAST) { /* store data tx time for unicast packets */ ch-txtime() = txtime(ch-size(), dataRate_); dh-dh_duration = usec(txtime(phymib_.getACKlen(), basicRate_) + phymib_.getSIFS()); } else { /* store data tx time for broadcast packets (see 9.6) */ ch-txtime() = txtime(ch-size(), basicRate_ ); dh-dh_duration = 0; } pktTx_ = p; } sendRTS( ) void Mac802_11::sendRTS(int dst) { Packet *p = Pack

文档评论(0)

pep2233 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档