|
|
|
@ -548,7 +548,10 @@ static void encRx (void) |
|
|
|
|
m_nic_bfs (CTL_REG_ECON2, ENC_ECON2_PKTDEC); |
|
|
|
|
|
|
|
|
|
/* taken from the Linux driver */ |
|
|
|
|
/* Only odd values should be written to ERXRDPTL, see errata B4 pt.13 */ rxbuf_rdpt = (next_pointer_msb << 8 | next_pointer_lsb) - 1; |
|
|
|
|
/* Only odd values should be written to ERXRDPTL,
|
|
|
|
|
* see errata B4 pt.13
|
|
|
|
|
*/ |
|
|
|
|
rxbuf_rdpt = (next_pointer_msb << 8 | next_pointer_lsb) - 1; |
|
|
|
|
if ((rxbuf_rdpt < (m_nic_read(CTL_REG_ERXSTH) << 8 | |
|
|
|
|
m_nic_read(CTL_REG_ERXSTL))) || (rxbuf_rdpt > |
|
|
|
|
(m_nic_read(CTL_REG_ERXNDH) << 8 | |
|
|
|
@ -799,13 +802,15 @@ static void encInit (unsigned char *pEthAddr) |
|
|
|
|
|
|
|
|
|
/* enable MAC to receive frames */ |
|
|
|
|
/* added some bits from the Linux driver */ |
|
|
|
|
m_nic_write_retry (CTL_REG_MACON1, (ENC_MACON1_MARXEN | ENC_MACON1_TXPAUS | ENC_MACON1_RXPAUS), 10); |
|
|
|
|
m_nic_write_retry (CTL_REG_MACON1 |
|
|
|
|
,(ENC_MACON1_MARXEN | ENC_MACON1_TXPAUS | ENC_MACON1_RXPAUS) |
|
|
|
|
,10); |
|
|
|
|
|
|
|
|
|
/* configure pad, tx-crc and duplex */ |
|
|
|
|
/* added a bit from the Linux driver */ |
|
|
|
|
m_nic_write_retry (CTL_REG_MACON3, |
|
|
|
|
(ENC_MACON3_PADCFG0 | ENC_MACON3_TXCRCEN | ENC_MACON3_FRMLNEN), |
|
|
|
|
10); |
|
|
|
|
m_nic_write_retry (CTL_REG_MACON3 |
|
|
|
|
,(ENC_MACON3_PADCFG0 | ENC_MACON3_TXCRCEN | ENC_MACON3_FRMLNEN) |
|
|
|
|
,10); |
|
|
|
|
|
|
|
|
|
/* added 4 new lines from the Linux driver */ |
|
|
|
|
/* Allow infinite deferals if the medium is continously busy */ |
|
|
|
|