6818975 nge driver should support MCP
79 ethernet
6849324 checking status and packet length in physical ring of descriptors in nge is not atomic on S10
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