Search Linux Wireless

Re: Accessing PROTOCOL TYPE FILES from rx.c in mac80211

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear Mohammed,
  I need to work inside  ieee80211_rx_h_sta_process as I have to
perform stationwise stats and I have to catch all packets, also the
ones that will be redirected to the BSS.
I think that the problem arise because the pointer of the
network_header is not correctly set.
If I am not wrong, at this point of the receive path the skb should
contain the 802.11 header as a first element, so I did
skb_set_nework_header(skb,ieee80211_get_hdrlen_from_skb(skb)))
I was supposing that after the MAC header there is the IP header... no
ethernet header in between. Is this the case?
Also doing
skb_set_nework_header(skb,ieee80211_get_hdrlen_from_skb(skb)+sizeof(struct(ethhdr)))
does not work
Does somebody have any hint?
thank you

Claudio


2012/3/8 Mohammed Shafi <shafi.wireless@xxxxxxxxx>:
> On Thu, Mar 8, 2012 at 3:54 PM, Claudio Rossi
> <rossi.claudio.82@xxxxxxxxx> wrote:
>> Dear all,
>>  I would like to inspect the protocol type field from mac802.11, and
>> specifically in rx.c in the function
>>
>> static ieee80211_rx_result debug_noinline
>> ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx)
>
> may be you should do this stuff after ieee80211_deliver_skb in 1740, rx.c
>
> if (skb) {
>                        /* deliver to local stack */
>                        skb->protocol = eth_type_trans(skb, dev);
>                        memset(skb->cb, 0, sizeof(skb->cb));
>                        netif_receive_skb(skb);
>                }
>        }
>
>
>>
>> I was trying to do:
>>
>> struct iphdr * network_header;
>> skb_set_network_header(skb,ieee80211_get_hdrlen_from_skb(skb));
>> network_header = (struct iphdr *)skb_network_header(skb);
>>
>>  if (network_header->protocol==IPPROTO_TCP){
>> ...
>> }
>> but it does not seams to work....
>>
>> In status.c everything works fine when I do:
>>
>> struct iphdr * network_header;
>>
>> network_header = (struct iphdr *)skb_network_header(skb);
>>
>>  if (network_header->protocol==IPPROTO_TCP){
>> ...
>> }
>>
>> the problem is how to correctly set the network header pointer in the
>> skb in rx.c
>> can somebody give me an hint?
>>
>>
>> Thank you
>>
>> --
>> Claudio Rossi
>> -------------------
>> Office @ PoliTO: +39 011 5644194
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
>
> --
> thanks,
> shafi



-- 
Claudio Rossi
-------------------
Office @ PoliTO: +39 011 5644194
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux