{"id":55,"date":"2008-11-07T06:09:00","date_gmt":"2008-11-07T11:09:00","guid":{"rendered":"http:\/\/www.rajatswarup.com\/blog\/?p=55"},"modified":"2010-02-10T23:27:49","modified_gmt":"2010-02-11T04:27:49","slug":"atheros-madwifi-ng-patch-revision-3876","status":"publish","type":"post","link":"https:\/\/www.rajatswarup.com\/blog\/2008\/11\/07\/atheros-madwifi-ng-patch-revision-3876\/","title":{"rendered":"Atheros Madwifi-ng patch Revision 3876"},"content":{"rendered":"<p>Copy paste the text shown below into a file called  <a href=\"http:\/\/home.comcast.net\/~rajat24\/random\/madwifing-r3876.patch\">madwifing-r3876.patch<\/a>.<\/p>\n<pre><br \/>--- madwifi\/ath\/if_ath.c  2008-11-07 01:05:07.000000000 -0500<br \/>+++ madwifi-patched\/ath\/if_ath.c   2008-11-06 17:56:59.000000000 -0500<br \/>@@ -3000,6 +3000,7 @@<br \/> ath_tx_startraw(struct net_device *dev, struct ath_buf *bf, struct sk_buff *skb)<br \/> {<br \/>        struct ath_softc *sc = dev->priv;<br \/>+       struct ieee80211com *ic = &sc->sc_ic;<br \/>        struct ath_hal *ah = sc->sc_ah;<br \/>        struct ieee80211_phy_params *ph = &(SKB_CB(skb)->phy);<br \/>        const HAL_RATE_TABLE *rt;<br \/>@@ -3012,7 +3013,8 @@<br \/>        struct ieee80211_frame *wh;<br \/><br \/>        wh = (struct ieee80211_frame *)skb->data;<br \/>-       try0 = ph->try[0];<br \/>+       \/\/try0 = ph->try[0];<br \/>+        try0 = (ic->ic_opmode == IEEE80211_M_MONITOR) ? 1 : ph->try[0];<br \/>        rt = sc->sc_currates;<br \/>        txrate = dot11_to_ratecode(sc, rt, ph->rate[0]);<br \/>        power = ph->power > 60 ? 60 : ph->power;<br \/>@@ -3036,7 +3038,8 @@<br \/>        rt = sc->sc_currates;<br \/>        KASSERT(rt != NULL, (\"no rate table, mode %u\", sc->sc_curmode));<br \/><br \/>-       if (IEEE80211_IS_MULTICAST(wh->i_addr1)) {<br \/>+       \/\/if (IEEE80211_IS_MULTICAST(wh->i_addr1)) {<br \/>+        if (IEEE80211_IS_MULTICAST(wh->i_addr1) || ((ic->ic_opmode == IEEE80211_M_MONITOR) && (skb->data[1]&3) != 0x01) ) {<br \/>          flags |= HAL_TXDESC_NOACK;    \/* no ack on broad\/multicast *\/<br \/>          sc->sc_stats.ast_tx_noack++;<br \/>          try0 = 1;<br \/><\/pre>\n<p>Check out the madwifi driver as follows:<\/p>\n<pre><br \/>sudo ifconfig ath0 down<br \/>sudo ifconfig wifi0 down<br \/>svn -r 3876 checkout http:\/\/svn.madwifi.org\/madwifi\/trunk\/ madwifi-ng<br \/>cd madwifi-ng<br \/>patch -Np1 -i ..\/madwifing-r3876.patch<br \/>sudo .\/scripts\/madwifi-unload<br \/>make<br \/>sudo make install<br \/>sudo depmod -ae<br \/>sudo modprobe ath_pci<br \/><\/pre>\n<p>These instructions are similar to the ones written here (for a different revision):<br \/><a href=\"http:\/\/www.aircrack-ng.org\/doku.php?id=madwifi-ng\">http:\/\/www.aircrack-ng.org\/doku.php?id=madwifi-ng<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Copy paste the text shown below into a file called madwifing-r3876.patch. &#8212; madwifi\/ath\/if_ath.c 2008-11-07 01:05:07.000000000 -0500+++ madwifi-patched\/ath\/if_ath.c 2008-11-06 17:56:59.000000000 -0500@@ -3000,6 +3000,7 @@ ath_tx_startraw(struct net_device *dev, struct ath_buf *bf, struct sk_buff *skb) { struct ath_softc *sc = dev->priv;+ struct ieee80211com *ic = &#038;sc->sc_ic; struct ath_hal *ah = sc->sc_ah; struct ieee80211_phy_params *ph = &#038;(SKB_CB(skb)->phy); const HAL_RATE_TABLE [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[259],"tags":[260,261,262,263,468],"class_list":["post-55","post","type-post","status-publish","format-standard","hentry","category-wireless","tag-atheros","tag-drivers","tag-madwifi-ng","tag-patch","tag-wireless"],"_links":{"self":[{"href":"https:\/\/www.rajatswarup.com\/blog\/wp-json\/wp\/v2\/posts\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rajatswarup.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rajatswarup.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rajatswarup.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rajatswarup.com\/blog\/wp-json\/wp\/v2\/comments?post=55"}],"version-history":[{"count":1,"href":"https:\/\/www.rajatswarup.com\/blog\/wp-json\/wp\/v2\/posts\/55\/revisions"}],"predecessor-version":[{"id":112,"href":"https:\/\/www.rajatswarup.com\/blog\/wp-json\/wp\/v2\/posts\/55\/revisions\/112"}],"wp:attachment":[{"href":"https:\/\/www.rajatswarup.com\/blog\/wp-json\/wp\/v2\/media?parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rajatswarup.com\/blog\/wp-json\/wp\/v2\/categories?post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rajatswarup.com\/blog\/wp-json\/wp\/v2\/tags?post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}