X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/fb70c35f181fc1df984f31fb69e59bc820158add..f3a65e72dbe5884ceb0f421429ce0d1f29fcb8fa:/package/wprobe/src/kernel/wprobe-core.c diff --git a/package/wprobe/src/kernel/wprobe-core.c b/package/wprobe/src/kernel/wprobe-core.c index ed224577e..cf0c74aba 100644 --- a/package/wprobe/src/kernel/wprobe-core.c +++ b/package/wprobe/src/kernel/wprobe-core.c @@ -31,7 +31,10 @@ #define static #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28) -#define list_for_each_rcu __list_for_each_rcu +#define list_for_each_rcu(pos, head) \ +for (pos = rcu_dereference((head)->next); \ +prefetch(pos->next), pos != (head); \ +pos = rcu_dereference(pos->next)) #endif #define WPROBE_MIN_INTERVAL 100 /* minimum measurement interval in msecs */ @@ -240,8 +243,13 @@ wprobe_add_frame(struct wprobe_iface *dev, const struct wprobe_wlan_hdr *hdr, vo def = j; continue; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38) + if (sk_run_filter(skb, fi->filter) == 0) + continue; +#else if (sk_run_filter(skb, fi->filter, fi->hdr.n_items) == 0) continue; +#endif found = true; break;