rtl8139: correctly check the opmode
According to the spec, only when opmode is "Config. Register Write Enable" could driver write to CONFIG0,1,3,4 and bits 13,12,8 of BMCR. Currently, we allow modifying to those registers also when 8139 is in "Auto-load" mode and "93C46 (93C56) Programming" mode. This patch fixes this. Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
7fc8d918b9
commit
eb46c5eda7
@ -332,8 +332,10 @@ enum CSCRBits {
|
||||
};
|
||||
|
||||
enum Cfg9346Bits {
|
||||
Cfg9346_Lock = 0x00,
|
||||
Cfg9346_Unlock = 0xC0,
|
||||
Cfg9346_Normal = 0x00,
|
||||
Cfg9346_Autoload = 0x40,
|
||||
Cfg9346_Programming = 0x80,
|
||||
Cfg9346_ConfigWrite = 0xC0,
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
@ -1451,7 +1453,7 @@ static uint32_t rtl8139_IntrMitigate_read(RTL8139State *s)
|
||||
|
||||
static int rtl8139_config_writable(RTL8139State *s)
|
||||
{
|
||||
if (s->Cfg9346 & Cfg9346_Unlock)
|
||||
if ((s->Cfg9346 & Chip9346_op_mask) == Cfg9346_ConfigWrite)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user