MCPcopy Create free account
hub / github.com/F-Stack/f-stack / infiniband_ifattach

Function infiniband_ifattach

freebsd/net/if_infiniband.c:569–620  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

567}
568
569void
570infiniband_ifattach(struct ifnet *ifp, const uint8_t *lla, const uint8_t *llb)
571{
572 struct sockaddr_dl *sdl;
573 struct ifaddr *ifa;
574 int i;
575
576 ifp->if_addrlen = INFINIBAND_ADDR_LEN;
577 ifp->if_hdrlen = INFINIBAND_HDR_LEN;
578 ifp->if_mtu = INFINIBAND_MTU;
579 if_attach(ifp);
580 ifp->if_output = infiniband_output;
581 ifp->if_input = infiniband_input;
582 ifp->if_resolvemulti = infiniband_resolvemulti;
583 ifp->if_requestencap = infiniband_requestencap;
584
585 if (ifp->if_baudrate == 0)
586 ifp->if_baudrate = IF_Gbps(10); /* default value */
587 if (llb != NULL)
588 ifp->if_broadcastaddr = llb;
589
590 ifa = ifp->if_addr;
591 KASSERT(ifa != NULL, ("%s: no lladdr!\n", __func__));
592 sdl = (struct sockaddr_dl *)ifa->ifa_addr;
593 sdl->sdl_type = IFT_INFINIBAND;
594 sdl->sdl_alen = ifp->if_addrlen;
595
596 if (lla != NULL) {
597 memcpy(LLADDR(sdl), lla, ifp->if_addrlen);
598
599 if (ifp->if_hw_addr != NULL)
600 memcpy(ifp->if_hw_addr, lla, ifp->if_addrlen);
601 } else {
602 lla = LLADDR(sdl);
603 }
604
605 /* Attach ethernet compatible network device */
606 bpfattach(ifp, DLT_EN10MB, ETHER_HDR_LEN);
607
608 /* Announce Infiniband MAC address if non-zero. */
609 for (i = 0; i < ifp->if_addrlen; i++)
610 if (lla[i] != 0)
611 break;
612 if (i != ifp->if_addrlen)
613 if_printf(ifp, "Infiniband address: %20D\n", lla, ":");
614
615 /* Add necessary bits are setup; announce it now. */
616 EVENTHANDLER_INVOKE(infiniband_ifattach_event, ifp);
617
618 if (IS_DEFAULT_VNET(curvnet))
619 devctl_notify("INFINIBAND", ifp->if_xname, "IFATTACH", NULL);
620}
621
622/*
623 * Perform common duties while detaching an Infiniband interface

Callers 1

lagg_clone_createFunction · 0.85

Calls 5

if_attachFunction · 0.85
bpfattachFunction · 0.85
if_printfFunction · 0.85
memcpyFunction · 0.50
devctl_notifyFunction · 0.50

Tested by

no test coverage detected