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
+5 -17
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();
/*