Commit 68bf9f0b91ed4440951312cf7d4ffa70b9e8cf73
Committed by
David S. Miller
1 parent
5aa8b57200
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
pktgen: set different default min_pkt_size for different protocols
ETH_ZLEN is too small for IPv6, so this default value is not suitable. Cc: David S. Miller <davem@davemloft.net> Signed-off-by: Cong Wang <amwang@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 1 changed file with 20 additions and 7 deletions Side-by-side Diff
net/core/pktgen.c
... | ... | @@ -248,8 +248,8 @@ |
248 | 248 | int removal_mark; /* non-zero => the device is marked for |
249 | 249 | * removal by worker thread */ |
250 | 250 | |
251 | - int min_pkt_size; /* = ETH_ZLEN; */ | |
252 | - int max_pkt_size; /* = ETH_ZLEN; */ | |
251 | + int min_pkt_size; | |
252 | + int max_pkt_size; | |
253 | 253 | int pkt_overhead; /* overhead for MPLS, VLANs, IPSEC etc */ |
254 | 254 | int nfrags; |
255 | 255 | struct page *page; |
256 | 256 | |
... | ... | @@ -2036,10 +2036,14 @@ |
2036 | 2036 | /* Set up Dest MAC */ |
2037 | 2037 | memcpy(&(pkt_dev->hh[0]), pkt_dev->dst_mac, ETH_ALEN); |
2038 | 2038 | |
2039 | - /* Set up pkt size */ | |
2040 | - pkt_dev->cur_pkt_size = pkt_dev->min_pkt_size; | |
2041 | - | |
2042 | 2039 | if (pkt_dev->flags & F_IPV6) { |
2040 | + if (pkt_dev->min_pkt_size == 0) { | |
2041 | + pkt_dev->min_pkt_size = 14 + sizeof(struct ipv6hdr) | |
2042 | + + sizeof(struct udphdr) | |
2043 | + + sizeof(struct pktgen_hdr) | |
2044 | + + pkt_dev->pkt_overhead; | |
2045 | + } | |
2046 | + | |
2043 | 2047 | /* |
2044 | 2048 | * Skip this automatic address setting until locks or functions |
2045 | 2049 | * gets exported |
... | ... | @@ -2086,6 +2090,13 @@ |
2086 | 2090 | } |
2087 | 2091 | #endif |
2088 | 2092 | } else { |
2093 | + if (pkt_dev->min_pkt_size == 0) { | |
2094 | + pkt_dev->min_pkt_size = 14 + sizeof(struct iphdr) | |
2095 | + + sizeof(struct udphdr) | |
2096 | + + sizeof(struct pktgen_hdr) | |
2097 | + + pkt_dev->pkt_overhead; | |
2098 | + } | |
2099 | + | |
2089 | 2100 | pkt_dev->saddr_min = 0; |
2090 | 2101 | pkt_dev->saddr_max = 0; |
2091 | 2102 | if (strlen(pkt_dev->src_min) == 0) { |
... | ... | @@ -2111,6 +2122,10 @@ |
2111 | 2122 | pkt_dev->daddr_max = in_aton(pkt_dev->dst_max); |
2112 | 2123 | } |
2113 | 2124 | /* Initialize current values. */ |
2125 | + pkt_dev->cur_pkt_size = pkt_dev->min_pkt_size; | |
2126 | + if (pkt_dev->min_pkt_size > pkt_dev->max_pkt_size) | |
2127 | + pkt_dev->max_pkt_size = pkt_dev->min_pkt_size; | |
2128 | + | |
2114 | 2129 | pkt_dev->cur_dst_mac_offset = 0; |
2115 | 2130 | pkt_dev->cur_src_mac_offset = 0; |
2116 | 2131 | pkt_dev->cur_saddr = pkt_dev->saddr_min; |
... | ... | @@ -3548,8 +3563,6 @@ |
3548 | 3563 | } |
3549 | 3564 | |
3550 | 3565 | pkt_dev->removal_mark = 0; |
3551 | - pkt_dev->min_pkt_size = ETH_ZLEN; | |
3552 | - pkt_dev->max_pkt_size = ETH_ZLEN; | |
3553 | 3566 | pkt_dev->nfrags = 0; |
3554 | 3567 | pkt_dev->delay = pg_delay_d; |
3555 | 3568 | pkt_dev->count = pg_count_d; |