On Mon, 2009-11-09 at 17:07 +0100, Lorenzo Bianconi wrote: > I and my Matteo Croce made a patch which adds the capability > to set the bit-rate when injecting in monitor mode. > > The code parse the bit-rate field from the radiotap header and passes the info > to the struct ieee80211_tx_info > > --- a/net/mac80211/tx.c 2009-11-09 16:41:15.000000000 +0100 > +++ b/net/mac80211/tx.c 2009-11-09 16:50:12.000000000 +0100 > @@ -505,6 +505,9 @@ > struct ieee80211_tx_rate_control txrc; > u32 sta_flags; > > + if (info->control.vif->type == NL80211_IFTYPE_MONITOR) > + return TX_CONTINUE; Sorry, can't do that, we need rate control for packets that are injected from hostapd. > - int ret = ieee80211_radiotap_iterator_init(&iterator, rthdr, skb->len); > + int i, ret = ieee80211_radiotap_iterator_init(&iterator, > + rthdr, skb->len); > + struct ieee80211_rate *rates; A separate "int i;" would be a lot cleaner I think. > sband = tx->local->hw.wiphy->bands[tx->channel->band]; > > @@ -979,6 +984,25 @@ > tx->flags |= IEEE80211_TX_FRAGMENTED; > break; > > + case IEEE80211_RADIOTAP_RATE: > + rates = sband->bitrates; > + for (i = 0; i < sband->n_bitrates; i++) { > + if (rates[i].bitrate/5 == *iterator.this_arg) { > + info->control.rates[0].idx = i; > + break; > + } > + } > + info->control.rates[0].flags = 0; This leaves the number of retries at ... 0. That makes no sense. What driver are you using that this actually works with?! > @@ -1518,7 +1542,6 @@ > struct net_device *dev) > { > struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); > - struct ieee80211_channel *chan = local->hw.conf.channel; > struct ieee80211_radiotap_header *prthdr = > (struct ieee80211_radiotap_header *)skb->data; > struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); > @@ -1540,9 +1563,6 @@ > * radar detection by itself. We can do that later by adding a > * monitor flag interfaces used for AP support. > */ > - if ((chan->flags & (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_RADAR | > - IEEE80211_CHAN_PASSIVE_SCAN))) > - goto fail; We don't want to break regulatory rules either ... johannes
Attachment:
signature.asc
Description: This is a digitally signed message part