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

Reply via email to