[Click] todevice and madwifi-ng in monitor mode
Eddie Kohler
kohler at cs.ucla.edu
Tue May 23 11:53:25 EDT 2006
David,
Thanks very much for this patch!
Eddie
David Claffey wrote:
> Hi Torquato,
>
> Good to hear it helped. I actually fixed another problem in skbmgr.cc as well.
> Recycled skbs need to have the skb->dst pointer set to NULL. I had some
> packets coming from linux with this pointer non-NULL. The next use of the
> recycled skb will call dst_release with the refcnt 0, then -1 ,then -2, etc,
> causing a hugh stream of printks.
> The patch is below.
>
> - David
>
> --- click/linuxmodule/skbmgr.cc
> +++ tmp/linuxmodule/skbmgr.cc
> @@ -248,6 +248,7 @@
> // datarefp (expensive to set).
> if (!(skb->pkt_type & PACKET_CLEAN)) {
> dst_release(skb->dst);
> + skb->dst = NULL; // stale pointer will cause problems for recycled skbs;
> dst_run_gc will cleanup mem
> if (skb->destructor) {
> skb->destructor(skb);
> skb->destructor = NULL;
>
>
> Torquato Bertani wrote:
>> Hi David,
>> thanks for your patch. Now my kernel doesn't crash anymore!
>> Bye
>>
>> On 4/12/06, David Claffey <dclaffey at jjplus.com> wrote:
>>> I have the click linuxmodule and the madwifi-ng driver running on linux-2.6.12.
>>> I'm using todevice() to send packets out the ath device in monitor mode. But
>>> this only works after adding the following patch:
>>> --- click/elements/linuxmodule/todevice.cc
>>> +++ tmp/elements/linuxmodule/todevice.cc
>>> @@ -383,6 +383,12 @@
>>> skb_put(skb1, 60 - skb1->len);
>>> }
>>>
>>> + skb1->dev = _dev;
>>> +
>>> int ret;
>>> #if HAVE_LINUX_POLLING
>>> if (_dev->polling > 0)
>>> ret = _dev->tx_queue(_dev, skb1);
>>> else
>>> #endif
>>> {
>>> ret = _dev->hard_start_xmit(skb1, _dev);
>>> _hard_start++;
>>> }
>>>
>>> Todevice() passes the skb to ieee80211_hardstart(struct sk_buff *skb, struct
>>> net_device *dev) which then calls ieee80211_monitor_encap(struct ieee80211vap
>>> *vap, struct sk_buff *skb). The problem arises when ieee80211_monitor_encap()
>>> references skb->dev->type with skb->dev NULL. Can anyone suggest which function
>>> should set skb->dev, todevice or ieee80211_hardstart?
>>>
>>> - David
>>> _______________________________________________
>>> click mailing list
>>> click at amsterdam.lcs.mit.edu
>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>
>> _______________________________________________
>> click mailing list
>> click at amsterdam.lcs.mit.edu
>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
More information about the click
mailing list