struct bcmgenet_tx_ring *ring = &priv->tx_rings[index];
        u32 words_per_bd = WORDS_PER_BD(priv);
        u32 flow_period_val = 0;
 -      unsigned int first_bd;
  
        spin_lock_init(&ring->lock);
+       ring->priv = priv;
+       netif_napi_add(priv->dev, &ring->napi, bcmgenet_tx_poll, 64);
        ring->index = index;
        if (index == DESC_INDEX) {
                ring->queue = 0;
 
        u64 val = rocker_read64(rocker_port->rocker, PORT_PHYS_ENABLE);
  
        if (enable)
-               val |= 1 << rocker_port->pport;
 -              val |= 1ULL << rocker_port->lport;
++              val |= 1ULL << rocker_port->pport;
        else
-               val &= ~(1 << rocker_port->pport);
 -              val &= ~(1ULL << rocker_port->lport);
++              val &= ~(1ULL << rocker_port->pport);
        rocker_write64(rocker_port->rocker, PORT_PHYS_ENABLE, val);
  }
  
 
                         * TODO: support TSO.
                         */
                        iov_iter_advance(&msg.msg_iter, vhost_hlen);
-               } else {
-                       /* It'll come from socket; we'll need to patch
-                        * ->num_buffers over if VIRTIO_NET_F_MRG_RXBUF
-                        */
-                       iov_iter_advance(&fixup, sizeof(hdr));
                }
 -              err = sock->ops->recvmsg(NULL, sock, &msg,
 +              err = sock->ops->recvmsg(sock, &msg,
                                         sock_len, MSG_DONTWAIT | MSG_TRUNC);
                /* Userspace might have consumed the packet meanwhile:
                 * it's not supposed to do this usually, but might be hard