if (res.vr_id == 0xff && res.vr_len == 0xff && res.vr_pad == 0xff) return;
sk_vpd_read(struct sk_softc *sc){	int			pos = 0, i;	struct vpd_res		res;	if (sc->sk_vpd_prodname != NULL)		free(sc->sk_vpd_prodname, M_DEVBUF);	if (sc->sk_vpd_readonly != NULL)		free(sc->sk_vpd_readonly, M_DEVBUF);	sc->sk_vpd_prodname = NULL;	sc->sk_vpd_readonly = NULL;	sk_vpd_read_res(sc, &res, pos);	if (res.vr_id != VPD_RES_ID) {		printf("%s: bad VPD resource id: expected %x got %x\n",		    sc->sk_dev.dv_xname, VPD_RES_ID, res.vr_id);		return;	}	pos += sizeof(res);	sc->sk_vpd_prodname = malloc(res.vr_len + 1, M_DEVBUF, M_NOWAIT);	if (sc->sk_vpd_prodname == NULL)		panic("sk_vpd_read");	for (i = 0; i < res.vr_len; i++)		sc->sk_vpd_prodname[i] = sk_vpd_readbyte(sc, i + pos);	sc->sk_vpd_prodname[i] = '\0';	pos += i;	sk_vpd_read_res(sc, &res, pos);	if (res.vr_id != VPD_RES_READ) {		printf("%s: bad VPD resource id: expected %x got %x\n",		    sc->sk_dev.dv_xname, VPD_RES_READ, res.vr_id);		return;	}	pos += sizeof(res);	sc->sk_vpd_readonly = malloc(res.vr_len, M_DEVBUF, M_NOWAIT);	if (sc->sk_vpd_readonly == NULL)		panic("sk_vpd_read");	for (i = 0; i < res.vr_len + 1; i++)		sc->sk_vpd_readonly[i] = sk_vpd_readbyte(sc, i + pos);}