[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <201710031336.V9anp0hj%fengguang.wu@intel.com>
Date: Tue, 3 Oct 2017 13:53:10 +0800
From: kbuild test robot <lkp@...el.com>
To: Roopa Prabhu <roopa@...ulusnetworks.com>
Cc: kbuild-all@...org, davem@...emloft.net, netdev@...r.kernel.org,
nikolay@...ulusnetworks.com, stephen@...workplumber.org,
bridge@...ts.linux-foundation.org
Subject: Re: [PATCH net-next 3/3] bridge: suppress nd pkts on
BR_NEIGH_SUPPRESS ports
Hi Roopa,
[auto build test ERROR on net-next/master]
url: https://github.com/0day-ci/linux/commits/Roopa-Prabhu/bridge-neigh-msg-proxy-and-flood-suppression-support/20171003-124610
config: tile-allyesconfig (attached as .config)
compiler: tilegx-linux-gcc (GCC) 4.6.2
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=tile
All errors (new ones prefixed by >>):
net/bridge/br_arp_nd_proxy.c: In function 'br_nd_send':
>> net/bridge/br_arp_nd_proxy.c:310:2: error: implicit declaration of function 'csum_ipv6_magic'
cc1: some warnings being treated as errors
vim +/csum_ipv6_magic +310 net/bridge/br_arp_nd_proxy.c
232
233 static void br_nd_send(struct net_bridge_port *p, struct sk_buff *request,
234 struct neighbour *n, __be16 vlan_proto, u16 vlan_tci,
235 struct nd_msg *ns)
236 {
237 struct net_device *dev = request->dev;
238 struct sk_buff *reply;
239 struct nd_msg *na;
240 struct ipv6hdr *pip6;
241 u8 *daddr;
242 int na_olen = 8; /* opt hdr + ETH_ALEN for target */
243 int ns_olen;
244 int i, len;
245
246 if (!dev)
247 return;
248
249 len = LL_RESERVED_SPACE(dev) + sizeof(struct ipv6hdr) +
250 sizeof(*na) + na_olen + dev->needed_tailroom;
251
252 reply = alloc_skb(len, GFP_ATOMIC);
253 if (!reply)
254 return;
255
256 reply->protocol = htons(ETH_P_IPV6);
257 reply->dev = dev;
258 skb_reserve(reply, LL_RESERVED_SPACE(dev));
259 skb_push(reply, sizeof(struct ethhdr));
260 skb_set_mac_header(reply, 0);
261
262 daddr = eth_hdr(request)->h_source;
263
264 /* Do we need option processing ? */
265 ns_olen = request->len - (skb_network_offset(request) +
266 sizeof(struct ipv6hdr)) - sizeof(*ns);
267 for (i = 0; i < ns_olen - 1; i += (ns->opt[i + 1] << 3)) {
268 if (ns->opt[i] == ND_OPT_SOURCE_LL_ADDR) {
269 daddr = ns->opt + i + sizeof(struct nd_opt_hdr);
270 break;
271 }
272 }
273
274 /* Ethernet header */
275 ether_addr_copy(eth_hdr(reply)->h_dest, daddr);
276 ether_addr_copy(eth_hdr(reply)->h_source, n->ha);
277 eth_hdr(reply)->h_proto = htons(ETH_P_IPV6);
278 reply->protocol = htons(ETH_P_IPV6);
279
280 skb_pull(reply, sizeof(struct ethhdr));
281 skb_set_network_header(reply, 0);
282 skb_put(reply, sizeof(struct ipv6hdr));
283
284 /* IPv6 header */
285 pip6 = ipv6_hdr(reply);
286 memset(pip6, 0, sizeof(struct ipv6hdr));
287 pip6->version = 6;
288 pip6->priority = ipv6_hdr(request)->priority;
289 pip6->nexthdr = IPPROTO_ICMPV6;
290 pip6->hop_limit = 255;
291 pip6->daddr = ipv6_hdr(request)->saddr;
292 pip6->saddr = *(struct in6_addr *)n->primary_key;
293
294 skb_pull(reply, sizeof(struct ipv6hdr));
295 skb_set_transport_header(reply, 0);
296
297 na = (struct nd_msg *)skb_put(reply, sizeof(*na) + na_olen);
298
299 /* Neighbor Advertisement */
300 memset(na, 0, sizeof(*na) + na_olen);
301 na->icmph.icmp6_type = NDISC_NEIGHBOUR_ADVERTISEMENT;
302 na->icmph.icmp6_router = 0; /* XXX: should be 1 ? */
303 na->icmph.icmp6_override = 1;
304 na->icmph.icmp6_solicited = 1;
305 na->target = ns->target;
306 ether_addr_copy(&na->opt[2], n->ha);
307 na->opt[0] = ND_OPT_TARGET_LL_ADDR;
308 na->opt[1] = na_olen >> 3;
309
> 310 na->icmph.icmp6_cksum = csum_ipv6_magic(&pip6->saddr,
311 &pip6->daddr,
312 sizeof(*na) + na_olen,
313 IPPROTO_ICMPV6,
314 csum_partial(na, sizeof(*na) + na_olen, 0));
315
316 pip6->payload_len = htons(sizeof(*na) + na_olen);
317
318 skb_push(reply, sizeof(struct ipv6hdr));
319 skb_push(reply, sizeof(struct ethhdr));
320
321 reply->ip_summed = CHECKSUM_UNNECESSARY;
322
323 if (p) {
324 struct net_bridge_vlan_group *vg;
325 u16 pvid;
326
327 vg = nbp_vlan_group_rcu(p);
328 pvid = br_get_pvid(vg);
329 if (pvid && pvid == vlan_tci)
330 vlan_tci = 0;
331 }
332
333 if (vlan_tci != 0) {
334 reply = vlan_insert_tag_set_proto(reply, vlan_proto, vlan_tci);
335 if (!reply) {
336 net_err_ratelimited("evpn: failed to insert VLAN tag\n");
337 return;
338 }
339 }
340
341 netdev_dbg(dev, "nd send dev %s dst %pI6 dst_hw %pM src %pI6 src_hw %pM\n",
342 dev->name, &pip6->daddr, daddr, &pip6->saddr, n->ha);
343
344 dev_queue_xmit(reply);
345 }
346
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Download attachment ".config.gz" of type "application/gzip" (50505 bytes)
Powered by blists - more mailing lists