code: func (s *Stack) GetLinkAddress(nicid tcpip.NICID, addr, localAddr tcpip.Address, protocol tcpip.NetworkProtocolNumber, waker *sleep.Waker) (tcpip.LinkAddress, <-chan struct{}, *tcpip.Error) {
  	s.mu.RLock()
  	nic := s.nics[nicid]
  	if nic == nil {
  		s.mu.RUnlock()
  		return "", nil, tcpip.ErrUnknownNICID
  	}
  	s.mu.RUnlock()
  
  	fullAddr := tcpip.FullAddress{NIC: nicid, Addr: addr}
  	linkRes := s.linkAddrResolvers[protocol]
  	return s.linkAddrCache.get(fullAddr, linkRes, localAddr, nic.linkEP, waker)
  }
docs: // GetLinkAddress implements LinkAddressCache.GetLinkAddress.