-----BEGIN PGP SIGNATURE-----
iQEzBAABCAAdFiEEIV1G9IJGaJ7HfzVi7wSWWzmNYhEFAmh91p0ACgkQ7wSWWzmN YhG+2wgAqw3G2TGRPT29ObyYDcd2Z54jdnNpX5gEND/UnqENprXfdD3PR58bnxe3 uJGPRkMXgkIDit61lshsb8DF8x9ZEIlm/Ax5FM0ksBczWDYHiyEuXoyt2Uai1kWY fLBkVfjFqCu1AGniboCZiC4ZawZXIqkx/+DI3J/XRqa+bSCQ18I15dsLD/yxU/pp Hwxp07/d+UayANdxs0mZ5Lr7a1ktTgytCt0O2jQNHlMzfOvdBbVbF/WGclMWfNgI 68HWPY7P8k8jRTRFx3H/0LyYQrPyseTpa3zHC+zW9jNskkPkhCwlAY4UDC8x8LII OjsDc/0nre626rNCiJlifD3UJ7t86A== =xj23 -----END PGP SIGNATURE----- Merge tag 'net-pull-request' of https://github.com/jasowang/qemu into staging # -----BEGIN PGP SIGNATURE----- # # iQEzBAABCAAdFiEEIV1G9IJGaJ7HfzVi7wSWWzmNYhEFAmh91p0ACgkQ7wSWWzmN # YhG+2wgAqw3G2TGRPT29ObyYDcd2Z54jdnNpX5gEND/UnqENprXfdD3PR58bnxe3 # uJGPRkMXgkIDit61lshsb8DF8x9ZEIlm/Ax5FM0ksBczWDYHiyEuXoyt2Uai1kWY # fLBkVfjFqCu1AGniboCZiC4ZawZXIqkx/+DI3J/XRqa+bSCQ18I15dsLD/yxU/pp # Hwxp07/d+UayANdxs0mZ5Lr7a1ktTgytCt0O2jQNHlMzfOvdBbVbF/WGclMWfNgI # 68HWPY7P8k8jRTRFx3H/0LyYQrPyseTpa3zHC+zW9jNskkPkhCwlAY4UDC8x8LII # OjsDc/0nre626rNCiJlifD3UJ7t86A== # =xj23 # -----END PGP SIGNATURE----- # gpg: Signature made Mon 21 Jul 2025 01:56:45 EDT # gpg: using RSA key 215D46F48246689EC77F3562EF04965B398D6211 # gpg: Good signature from "Jason Wang (Jason Wang on RedHat) <jasowang@redhat.com>" [full] # Primary key fingerprint: 215D 46F4 8246 689E C77F 3562 EF04 965B 398D 6211 * tag 'net-pull-request' of https://github.com/jasowang/qemu: net/vhost-user: Remove unused "err" from chr_closed_bh() (CID 1612365) net/passt: Initialize "error" variable in net_passt_send() (CID 1612368) net/passt: Check return value of g_remove() in net_passt_cleanup() (CID 1612369) net/passt: Remove dead code in passt_vhost_user_start error path (CID 1612371) net/vhost-user: Remove unused "err" from net_vhost_user_event() (CID 1612372) net/passt: Remove unused "err" from passt_vhost_user_event() (CID 1612375) hw/net/npcm_gmac.c: Drop 'buf' local variable hw/net/npcm_gmac.c: Correct test for when to reallocate packet buffer hw/net/npcm_gmac.c: Unify length and prev_buf_size variables hw/net/npcm_gmac.c: Send the right data for second packet in a row tap: fix net_init_tap() return code net/tap: drop too small packets Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
0828b374c6
4 changed files with 26 additions and 40 deletions
|
|
@ -516,8 +516,6 @@ static void gmac_try_send_next_packet(NPCMGMACState *gmac)
|
|||
uint32_t desc_addr;
|
||||
struct NPCMGMACTxDesc tx_desc;
|
||||
uint32_t tx_buf_addr, tx_buf_len;
|
||||
uint16_t length = 0;
|
||||
uint8_t *buf = tx_send_buffer;
|
||||
uint32_t prev_buf_size = 0;
|
||||
int csum = 0;
|
||||
|
||||
|
|
@ -568,22 +566,20 @@ static void gmac_try_send_next_packet(NPCMGMACState *gmac)
|
|||
tx_buf_addr = tx_desc.tdes2;
|
||||
gmac->regs[R_NPCM_DMA_CUR_TX_BUF_ADDR] = tx_buf_addr;
|
||||
tx_buf_len = TX_DESC_TDES1_BFFR1_SZ_MASK(tx_desc.tdes1);
|
||||
buf = &tx_send_buffer[prev_buf_size];
|
||||
|
||||
if ((prev_buf_size + tx_buf_len) > sizeof(buf)) {
|
||||
if ((prev_buf_size + tx_buf_len) > tx_buffer_size) {
|
||||
tx_buffer_size = prev_buf_size + tx_buf_len;
|
||||
tx_send_buffer = g_realloc(tx_send_buffer, tx_buffer_size);
|
||||
buf = &tx_send_buffer[prev_buf_size];
|
||||
}
|
||||
|
||||
/* step 5 */
|
||||
if (dma_memory_read(&address_space_memory, tx_buf_addr, buf,
|
||||
if (dma_memory_read(&address_space_memory, tx_buf_addr,
|
||||
tx_send_buffer + prev_buf_size,
|
||||
tx_buf_len, MEMTXATTRS_UNSPECIFIED)) {
|
||||
qemu_log_mask(LOG_GUEST_ERROR, "%s: Failed to read packet @ 0x%x\n",
|
||||
__func__, tx_buf_addr);
|
||||
return;
|
||||
}
|
||||
length += tx_buf_len;
|
||||
prev_buf_size += tx_buf_len;
|
||||
|
||||
/* If not chained we'll have a second buffer. */
|
||||
|
|
@ -591,30 +587,32 @@ static void gmac_try_send_next_packet(NPCMGMACState *gmac)
|
|||
tx_buf_addr = tx_desc.tdes3;
|
||||
gmac->regs[R_NPCM_DMA_CUR_TX_BUF_ADDR] = tx_buf_addr;
|
||||
tx_buf_len = TX_DESC_TDES1_BFFR2_SZ_MASK(tx_desc.tdes1);
|
||||
buf = &tx_send_buffer[prev_buf_size];
|
||||
|
||||
if ((prev_buf_size + tx_buf_len) > sizeof(buf)) {
|
||||
if ((prev_buf_size + tx_buf_len) > tx_buffer_size) {
|
||||
tx_buffer_size = prev_buf_size + tx_buf_len;
|
||||
tx_send_buffer = g_realloc(tx_send_buffer, tx_buffer_size);
|
||||
buf = &tx_send_buffer[prev_buf_size];
|
||||
}
|
||||
|
||||
if (dma_memory_read(&address_space_memory, tx_buf_addr, buf,
|
||||
if (dma_memory_read(&address_space_memory, tx_buf_addr,
|
||||
tx_send_buffer + prev_buf_size,
|
||||
tx_buf_len, MEMTXATTRS_UNSPECIFIED)) {
|
||||
qemu_log_mask(LOG_GUEST_ERROR,
|
||||
"%s: Failed to read packet @ 0x%x\n",
|
||||
__func__, tx_buf_addr);
|
||||
return;
|
||||
}
|
||||
length += tx_buf_len;
|
||||
prev_buf_size += tx_buf_len;
|
||||
}
|
||||
if (tx_desc.tdes1 & TX_DESC_TDES1_LAST_SEG_MASK) {
|
||||
/*
|
||||
* This will truncate the packet at 64K.
|
||||
* TODO: find out if this is the correct behaviour.
|
||||
*/
|
||||
uint16_t length = prev_buf_size;
|
||||
net_checksum_calculate(tx_send_buffer, length, csum);
|
||||
qemu_send_packet(qemu_get_queue(gmac->nic), tx_send_buffer, length);
|
||||
trace_npcm_gmac_packet_sent(DEVICE(gmac)->canonical_path, length);
|
||||
buf = tx_send_buffer;
|
||||
length = 0;
|
||||
prev_buf_size = 0;
|
||||
}
|
||||
|
||||
/* step 6 */
|
||||
|
|
|
|||
22
net/passt.c
22
net/passt.c
|
|
@ -103,7 +103,10 @@ static void net_passt_cleanup(NetClientState *nc)
|
|||
#endif
|
||||
|
||||
kill(s->pid, SIGTERM);
|
||||
g_remove(s->pidfile);
|
||||
if (g_remove(s->pidfile) != 0) {
|
||||
warn_report("Failed to remove passt pidfile %s: %s",
|
||||
s->pidfile, strerror(errno));
|
||||
}
|
||||
g_free(s->pidfile);
|
||||
g_ptr_array_free(s->args, TRUE);
|
||||
}
|
||||
|
|
@ -121,7 +124,7 @@ static gboolean net_passt_send(QIOChannel *ioc, GIOCondition condition,
|
|||
{
|
||||
if (net_stream_data_send(ioc, condition, data) == G_SOURCE_REMOVE) {
|
||||
NetPasstState *s = DO_UPCAST(NetPasstState, data, data);
|
||||
Error *error;
|
||||
Error *error = NULL;
|
||||
|
||||
/* we need to restart passt */
|
||||
kill(s->pid, SIGTERM);
|
||||
|
|
@ -375,7 +378,8 @@ static int passt_vhost_user_start(NetPasstState *s, VhostUserState *be)
|
|||
net = vhost_net_init(&options);
|
||||
if (!net) {
|
||||
error_report("failed to init passt vhost_net");
|
||||
goto err;
|
||||
passt_vhost_user_stop(s);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (s->vhost_net) {
|
||||
|
|
@ -385,19 +389,11 @@ static int passt_vhost_user_start(NetPasstState *s, VhostUserState *be)
|
|||
s->vhost_net = net;
|
||||
|
||||
return 0;
|
||||
err:
|
||||
if (net) {
|
||||
vhost_net_cleanup(net);
|
||||
g_free(net);
|
||||
}
|
||||
passt_vhost_user_stop(s);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static void passt_vhost_user_event(void *opaque, QEMUChrEvent event)
|
||||
{
|
||||
NetPasstState *s = opaque;
|
||||
Error *err = NULL;
|
||||
|
||||
switch (event) {
|
||||
case CHR_EVENT_OPENED:
|
||||
|
|
@ -428,10 +424,6 @@ static void passt_vhost_user_event(void *opaque, QEMUChrEvent event)
|
|||
/* Ignore */
|
||||
break;
|
||||
}
|
||||
|
||||
if (err) {
|
||||
error_report_err(err);
|
||||
}
|
||||
}
|
||||
|
||||
static int net_passt_vhost_user_init(NetPasstState *s, Error **errp)
|
||||
|
|
|
|||
|
|
@ -190,6 +190,11 @@ static void tap_send(void *opaque)
|
|||
break;
|
||||
}
|
||||
|
||||
if (s->host_vnet_hdr_len && size <= s->host_vnet_hdr_len) {
|
||||
/* Invalid packet */
|
||||
break;
|
||||
}
|
||||
|
||||
if (s->host_vnet_hdr_len && !s->using_vnet_hdr) {
|
||||
buf += s->host_vnet_hdr_len;
|
||||
size -= s->host_vnet_hdr_len;
|
||||
|
|
@ -890,8 +895,8 @@ int net_init_tap(const Netdev *netdev, const char *name,
|
|||
goto free_fail;
|
||||
}
|
||||
|
||||
ret = g_unix_set_fd_nonblocking(fd, true, NULL);
|
||||
if (!ret) {
|
||||
if (!g_unix_set_fd_nonblocking(fd, true, NULL)) {
|
||||
ret = -1;
|
||||
error_setg_errno(errp, errno, "%s: Can't use file descriptor %d",
|
||||
name, fd);
|
||||
goto free_fail;
|
||||
|
|
|
|||
|
|
@ -298,7 +298,6 @@ static void chr_closed_bh(void *opaque)
|
|||
const char *name = opaque;
|
||||
NetClientState *ncs[MAX_QUEUE_NUM];
|
||||
NetVhostUserState *s;
|
||||
Error *err = NULL;
|
||||
int queues, i;
|
||||
|
||||
queues = qemu_find_net_clients_except(name, ncs,
|
||||
|
|
@ -317,9 +316,6 @@ static void chr_closed_bh(void *opaque)
|
|||
qemu_chr_fe_set_handlers(&s->chr, NULL, NULL, net_vhost_user_event,
|
||||
NULL, opaque, NULL, true);
|
||||
|
||||
if (err) {
|
||||
error_report_err(err);
|
||||
}
|
||||
qapi_event_send_netdev_vhost_user_disconnected(name);
|
||||
}
|
||||
|
||||
|
|
@ -329,7 +325,6 @@ static void net_vhost_user_event(void *opaque, QEMUChrEvent event)
|
|||
NetClientState *ncs[MAX_QUEUE_NUM];
|
||||
NetVhostUserState *s;
|
||||
Chardev *chr;
|
||||
Error *err = NULL;
|
||||
int queues;
|
||||
|
||||
queues = qemu_find_net_clients_except(name, ncs,
|
||||
|
|
@ -375,10 +370,6 @@ static void net_vhost_user_event(void *opaque, QEMUChrEvent event)
|
|||
/* Ignore */
|
||||
break;
|
||||
}
|
||||
|
||||
if (err) {
|
||||
error_report_err(err);
|
||||
}
|
||||
}
|
||||
|
||||
static int net_vhost_user_init(NetClientState *peer, const char *device,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue