ifnet: make if_alloc_domain() never fail

The last consumer of if_com_alloc() is firewire.  It never fails
to allocate.  Most likely the if_com_alloc() KPI will go away
together with if_fwip(), less likely new consumers of if_com_alloc()
will be added, but they would need to follow the no fail KPI.
This commit is contained in:
Gleb Smirnoff 2021-11-22 19:49:57 -08:00
parent 1e3ca25d92
commit 4787572d05

View File

@ -406,7 +406,7 @@ ifindex_alloc(void **old)
}
static void
ifindex_free_locked(u_short idx)
ifindex_free(u_short idx)
{
IFNET_WLOCK_ASSERT();
@ -417,15 +417,6 @@ ifindex_free_locked(u_short idx)
V_if_index--;
}
static void
ifindex_free(u_short idx)
{
IFNET_WLOCK();
ifindex_free_locked(idx);
IFNET_WUNLOCK();
}
static void
ifnet_setbyindex(u_short idx, struct ifnet *ifp)
{
@ -636,11 +627,8 @@ if_alloc_domain(u_char type, int numa_domain)
#endif
if (if_com_alloc[type] != NULL) {
ifp->if_l2com = if_com_alloc[type](type, ifp);
if (ifp->if_l2com == NULL) {
free(ifp, M_IFNET);
ifindex_free(idx);
return (NULL);
}
KASSERT(ifp->if_l2com, ("%s: if_com_alloc[%u] failed", __func__,
type));
}
IF_ADDR_LOCK_INIT(ifp);
@ -735,7 +723,7 @@ if_free(struct ifnet *ifp)
KASSERT(ifp == ifnet_byindex(ifp->if_index),
("%s: freeing unallocated ifnet", ifp->if_xname));
ifindex_free_locked(ifp->if_index);
ifindex_free(ifp->if_index);
IFNET_WUNLOCK();
if (refcount_release(&ifp->if_refcount))
@ -1356,7 +1344,7 @@ if_vmove(struct ifnet *ifp, struct vnet *new_vnet)
* or we'd lock on one vnet and unlock on another.
*/
IFNET_WLOCK();
ifindex_free_locked(ifp->if_index);
ifindex_free(ifp->if_index);
IFNET_WUNLOCK();
/*