asic register even if the board isn't a 3c503. This caused old 8003E's not
to work because they ignore IO address bits >10bits and the 3c503 asic is
located at +0x400....the offset was ignored by the 8003E and so the
value was written to one of the NIC registers. The bug was discovered by
Wolfgang Solfrank.
* Modification history
*
* $Log: if_ed.c,v $
* Modification history
*
* $Log: if_ed.c,v $
+ * Revision 1.16 93/07/25 14:27:12 davidg
+ * added parans to the previous fix so that it can cope with outb
+ * being a macro.
+ *
+ * Revision 1.15 93/07/25 14:07:56 davidg
+ * fixed logic problem where a 3c503 register was being written
+ * even if the board wasn't a 3Com. Wolfgang Solfrank pointed this
+ * out.
+ *
* Revision 1.14 93/07/20 15:24:25 davidg
* ommision for force 16bit case fixed from last patch
*
* Revision 1.14 93/07/20 15:24:25 davidg
* ommision for force 16bit case fixed from last patch
*
* If this is a 3Com board, the tranceiver must be software enabled
* (there is no settable hardware default).
*/
* If this is a 3Com board, the tranceiver must be software enabled
* (there is no settable hardware default).
*/
- if ((sc->vendor == ED_VENDOR_3COM) && (ifp->if_flags & IFF_LLC0)) {
- outb(sc->asic_addr + ED_3COM_CR, 0);
- } else {
- outb(sc->asic_addr + ED_3COM_CR, ED_3COM_CR_XSEL);
+ if (sc->vendor == ED_VENDOR_3COM) {
+ if (ifp->if_flags & IFF_LLC0) {
+ outb(sc->asic_addr + ED_3COM_CR, 0);
+ } else {
+ outb(sc->asic_addr + ED_3COM_CR, ED_3COM_CR_XSEL);
+ }
* of the tranceiver for 3Com boards. The LLC0 flag disables
* the tranceiver if set.
*/
* of the tranceiver for 3Com boards. The LLC0 flag disables
* the tranceiver if set.
*/
- if ((sc->vendor == ED_VENDOR_3COM) && (ifp->if_flags & IFF_LLC0)) {
- outb(sc->asic_addr + ED_3COM_CR, 0);
- } else {
- outb(sc->asic_addr + ED_3COM_CR, ED_3COM_CR_XSEL);
+ if (sc->vendor == ED_VENDOR_3COM) {
+ if (ifp->if_flags & IFF_LLC0) {
+ outb(sc->asic_addr + ED_3COM_CR, 0);
+ } else {
+ outb(sc->asic_addr + ED_3COM_CR, ED_3COM_CR_XSEL);
+ }