sync with OpenBSD -current

This commit is contained in:
purplerain 2024-01-20 03:21:37 +00:00
parent fdad81bcfc
commit ed28f347da
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
53 changed files with 1138 additions and 405 deletions

View file

@ -1,4 +1,4 @@
/* $OpenBSD: if_re_cardbus.c,v 1.30 2022/04/06 18:59:28 naddy Exp $ */
/* $OpenBSD: if_re_cardbus.c,v 1.31 2024/01/19 03:46:15 dlg Exp $ */
/*
* Copyright (c) 2005 Peter Valchev <pvalchev@openbsd.org>
@ -232,19 +232,8 @@ re_cardbus_detach(struct device *self, int flags)
struct re_cardbus_softc *csc = (void *)self;
struct rl_softc *sc = &csc->sc_rl;
struct cardbus_devfunc *ct = csc->ct;
struct ifnet *ifp = &sc->sc_arpcom.ac_if;
/* Remove timeout handler */
timeout_del(&sc->timer_handle);
/* Detach PHY */
if (LIST_FIRST(&sc->sc_mii.mii_phys) != NULL)
mii_detach(&sc->sc_mii, MII_PHY_ANY, MII_OFFSET_ANY);
/* Delete media stuff */
ifmedia_delete_instance(&sc->sc_mii.mii_media, IFM_INST_ANY);
ether_ifdetach(ifp);
if_detach(ifp);
re_detach(sc);
/* Disable interrupts */
if (sc->sc_ih != NULL)

View file

@ -1,4 +1,4 @@
/* $OpenBSD: rkdrm.c,v 1.19 2024/01/16 23:37:50 jsg Exp $ */
/* $OpenBSD: rkdrm.c,v 1.20 2024/01/19 17:51:15 kettenis Exp $ */
/* $NetBSD: rk_drm.c,v 1.3 2019/12/15 01:00:58 mrg Exp $ */
/*-
* Copyright (c) 2019 Jared D. McNeill <jmcneill@invisible.ca>
@ -266,7 +266,7 @@ rkdrm_wsioctl(void *v, u_long cmd, caddr_t data, int flag, struct proc *p)
return ws_set_param(dp);
return -1;
case WSDISPLAYIO_GTYPE:
*(u_int *)data = WSDISPLAY_TYPE_RKDRM;
*(u_int *)data = WSDISPLAY_TYPE_KMS;
return 0;
case WSDISPLAYIO_GINFO:
wdf = (struct wsdisplay_fbinfo *)data;

View file

@ -1,4 +1,4 @@
/* $OpenBSD: re.c,v 1.216 2023/11/10 15:51:20 bluhm Exp $ */
/* $OpenBSD: re.c,v 1.217 2024/01/19 03:46:14 dlg Exp $ */
/* $FreeBSD: if_re.c,v 1.31 2004/09/04 07:54:05 ru Exp $ */
/*
* Copyright (c) 1997, 1998-2003
@ -199,6 +199,7 @@ int re_wol(struct ifnet*, int);
#endif
#if NKSTAT > 0
void re_kstat_attach(struct rl_softc *);
void re_kstat_detach(struct rl_softc *);
#endif
void in_delayed_cksum(struct mbuf *);
@ -1128,6 +1129,27 @@ fail_0:
return (1);
}
void
re_detach(struct rl_softc *sc)
{
struct ifnet *ifp = &sc->sc_arpcom.ac_if;
#if NKSTAT > 0
re_kstat_detach(sc);
#endif
/* Remove timeout handler */
timeout_del(&sc->timer_handle);
/* Detach PHY */
if (LIST_FIRST(&sc->sc_mii.mii_phys) != NULL)
mii_detach(&sc->sc_mii, MII_PHY_ANY, MII_OFFSET_ANY);
/* Delete media stuff */
ifmedia_delete_instance(&sc->sc_mii.mii_media, IFM_INST_ANY);
ether_ifdetach(ifp);
if_detach(ifp);
}
int
re_newbuf(struct rl_softc *sc)
@ -2604,10 +2626,33 @@ unmap:
bus_dmamem_unmap(sc->sc_dmat,
(caddr_t)re_ks_sc->re_ks_sc_stats, sizeof(struct re_stats));
freedma:
bus_dmamem_free(sc->sc_dmat, &re_ks_sc->re_ks_sc_seg, 1);
bus_dmamem_free(sc->sc_dmat, &re_ks_sc->re_ks_sc_seg,
re_ks_sc->re_ks_sc_nsegs);
destroy:
bus_dmamap_destroy(sc->sc_dmat, re_ks_sc->re_ks_sc_map);
free:
free(re_ks_sc, M_DEVBUF, sizeof(*re_ks_sc));
}
void
re_kstat_detach(struct rl_softc *sc)
{
struct kstat *ks = sc->rl_kstat;
struct re_kstat_softc *re_ks_sc;
if (ks == NULL)
return;
kstat_remove(ks);
re_ks_sc = ks->ks_ptr;
kstat_destroy(ks);
bus_dmamap_unload(sc->sc_dmat, re_ks_sc->re_ks_sc_map);
bus_dmamem_unmap(sc->sc_dmat,
(caddr_t)re_ks_sc->re_ks_sc_stats, sizeof(struct re_stats));
bus_dmamem_free(sc->sc_dmat, &re_ks_sc->re_ks_sc_seg,
re_ks_sc->re_ks_sc_nsegs);
bus_dmamap_destroy(sc->sc_dmat, re_ks_sc->re_ks_sc_map);
free(re_ks_sc, M_DEVBUF, sizeof(*re_ks_sc));
}
#endif /* NKSTAT > 0 */

View file

@ -1,4 +1,4 @@
/* $OpenBSD: revar.h,v 1.7 2010/07/27 20:53:39 kettenis Exp $ */
/* $OpenBSD: revar.h,v 1.8 2024/01/19 03:46:15 dlg Exp $ */
/*
* Copyright (c) 2005 Peter Valchev <pvalchev@openbsd.org>
@ -18,6 +18,7 @@
int re_intr(void *);
int re_attach(struct rl_softc *, const char *);
void re_detach(struct rl_softc *);
void re_reset(struct rl_softc *);
int re_init(struct ifnet *);
void re_stop(struct ifnet *);

View file

@ -1,4 +1,4 @@
/* $OpenBSD: if_bnxt.c,v 1.44 2024/01/15 08:56:45 jmatthew Exp $ */
/* $OpenBSD: if_bnxt.c,v 1.45 2024/01/19 03:25:13 jmatthew Exp $ */
/*-
* Broadcom NetXtreme-C/E network driver.
*
@ -68,6 +68,7 @@
#include <net/if.h>
#include <net/if_media.h>
#include <net/route.h>
#include <net/toeplitz.h>
#if NBPFILTER > 0
@ -75,7 +76,12 @@
#endif
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/ip6.h>
#include <netinet/if_ether.h>
#include <netinet/tcp.h>
#include <netinet/tcp_timer.h>
#include <netinet/tcp_var.h>
#define BNXT_HWRM_BAR 0x10
#define BNXT_DOORBELL_BAR 0x18
@ -642,6 +648,7 @@ bnxt_attach(struct device *parent, struct device *self, void *aux)
ifp->if_capabilities = IFCAP_VLAN_MTU | IFCAP_CSUM_IPv4 |
IFCAP_CSUM_UDPv4 | IFCAP_CSUM_TCPv4 | IFCAP_CSUM_UDPv6 |
IFCAP_CSUM_TCPv6;
ifp->if_capabilities |= IFCAP_TSOv4 | IFCAP_TSOv6;
#if NVLAN > 0
ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING;
#endif
@ -929,7 +936,7 @@ bnxt_queue_up(struct bnxt_softc *sc, struct bnxt_queue *bq)
for (i = 0; i < tx->tx_ring.ring_size; i++) {
bs = &tx->tx_slots[i];
if (bus_dmamap_create(sc->sc_dmat, BNXT_MAX_MTU, BNXT_MAX_TX_SEGS,
if (bus_dmamap_create(sc->sc_dmat, MAXMCLBYTES, BNXT_MAX_TX_SEGS,
BNXT_MAX_MTU, 0, BUS_DMA_WAITOK | BUS_DMA_ALLOCNOW,
&bs->bs_map) != 0) {
printf("%s: failed to allocate tx dma maps\n",
@ -1337,11 +1344,12 @@ bnxt_start(struct ifqueue *ifq)
struct bnxt_tx_queue *tx = ifq->ifq_softc;
struct bnxt_softc *sc = tx->tx_softc;
struct bnxt_slot *bs;
struct ether_extracted ext;
bus_dmamap_t map;
struct mbuf *m;
u_int idx, free, used, laststart;
uint16_t txflags;
int i;
uint16_t txflags, lflags;
int i, slen;
txring = (struct tx_bd_short *)BNXT_DMA_KVA(tx->tx_ring_mem);
@ -1385,12 +1393,16 @@ bnxt_start(struct ifqueue *ifq)
txring[idx].len = htole16(map->dm_segs[0].ds_len);
txring[idx].opaque = tx->tx_prod;
txring[idx].addr = htole64(map->dm_segs[0].ds_addr);
if (m->m_pkthdr.csum_flags & M_TCP_TSO)
slen = m->m_pkthdr.ph_mss;
else
slen = map->dm_mapsize;
if (map->dm_mapsize < 512)
if (slen < 512)
txflags = TX_BD_LONG_FLAGS_LHINT_LT512;
else if (map->dm_mapsize < 1024)
else if (slen < 1024)
txflags = TX_BD_LONG_FLAGS_LHINT_LT1K;
else if (map->dm_mapsize < 2048)
else if (slen < 2048)
txflags = TX_BD_LONG_FLAGS_LHINT_LT2K;
else
txflags = TX_BD_LONG_FLAGS_LHINT_GTE2K;
@ -1409,12 +1421,44 @@ bnxt_start(struct ifqueue *ifq)
/* long tx descriptor */
txhi = (struct tx_bd_long_hi *)&txring[idx];
memset(txhi, 0, sizeof(*txhi));
txflags = 0;
if (m->m_pkthdr.csum_flags & (M_UDP_CSUM_OUT | M_TCP_CSUM_OUT))
txflags |= TX_BD_LONG_LFLAGS_TCP_UDP_CHKSUM;
if (m->m_pkthdr.csum_flags & M_IPV4_CSUM_OUT)
txflags |= TX_BD_LONG_LFLAGS_IP_CHKSUM;
txhi->lflags = htole16(txflags);
lflags = 0;
if (m->m_pkthdr.csum_flags & M_TCP_TSO) {
uint16_t hdrsize;
uint32_t outlen;
uint32_t paylen;
ether_extract_headers(m, &ext);
if (ext.tcp) {
lflags |= TX_BD_LONG_LFLAGS_LSO;
hdrsize = sizeof(*ext.eh);
if (ext.ip4)
hdrsize += ext.ip4->ip_hl << 2;
else if (ext.ip6)
hdrsize += sizeof(*ext.ip6);
else
tcpstat_inc(tcps_outbadtso);
hdrsize += ext.tcp->th_off << 2;
txhi->hdr_size = htole16(hdrsize / 2);
outlen = m->m_pkthdr.ph_mss;
txhi->mss = htole32(outlen);
paylen = m->m_pkthdr.len - hdrsize;
tcpstat_add(tcps_outpkttso,
(paylen + outlen + 1) / outlen);
} else {
tcpstat_inc(tcps_outbadtso);
}
} else {
if (m->m_pkthdr.csum_flags & (M_UDP_CSUM_OUT |
M_TCP_CSUM_OUT))
lflags |= TX_BD_LONG_LFLAGS_TCP_UDP_CHKSUM;
if (m->m_pkthdr.csum_flags & M_IPV4_CSUM_OUT)
lflags |= TX_BD_LONG_LFLAGS_IP_CHKSUM;
}
txhi->lflags = htole16(lflags);
#if NVLAN > 0
if (m->m_flags & M_VLANTAG) {

View file

@ -1,4 +1,4 @@
/* $OpenBSD: if_re_pci.c,v 1.56 2022/03/11 18:00:48 mpi Exp $ */
/* $OpenBSD: if_re_pci.c,v 1.57 2024/01/19 03:46:15 dlg Exp $ */
/*
* Copyright (c) 2005 Peter Valchev <pvalchev@openbsd.org>
@ -223,19 +223,8 @@ re_pci_detach(struct device *self, int flags)
{
struct re_pci_softc *psc = (struct re_pci_softc *)self;
struct rl_softc *sc = &psc->sc_rl;
struct ifnet *ifp = &sc->sc_arpcom.ac_if;
/* Remove timeout handler */
timeout_del(&sc->timer_handle);
/* Detach PHY */
if (LIST_FIRST(&sc->sc_mii.mii_phys) != NULL)
mii_detach(&sc->sc_mii, MII_PHY_ANY, MII_OFFSET_ANY);
/* Delete media stuff */
ifmedia_delete_instance(&sc->sc_mii.mii_media, IFM_INST_ANY);
ether_ifdetach(ifp);
if_detach(ifp);
re_detach(sc);
/* Disable interrupts */
if (sc->sc_ih != NULL)

View file

@ -1,4 +1,4 @@
/* $OpenBSD: pcireg.h,v 1.61 2022/06/17 10:08:36 kettenis Exp $ */
/* $OpenBSD: pcireg.h,v 1.62 2024/01/19 18:38:16 kettenis Exp $ */
/* $NetBSD: pcireg.h,v 1.26 2000/05/10 16:58:42 thorpej Exp $ */
/*
@ -516,8 +516,10 @@ typedef u_int8_t pci_revision_t;
*/
#define PCI_MSI_MC 0x00
#define PCI_MSI_MC_C64 0x00800000
#define PCI_MSI_MC_MME 0x00700000
#define PCI_MSI_MC_MMC 0x000e0000
#define PCI_MSI_MC_MME_MASK 0x00700000
#define PCI_MSI_MC_MME_SHIFT 20
#define PCI_MSI_MC_MMC_MASK 0x000e0000
#define PCI_MSI_MC_MMC_SHIFT 17
#define PCI_MSI_MC_MSIE 0x00010000
#define PCI_MSI_MA 0x04
#define PCI_MSI_MAU32 0x08

View file

@ -1,4 +1,4 @@
/* $OpenBSD: wsconsio.h,v 1.100 2023/07/02 21:44:04 bru Exp $ */
/* $OpenBSD: wsconsio.h,v 1.101 2024/01/19 17:51:15 kettenis Exp $ */
/* $NetBSD: wsconsio.h,v 1.74 2005/04/28 07:15:44 martin Exp $ */
/*
@ -461,7 +461,7 @@ struct wsmouse_parameters {
#define WSDISPLAY_TYPE_INTELDRM 69 /* Intel KMS framebuffer */
#define WSDISPLAY_TYPE_RADEONDRM 70 /* ATI Radeon KMS framebuffer */
#define WSDISPLAY_TYPE_EFIFB 71 /* EFI framebuffer */
#define WSDISPLAY_TYPE_RKDRM 72 /* Rockchip KMS framebuffer */
#define WSDISPLAY_TYPE_KMS 72 /* Generic KMS framebuffer */
#define WSDISPLAY_TYPE_ASTFB 73 /* AST framebuffer */
#define WSDISPLAY_TYPE_VIOGPU 74 /* VirtIO GPU */