fxp_lwcopy(&v, &rfa->link_addr); fxp_lwcopy(&v, &rfa->rbd_addr);
fxp_lwcopy(&v, (u_int32_t *)(rfap + offsetof(struct fxp_rfa, link_addr))); fxp_lwcopy(&v, (u_int32_t *)(rfap + offsetof(struct fxp_rfa, rbd_addr)));
fxp_add_rfabuf(sc, oldm)	struct fxp_softc *sc;	struct mbuf *oldm;{	u_int32_t v;	struct mbuf *m;	struct fxp_rfa *rfa, *p_rfa;	MGETHDR(m, M_DONTWAIT, MT_DATA);	if (m != NULL) {		MCLGET(m, M_DONTWAIT);		if ((m->m_flags & M_EXT) == 0) {			m_freem(m);			if (oldm == NULL)				return 1;			m = oldm;			m->m_data = m->m_ext.ext_buf;		}	} else {		if (oldm == NULL)			return 1;		m = oldm;		m->m_data = m->m_ext.ext_buf;	}	/*	 * Move the data pointer up so that the incoming data packet	 * will be 32-bit aligned.	 */	m->m_data += RFA_ALIGNMENT_FUDGE;	/*	 * Get a pointer to the base of the mbuf cluster and move	 * data start past it.	 */	rfa = mtod(m, struct fxp_rfa *);	m->m_data += sizeof(struct fxp_rfa);	rfa->size = MCLBYTES - sizeof(struct fxp_rfa) - RFA_ALIGNMENT_FUDGE;	/*	 * Initialize the rest of the RFA.  Note that since the RFA	 * is misaligned, we cannot store values directly.  Instead,	 * we use an optimized, inline copy.	 */	rfa->rfa_status = 0;	rfa->rfa_control = FXP_RFA_CONTROL_EL;	rfa->actual_size = 0;	v = -1;	fxp_lwcopy(&v, &rfa->link_addr);	fxp_lwcopy(&v, &rfa->rbd_addr);	/*	 * If there are other buffers already on the list, attach this	 * one to the end by fixing up the tail to point to this one.	 */	if (sc->rfa_headm != NULL) {		p_rfa = (struct fxp_rfa *) (sc->rfa_tailm->m_ext.ext_buf +		    RFA_ALIGNMENT_FUDGE);		sc->rfa_tailm->m_next = m;		v = vtophys(rfa);		fxp_lwcopy(&v, &p_rfa->link_addr);		p_rfa->rfa_control &= ~FXP_RFA_CONTROL_EL;	} else {		sc->rfa_headm = m;	}	sc->rfa_tailm = m;	return (m == oldm);}