Commit 68bf9f0b91ed4440951312cf7d4ffa70b9e8cf73

Authored by Amerigo Wang
Committed by David S. Miller
1 parent 5aa8b57200

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

... ... @@ -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;