madwifi-cvs-20051025.patch
上传用户:fubang
上传日期:2009-06-18
资源大小:2071k
文件大小:5k
源码类别:

其他

开发平台:

Unix_Linux

  1. diff -ur ../madwifi-cvs-20051025/Makefile.inc ./Makefile.inc
  2. --- ../madwifi-cvs-20051025/Makefile.inc 2005-10-18 06:27:01.000000000 +0200
  3. +++ ./Makefile.inc 2005-10-25 15:13:24.000000000 +0200
  4. @@ -191,7 +191,7 @@
  5.  #
  6.  #ATH_RATE=$(shell find ath_rate/ -maxdepth 1 ! -name CVS ! -name ath_rate/ -type d)
  7.  ifeq ($(ATH_RATE),)
  8. -ATH_RATE=ath_rate/sample
  9. +ATH_RATE=ath_rate/onoe
  10.  endif
  11.  
  12.  INCS= -include ${obj}/${DEPTH}/include/compat.h -I${obj}/${DEPTH}/include
  13. Only in .: Makefile.inc.orig
  14. diff -ur ../madwifi-cvs-20051025/ath/if_ath.c ./ath/if_ath.c
  15. --- ../madwifi-cvs-20051025/ath/if_ath.c 2005-10-19 06:27:51.000000000 +0200
  16. +++ ./ath/if_ath.c 2005-10-25 15:13:24.000000000 +0200
  17. @@ -1436,7 +1436,7 @@
  18.   rt = sc->sc_currates;
  19.   KASSERT(rt != NULL, ("no rate table, mode %u", sc->sc_curmode));
  20.   flags = HAL_TXDESC_INTREQ | HAL_TXDESC_CLRDMASK;
  21. - try0 = ATH_TXMAXTRY;
  22. + try0 = (ic->ic_opmode == IEEE80211_M_MONITOR) ? 1 : ATH_TXMAXTRY;
  23.   dot11Rate = 0;
  24.   ctsrate = 0;
  25.   ctsduration = 0;
  26. @@ -1501,6 +1501,13 @@
  27.   }
  28.   }
  29.  
  30. + if (dot11Rate == 0 && ic->ic_opmode == IEEE80211_M_MONITOR) {
  31. + int index = sc->sc_rixmap[ic->inject_rate / 500];
  32. + if (index >= 0 && index < rt->rateCount) {
  33. + txrate = rt->info[index].rateCode;
  34. + }
  35. + }
  36. +
  37.   wh = (struct ieee80211_frame *) skb->data;
  38.   pktlen = skb->len + IEEE80211_CRC_LEN;
  39.   hdrlen = sizeof(struct ieee80211_frame);
  40. Only in ./ath: if_ath.c.orig
  41. diff -ur ../madwifi-cvs-20051025/ath/if_ath_pci.c ./ath/if_ath_pci.c
  42. --- ../madwifi-cvs-20051025/ath/if_ath_pci.c 2005-07-11 15:23:53.000000000 +0200
  43. +++ ./ath/if_ath_pci.c 2005-10-25 15:15:18.000000000 +0200
  44. @@ -100,12 +100,16 @@
  45.   { 0xa727, 0x0013, PCI_ANY_ID, PCI_ANY_ID }, /* 3com */
  46.   { 0x10b7, 0x0013, PCI_ANY_ID, PCI_ANY_ID }, /* 3com 3CRDAG675 */
  47.   { 0x168c, 0x1014, PCI_ANY_ID, PCI_ANY_ID }, /* IBM minipci 5212 */
  48. + { 0x168c, 0x101a, PCI_ANY_ID, PCI_ANY_ID }, /* some Griffin-Lite */
  49.   { 0x168c, 0x0015, PCI_ANY_ID, PCI_ANY_ID },
  50.   { 0x168c, 0x0016, PCI_ANY_ID, PCI_ANY_ID },
  51.   { 0x168c, 0x0017, PCI_ANY_ID, PCI_ANY_ID },
  52.   { 0x168c, 0x0018, PCI_ANY_ID, PCI_ANY_ID },
  53.   { 0x168c, 0x0019, PCI_ANY_ID, PCI_ANY_ID },
  54.   { 0x168c, 0x001a, PCI_ANY_ID, PCI_ANY_ID },
  55. + { 0x168c, 0x001b, PCI_ANY_ID, PCI_ANY_ID },
  56. + { 0x168c, 0x001c, PCI_ANY_ID, PCI_ANY_ID }, /* PCI Express 5424 */
  57. + { 0x168c, 0x001d, PCI_ANY_ID, PCI_ANY_ID }, /* PCI Express ???  */
  58.   { 0 }
  59.  };
  60.  
  61. diff -ur ../madwifi-cvs-20051025/net80211/ieee80211_crypto.c ./net80211/ieee80211_crypto.c
  62. --- ../madwifi-cvs-20051025/net80211/ieee80211_crypto.c 2005-07-12 13:53:38.000000000 +0200
  63. +++ ./net80211/ieee80211_crypto.c 2005-10-25 15:13:24.000000000 +0200
  64. @@ -299,6 +299,10 @@
  65.  
  66.   oflags = key->wk_flags;
  67.   flags &= IEEE80211_KEY_COMMON;
  68. +
  69. + if (cipher == IEEE80211_CIPHER_WEP)
  70. + flags |= IEEE80211_KEY_SWCRYPT;
  71. +
  72.   /*
  73.    * If the hardware does not support the cipher then
  74.    * fallback to a host-based implementation.
  75. diff -ur ../madwifi-cvs-20051025/net80211/ieee80211_var.h ./net80211/ieee80211_var.h
  76. --- ../madwifi-cvs-20051025/net80211/ieee80211_var.h 2005-10-18 06:27:01.000000000 +0200
  77. +++ ./net80211/ieee80211_var.h 2005-10-25 15:13:24.000000000 +0200
  78. @@ -212,6 +212,8 @@
  79.   struct net_device *ic_wdsdev[IEEE80211_WDS_MAXNODES];
  80.   /* only wds traffic is allowed */
  81.   int ic_wdsonly;
  82. +
  83. + int inject_rate; /* injection rate in Monitor mode */
  84.  };
  85.  
  86.  #define IEEE80211_ADDR_EQ(a1,a2) (memcmp(a1,a2,IEEE80211_ADDR_LEN) == 0)
  87. Only in ./net80211: ieee80211_var.h.orig
  88. diff -ur ../madwifi-cvs-20051025/net80211/ieee80211_wireless.c ./net80211/ieee80211_wireless.c
  89. --- ../madwifi-cvs-20051025/net80211/ieee80211_wireless.c 2005-10-18 06:27:01.000000000 +0200
  90. +++ ./net80211/ieee80211_wireless.c 2005-10-25 15:13:24.000000000 +0200
  91. @@ -476,6 +476,18 @@
  92.   struct ifreq ifr;
  93.   int rate;
  94.  
  95. + if (ic->ic_opmode == IEEE80211_M_MONITOR) {
  96. + rate = rrq->value / 1000;
  97. + if (rate !=  1000 && rate !=  2000 && rate !=  5500 &&
  98. +     rate != 11000 && rate !=  6000 && rate !=  9000 &&
  99. +     rate != 12000 && rate != 18000 && rate != 24000 &&
  100. +     rate != 36000 && rate != 48000 && rate != 54000 )
  101. +     return -EINVAL;
  102. + printk(KERN_DEBUG "setting xmit rate to %dn", rate);
  103. + ic->inject_rate = rate;
  104. + return 0;
  105. + }
  106. +
  107.   if (!ic->ic_media.ifm_cur)
  108.   return -EINVAL;
  109.   memset(&ifr, 0, sizeof(ifr));
  110. @@ -502,6 +514,11 @@
  111.   struct ifmediareq imr;
  112.   int rate;
  113.  
  114. + if (ic->ic_opmode == IEEE80211_M_MONITOR) {
  115. + rrq->value = ic->inject_rate * 1000;
  116. + return 0;
  117. + }
  118. +
  119.   memset(&imr, 0, sizeof(imr));
  120.   (*ic->ic_media.ifm_status)(ic->ic_dev, &imr);
  121.  
  122. @@ -942,6 +959,7 @@
  123.  #if WIRELESS_EXT >= 15
  124.   case IW_MODE_MONITOR:
  125.   ifr.ifr_media |= IFM_IEEE80211_MONITOR;
  126. + ic->inject_rate = 5500; /* default = 5.5M CCK */
  127.   break;
  128.  #endif
  129.   default: