Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Mar 2008 16:26:49 +0100
From:      Daniel Gerzo <danger@FreeBSD.org>
To:        Pyun YongHyeon <pyunyh@gmail.com>
Cc:        Daniel Gerzo <danger@FreeBSD.org>, current@FreeBSD.org, yongari@FreeBSD.org
Subject:   Re: re(4) problem
Message-ID:  <20080310152649.GA54781@bigbang.cia.sk>
In-Reply-To: <20080310105313.GD4425@cdnetworks.co.kr>
References:  <20080306200532.GA84961@cvsup.sk.freebsd.org> <20080307043815.GA92464@cdnetworks.co.kr> <1373272150.20080308001103@rulez.sk> <918167276.20080308170710@rulez.sk> <20080310015526.GE3553@cdnetworks.co.kr> <1251085027.20080310093936@rulez.sk> <20080310105313.GD4425@cdnetworks.co.kr>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello Pyun,

> Since you're using MSI, would you try attached patch?
> Sorry, I don't have PCIe based hardware and RealTek's datasheet for
> PCIe variants is too poor to get useful information.
> 
> -- 
> Regards,
> Pyun YongHyeon

Thank you for your quick reply, I will test your patch ASAP, but I have one
simple question:

Should I apply this patch on top of http://people.freebsd.org/~yongari/re/re.HEAD.patch
or what is this patch aginst?

Thank you.

> --- sys/dev/re/if_re.c.orig	2008-03-03 13:15:07.000000000 +0900
> +++ sys/dev/re/if_re.c	2008-03-10 19:42:50.000000000 +0900
> @@ -991,7 +991,7 @@
>  	 * Allocate the parent bus DMA tag appropriate for PCI.
>  	 */
>  	error = bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0,
> -	    BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, NULL,
> +	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
>  	    BUS_SPACE_MAXSIZE_32BIT, 0, BUS_SPACE_MAXSIZE_32BIT, 0,
>  	    NULL, NULL, &sc->rl_parent_tag);
>  	if (error) {
> @@ -1141,6 +1141,7 @@
>  	u_int16_t		re_did = 0;
>  	int			error = 0, rid, i;
>  	int			msic, reg;
> +	uint8_t			cfg;
>  
>  	sc = device_get_softc(dev);
>  	sc->rl_dev = dev;
> @@ -1182,6 +1183,13 @@
>  			} else
>  				pci_release_msi(dev);
>  		}
> +		if (sc->rl_msi != 0) {
> +			/* Enable config register write. */
> +			CSR_WRITE_1(sc, RL_EECMD, RL_EE_MODE);
> +			cfg = CSR_READ_1(sc, RL_CFG2);
> +			CSR_WRITE_1(sc, RL_CFG2, cfg | RL_CFG2_MSI);
> +			CSR_WRITE_1(sc, RL_EECMD, 0);
> +		}
>  	}
>  
>  	/* Allocate interrupt */
> @@ -2410,6 +2418,7 @@
>  	struct ifnet		*ifp = sc->rl_ifp;
>  	struct mii_data		*mii;
>  	u_int32_t		rxcfg = 0;
> +	uint16_t		cfg;
>  	union {
>  		uint32_t align_dummy;
>  		u_char eaddr[ETHER_ADDR_LEN];
> @@ -2429,9 +2438,13 @@
>  	 * RX checksum offload. We must configure the C+ register
>  	 * before all others.
>  	 */
> -	CSR_WRITE_2(sc, RL_CPLUS_CMD, RL_CPLUSCMD_RXENB|
> -	    RL_CPLUSCMD_TXENB|RL_CPLUSCMD_PCI_MRW|
> -	    RL_CPLUSCMD_VLANSTRIP|RL_CPLUSCMD_RXCSUM_ENB);
> +	cfg = RL_CPLUSCMD_PCI_MRW;
> +	if ((ifp->if_capenable & IFCAP_RXCSUM) != 0)
> +		cfg |= RL_CPLUSCMD_RXCSUM_ENB;
> +	if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0)
> +		cfg |= RL_CPLUSCMD_VLANSTRIP;
> +	CSR_WRITE_2(sc, RL_CPLUS_CMD,
> +	    cfg | RL_CPLUSCMD_RXENB | RL_CPLUSCMD_TXENB);
>  
>  	/*
>  	 * Init our MAC address.  Even though the chipset
> --- sys/pci/if_rlreg.h.orig	2008-03-03 12:41:06.000000000 +0900
> +++ sys/pci/if_rlreg.h	2008-03-10 19:36:43.000000000 +0900
> @@ -382,6 +382,7 @@
>  #define	RL_CFG2_PCI66MHZ	0x01
>  #define	RL_CFG2_PCI64BIT	0x08
>  #define	RL_CFG2_AUXPWR		0x10
> +#define	RL_CFG2_MSI		0x20
>  
>  /*
>   * Config 3 register

> _______________________________________________
> freebsd-current@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080310152649.GA54781>