|
@@ -378,6 +378,7 @@ struct pktgen_dev {
|
|
|
|
|
|
u16 queue_map_min;
|
|
u16 queue_map_min;
|
|
u16 queue_map_max;
|
|
u16 queue_map_max;
|
|
|
|
+ __u32 skb_priority; /* skb priority field */
|
|
int node; /* Memory node */
|
|
int node; /* Memory node */
|
|
|
|
|
|
#ifdef CONFIG_XFRM
|
|
#ifdef CONFIG_XFRM
|
|
@@ -547,6 +548,10 @@ static int pktgen_if_show(struct seq_file *seq, void *v)
|
|
pkt_dev->queue_map_min,
|
|
pkt_dev->queue_map_min,
|
|
pkt_dev->queue_map_max);
|
|
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) {
|
|
if (pkt_dev->flags & F_IPV6) {
|
|
char b1[128], b2[128], b3[128];
|
|
char b1[128], b2[128], b3[128];
|
|
fmt_ip6(b1, pkt_dev->in6_saddr.s6_addr);
|
|
fmt_ip6(b1, pkt_dev->in6_saddr.s6_addr);
|
|
@@ -1711,6 +1716,18 @@ static ssize_t pktgen_if_write(struct file *file,
|
|
return count;
|
|
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);
|
|
sprintf(pkt_dev->result, "No such parameter \"%s\"", name);
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
@@ -2671,6 +2688,8 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
|
|
skb->transport_header = skb->network_header + sizeof(struct iphdr);
|
|
skb->transport_header = skb->network_header + sizeof(struct iphdr);
|
|
skb_put(skb, sizeof(struct iphdr) + sizeof(struct udphdr));
|
|
skb_put(skb, sizeof(struct iphdr) + sizeof(struct udphdr));
|
|
skb_set_queue_mapping(skb, queue_map);
|
|
skb_set_queue_mapping(skb, queue_map);
|
|
|
|
+ skb->priority = pkt_dev->skb_priority;
|
|
|
|
+
|
|
iph = ip_hdr(skb);
|
|
iph = ip_hdr(skb);
|
|
udph = udp_hdr(skb);
|
|
udph = udp_hdr(skb);
|
|
|
|
|
|
@@ -3016,6 +3035,7 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev,
|
|
skb->transport_header = skb->network_header + sizeof(struct ipv6hdr);
|
|
skb->transport_header = skb->network_header + sizeof(struct ipv6hdr);
|
|
skb_put(skb, sizeof(struct ipv6hdr) + sizeof(struct udphdr));
|
|
skb_put(skb, sizeof(struct ipv6hdr) + sizeof(struct udphdr));
|
|
skb_set_queue_mapping(skb, queue_map);
|
|
skb_set_queue_mapping(skb, queue_map);
|
|
|
|
+ skb->priority = pkt_dev->skb_priority;
|
|
iph = ipv6_hdr(skb);
|
|
iph = ipv6_hdr(skb);
|
|
udph = udp_hdr(skb);
|
|
udph = udp_hdr(skb);
|
|
|
|
|