Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Patrick Hurrelmann

Pyun YongHyeon wrote:

On Wed, Aug 30, 2006 at 12:52:49PM +0400, Gleb Smirnoff wrote:
 > On Wed, Aug 30, 2006 at 05:22:23PM +0900, Ganbold wrote:
 > G> >On Wed, Aug 30, 2006 at 12:23:20PM +0900, Ganbold wrote:
 > G> >G> Thanks a lot for your patch. Your patch fixes panic, however I still 
see
 > G> >G> bge0: firmware handshake timed out
 > G> >G> bge0: link state changed to DOWN
 > G> >G> messages.
 > G> >
 > G> >And yesterday delphij@ have sent me patch against "firmware handshake 
 > G> >timed out".

 > G> >It is attached. Can you please test it?
 > G> >  
 > G> 
 > G> Applied delphij@'s patch and now "bge0: firmware handshake timed out" 
 > G> message is gone. Previously there was applied Pyun's brgphy(4) patch.
 > 
 > Good. We probably need to commit them both soon.
 > 


If there is no objections, I'll commit brgphy(4) patch tomorrow.



I can also confirm, that the mentioned panic goes away when the 5752 
does not attach to ukphy but brgphy. I had a local patch for this some 
time now (See current@).


I'm happy to test the fix for "firmware handshake timeout" tommorrow. 
This is on Dell Latitude D620 and a Broadcom 5752 A2.


--

Patrick Hurrelmann   | "Programming today is a race between software
Mannheim, Germany| engineers striving to build bigger and better
 | idiot-proof programs, and the Universe trying
[EMAIL PROTECTED]   | to produce bigger and better idiots. So far,
www.bytephobia.de| the Universe is winning." - Rich Cook

  /"\
  \ /ASCII Ribbon Campaign
   X   against HTML email & vCards
  / \
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Pyun YongHyeon
On Wed, Aug 30, 2006 at 11:50:12AM +0400, Gleb Smirnoff wrote:
 >   Pyun,
 > 
 > On Wed, Aug 30, 2006 at 04:30:25PM +0900, Pyun YongHyeon wrote:
 > P> ===
 > P> RCS file: /home/ncvs/src/sys/dev/bge/if_bge.c,v
 > P> retrieving revision 1.91.2.16
 > P> diff -u -r1.91.2.16 if_bge.c
 > P> --- if_bge.c  10 Aug 2006 11:02:14 -  1.91.2.16
 > P> +++ if_bge.c  30 Aug 2006 07:20:43 -
 > P> @@ -1007,9 +1007,26 @@
 > P>   /* Set up the PCI DMA control register. */
 > P>   if (sc->bge_pcie) {
 > P>   /* PCI Express bus */
 > P> - dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
 > P> - (0xf << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
 > P> - (0x2 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
 > P> + uint32_t device_ctl;
 > P> +
 > P> + /* alternative from Linux driver */
 > P> +#define DMA_CTRL_WRITE_PCIE_H20MARK_128  0x0018
 > P> +#define DMA_CTRL_WRITE_PCIE_H20MARK_256  0x0038
 > P> +
 > P> + dma_rw_ctl = 0x7600; /* XXX XXX XXX */;
 > P> + device_ctl = pci_read_config(sc->bge_dev,
 > P> + BGE_PCI_CONF_DEV_CTRL, 4);
 > P> + if ((device_ctl & 0x00e0) && 0) {
 > P> + /*
 > P> +  * This clause is exactly what the Broadcom-supplied
 > P> +  * Linux does; but given overall register programming
 > P> +  * by bge(4), this larger DMA-write watermark
 > P> +  * value causes BCM5721 chips to totally wedge.
 > P> +  */
 > P> + dma_rw_ctl |= BGE_PCIDMA_RWCTL_PCIE_WRITE_WATRMARK_256;
 > P> + } else {
 > P> + dma_rw_ctl |= BGE_PCIDMA_RWCTL_PCIE_WRITE_WATRMARK_128;
 > P> + }
 > P>   } else if (sc->bge_pcix) {
 > 
 > My small penny into the discussion. I was working on reviewing the
 > difference in initializing the PCI DMA control register in Linux tg3.c
 > and in bge(4).
 > 
 > I was quite lost in this stuff, and so I asked for help from David
 > Christensen (davidch@). He has explained me all the differencies
 > in this register between chips and I have prepared the attached patch.
 > 
 > Since I have very small collection of bge(4) cards, I avoid to commit
 > it. May be I will commit it after 6.2-RELEASE if several people test it
 > on their cards and all is OK. And it will live unmerged in HEAD until
 > 6.3-RELEASE.
 > 

Ok, I don't have BCM5752 documentation for the details. Since you've 
got all the secret of the magic I'd like to see the fix from you. :-)

-- 
Regards,
Pyun YongHyeon
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Pyun YongHyeon
On Wed, Aug 30, 2006 at 12:52:49PM +0400, Gleb Smirnoff wrote:
 > On Wed, Aug 30, 2006 at 05:22:23PM +0900, Ganbold wrote:
 > G> >On Wed, Aug 30, 2006 at 12:23:20PM +0900, Ganbold wrote:
 > G> >G> Thanks a lot for your patch. Your patch fixes panic, however I still 
 > see
 > G> >G> bge0: firmware handshake timed out
 > G> >G> bge0: link state changed to DOWN
 > G> >G> messages.
 > G> >
 > G> >And yesterday delphij@ have sent me patch against "firmware handshake 
 > G> >timed out".
 > G> >It is attached. Can you please test it?
 > G> >  
 > G> 
 > G> Applied delphij@'s patch and now "bge0: firmware handshake timed out" 
 > G> message is gone. Previously there was applied Pyun's brgphy(4) patch.
 > 
 > Good. We probably need to commit them both soon.
 > 

If there is no objections, I'll commit brgphy(4) patch tomorrow.

-- 
Regards,
Pyun YongHyeon
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Ganbold

Gleb Smirnoff wrote:

On Wed, Aug 30, 2006 at 05:26:07PM +0900, Ganbold wrote:
G> Gleb, Pyun,
G> 
G> I'm a kind of bit confused here whose patch to choose.

G> Can you guys enlighten me in this regard?

Can you please merge them? You should take all the stuff that
prepares the dma_rw_ctl variable from my patch, and all the other
stuff from Pyun's patch.

  

Ok, here it is. Let me know if I did something wrong.
It also includes delphij@'s patch. Pyun's brgphy(4) patch is included too.

Ganbold

--- if_bge.c	Thu Aug 10 20:02:14 2006
+++ /home/tsgan/bge/new/if_bge.c	Wed Aug 30 18:41:39 2006
@@ -1005,36 +1005,48 @@
 		BGE_MEMWIN_WRITE(sc, i, 0);
 
 	/* Set up the PCI DMA control register. */
+	dma_rw_ctl = BGE_PCIDMARWCTL_READ_CMD | BGE_PCIDMARWCTL_WRITE_CMD;
+
+	/* Bits 23, 22. */
+	if (sc->bge_asicrev == BGE_ASICREV_BCM5700 ||
+	sc->bge_asicrev == BGE_ASICREV_BCM5701 ||
+	sc->bge_asicrev == BGE_ASICREV_BCM5714)
+		dma_rw_ctl |= BGE_PCIDMARWCTL_ASRT_ALL_BE |
+		BGE_PCIDMARWCTL_USE_MRM;
+
+	/* DMA watermarks: bits 21 - 19, 18 - 16. */
 	if (sc->bge_pcie) {
-		/* PCI Express bus */
-		dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
-		(0xf << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
-		(0x2 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
+		/*
+		 * DMA read watermark not used on PCI-E.
+		 * DMA write watermark set to 128 bytes.
+		 */
+		dma_rw_ctl |= (3 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
 	} else if (sc->bge_pcix) {
-		/* PCI-X bus */
-		if (BGE_IS_5714_FAMILY(sc)) {
-			dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD;
-			dma_rw_ctl &= ~BGE_PCIDMARWCTL_ONEDMA_ATONCE; /* XXX */
-			/* XXX magic values, Broadcom-supplied Linux driver */
-			if (sc->bge_asicrev == BGE_ASICREV_BCM5780)
-dma_rw_ctl |= (1 << 20) | (1 << 18) | 
-BGE_PCIDMARWCTL_ONEDMA_ATONCE;
-			else
-dma_rw_ctl |= (1 << 20) | (1 << 18) | (1 << 15);
-
-		} else if (sc->bge_asicrev == BGE_ASICREV_BCM5704)
+		switch (sc->bge_asicrev) {
+		case BGE_ASICREV_BCM5780:
+			/* XXX: Linux driver magic values. */
+			dma_rw_ctl |= (1 << 20) | (1 << 18) | 
+			BGE_PCIDMARWCTL_ONEDMA_ATONCE;
+			break;
+		case BGE_ASICREV_BCM5714:
+		case BGE_ASICREV_BCM5714_A0:
+			/* XXX: Linux driver magic values. */
+			dma_rw_ctl |= (1 << 20) | (1 << 18) |
+			BGE_PCIDMARWCTL_ONEDMA_ATONCE_LOCAL;
+			break;
+		case BGE_ASICREV_BCM5704:
 			/*
 			 * The 5704 uses a different encoding of read/write
-			 * watermarks.
+			 * watermarks: 384 bytes for write and 1536 for read.
 			 */
-			dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
-			(0x7 << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
-			(0x3 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
-		else
-			dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
-			(0x3 << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
-			(0x3 << BGE_PCIDMARWCTL_WR_WAT_SHIFT) |
-			(0x0F);
+			dma_rw_ctl |= (7 << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
+			(3 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
+			break;
+		default:
+			/* All other chips: 384 for write and read. */
+			dma_rw_ctl |= (3 << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
+			(3 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
+		}
 
 		/*
 		 * 5703 and 5704 need ONEDMA_AT_ONCE as a workaround
@@ -1047,18 +1059,20 @@
 			tmp = CSR_READ_4(sc, BGE_PCI_CLKCTL) & 0x1f;
 			if (tmp == 0x6 || tmp == 0x7)
 dma_rw_ctl |= BGE_PCIDMARWCTL_ONEDMA_ATONCE;
+
+			/* Set bit 23 to enable PCIX hw bug fix. */
+			dma_rw_ctl |= BGE_PCIDMARWCTL_ASRT_ALL_BE;
 		}
 	} else
-		/* Conventional PCI bus */
-		dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
-		(0x7 << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
-		(0x7 << BGE_PCIDMARWCTL_WR_WAT_SHIFT) |
-		(0x0F);
-
-	if (sc->bge_asicrev == BGE_ASICREV_BCM5703 ||
-	sc->bge_asicrev == BGE_ASICREV_BCM5704 ||
-	sc->bge_asicrev == BGE_ASICREV_BCM5705)
-		dma_rw_ctl &= ~BGE_PCIDMARWCTL_MINDMA;
+		/* Conventional PCI bus: 1024 bytes for read and write. */
+		dma_rw_ctl |= (7 << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
+		(7 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
+
+	/* Set minimum DMA only for 5700 and 5701. */
+	if (sc->bge_asicrev == BGE_ASICREV_BCM5700 ||
+	sc->bge_asicrev == BGE_ASICREV_BCM5701)
+		dma_rw_ctl |= 0xf;
+	
 	pci_write_config(sc->bge_dev, BGE_PCI_DMA_RW_CTL, dma_rw_ctl, 4);
 
 	/*
@@ -1148,22 +1162,20 @@
 	CSR_WRITE_4(sc, BGE_BMAN_DMA_DESCPOOL_HIWAT, 10);
 
 	/* Enable buffer manager */
-	if (!(BGE_IS_5705_OR_BEYOND(sc))) {
-		CSR_WRITE_4(sc, BGE_BMAN_MODE,
-		BGE_BMANMODE_ENABLE|BGE_BMANMODE_LOMBUF_ATTN);
+	CSR_WRITE_4(sc, BGE_BMAN_MODE,
+	BGE_BMANMODE_ENABLE|BGE_BMANMODE_LOMBUF_ATTN);
 
-		/* Poll for buffer manager start indication */
-		for (i = 0; i < BGE_TIMEOUT; i++) {
-			if (CSR_READ_4(sc, BGE_BMAN_MODE) & BGE_BMANMODE_ENABLE)
-break;
-			DELAY(10);
-		}
+	/* Poll for buffer manager start indication */
+	for (i = 0; i < BGE_TIMEOUT; i++) {
+		if (CSR_READ_4(sc, BGE_BMAN_MODE) & BGE_BMANMODE_ENABLE)
+			break;
+		DELAY(10);
+	}
 
-		if (i == BGE_TIMEOUT) {
-			device_printf(sc->bge_dev,
-			"buffer manager failed to start\n");
-			return

Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Gleb Smirnoff
On Wed, Aug 30, 2006 at 05:26:07PM +0900, Ganbold wrote:
G> Gleb, Pyun,
G> 
G> I'm a kind of bit confused here whose patch to choose.
G> Can you guys enlighten me in this regard?

Can you please merge them? You should take all the stuff that
prepares the dma_rw_ctl variable from my patch, and all the other
stuff from Pyun's patch.

-- 
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Gleb Smirnoff
On Wed, Aug 30, 2006 at 05:22:23PM +0900, Ganbold wrote:
G> >On Wed, Aug 30, 2006 at 12:23:20PM +0900, Ganbold wrote:
G> >G> Thanks a lot for your patch. Your patch fixes panic, however I still see
G> >G> bge0: firmware handshake timed out
G> >G> bge0: link state changed to DOWN
G> >G> messages.
G> >
G> >And yesterday delphij@ have sent me patch against "firmware handshake 
G> >timed out".
G> >It is attached. Can you please test it?
G> >  
G> 
G> Applied delphij@'s patch and now "bge0: firmware handshake timed out" 
G> message is gone. Previously there was applied Pyun's brgphy(4) patch.

Good. We probably need to commit them both soon.

-- 
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Ganbold

Gleb, Pyun,

I'm a kind of bit confused here whose patch to choose.
Can you guys enlighten me in this regard?

thanks,

Ganbold


Gleb Smirnoff wrote:

  Pyun,

On Wed, Aug 30, 2006 at 04:30:25PM +0900, Pyun YongHyeon wrote:
P> ===
P> RCS file: /home/ncvs/src/sys/dev/bge/if_bge.c,v
P> retrieving revision 1.91.2.16
P> diff -u -r1.91.2.16 if_bge.c
P> --- if_bge.c  10 Aug 2006 11:02:14 -  1.91.2.16
P> +++ if_bge.c  30 Aug 2006 07:20:43 -
P> @@ -1007,9 +1007,26 @@
P>   /* Set up the PCI DMA control register. */
P>   if (sc->bge_pcie) {
P>   /* PCI Express bus */
P> - dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
P> - (0xf << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
P> - (0x2 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
P> + uint32_t device_ctl;
P> +
P> + /* alternative from Linux driver */
P> +#define DMA_CTRL_WRITE_PCIE_H20MARK_128  0x0018
P> +#define DMA_CTRL_WRITE_PCIE_H20MARK_256  0x0038
P> +
P> + dma_rw_ctl = 0x7600; /* XXX XXX XXX */;
P> + device_ctl = pci_read_config(sc->bge_dev,
P> + BGE_PCI_CONF_DEV_CTRL, 4);
P> + if ((device_ctl & 0x00e0) && 0) {
P> + /*
P> +  * This clause is exactly what the Broadcom-supplied
P> +  * Linux does; but given overall register programming
P> +  * by bge(4), this larger DMA-write watermark
P> +  * value causes BCM5721 chips to totally wedge.
P> +  */
P> + dma_rw_ctl |= BGE_PCIDMA_RWCTL_PCIE_WRITE_WATRMARK_256;
P> + } else {
P> + dma_rw_ctl |= BGE_PCIDMA_RWCTL_PCIE_WRITE_WATRMARK_128;
P> + }
P>   } else if (sc->bge_pcix) {

My small penny into the discussion. I was working on reviewing the
difference in initializing the PCI DMA control register in Linux tg3.c
and in bge(4).

I was quite lost in this stuff, and so I asked for help from David
Christensen (davidch@). He has explained me all the differencies
in this register between chips and I have prepared the attached patch.

Since I have very small collection of bge(4) cards, I avoid to commit
it. May be I will commit it after 6.2-RELEASE if several people test it
on their cards and all is OK. And it will live unmerged in HEAD until
6.3-RELEASE.

  



Index: if_bge.c
===
RCS file: /home/ncvs/src/sys/dev/bge/if_bge.c,v
retrieving revision 1.139
diff -u -p -r1.139 if_bge.c
--- if_bge.c23 Aug 2006 11:32:54 -  1.139
+++ if_bge.c23 Aug 2006 15:18:22 -
@@ -1005,36 +1005,48 @@ bge_chipinit(struct bge_softc *sc)
BGE_MEMWIN_WRITE(sc, i, 0);
 
 	/* Set up the PCI DMA control register. */

+   dma_rw_ctl = BGE_PCIDMARWCTL_READ_CMD | BGE_PCIDMARWCTL_WRITE_CMD;
+
+   /* Bits 23, 22. */
+   if (sc->bge_asicrev == BGE_ASICREV_BCM5700 ||
+   sc->bge_asicrev == BGE_ASICREV_BCM5701 ||
+   sc->bge_asicrev == BGE_ASICREV_BCM5714)
+   dma_rw_ctl |= BGE_PCIDMARWCTL_ASRT_ALL_BE |
+   BGE_PCIDMARWCTL_USE_MRM;
+
+   /* DMA watermarks: bits 21 - 19, 18 - 16. */
if (sc->bge_flags & BGE_FLAG_PCIE) {
-   /* PCI Express bus */
-   dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
-   (0xf << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
-   (0x2 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
+   /*
+* DMA read watermark not used on PCI-E.
+* DMA write watermark set to 128 bytes.
+*/
+   dma_rw_ctl |= (3 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
} else if (sc->bge_flags & BGE_FLAG_PCIX) {
-   /* PCI-X bus */
-   if (BGE_IS_5714_FAMILY(sc)) {
-   dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD;
-   dma_rw_ctl &= ~BGE_PCIDMARWCTL_ONEDMA_ATONCE; /* XXX */
-   /* XXX magic values, Broadcom-supplied Linux driver */
-   if (sc->bge_asicrev == BGE_ASICREV_BCM5780)
-dma_rw_ctl |= (1 << 20) | (1 << 18) | 
-BGE_PCIDMARWCTL_ONEDMA_ATONCE;

-   else
-   dma_rw_ctl |= (1 << 20) | (1 << 18) | (1 << 15);
-
-   } else if (sc->bge_asicrev == BGE_ASICREV_BCM5704)
+   switch (sc->bge_asicrev) {
+   case BGE_ASICREV_BCM5780:
+   /* XXX: Linux driver magic values. */
+			dma_rw_ctl |= (1 << 20) | (1 << 18) | 
+			BGE_PCIDMARWCTL_ONEDMA_ATONCE;

+   break;
+   case BGE_ASICREV_BCM5714:
+   case BGE_ASICREV_BCM5714_A0:
+   /* XXX: Linux driver magic values. */
+   dma_rw_ctl |= (1 << 20) | (1 << 18) |
+

Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Ganbold

Gleb, Pyun,

Gleb Smirnoff wrote:

  Ganbold,

On Wed, Aug 30, 2006 at 12:23:20PM +0900, Ganbold wrote:
G> Thanks a lot for your patch. Your patch fixes panic, however I still see
G> bge0: firmware handshake timed out
G> bge0: link state changed to DOWN
G> messages.

And yesterday delphij@ have sent me patch against "firmware handshake timed 
out".
It is attached. Can you please test it?
  


Applied delphij@'s patch and now "bge0: firmware handshake timed out" 
message is gone. Previously there was applied Pyun's brgphy(4) patch.


Ganbold

  




Subject:
[PATCH FOR REVIEW] Broadcom BCM 5752 A02 "firmware handshake timeout"
From:
LI Xin <[EMAIL PROTECTED]>
Date:
Tue, 29 Aug 2006 14:39:31 +0800
To:
[EMAIL PROTECTED], [EMAIL PROTECTED]

To:
[EMAIL PROTECTED], [EMAIL PROTECTED]


Hi,

A colleague of mine has found that BCM 5752 A02 would get "firmware
handshake timeout" problem during the ifconfig stage.  After some
investigation and comparing to the Linux driver I have the attached
patch make the problem disappear.  Unfortunately I do not have
specification documentation from Broadcom so I can not say if that is a
"real fix" :-(

The patch was tested on Dell Latitude D820.  The only problem remains is
that the -CURRENT kernel crashes if I did not explicitly set the media
and do a "ifconfig bge0 up", with "panic: invalid ife->ifm_data (0xa) in
mii_phy_setmedia".  Backtrace is available upon request.

Cheers,
  



Index: if_bge.c
===
RCS file: /home/ncvs/src/sys/dev/bge/if_bge.c,v
retrieving revision 1.140
diff -u -r1.140 if_bge.c
--- if_bge.c24 Aug 2006 14:41:16 -  1.140
+++ if_bge.c29 Aug 2006 06:20:44 -
@@ -2313,6 +2313,13 @@
BGE_PCIMISCCTL_INDIRECT_ACCESS|BGE_PCIMISCCTL_MASK_PCI_INTR|
BGE_HIF_SWAP_OPTIONS|BGE_PCIMISCCTL_PCISTATE_RW, 4);
 
+	/* XXX: Broadcom Linux driver. */

+   if (sc->bge_asicrev == BGE_ASICREV_BCM5752 ||
+   sc->bge_asicrev == BGE_ASICREV_BCM5755 ||
+   sc->bge_asicrev == BGE_ASICREV_BCM5787) {
+   CSR_WRITE_4(sc, BGE_FASTBOOT_PC, 0x0);
+   }
+
reset = BGE_MISCCFG_RESET_CORE_CLOCKS|(65<<1);
 
 	/* XXX: Broadcom Linux driver. */

Index: if_bgereg.h
===
RCS file: /home/ncvs/src/sys/dev/bge/if_bgereg.h,v
retrieving revision 1.52
diff -u -r1.52 if_bgereg.h
--- if_bgereg.h 23 Aug 2006 11:32:54 -  1.52
+++ if_bgereg.h 29 Aug 2006 06:32:31 -
@@ -1656,6 +1656,7 @@
 #define BGE_EE_CTL 0x6840
 #define BGE_MDI_CTL0x6844
 #define BGE_EE_DELAY   0x6848
+#define BGE_FASTBOOT_PC0x6894
 
 /* Mode control register */

 #define BGE_MODECTL_INT_SNDCOAL_ONLY   0x0001
  



___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"


Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Gleb Smirnoff
  Ganbold,

On Wed, Aug 30, 2006 at 12:23:20PM +0900, Ganbold wrote:
G> Thanks a lot for your patch. Your patch fixes panic, however I still see
G> bge0: firmware handshake timed out
G> bge0: link state changed to DOWN
G> messages.

And yesterday delphij@ have sent me patch against "firmware handshake timed 
out".
It is attached. Can you please test it?

-- 
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
--- Begin Message ---
Hi,

A colleague of mine has found that BCM 5752 A02 would get "firmware
handshake timeout" problem during the ifconfig stage.  After some
investigation and comparing to the Linux driver I have the attached
patch make the problem disappear.  Unfortunately I do not have
specification documentation from Broadcom so I can not say if that is a
"real fix" :-(

The patch was tested on Dell Latitude D820.  The only problem remains is
that the -CURRENT kernel crashes if I did not explicitly set the media
and do a "ifconfig bge0 up", with "panic: invalid ife->ifm_data (0xa) in
mii_phy_setmedia".  Backtrace is available upon request.

Cheers,
-- 
Xin LI <[EMAIL PROTECTED]>  http://www.delphij.net/
FreeBSD - The Power to Serve!
Index: if_bge.c
===
RCS file: /home/ncvs/src/sys/dev/bge/if_bge.c,v
retrieving revision 1.140
diff -u -r1.140 if_bge.c
--- if_bge.c24 Aug 2006 14:41:16 -  1.140
+++ if_bge.c29 Aug 2006 06:20:44 -
@@ -2313,6 +2313,13 @@
BGE_PCIMISCCTL_INDIRECT_ACCESS|BGE_PCIMISCCTL_MASK_PCI_INTR|
BGE_HIF_SWAP_OPTIONS|BGE_PCIMISCCTL_PCISTATE_RW, 4);
 
+   /* XXX: Broadcom Linux driver. */
+   if (sc->bge_asicrev == BGE_ASICREV_BCM5752 ||
+   sc->bge_asicrev == BGE_ASICREV_BCM5755 ||
+   sc->bge_asicrev == BGE_ASICREV_BCM5787) {
+   CSR_WRITE_4(sc, BGE_FASTBOOT_PC, 0x0);
+   }
+
reset = BGE_MISCCFG_RESET_CORE_CLOCKS|(65<<1);
 
/* XXX: Broadcom Linux driver. */
Index: if_bgereg.h
===
RCS file: /home/ncvs/src/sys/dev/bge/if_bgereg.h,v
retrieving revision 1.52
diff -u -r1.52 if_bgereg.h
--- if_bgereg.h 23 Aug 2006 11:32:54 -  1.52
+++ if_bgereg.h 29 Aug 2006 06:32:31 -
@@ -1656,6 +1656,7 @@
 #define BGE_EE_CTL 0x6840
 #define BGE_MDI_CTL0x6844
 #define BGE_EE_DELAY   0x6848
+#define BGE_FASTBOOT_PC0x6894
 
 /* Mode control register */
 #define BGE_MODECTL_INT_SNDCOAL_ONLY   0x0001


signature.asc
Description: OpenPGP digital signature
--- End Message ---
___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Gleb Smirnoff
  Pyun,

On Wed, Aug 30, 2006 at 04:30:25PM +0900, Pyun YongHyeon wrote:
P> ===
P> RCS file: /home/ncvs/src/sys/dev/bge/if_bge.c,v
P> retrieving revision 1.91.2.16
P> diff -u -r1.91.2.16 if_bge.c
P> --- if_bge.c 10 Aug 2006 11:02:14 -  1.91.2.16
P> +++ if_bge.c 30 Aug 2006 07:20:43 -
P> @@ -1007,9 +1007,26 @@
P>  /* Set up the PCI DMA control register. */
P>  if (sc->bge_pcie) {
P>  /* PCI Express bus */
P> -dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
P> -(0xf << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
P> -(0x2 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
P> +uint32_t device_ctl;
P> +
P> +/* alternative from Linux driver */
P> +#define DMA_CTRL_WRITE_PCIE_H20MARK_128 0x0018
P> +#define DMA_CTRL_WRITE_PCIE_H20MARK_256 0x0038
P> +
P> +dma_rw_ctl = 0x7600; /* XXX XXX XXX */;
P> +device_ctl = pci_read_config(sc->bge_dev,
P> +BGE_PCI_CONF_DEV_CTRL, 4);
P> +if ((device_ctl & 0x00e0) && 0) {
P> +/*
P> + * This clause is exactly what the Broadcom-supplied
P> + * Linux does; but given overall register programming
P> + * by bge(4), this larger DMA-write watermark
P> + * value causes BCM5721 chips to totally wedge.
P> + */
P> +dma_rw_ctl |= BGE_PCIDMA_RWCTL_PCIE_WRITE_WATRMARK_256;
P> +} else {
P> +dma_rw_ctl |= BGE_PCIDMA_RWCTL_PCIE_WRITE_WATRMARK_128;
P> +}
P>  } else if (sc->bge_pcix) {

My small penny into the discussion. I was working on reviewing the
difference in initializing the PCI DMA control register in Linux tg3.c
and in bge(4).

I was quite lost in this stuff, and so I asked for help from David
Christensen (davidch@). He has explained me all the differencies
in this register between chips and I have prepared the attached patch.

Since I have very small collection of bge(4) cards, I avoid to commit
it. May be I will commit it after 6.2-RELEASE if several people test it
on their cards and all is OK. And it will live unmerged in HEAD until
6.3-RELEASE.

-- 
Totus tuus, Glebius.
GLEBIUS-RIPN GLEB-RIPE
Index: if_bge.c
===
RCS file: /home/ncvs/src/sys/dev/bge/if_bge.c,v
retrieving revision 1.139
diff -u -p -r1.139 if_bge.c
--- if_bge.c23 Aug 2006 11:32:54 -  1.139
+++ if_bge.c23 Aug 2006 15:18:22 -
@@ -1005,36 +1005,48 @@ bge_chipinit(struct bge_softc *sc)
BGE_MEMWIN_WRITE(sc, i, 0);
 
/* Set up the PCI DMA control register. */
+   dma_rw_ctl = BGE_PCIDMARWCTL_READ_CMD | BGE_PCIDMARWCTL_WRITE_CMD;
+
+   /* Bits 23, 22. */
+   if (sc->bge_asicrev == BGE_ASICREV_BCM5700 ||
+   sc->bge_asicrev == BGE_ASICREV_BCM5701 ||
+   sc->bge_asicrev == BGE_ASICREV_BCM5714)
+   dma_rw_ctl |= BGE_PCIDMARWCTL_ASRT_ALL_BE |
+   BGE_PCIDMARWCTL_USE_MRM;
+
+   /* DMA watermarks: bits 21 - 19, 18 - 16. */
if (sc->bge_flags & BGE_FLAG_PCIE) {
-   /* PCI Express bus */
-   dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
-   (0xf << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
-   (0x2 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
+   /*
+* DMA read watermark not used on PCI-E.
+* DMA write watermark set to 128 bytes.
+*/
+   dma_rw_ctl |= (3 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
} else if (sc->bge_flags & BGE_FLAG_PCIX) {
-   /* PCI-X bus */
-   if (BGE_IS_5714_FAMILY(sc)) {
-   dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD;
-   dma_rw_ctl &= ~BGE_PCIDMARWCTL_ONEDMA_ATONCE; /* XXX */
-   /* XXX magic values, Broadcom-supplied Linux driver */
-   if (sc->bge_asicrev == BGE_ASICREV_BCM5780)
-   dma_rw_ctl |= (1 << 20) | (1 << 18) | 
-   BGE_PCIDMARWCTL_ONEDMA_ATONCE;
-   else
-   dma_rw_ctl |= (1 << 20) | (1 << 18) | (1 << 15);
-
-   } else if (sc->bge_asicrev == BGE_ASICREV_BCM5704)
+   switch (sc->bge_asicrev) {
+   case BGE_ASICREV_BCM5780:
+   /* XXX: Linux driver magic values. */
+   dma_rw_ctl |= (1 << 20) | (1 << 18) | 
+   BGE_PCIDMARWCTL_ONEDMA_ATONCE;
+   break;
+   case BGE_ASICREV_BCM5714:
+   case BGE_ASICREV_BCM5714_A0:
+   /* XXX: Linux driver magic values. */
+   dma_rw_ctl |= (1 << 20) | (1 << 18) |
+   BG

Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Ganbold

Pyun YongHyeon wrote:

On Wed, Aug 30, 2006 at 12:23:20PM +0900, Ganbold wrote:
 > Hi,
 > 
 > Thanks a lot for your patch. Your patch fixes panic, however I still see

 > bge0: firmware handshake timed out
 > bge0: link state changed to DOWN
 > messages.
 > 
 > When I tried to use Oleg's if_bge.c, rev. 1.140 in STABLE buildkernel stops:
 > 
 > mkdep -f .depend -a   -nostdinc -D_KERNEL -DKLD_MODULE -I- 
 > -DHAVE_KERNEL_OPTION_HEADERS -I. -I@ -I@/contrib/altq -I@/../include 
 > -I/usr/include -I/usr/obj/usr/src/sys/DEVIL 
 > /usr/src/sys/modules/bge/../../dev/bge/if_bge.c
 > /usr/src/sys/modules/bge/../../dev/bge/if_bge.c:2570:35: macro 
 > "VLAN_INPUT_TAG" requires 4 arguments, but only 3 given

 > mkdep: compile failed
 > *** Error code 1
 > 1 error
 > *** Error code 2
 > 1 error
 > *** Error code 2
 > mkdep: compile failed
 > *** Error code 1
 > 2 errors
 > *** Error code 2
 > 1 error
 > *** Error code 2
 > 1 error
 > 
 > I see VLAN_INPUT_TAG is defined as VLAN_INPUT_TAG(_ifp, _m, _t, 
 > _errcase) in if_vlan_var.h, rev v 1.21.2.2 with 4 arguments, however

 > new if_bge.c, rev. 1.140 uses 3 arguments.
 > Is it safe to use if_vlan_var.h, rev 1.24 and if_vlan.c, rev 1.114 only? 
 > What other patches should I use?

 > When all these changes MFC to STABLE?
 > 


You should use VLAN_INPUT_TAG_NEW macro in RELENG_6.
Anyway, here is guess work for BCM5752(obtained from OpenBSD).
Because I don't have 5752 hardware I don't know whether it works or
not. The patch is for RELENG_6(You need brgphy(4) patch too).
  


Where can I get brgphy(4) patch for RELENG_6?

thanks,

Ganbold


 > thanks,
 > 
 > Ganbold
 > 
 > Pyun YongHyeon wrote:

 > >I think your PHY was not recognized by brgphy(4). But I don't know it
 > >fixes "firmware handshake timed out" issue you've seen.
 > >Recently oleg fixed a long standing bug in bge(4). So you may also want
 > >to merge the change.(See if_bge.c, rev. 1.140)
 > >Patch generated against RELENG_6(compile tested only).
 > >

  



Index: if_bge.c
===
RCS file: /home/ncvs/src/sys/dev/bge/if_bge.c,v
retrieving revision 1.91.2.16
diff -u -r1.91.2.16 if_bge.c
--- if_bge.c10 Aug 2006 11:02:14 -  1.91.2.16
+++ if_bge.c30 Aug 2006 07:20:43 -
@@ -1007,9 +1007,26 @@
/* Set up the PCI DMA control register. */
if (sc->bge_pcie) {
/* PCI Express bus */
-   dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
-   (0xf << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
-   (0x2 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
+   uint32_t device_ctl;
+
+   /* alternative from Linux driver */
+#define DMA_CTRL_WRITE_PCIE_H20MARK_1280x0018
+#define DMA_CTRL_WRITE_PCIE_H20MARK_2560x0038
+
+   dma_rw_ctl = 0x7600; /* XXX XXX XXX */;
+   device_ctl = pci_read_config(sc->bge_dev,
+   BGE_PCI_CONF_DEV_CTRL, 4);
+   if ((device_ctl & 0x00e0) && 0) {
+   /*
+* This clause is exactly what the Broadcom-supplied
+* Linux does; but given overall register programming
+* by bge(4), this larger DMA-write watermark
+* value causes BCM5721 chips to totally wedge.
+*/
+   dma_rw_ctl |= BGE_PCIDMA_RWCTL_PCIE_WRITE_WATRMARK_256;
+   } else {
+   dma_rw_ctl |= BGE_PCIDMA_RWCTL_PCIE_WRITE_WATRMARK_128;
+   }
} else if (sc->bge_pcix) {
/* PCI-X bus */
if (BGE_IS_5714_FAMILY(sc)) {
@@ -1148,22 +1165,20 @@
CSR_WRITE_4(sc, BGE_BMAN_DMA_DESCPOOL_HIWAT, 10);
 
 	/* Enable buffer manager */

-   if (!(BGE_IS_5705_OR_BEYOND(sc))) {
-   CSR_WRITE_4(sc, BGE_BMAN_MODE,
-   BGE_BMANMODE_ENABLE|BGE_BMANMODE_LOMBUF_ATTN);
+   CSR_WRITE_4(sc, BGE_BMAN_MODE,
+   BGE_BMANMODE_ENABLE|BGE_BMANMODE_LOMBUF_ATTN);
 
-		/* Poll for buffer manager start indication */

-   for (i = 0; i < BGE_TIMEOUT; i++) {
-   if (CSR_READ_4(sc, BGE_BMAN_MODE) & BGE_BMANMODE_ENABLE)
-   break;
-   DELAY(10);
-   }
+   /* Poll for buffer manager start indication */
+   for (i = 0; i < BGE_TIMEOUT; i++) {
+   if (CSR_READ_4(sc, BGE_BMAN_MODE) & BGE_BMANMODE_ENABLE)
+   break;
+   DELAY(10);
+   }
 
-		if (i == BGE_TIMEOUT) {

-   device_printf(sc->bge_dev,
-   "buffer manager failed to start\n");
-   return (ENXIO);
-   }
+   if (i == BGE_TIMEOUT) {
+   device_printf(sc->bge_dev,
+   "buffer manager failed 

Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-30 Thread Pyun YongHyeon
On Wed, Aug 30, 2006 at 12:23:20PM +0900, Ganbold wrote:
 > Hi,
 > 
 > Thanks a lot for your patch. Your patch fixes panic, however I still see
 > bge0: firmware handshake timed out
 > bge0: link state changed to DOWN
 > messages.
 > 
 > When I tried to use Oleg's if_bge.c, rev. 1.140 in STABLE buildkernel stops:
 > 
 > mkdep -f .depend -a   -nostdinc -D_KERNEL -DKLD_MODULE -I- 
 > -DHAVE_KERNEL_OPTION_HEADERS -I. -I@ -I@/contrib/altq -I@/../include 
 > -I/usr/include -I/usr/obj/usr/src/sys/DEVIL 
 > /usr/src/sys/modules/bge/../../dev/bge/if_bge.c
 > /usr/src/sys/modules/bge/../../dev/bge/if_bge.c:2570:35: macro 
 > "VLAN_INPUT_TAG" requires 4 arguments, but only 3 given
 > mkdep: compile failed
 > *** Error code 1
 > 1 error
 > *** Error code 2
 > 1 error
 > *** Error code 2
 > mkdep: compile failed
 > *** Error code 1
 > 2 errors
 > *** Error code 2
 > 1 error
 > *** Error code 2
 > 1 error
 > 
 > I see VLAN_INPUT_TAG is defined as VLAN_INPUT_TAG(_ifp, _m, _t, 
 > _errcase) in if_vlan_var.h, rev v 1.21.2.2 with 4 arguments, however
 > new if_bge.c, rev. 1.140 uses 3 arguments.
 > Is it safe to use if_vlan_var.h, rev 1.24 and if_vlan.c, rev 1.114 only? 
 > What other patches should I use?
 > When all these changes MFC to STABLE?
 > 

You should use VLAN_INPUT_TAG_NEW macro in RELENG_6.
Anyway, here is guess work for BCM5752(obtained from OpenBSD).
Because I don't have 5752 hardware I don't know whether it works or
not. The patch is for RELENG_6(You need brgphy(4) patch too).

 > thanks,
 > 
 > Ganbold
 > 
 > Pyun YongHyeon wrote:
 > >I think your PHY was not recognized by brgphy(4). But I don't know it
 > >fixes "firmware handshake timed out" issue you've seen.
 > >Recently oleg fixed a long standing bug in bge(4). So you may also want
 > >to merge the change.(See if_bge.c, rev. 1.140)
 > >Patch generated against RELENG_6(compile tested only).
 > >

-- 
Regards,
Pyun YongHyeon
Index: if_bge.c
===
RCS file: /home/ncvs/src/sys/dev/bge/if_bge.c,v
retrieving revision 1.91.2.16
diff -u -r1.91.2.16 if_bge.c
--- if_bge.c10 Aug 2006 11:02:14 -  1.91.2.16
+++ if_bge.c30 Aug 2006 07:20:43 -
@@ -1007,9 +1007,26 @@
/* Set up the PCI DMA control register. */
if (sc->bge_pcie) {
/* PCI Express bus */
-   dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
-   (0xf << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
-   (0x2 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
+   uint32_t device_ctl;
+
+   /* alternative from Linux driver */
+#define DMA_CTRL_WRITE_PCIE_H20MARK_1280x0018
+#define DMA_CTRL_WRITE_PCIE_H20MARK_2560x0038
+
+   dma_rw_ctl = 0x7600; /* XXX XXX XXX */;
+   device_ctl = pci_read_config(sc->bge_dev,
+   BGE_PCI_CONF_DEV_CTRL, 4);
+   if ((device_ctl & 0x00e0) && 0) {
+   /*
+* This clause is exactly what the Broadcom-supplied
+* Linux does; but given overall register programming
+* by bge(4), this larger DMA-write watermark
+* value causes BCM5721 chips to totally wedge.
+*/
+   dma_rw_ctl |= BGE_PCIDMA_RWCTL_PCIE_WRITE_WATRMARK_256;
+   } else {
+   dma_rw_ctl |= BGE_PCIDMA_RWCTL_PCIE_WRITE_WATRMARK_128;
+   }
} else if (sc->bge_pcix) {
/* PCI-X bus */
if (BGE_IS_5714_FAMILY(sc)) {
@@ -1148,22 +1165,20 @@
CSR_WRITE_4(sc, BGE_BMAN_DMA_DESCPOOL_HIWAT, 10);
 
/* Enable buffer manager */
-   if (!(BGE_IS_5705_OR_BEYOND(sc))) {
-   CSR_WRITE_4(sc, BGE_BMAN_MODE,
-   BGE_BMANMODE_ENABLE|BGE_BMANMODE_LOMBUF_ATTN);
+   CSR_WRITE_4(sc, BGE_BMAN_MODE,
+   BGE_BMANMODE_ENABLE|BGE_BMANMODE_LOMBUF_ATTN);
 
-   /* Poll for buffer manager start indication */
-   for (i = 0; i < BGE_TIMEOUT; i++) {
-   if (CSR_READ_4(sc, BGE_BMAN_MODE) & BGE_BMANMODE_ENABLE)
-   break;
-   DELAY(10);
-   }
+   /* Poll for buffer manager start indication */
+   for (i = 0; i < BGE_TIMEOUT; i++) {
+   if (CSR_READ_4(sc, BGE_BMAN_MODE) & BGE_BMANMODE_ENABLE)
+   break;
+   DELAY(10);
+   }
 
-   if (i == BGE_TIMEOUT) {
-   device_printf(sc->bge_dev,
-   "buffer manager failed to start\n");
-   return (ENXIO);
-   }
+   if (i == BGE_TIMEOUT) {
+   device_printf(sc->bge_dev,
+   "buffer manager failed to start\n");
+   return (ENXIO);
}
 
/* Enable flow-through queues */
Index: if_bgereg.h
===

Re: panic: invalid ife->ifm_data (0xa) in mii_phy_setmedia

2006-08-29 Thread Ganbold

Hi,

Thanks a lot for your patch. Your patch fixes panic, however I still see
bge0: firmware handshake timed out
bge0: link state changed to DOWN
messages.

When I tried to use Oleg's if_bge.c, rev. 1.140 in STABLE buildkernel stops:

mkdep -f .depend -a   -nostdinc -D_KERNEL -DKLD_MODULE -I- 
-DHAVE_KERNEL_OPTION_HEADERS -I. -I@ -I@/contrib/altq -I@/../include 
-I/usr/include -I/usr/obj/usr/src/sys/DEVIL 
/usr/src/sys/modules/bge/../../dev/bge/if_bge.c
/usr/src/sys/modules/bge/../../dev/bge/if_bge.c:2570:35: macro 
"VLAN_INPUT_TAG" requires 4 arguments, but only 3 given

mkdep: compile failed
*** Error code 1
1 error
*** Error code 2
1 error
*** Error code 2
mkdep: compile failed
*** Error code 1
2 errors
*** Error code 2
1 error
*** Error code 2
1 error

I see VLAN_INPUT_TAG is defined as VLAN_INPUT_TAG(_ifp, _m, _t, 
_errcase) in if_vlan_var.h, rev v 1.21.2.2 with 4 arguments, however

new if_bge.c, rev. 1.140 uses 3 arguments.
Is it safe to use if_vlan_var.h, rev 1.24 and if_vlan.c, rev 1.114 only? 
What other patches should I use?

When all these changes MFC to STABLE?

thanks,

Ganbold

Pyun YongHyeon wrote:

I think your PHY was not recognized by brgphy(4). But I don't know it
fixes "firmware handshake timed out" issue you've seen.
Recently oleg fixed a long standing bug in bge(4). So you may also want
to merge the change.(See if_bge.c, rev. 1.140)
Patch generated against RELENG_6(compile tested only).

  



Index: miidevs
===
RCS file: /home/ncvs/src/sys/dev/mii/miidevs,v
retrieving revision 1.30.2.3
diff -u -r1.30.2.3 miidevs
--- miidevs 8 Aug 2006 07:51:21 -   1.30.2.3
+++ miidevs 30 Aug 2006 02:28:07 -
@@ -118,6 +118,7 @@
 model xxBROADCOM BCM5400   0x0004 Broadcom 1000baseTX PHY
 model xxBROADCOM BCM5401   0x0005 BCM5401 10/100/1000baseTX PHY
 model xxBROADCOM BCM5411   0x0007 BCM5411 10/100/1000baseTX PHY
+model xxBROADCOM BCM5752   0x0010 BCM5752 10/100/1000baseTX PHY
 model xxBROADCOM BCM5701   0x0011 BCM5701 10/100/1000baseTX PHY
 model xxBROADCOM BCM5703   0x0016 BCM5703 10/100/1000baseTX PHY
 model xxBROADCOM BCM5704   0x0019 BCM5704 10/100/1000baseTX PHY
Index: brgphy.c
===
RCS file: /home/ncvs/src/sys/dev/mii/brgphy.c,v
retrieving revision 1.34.2.6
diff -u -r1.34.2.6 brgphy.c
--- brgphy.c8 Aug 2006 04:37:18 -   1.34.2.6
+++ brgphy.c30 Aug 2006 02:28:07 -
@@ -126,6 +126,12 @@
}
 
 	if (MII_OUI(ma->mii_id1, ma->mii_id2) == MII_OUI_xxBROADCOM &&

+   MII_MODEL(ma->mii_id2) == MII_MODEL_xxBROADCOM_BCM5752) {
+   device_set_desc(dev, MII_STR_xxBROADCOM_BCM5752);
+   return(BUS_PROBE_DEFAULT);
+   }
+
+   if (MII_OUI(ma->mii_id1, ma->mii_id2) == MII_OUI_xxBROADCOM &&
MII_MODEL(ma->mii_id2) == MII_MODEL_xxBROADCOM_BCM5701) {
device_set_desc(dev, MII_STR_xxBROADCOM_BCM5701);
return(BUS_PROBE_DEFAULT);
@@ -665,6 +671,7 @@
bcm5704_load_dspcode(sc);
break;
case MII_MODEL_xxBROADCOM_BCM5750:
+   case MII_MODEL_xxBROADCOM_BCM5752:
case MII_MODEL_xxBROADCOM_BCM5714:
case MII_MODEL_xxBROADCOM_BCM5780:
case MII_MODEL_xxBROADCOM_BCM5706C:
  


___
freebsd-stable@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[EMAIL PROTECTED]"