亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? txfeedbackstats.cc

?? COPE the first practical network coding scheme which is developped on click
?? CC
字號:
/* * txfeedbackstats.{cc,hh} -- track per-link transmission statistics. * Douglas S. J. De Couto * * Copyright (c) 2003 Massachusetts Institute of Technology * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, subject to the conditions * listed in the Click LICENSE file. These conditions include: you must * preserve this copyright notice, and you cannot mention the copyright * holders in advertising related to the Software without their permission. * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This * notice is a summary of the Click LICENSE file; the license in that file is * legally binding. */#include <click/config.h>#include <click/confparse.hh>#include <clicknet/ether.h>#include <click/error.hh>#include <click/glue.hh>#include <click/timer.hh>#include <click/straccum.hh>#include <elements/wifi/txfeedbackstats.hh>#include <elements/grid/timeutils.hh>CLICK_DECLSTXFeedbackStats::TXFeedbackStats()  : _tau(10000), _min_pkts(10){  add_input();  add_output();}TXFeedbackStats::~TXFeedbackStats(){}intTXFeedbackStats::configure(Vector<String> &conf, ErrorHandler *errh){  int res = cp_va_parse(conf, this, errh,			cpKeywords,			"TAU", cpUnsigned, "TX feedback tracking period (msecs)", &_tau,			"MIN_PKTS", cpUnsigned, "minimum number of packets required to estimate TX count", &_min_pkts,			cpEnd);  if (res < 0)    return res;  if (_min_pkts < 1)    return errh->error("MIN_PKTS must be >= 1");  return 0;}intTXFeedbackStats::initialize(ErrorHandler *){  _tau_tv.tv_sec = _tau / 1000;  _tau_tv.tv_usec = 1000 * (_tau % 1000);  return 0;}Packet *TXFeedbackStats::simple_action(Packet *p){  click_ether *eh = (click_ether *) p->data();  if (p->length() < sizeof(click_ether)) {    click_chatter("TXFeedbackStats %s: got short packet, expected at least %u, but only got %u", 		  id().cc(), p->length());    return p;  }    // decoding values from aironet tx fid, see manual p. 7-46  /* eventually this card-specific stuff will be moved into a     FooTxFeedback el, once we sort out what the annos look like */  tx_result_t res;  switch (p->user_anno_c(0)) {  case 0: res = TxOk; break;  case 2: res = TxLifetimeExceeded; break;  case 4: res = TxMaxRetriesExceed; break;  default: res = TxUnknownResult;  }  unsigned n_data = p->user_anno_c(3);  unsigned n_rts = p->user_anno_c(2);  if (res == TxOk)    n_data++;  else if (n_data > 0) {    // we failed, but we know we were trying to make some data    // transmissions, not just waiting on RTS    n_data++;   }    // if we know we did at least some RTS, add one to number of  // retries.  we won't know if we were using RTS but the first RTS  // always succeeds.  if (n_rts > 0)    n_rts++;  add_stat(EtherAddress(eh->ether_dhost), p->length(), p->timestamp_anno(), res, n_data, n_rts);  return p;}voidTXFeedbackStats::add_stat(const EtherAddress &dest, int sz, const timeval &when, 			  tx_result_t res, unsigned data_attempts, unsigned  rts_attempts){  StatQ *q = cleanup_map(dest);  if (!q) {    _stat_map.insert(dest, StatQ());    q = _stat_map.findp(dest);  }  q->push_front(stat_t(when, sz, res, data_attempts, rts_attempts));}TXFeedbackStats::StatQ *TXFeedbackStats::cleanup_map(const EtherAddress &dest){  struct timeval oldest;  click_gettimeofday(&oldest);  oldest -= _tau_tv;  StatQ *q = _stat_map.findp(dest);  if (!q)    return 0;  // discard too-old stats  while (q->size() > 0 && q->back().when < oldest)    q->pop_back();  // could also remove StatQs for dests with no data.  for now we'll  // pretend that there are only a limited number of neighbors we'll  // ever see.    return q;}boolTXFeedbackStats::est_tx_count(const EtherAddress &dest, unsigned &etx){  unsigned n_data, n_rts, n_pkts;  if (!get_counts(dest, n_data, n_rts, n_pkts))    return false;  if (n_pkts < _min_pkts)    return false;      etx = 100 * (n_rts + n_data) / n_pkts;  return true;}boolTXFeedbackStats::get_counts(const EtherAddress &dest, unsigned &n_data, unsigned &n_rts, unsigned &n_pkts){  StatQ *q = cleanup_map(dest);  if (!q)    return false;  n_pkts = (unsigned) q->size();  n_data = 0;  n_rts = 0;  for (StatQ::const_iterator i = q->begin(); i != q->end(); i++) {    n_data += i->n_data;    n_rts += i->n_rts;  }  return true;}StringTXFeedbackStats::print_stats(){  Vector<EtherAddress> v;  for (StatMap::const_iterator i = _stat_map.begin(); i; i++)    v.push_back(i.key());  StringAccum sa;  for (int i = 0; i < v.size(); i++) {    sa << v[i] << "  ";    unsigned n_data, n_rts, n_pkts;    if (!get_counts(v[i], n_data, n_rts, n_pkts))       sa << "No data available";    else {      sa << n_data << "\t" << n_rts << "\t" << n_pkts << "\t";      if (n_pkts < _min_pkts)	sa << "Too few packets";      else	sa << (100 * (n_data + n_rts) / n_pkts);    }    sa << "\n";  }  return sa.take_string();  }StringTXFeedbackStats::read_params(Element *xf, void *n){  TXFeedbackStats *f = (TXFeedbackStats *) xf;  switch ((int) n) {  case 0: return String(f->_tau) + "\n";  case 1: return String(f->_min_pkts) + "\n";  case 2: return f->print_stats();  default:  return "<unknown parameter>";  }}voidTXFeedbackStats::add_handlers(){  add_default_handlers(false);  add_read_handler("tau", read_params, (void *)0);  add_read_handler("min_pkts", read_params, (void *)1);  add_read_handler("stats", read_params, (void *)2);}EXPORT_ELEMENT(TXFeedbackStats)ELEMENT_REQUIRES(false)#include <click/dequeue.cc>template class DEQueue<TXFeedbackStats::stat_t>;#include <click/bighashmap.cc>template class HashMap<EtherAddress, TXFeedbackStats::StatQ>;CLICK_ENDDECLS

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91啦中文在线观看| 亚洲aⅴ怡春院| 亚洲人成人一区二区在线观看| 中文字幕一区二区三区乱码在线| 亚洲精品免费在线| 蜜桃一区二区三区在线| 精品综合免费视频观看| 播五月开心婷婷综合| 欧美一区二区三区啪啪| 一区二区国产视频| 91视频国产资源| 欧美高清在线视频| 国产精品一区二区三区乱码| 亚洲日本一区二区| 国产在线国偷精品免费看| 国产精选一区二区三区| 日韩西西人体444www| 亚洲成人av一区二区| 日本大香伊一区二区三区| 国产精品人人做人人爽人人添| 精品夜夜嗨av一区二区三区| 91精品欧美福利在线观看| 亚洲精品国产一区二区精华液 | 日本美女一区二区| 色噜噜久久综合| 亚洲天堂网中文字| 91亚洲精品久久久蜜桃网站| 国产精品国产三级国产三级人妇 | 综合电影一区二区三区| 国产福利电影一区二区三区| 精品国产百合女同互慰| 精品在线一区二区| 欧美mv和日韩mv国产网站| 日韩精品电影在线观看| 欧美日韩在线播放| 奇米色一区二区三区四区| 69久久99精品久久久久婷婷| 麻豆成人免费电影| 精品免费国产一区二区三区四区| 久久精品久久综合| 久久综合九色综合97婷婷女人 | 91精品国产综合久久国产大片| 亚洲国产aⅴ天堂久久| 欧美三级电影在线看| 日本欧美在线看| 欧美成人高清电影在线| 国产精一品亚洲二区在线视频| 国产欧美一区二区精品忘忧草 | 国产精品一区二区三区网站| 国产欧美一区二区精品久导航 | 国产最新精品免费| 国产女主播一区| 91免费精品国自产拍在线不卡| 一区二区三区免费观看| 日韩三级在线免费观看| 成人教育av在线| 亚洲一区二区三区四区五区中文 | 在线精品观看国产| 蜜乳av一区二区三区| 久久女同性恋中文字幕| 色94色欧美sute亚洲线路一久| 日韩国产在线一| 国产亚洲精品中文字幕| 在线观看不卡一区| 国产一区视频网站| 亚洲一区自拍偷拍| 精品99一区二区| 色狠狠综合天天综合综合| 麻豆精品在线观看| 亚洲三级在线播放| 精品久久一区二区| 欧美性猛片aaaaaaa做受| 国产综合久久久久久鬼色 | 成人免费高清视频在线观看| 亚洲女人****多毛耸耸8| 欧美成人三级电影在线| 色欧美乱欧美15图片| 精品一区二区久久久| 亚洲乱码国产乱码精品精的特点| 91麻豆精品国产91久久久使用方法 | 精品国产髙清在线看国产毛片| 91小宝寻花一区二区三区| 麻豆成人免费电影| 亚洲国产视频一区二区| 国产精品福利电影一区二区三区四区 | 亚洲电影你懂得| 亚洲欧洲国产日本综合| 精品免费日韩av| 制服视频三区第一页精品| 91麻豆蜜桃一区二区三区| 精品亚洲免费视频| 免费看欧美女人艹b| 亚洲无人区一区| 亚洲精品乱码久久久久久久久| 久久综合精品国产一区二区三区 | 国产亚洲精品7777| 日韩一区二区三区视频在线观看| 色综合久久综合| 成人免费视频视频| 国产精品一区二区三区99| 麻豆精品国产传媒mv男同 | 91精品在线麻豆| 欧美日韩卡一卡二| 欧美丝袜自拍制服另类| 99r国产精品| 成av人片一区二区| 99免费精品在线| 99久久99久久综合| 91色综合久久久久婷婷| www.欧美色图| 99久久婷婷国产综合精品 | 国产aⅴ精品一区二区三区色成熟| 日韩高清一区在线| 免费人成精品欧美精品 | 不卡区在线中文字幕| 国产呦萝稀缺另类资源| 精品无人码麻豆乱码1区2区| 久久 天天综合| 国产一区在线观看视频| 国产激情一区二区三区| 国产jizzjizz一区二区| 国产91丝袜在线观看| caoporn国产一区二区| 色噜噜狠狠成人中文综合| 欧洲亚洲国产日韩| 欧美一区二区视频在线观看 | 一色桃子久久精品亚洲| 亚洲乱码日产精品bd| 亚洲午夜激情av| 日本成人中文字幕在线视频| 美国av一区二区| 国产成人在线视频网站| 99精品欧美一区| 欧美专区日韩专区| 日韩免费一区二区三区在线播放| 精品少妇一区二区三区在线播放| 久久久久九九视频| 亚洲欧洲精品成人久久奇米网| 一区二区三区日韩精品| 爽好多水快深点欧美视频| 精品一区二区三区免费播放| 国产91精品在线观看| 欧美在线三级电影| 精品国产一区二区在线观看| 国产精品久久久久久久久久免费看| 亚洲激情综合网| 免费在线视频一区| 99精品欧美一区二区三区小说 | 日本道色综合久久| 日韩三级av在线播放| 国产精品三级电影| 青青草精品视频| 懂色av一区二区夜夜嗨| 欧美三级韩国三级日本一级| 久久久久久99精品| 亚洲成人在线免费| 成人a免费在线看| 日韩一区二区在线播放| 中文字幕在线不卡视频| 日产国产欧美视频一区精品| 成人激情av网| 日韩欧美在线影院| 亚洲永久免费av| 国产成人自拍网| 日韩欧美一卡二卡| 亚洲欧美日韩在线不卡| 国产一区二区电影| 欧美日本在线视频| 1024精品合集| 国产一区二区剧情av在线| 欧美精品一二三区| 一区二区三区资源| 成人黄色在线看| 精品国产一区二区三区av性色| 亚洲一区在线观看免费| 成人午夜在线播放| 久久中文字幕电影| 麻豆91免费观看| 91精品国产aⅴ一区二区| 一片黄亚洲嫩模| 99久久国产综合色|国产精品| 久久久午夜精品理论片中文字幕| 日本免费新一区视频| 欧美日韩在线播放一区| 一区二区三国产精华液| 色综合天天狠狠| 中文字幕中文在线不卡住| 国产精品99久久久久久似苏梦涵 | 国产美女精品一区二区三区| 这里只有精品99re| 青青草成人在线观看| 精品视频一区三区九区| 亚洲国产欧美另类丝袜| 91麻豆福利精品推荐| 国产精品高清亚洲| 91在线播放网址| 亚洲欧美日韩久久精品| 91蝌蚪porny| 夜夜精品视频一区二区| 欧美综合欧美视频|