u16 queue_map_min;
        u16 queue_map_max;
+       __u32 skb_priority;     /* skb priority field */
        int node;               /* Memory node */
 
 #ifdef CONFIG_XFRM
                   pkt_dev->queue_map_min,
                   pkt_dev->queue_map_max);
 
+       if (pkt_dev->skb_priority)
+               seq_printf(seq, "     skb_priority: %u\n",
+                          pkt_dev->skb_priority);
+
        if (pkt_dev->flags & F_IPV6) {
                char b1[128], b2[128], b3[128];
                fmt_ip6(b1, pkt_dev->in6_saddr.s6_addr);
                return count;
        }
 
+       if (!strcmp(name, "skb_priority")) {
+               len = num_arg(&user_buffer[i], 9, &value);
+               if (len < 0)
+                       return len;
+
+               i += len;
+               pkt_dev->skb_priority = value;
+               sprintf(pg_result, "OK: skb_priority=%i",
+                       pkt_dev->skb_priority);
+               return count;
+       }
+
        sprintf(pkt_dev->result, "No such parameter \"%s\"", name);
        return -EINVAL;
 }
        skb->transport_header = skb->network_header + sizeof(struct iphdr);
        skb_put(skb, sizeof(struct iphdr) + sizeof(struct udphdr));
        skb_set_queue_mapping(skb, queue_map);
+       skb->priority = pkt_dev->skb_priority;
+
        iph = ip_hdr(skb);
        udph = udp_hdr(skb);
 
        skb->transport_header = skb->network_header + sizeof(struct ipv6hdr);
        skb_put(skb, sizeof(struct ipv6hdr) + sizeof(struct udphdr));
        skb_set_queue_mapping(skb, queue_map);
+       skb->priority = pkt_dev->skb_priority;
        iph = ipv6_hdr(skb);
        udph = udp_hdr(skb);