aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/pktgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/pktgen.c')
-rw-r--r--net/core/pktgen.c52
1 files changed, 19 insertions, 33 deletions
diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index a6bdcb0d43d9..3b2556d01ad6 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -465,17 +465,6 @@ static inline __u64 pg_div64(__u64 n, __u64 base)
465 return tmp; 465 return tmp;
466} 466}
467 467
468static inline u32 pktgen_random(void)
469{
470#if 0
471 __u32 n;
472 get_random_bytes(&n, 4);
473 return n;
474#else
475 return net_random();
476#endif
477}
478
479static inline __u64 getCurMs(void) 468static inline __u64 getCurMs(void)
480{ 469{
481 struct timeval tv; 470 struct timeval tv;
@@ -2092,7 +2081,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
2092 int flow = 0; 2081 int flow = 0;
2093 2082
2094 if (pkt_dev->cflows) { 2083 if (pkt_dev->cflows) {
2095 flow = pktgen_random() % pkt_dev->cflows; 2084 flow = random32() % pkt_dev->cflows;
2096 2085
2097 if (pkt_dev->flows[flow].count > pkt_dev->lflow) 2086 if (pkt_dev->flows[flow].count > pkt_dev->lflow)
2098 pkt_dev->flows[flow].count = 0; 2087 pkt_dev->flows[flow].count = 0;
@@ -2104,7 +2093,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
2104 __u32 tmp; 2093 __u32 tmp;
2105 2094
2106 if (pkt_dev->flags & F_MACSRC_RND) 2095 if (pkt_dev->flags & F_MACSRC_RND)
2107 mc = pktgen_random() % (pkt_dev->src_mac_count); 2096 mc = random32() % pkt_dev->src_mac_count;
2108 else { 2097 else {
2109 mc = pkt_dev->cur_src_mac_offset++; 2098 mc = pkt_dev->cur_src_mac_offset++;
2110 if (pkt_dev->cur_src_mac_offset > 2099 if (pkt_dev->cur_src_mac_offset >
@@ -2130,7 +2119,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
2130 __u32 tmp; 2119 __u32 tmp;
2131 2120
2132 if (pkt_dev->flags & F_MACDST_RND) 2121 if (pkt_dev->flags & F_MACDST_RND)
2133 mc = pktgen_random() % (pkt_dev->dst_mac_count); 2122 mc = random32() % pkt_dev->dst_mac_count;
2134 2123
2135 else { 2124 else {
2136 mc = pkt_dev->cur_dst_mac_offset++; 2125 mc = pkt_dev->cur_dst_mac_offset++;
@@ -2157,24 +2146,23 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
2157 for(i = 0; i < pkt_dev->nr_labels; i++) 2146 for(i = 0; i < pkt_dev->nr_labels; i++)
2158 if (pkt_dev->labels[i] & MPLS_STACK_BOTTOM) 2147 if (pkt_dev->labels[i] & MPLS_STACK_BOTTOM)
2159 pkt_dev->labels[i] = MPLS_STACK_BOTTOM | 2148 pkt_dev->labels[i] = MPLS_STACK_BOTTOM |
2160 ((__force __be32)pktgen_random() & 2149 ((__force __be32)random32() &
2161 htonl(0x000fffff)); 2150 htonl(0x000fffff));
2162 } 2151 }
2163 2152
2164 if ((pkt_dev->flags & F_VID_RND) && (pkt_dev->vlan_id != 0xffff)) { 2153 if ((pkt_dev->flags & F_VID_RND) && (pkt_dev->vlan_id != 0xffff)) {
2165 pkt_dev->vlan_id = pktgen_random() % 4096; 2154 pkt_dev->vlan_id = random32() & (4096-1);
2166 } 2155 }
2167 2156
2168 if ((pkt_dev->flags & F_SVID_RND) && (pkt_dev->svlan_id != 0xffff)) { 2157 if ((pkt_dev->flags & F_SVID_RND) && (pkt_dev->svlan_id != 0xffff)) {
2169 pkt_dev->svlan_id = pktgen_random() % 4096; 2158 pkt_dev->svlan_id = random32() & (4096 - 1);
2170 } 2159 }
2171 2160
2172 if (pkt_dev->udp_src_min < pkt_dev->udp_src_max) { 2161 if (pkt_dev->udp_src_min < pkt_dev->udp_src_max) {
2173 if (pkt_dev->flags & F_UDPSRC_RND) 2162 if (pkt_dev->flags & F_UDPSRC_RND)
2174 pkt_dev->cur_udp_src = 2163 pkt_dev->cur_udp_src = random32() %
2175 ((pktgen_random() % 2164 (pkt_dev->udp_src_max - pkt_dev->udp_src_min)
2176 (pkt_dev->udp_src_max - pkt_dev->udp_src_min)) + 2165 + pkt_dev->udp_src_min;
2177 pkt_dev->udp_src_min);
2178 2166
2179 else { 2167 else {
2180 pkt_dev->cur_udp_src++; 2168 pkt_dev->cur_udp_src++;
@@ -2185,10 +2173,9 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
2185 2173
2186 if (pkt_dev->udp_dst_min < pkt_dev->udp_dst_max) { 2174 if (pkt_dev->udp_dst_min < pkt_dev->udp_dst_max) {
2187 if (pkt_dev->flags & F_UDPDST_RND) { 2175 if (pkt_dev->flags & F_UDPDST_RND) {
2188 pkt_dev->cur_udp_dst = 2176 pkt_dev->cur_udp_dst = random32() %
2189 ((pktgen_random() % 2177 (pkt_dev->udp_dst_max - pkt_dev->udp_dst_min)
2190 (pkt_dev->udp_dst_max - pkt_dev->udp_dst_min)) + 2178 + pkt_dev->udp_dst_min;
2191 pkt_dev->udp_dst_min);
2192 } else { 2179 } else {
2193 pkt_dev->cur_udp_dst++; 2180 pkt_dev->cur_udp_dst++;
2194 if (pkt_dev->cur_udp_dst >= pkt_dev->udp_dst_max) 2181 if (pkt_dev->cur_udp_dst >= pkt_dev->udp_dst_max)
@@ -2203,7 +2190,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
2203 saddr_max))) { 2190 saddr_max))) {
2204 __u32 t; 2191 __u32 t;
2205 if (pkt_dev->flags & F_IPSRC_RND) 2192 if (pkt_dev->flags & F_IPSRC_RND)
2206 t = ((pktgen_random() % (imx - imn)) + imn); 2193 t = random32() % (imx - imn) + imn;
2207 else { 2194 else {
2208 t = ntohl(pkt_dev->cur_saddr); 2195 t = ntohl(pkt_dev->cur_saddr);
2209 t++; 2196 t++;
@@ -2224,14 +2211,13 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
2224 __be32 s; 2211 __be32 s;
2225 if (pkt_dev->flags & F_IPDST_RND) { 2212 if (pkt_dev->flags & F_IPDST_RND) {
2226 2213
2227 t = pktgen_random() % (imx - imn) + imn; 2214 t = random32() % (imx - imn) + imn;
2228 s = htonl(t); 2215 s = htonl(t);
2229 2216
2230 while (LOOPBACK(s) || MULTICAST(s) 2217 while (LOOPBACK(s) || MULTICAST(s)
2231 || BADCLASS(s) || ZERONET(s) 2218 || BADCLASS(s) || ZERONET(s)
2232 || LOCAL_MCAST(s)) { 2219 || LOCAL_MCAST(s)) {
2233 t = (pktgen_random() % 2220 t = random32() % (imx - imn) + imn;
2234 (imx - imn)) + imn;
2235 s = htonl(t); 2221 s = htonl(t);
2236 } 2222 }
2237 pkt_dev->cur_daddr = s; 2223 pkt_dev->cur_daddr = s;
@@ -2263,7 +2249,7 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
2263 2249
2264 for (i = 0; i < 4; i++) { 2250 for (i = 0; i < 4; i++) {
2265 pkt_dev->cur_in6_daddr.s6_addr32[i] = 2251 pkt_dev->cur_in6_daddr.s6_addr32[i] =
2266 (((__force __be32)pktgen_random() | 2252 (((__force __be32)random32() |
2267 pkt_dev->min_in6_daddr.s6_addr32[i]) & 2253 pkt_dev->min_in6_daddr.s6_addr32[i]) &
2268 pkt_dev->max_in6_daddr.s6_addr32[i]); 2254 pkt_dev->max_in6_daddr.s6_addr32[i]);
2269 } 2255 }
@@ -2273,9 +2259,9 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
2273 if (pkt_dev->min_pkt_size < pkt_dev->max_pkt_size) { 2259 if (pkt_dev->min_pkt_size < pkt_dev->max_pkt_size) {
2274 __u32 t; 2260 __u32 t;
2275 if (pkt_dev->flags & F_TXSIZE_RND) { 2261 if (pkt_dev->flags & F_TXSIZE_RND) {
2276 t = ((pktgen_random() % 2262 t = random32() %
2277 (pkt_dev->max_pkt_size - pkt_dev->min_pkt_size)) 2263 (pkt_dev->max_pkt_size - pkt_dev->min_pkt_size)
2278 + pkt_dev->min_pkt_size); 2264 + pkt_dev->min_pkt_size;
2279 } else { 2265 } else {
2280 t = pkt_dev->cur_pkt_size + 1; 2266 t = pkt_dev->cur_pkt_size + 1;
2281 if (t > pkt_dev->max_pkt_size) 2267 if (t > pkt_dev->max_pkt_size)