qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jason Wang <jasowang@redhat.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: aliguori@us.ibm.com, qemu-devel@nongnu.org, avi@redhat.com
Subject: Re: [Qemu-devel] [PATCH] Revert "rtl8139: do the network/host communication only in normal operating mode"
Date: Thu, 10 May 2012 17:31:56 +0800	[thread overview]
Message-ID: <4FAB8B0C.9070606@redhat.com> (raw)
In-Reply-To: <20120510085453.GB8461@redhat.com>

On 05/10/2012 04:54 PM, Michael S. Tsirkin wrote:
> On Thu, May 10, 2012 at 04:37:22PM +0800, Jason Wang wrote:
>> This reverts commit ff71f2e8cacefae99179993204172bc65e4303df. This is because
>> the linux 8139cp driver would leave the card in "Config Register Write Enable"
>> mode after the eeprom were read or write ( which is unexpected in the spec
>> ).
> Could you show where this happens please?

Hi Michael:

According to the spec:
"""
Normal(0x00): RTL8139C(L)+ network/host communication mode.
...
Config. Register Write Enable(0x11): Before writing to the CONFIG0, 1, 
3, 4 registers, and bits 13, 12, 8 of BMCR (offset 62h-63h), the 
RTL8139C(L)+ must be placed in this mode. This will protect the  
RTL8139C(L)+ configuration from accidental change.
"""
So If I am reading it correctly, guest should place the card in "Normal 
mode" during transmission and reception. But linux driver would reset 
the mode to 11 after each read or write to the eeprom, see 
eeprom_cmd_end() in 8139cp.c.

>> Also a physical 8139 card can still DMA into host memory in modes other than
>> Normal mode, so we need revert this commit to align with the behavior of
>> physical card.
>>
>> The issue of 8139cp driver should be fixed in linux seperately.
>>
>> Signed-off-by: Jason Wang<jasowang@redhat.com>
> It's admittedly a bit of a hack but I thought the point is
> to work with unmodified drivers?

Yes, and as the physical 8139 card would still doing transmission and 
reception when it's not in normal mode, so we need revert this patch to 
let unmodified driver work.
> What do windows drivers do? Can you check pls?

Windows guest would let the card in normal mode after eeprom access.
>
>> ---
>>   hw/rtl8139.c |    9 ---------
>>   1 files changed, 0 insertions(+), 9 deletions(-)
>>
>> diff --git a/hw/rtl8139.c b/hw/rtl8139.c
>> index eb22d04..2413bc3 100644
>> --- a/hw/rtl8139.c
>> +++ b/hw/rtl8139.c
>> @@ -791,9 +791,6 @@ static int rtl8139_can_receive(VLANClientState *nc)
>>         return 1;
>>       if (!rtl8139_receiver_enabled(s))
>>         return 1;
>> -    /* network/host communication happens only in normal mode */
>> -    if ((s->Cfg9346&  Chip9346_op_mask) != Cfg9346_Normal)
>> -	return 0;
>>
>>       if (rtl8139_cp_receiver_enabled(s)) {
>>           /* ??? Flow control not implemented in c+ mode.
>> @@ -836,12 +833,6 @@ static ssize_t rtl8139_do_receive(VLANClientState *nc, const uint8_t *buf, size_
>>           return -1;
>>       }
>>
>> -    /* check whether we are in normal mode */
>> -    if ((s->Cfg9346&  Chip9346_op_mask) != Cfg9346_Normal) {
>> -        DPRINTF("not in normal op mode\n");
>> -        return -1;
>> -    }
>> -
>>       /* XXX: check this */
>>       if (s->RxConfig&  AcceptAllPhys) {
>>           /* promiscuous: receive all */

  reply	other threads:[~2012-05-10  9:32 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-10  8:37 [Qemu-devel] [PATCH] Revert "rtl8139: do the network/host communication only in normal operating mode" Jason Wang
2012-05-10  8:54 ` Michael S. Tsirkin
2012-05-10  9:31   ` Jason Wang [this message]
2012-05-10 11:05     ` Michael S. Tsirkin
2012-05-14  5:31       ` Jason Wang
2012-05-14  6:20         ` Michael S. Tsirkin
2012-05-14  7:10           ` Jason Wang
2012-06-04  5:48 ` Anthony Liguori
2012-06-04  5:58   ` Jason Wang
2012-06-04 12:28     ` Anthony Liguori

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FAB8B0C.9070606@redhat.com \
    --to=jasowang@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=avi@redhat.com \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).