Commit cc1f0f45 authored by Jason Wang's avatar Jason Wang Committed by Anthony Liguori
Browse files

net: introduce qemu_get_nic()



To support multiqueue, this patch introduces a helper qemu_get_nic() to get
NICState from a NetClientState. The following patches would refactor this helper
to support multiqueue.

Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
parent b356f76d
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -409,7 +409,7 @@ static int gem_can_receive(NetClientState *nc)
{
    GemState *s;

    s = DO_UPCAST(NICState, nc, nc)->opaque;
    s = qemu_get_nic_opaque(nc);

    DB_PRINT("\n");

@@ -612,7 +612,7 @@ static ssize_t gem_receive(NetClientState *nc, const uint8_t *buf, size_t size)
    uint8_t    rxbuf[2048];
    uint8_t   *rxbuf_ptr;

    s = DO_UPCAST(NICState, nc, nc)->opaque;
    s = qemu_get_nic_opaque(nc);

    /* Do nothing if receive is not enabled. */
    if (!(s->regs[GEM_NWCTRL] & GEM_NWCTRL_RXENA)) {
@@ -1152,7 +1152,7 @@ static const MemoryRegionOps gem_ops = {

static void gem_cleanup(NetClientState *nc)
{
    GemState *s = DO_UPCAST(NICState, nc, nc)->opaque;
    GemState *s = qemu_get_nic_opaque(nc);

    DB_PRINT("\n");
    s->nic = NULL;
@@ -1161,7 +1161,7 @@ static void gem_cleanup(NetClientState *nc)
static void gem_set_link(NetClientState *nc)
{
    DB_PRINT("\n");
    phy_update_link(DO_UPCAST(NICState, nc, nc)->opaque);
    phy_update_link(qemu_get_nic_opaque(nc));
}

static NetClientInfo net_gem_info = {
+3 −3
Original line number Diff line number Diff line
@@ -676,7 +676,7 @@ static const MemoryRegionOps dp8393x_ops = {

static int nic_can_receive(NetClientState *nc)
{
    dp8393xState *s = DO_UPCAST(NICState, nc, nc)->opaque;
    dp8393xState *s = qemu_get_nic_opaque(nc);

    if (!(s->regs[SONIC_CR] & SONIC_CR_RXEN))
        return 0;
@@ -725,7 +725,7 @@ static int receive_filter(dp8393xState *s, const uint8_t * buf, int size)

static ssize_t nic_receive(NetClientState *nc, const uint8_t * buf, size_t size)
{
    dp8393xState *s = DO_UPCAST(NICState, nc, nc)->opaque;
    dp8393xState *s = qemu_get_nic_opaque(nc);
    uint16_t data[10];
    int packet_type;
    uint32_t available, address;
@@ -861,7 +861,7 @@ static void nic_reset(void *opaque)

static void nic_cleanup(NetClientState *nc)
{
    dp8393xState *s = DO_UPCAST(NICState, nc, nc)->opaque;
    dp8393xState *s = qemu_get_nic_opaque(nc);

    memory_region_del_subregion(s->address_space, &s->mmio);
    memory_region_destroy(&s->mmio);
+4 −4
Original line number Diff line number Diff line
@@ -748,7 +748,7 @@ receive_filter(E1000State *s, const uint8_t *buf, int size)
static void
e1000_set_link_status(NetClientState *nc)
{
    E1000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
    E1000State *s = qemu_get_nic_opaque(nc);
    uint32_t old_status = s->mac_reg[STATUS];

    if (nc->link_down) {
@@ -782,7 +782,7 @@ static bool e1000_has_rxbufs(E1000State *s, size_t total_size)
static int
e1000_can_receive(NetClientState *nc)
{
    E1000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
    E1000State *s = qemu_get_nic_opaque(nc);

    return (s->mac_reg[RCTL] & E1000_RCTL_EN) && e1000_has_rxbufs(s, 1);
}
@@ -798,7 +798,7 @@ static uint64_t rx_desc_base(E1000State *s)
static ssize_t
e1000_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
    E1000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
    E1000State *s = qemu_get_nic_opaque(nc);
    struct e1000_rx_desc desc;
    dma_addr_t base;
    unsigned int n, rdt;
@@ -1235,7 +1235,7 @@ e1000_mmio_setup(E1000State *d)
static void
e1000_cleanup(NetClientState *nc)
{
    E1000State *s = DO_UPCAST(NICState, nc, nc)->opaque;
    E1000State *s = qemu_get_nic_opaque(nc);

    s->nic = NULL;
}
+3 −3
Original line number Diff line number Diff line
@@ -1619,7 +1619,7 @@ static const MemoryRegionOps eepro100_ops = {

static int nic_can_receive(NetClientState *nc)
{
    EEPRO100State *s = DO_UPCAST(NICState, nc, nc)->opaque;
    EEPRO100State *s = qemu_get_nic_opaque(nc);
    TRACE(RXTX, logout("%p\n", s));
    return get_ru_state(s) == ru_ready;
#if 0
@@ -1633,7 +1633,7 @@ static ssize_t nic_receive(NetClientState *nc, const uint8_t * buf, size_t size)
     * - Magic packets should set bit 30 in power management driver register.
     * - Interesting packets should set bit 29 in power management driver register.
     */
    EEPRO100State *s = DO_UPCAST(NICState, nc, nc)->opaque;
    EEPRO100State *s = qemu_get_nic_opaque(nc);
    uint16_t rfd_status = 0xa000;
#if defined(CONFIG_PAD_RECEIVED_FRAMES)
    uint8_t min_buf[60];
@@ -1835,7 +1835,7 @@ static const VMStateDescription vmstate_eepro100 = {

static void nic_cleanup(NetClientState *nc)
{
    EEPRO100State *s = DO_UPCAST(NICState, nc, nc)->opaque;
    EEPRO100State *s = qemu_get_nic_opaque(nc);

    s->nic = NULL;
}
+3 −3
Original line number Diff line number Diff line
@@ -523,7 +523,7 @@ static int eth_can_receive(NetClientState *nc)
static ssize_t eth_receive(NetClientState *nc, const uint8_t *buf, size_t size)
{
    unsigned char sa_bcast[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
    struct fs_eth *eth = DO_UPCAST(NICState, nc, nc)->opaque;
    struct fs_eth *eth = qemu_get_nic_opaque(nc);
    int use_ma0 = eth->regs[RW_REC_CTRL] & 1;
    int use_ma1 = eth->regs[RW_REC_CTRL] & 2;
    int r_bcast = eth->regs[RW_REC_CTRL] & 8;
@@ -561,7 +561,7 @@ static int eth_tx_push(void *opaque, unsigned char *buf, int len, bool eop)

static void eth_set_link(NetClientState *nc)
{
    struct fs_eth *eth = DO_UPCAST(NICState, nc, nc)->opaque;
    struct fs_eth *eth = qemu_get_nic_opaque(nc);
    D(printf("%s %d\n", __func__, nc->link_down));
    eth->phy.link = !nc->link_down;
}
@@ -578,7 +578,7 @@ static const MemoryRegionOps eth_ops = {

static void eth_cleanup(NetClientState *nc)
{
    struct fs_eth *eth = DO_UPCAST(NICState, nc, nc)->opaque;
    struct fs_eth *eth = qemu_get_nic_opaque(nc);

    /* Disconnect the client.  */
    eth->dma_out->client.push = NULL;
Loading