6818975 nge driver should support MCP79 ethernet
authorWinson Wang - Sun Microsystems - Beijing China <Zhen.W@Sun.COM>
Fri Jun 19 18:13:27 2009 +0800 (14 months ago)
changeset 9906bfc3790e8ac6
parent 99056ec9863bc3c6
child 990798086c85a8f7
6818975 nge driver should support MCP79 ethernet
6849324 checking status and packet length in physical ring of descriptors in nge is not atomic on S10
usr/src/uts/common/io/nge/nge.h
usr/src/uts/common/io/nge/nge_chip.c
usr/src/uts/common/io/nge/nge_chip.h
usr/src/uts/common/io/nge/nge_rx.c
usr/src/uts/common/io/nge/nge_tx.c
       1 --- a/usr/src/uts/common/io/nge/nge.h	Fri Jun 19 14:52:09 2009 +0800
       2 +++ b/usr/src/uts/common/io/nge/nge.h	Fri Jun 19 18:13:27 2009 +0800
       3 @@ -657,7 +657,7 @@
       4  	void (*txd_fill)(void *, const ddi_dma_cookie_t *, size_t,
       5  			uint32_t, boolean_t);
       6  
       7 -	uint32_t (*txd_check)(const void *, size_t *);
       8 +	uint32_t (*txd_check)(const void *);
       9  };
      10  
      11  typedef struct nge_desc_attr nge_desc_attr_t;
      12 @@ -1045,7 +1045,7 @@
      13  
      14  extern void nge_sum_txd_fill(void *, const ddi_dma_cookie_t *,
      15  				size_t, uint32_t, boolean_t);
      16 -extern uint32_t nge_sum_txd_check(const void *, size_t *);
      17 +extern uint32_t nge_sum_txd_check(const void *);
      18  
      19  /*
      20   * DESC MODE 3
      21 @@ -1056,7 +1056,7 @@
      22  
      23  extern void nge_hot_txd_fill(void *, const ddi_dma_cookie_t *,
      24  				size_t, uint32_t, boolean_t);
      25 -extern uint32_t nge_hot_txd_check(const void *, size_t *);
      26 +extern uint32_t nge_hot_txd_check(const void *);
      27  
      28  #ifdef __cplusplus
      29  }
     1.1 --- a/usr/src/uts/common/io/nge/nge_chip.c	Fri Jun 19 14:52:09 2009 +0800
     1.2 +++ b/usr/src/uts/common/io/nge/nge_chip.c	Fri Jun 19 18:13:27 2009 +0800
     1.3 @@ -530,6 +530,7 @@
     1.4  		break;
     1.5  
     1.6  	case DEVICE_ID_MCP77_760:
     1.7 +	case DEVICE_ID_MCP79_AB0:
     1.8  		dev_param_p->msi = B_FALSE;
     1.9  		dev_param_p->msi_x = B_FALSE;
    1.10  		dev_param_p->vlan = B_FALSE;
    1.11 @@ -1112,7 +1113,8 @@
    1.12  	    ngep->chipinfo.device == DEVICE_ID_MCP55_373 ||
    1.13  	    ngep->chipinfo.device == DEVICE_ID_MCP61_3EE ||
    1.14  	    ngep->chipinfo.device == DEVICE_ID_MCP61_3EF ||
    1.15 -	    ngep->chipinfo.device == DEVICE_ID_MCP77_760) {
    1.16 +	    ngep->chipinfo.device == DEVICE_ID_MCP77_760 ||
    1.17 +	    ngep->chipinfo.device == DEVICE_ID_MCP79_AB0) {
    1.18  
    1.19  		pm_cntl2.cntl_val = nge_reg_get32(ngep, NGE_PM_CNTL2);
    1.20  		/* bring phy out of coma mode */
     2.1 --- a/usr/src/uts/common/io/nge/nge_chip.h	Fri Jun 19 14:52:09 2009 +0800
     2.2 +++ b/usr/src/uts/common/io/nge/nge_chip.h	Fri Jun 19 18:13:27 2009 +0800
     2.3 @@ -46,6 +46,7 @@
     2.4  #define	DEVICE_ID_MCP61_3EE	0x3ee
     2.5  #define	DEVICE_ID_MCP61_3EF	0x3ef
     2.6  #define	DEVICE_ID_MCP77_760	0x760
     2.7 +#define	DEVICE_ID_MCP79_AB0	0xab0
     2.8  #define	DEVICE_ID_NF3_E6	0xe6
     2.9  #define	DEVICE_ID_NF3_DF	0xdf
    2.10  
     3.1 --- a/usr/src/uts/common/io/nge/nge_rx.c	Fri Jun 19 14:52:09 2009 +0800
     3.2 +++ b/usr/src/uts/common/io/nge/nge_rx.c	Fri Jun 19 18:13:27 2009 +0800
     3.3 @@ -473,10 +473,8 @@
     3.4  	const hot_rx_bd * hrbdp;
     3.5  
     3.6  	hrbdp = hwd;
     3.7 -
     3.8 -	err_flag = hrbdp->cntl_status.cntl_val & ~RXD_BCNT_MSK;
     3.9 -	*len = hrbdp->cntl_status.status_bits_legacy.bcnt;
    3.10 -
    3.11 +	err_flag = hrbdp->cntl_status.cntl_val;
    3.12 +	*len = err_flag & RXD_BCNT_MSK;
    3.13  	return (err_flag);
    3.14  }
    3.15  
    3.16 @@ -488,8 +486,7 @@
    3.17  
    3.18  	hrbdp = hwd;
    3.19  
    3.20 -	err_flag = hrbdp->cntl_status.cntl_val & ~RXD_BCNT_MSK;
    3.21 -	*len = hrbdp->cntl_status.status_bits.bcnt;
    3.22 -
    3.23 +	err_flag = hrbdp->cntl_status.cntl_val;
    3.24 +	*len = err_flag & RXD_BCNT_MSK;
    3.25  	return (err_flag);
    3.26  }
     4.1 --- a/usr/src/uts/common/io/nge/nge_tx.c	Fri Jun 19 14:52:09 2009 +0800
     4.2 +++ b/usr/src/uts/common/io/nge/nge_tx.c	Fri Jun 19 18:13:27 2009 +0800
     4.3 @@ -145,7 +145,6 @@
     4.4  {
     4.5  	int resched;
     4.6  	uint32_t stflg;
     4.7 -	size_t len;
     4.8  	uint32_t free;
     4.9  	uint32_t slot;
    4.10  	uint32_t used;
    4.11 @@ -202,7 +201,7 @@
    4.12  
    4.13  		if (ssbdp->flags == HOST_OWN)
    4.14  			break;
    4.15 -		stflg = ngep->desc_attr.txd_check(hw_sbd_p, &len);
    4.16 +		stflg = ngep->desc_attr.txd_check(hw_sbd_p);
    4.17  		if ((stflg & TXD_OWN) != 0)
    4.18  			break;
    4.19  		DMA_ZERO(ssbdp->desc);
    4.20 @@ -682,28 +681,24 @@
    4.21  }
    4.22  
    4.23  uint32_t
    4.24 -nge_hot_txd_check(const void *hwd, size_t *len)
    4.25 +nge_hot_txd_check(const void *hwd)
    4.26  {
    4.27  	uint32_t err_flag;
    4.28  	const hot_tx_bd * htbdp;
    4.29  
    4.30  	htbdp = hwd;
    4.31 -	err_flag = htbdp->control_status.cntl_val & ~TXD_BCNT_MSK;
    4.32 -
    4.33 -	*len = htbdp->control_status.status_bits.bcnt;
    4.34 +	err_flag = htbdp->control_status.cntl_val;
    4.35  	return (err_flag);
    4.36  }
    4.37  
    4.38  uint32_t
    4.39 -nge_sum_txd_check(const void *hwd, size_t *len)
    4.40 +nge_sum_txd_check(const void *hwd)
    4.41  {
    4.42  	uint32_t err_flag;
    4.43  	const sum_tx_bd * htbdp;
    4.44  
    4.45  	htbdp = hwd;
    4.46 -	err_flag = htbdp->control_status.cntl_val & ~TXD_BCNT_MSK;
    4.47 -
    4.48 -	*len = htbdp->control_status.status_bits.bcnt;
    4.49 +	err_flag = htbdp->control_status.cntl_val;
    4.50  	return (err_flag);
    4.51  }
    4.52