code: func (c *linkAddrCache) add(k tcpip.FullAddress, v tcpip.LinkAddress) {
  	c.mu.Lock()
  	defer c.mu.Unlock()
  
  	entry, ok := c.cache[k]
  	if ok {
  		s := entry.state()
  		if s != expired && entry.linkAddr == v {
  			// Disregard repeated calls.
  			return
  		}
  		// Check if entry is waiting for address resolution.
  		if s == incomplete {
  			entry.linkAddr = v
  		} else {
  			// Otherwise create a new entry to replace it.
  			entry = c.makeAndAddEntry(k, v)
  		}
  	} else {
  		entry = c.makeAndAddEntry(k, v)
  	}
  
  	entry.changeState(ready)
  }
docs: // add adds a k -> v mapping to the cache.