@ -378,6 +378,7 @@ struct pktgen_dev {
u16 queue_map_min ;
u16 queue_map_max ;
__u32 skb_priority ; /* skb priority field */
int node ; /* Memory node */
# 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_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 ) ;
@ -1711,6 +1716,18 @@ static ssize_t pktgen_if_write(struct file *file,
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 ;
}
@ -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_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 ) ;
@ -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_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 ) ;