Commit 9eea9222 authored by Alexei Starovoitov's avatar Alexei Starovoitov Committed by David S. Miller

pktgen: fix packet generation

pkt_gen->last_ok was not set properly, so after the first burst
pktgen instead of allocating new packet, will reuse old one, advance
eth_type_trans further, which would mean the stack will be seeing very
short bogus packets.

Fixes: 62f64aed ("pktgen: introduce xmit_mode '<start_xmit|netif_receive>'")
Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 147ef3e2
...@@ -1189,6 +1189,16 @@ static ssize_t pktgen_if_write(struct file *file, ...@@ -1189,6 +1189,16 @@ static ssize_t pktgen_if_write(struct file *file,
return -ENOTSUPP; return -ENOTSUPP;
pkt_dev->xmit_mode = M_NETIF_RECEIVE; pkt_dev->xmit_mode = M_NETIF_RECEIVE;
/* make sure new packet is allocated every time
* pktgen_xmit() is called
*/
pkt_dev->last_ok = 1;
/* override clone_skb if user passed default value
* at module loading time
*/
pkt_dev->clone_skb = 0;
} else { } else {
sprintf(pg_result, sprintf(pg_result,
"xmit_mode -:%s:- unknown\nAvailable modes: %s", "xmit_mode -:%s:- unknown\nAvailable modes: %s",
...@@ -3415,7 +3425,6 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev) ...@@ -3415,7 +3425,6 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev)
/* get out of the loop and wait /* get out of the loop and wait
* until skb is consumed * until skb is consumed
*/ */
pkt_dev->last_ok = 1;
break; break;
} }
/* skb was 'freed' by stack, so clean few /* skb was 'freed' by stack, so clean few
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment