- ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
-+
- } else {
- kfree_skb(skb);
- /* Jamal, now you will not able to escape explaining
-@@ -1922,6 +1946,29 @@
- ret = NET_RX_DROP;
- }
-
-+ if ((*cur_elevator)>0) {
-+ skb2->skb_tag = *cur_elevator;
-+ list_for_each_entry_rcu(ptype, &ptype_all, list) {
-+ if ((!ptype->dev || ptype->dev == skb2->dev) && (ptype->sknid_elevator)) {
-+ ret = deliver_skb(skb2, ptype, orig_dev);
-+ }
++ /* At this point, cur_elevator may be -2 or a positive value, in
++ * case a previous protocol handler marked it */
++ if (*cur_elevator) {
++ atomic_inc(&skb->users);