From 5b51027ca58fd8141a838a2300d6840e4523401b Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 29 Sep 2022 22:50:39 -0400 Subject: [PATCH] openbsd_network: Add a real implementation of MCLGETL. The old alias had a number of shortcomings which made it not match OpenBSD and thus special-casing had to be used in drivers. The new version should match OpenBSD's semantics precisely. --- .../drivers/network/wlan/iaxwifi200/dev/pci/if_iwx.c | 4 ---- .../network/wlan/idualwifi7260/dev/pci/if_iwm.c | 4 ---- src/libs/compat/openbsd_network/compat/sys/mbuf.h | 10 +++++++++- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/add-ons/kernel/drivers/network/wlan/iaxwifi200/dev/pci/if_iwx.c b/src/add-ons/kernel/drivers/network/wlan/iaxwifi200/dev/pci/if_iwx.c index 1ff01b3f1b..0789e5e8cf 100644 --- a/src/add-ons/kernel/drivers/network/wlan/iaxwifi200/dev/pci/if_iwx.c +++ b/src/add-ons/kernel/drivers/network/wlan/iaxwifi200/dev/pci/if_iwx.c @@ -5681,11 +5681,7 @@ iwx_send_cmd(struct iwx_softc *sc, struct iwx_host_cmd *hcmd) err = EINVAL; goto out; } -#ifdef __FreeBSD_version - m = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR, IWX_RBUF_SIZE); -#else m = MCLGETL(NULL, M_DONTWAIT, totlen); -#endif if (m == NULL) { printf("%s: could not get fw cmd mbuf (%zd bytes)\n", DEVNAME(sc), totlen); diff --git a/src/add-ons/kernel/drivers/network/wlan/idualwifi7260/dev/pci/if_iwm.c b/src/add-ons/kernel/drivers/network/wlan/idualwifi7260/dev/pci/if_iwm.c index c3564d8b8e..bea8ddb859 100644 --- a/src/add-ons/kernel/drivers/network/wlan/idualwifi7260/dev/pci/if_iwm.c +++ b/src/add-ons/kernel/drivers/network/wlan/idualwifi7260/dev/pci/if_iwm.c @@ -6366,11 +6366,7 @@ iwm_send_cmd(struct iwm_softc *sc, struct iwm_host_cmd *hcmd) err = EINVAL; goto out; } -#ifdef __FreeBSD_version - m = m_getjcl(M_NOWAIT, MT_DATA, M_PKTHDR, IWM_RBUF_SIZE); -#else m = MCLGETL(NULL, M_DONTWAIT, totlen); -#endif if (m == NULL) { printf("%s: could not get fw cmd mbuf (%zd bytes)\n", DEVNAME(sc), totlen); diff --git a/src/libs/compat/openbsd_network/compat/sys/mbuf.h b/src/libs/compat/openbsd_network/compat/sys/mbuf.h index 1c5392d5e7..1a38ebcbea 100644 --- a/src/libs/compat/openbsd_network/compat/sys/mbuf.h +++ b/src/libs/compat/openbsd_network/compat/sys/mbuf.h @@ -27,8 +27,16 @@ #define MAXMCLBYTES MJUM16BYTES -#define MCLGETL m_cljget +static struct mbuf* +MCLGETL(struct mbuf* m, int how, int size) +{ + if (m == NULL) + return m_get2(size, how, MT_DATA, M_PKTHDR); + + m_cljget(m, how, size); + return m; +} static int m_dup_pkthdr_openbsd(struct mbuf* to, const struct mbuf* from, int how)