Folks,
While scrutinizing heavily on the 'bge' driver, I found the following issue.
In bge_main2.c in bge_m_setprop() @ line 827 for MAC_PROP_MTU case we
have.
Case: MAC_PROP_MTU:
.............
.............
err = mac_maxsdu_update(bgep->mh, maxsdu);
if (err == 0) { <---------------- (a)
bgep->bge_dma_error = B_TRUE;
bgep->manual_reset = B_TRUE;
bge_chip_stop(bgep, B_TRUE); <---- TRUE here means fault
------ (b)
bge_wake_factotum(bgep);
err = 0; <-------------- (c)
}
break;
(a) and (c) are quite not right. At (a) it should be if (err !=0).
The issue is (b) calls bge_chip_stop(..., fault = B_TRUE) which disable
the interrupts and when you do bge_m_start() immediately since the
interrupts are disabled, it returns EIO.
appreciate quick help!
thanks
~Girish
_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss