lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 20 Mar 2015 13:57:57 +0800 From: Jason Wang <jasowang@...hat.com> To: KY Srinivasan <kys@...rosoft.com> Cc: "davem@...emloft.net" <davem@...emloft.net>, "netdev@...r.kernel.org" <netdev@...r.kernel.org>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, "devel@...uxdriverproject.org" <devel@...uxdriverproject.org>, "olaf@...fle.de" <olaf@...fle.de>, "apw@...onical.com" <apw@...onical.com> Subject: RE: [PATCH V3 2/2 net-next] hyperv: Support batched notification On Fri, Mar 20, 2015 at 12:53 AM, KY Srinivasan <kys@...rosoft.com> wrote: > > >> -----Original Message----- >> From: Jason Wang [mailto:jasowang@...hat.com] >> Sent: Tuesday, March 17, 2015 8:09 PM >> To: KY Srinivasan >> Cc: davem@...emloft.net; netdev@...r.kernel.org; linux- >> kernel@...r.kernel.org; devel@...uxdriverproject.org; >> olaf@...fle.de; >> apw@...onical.com; KY Srinivasan >> Subject: Re: [PATCH V3 2/2 net-next] hyperv: Support batched >> notification >> >> >> >> On Wed, Mar 18, 2015 at 12:02 AM, K. Y. Srinivasan >> <kys@...rosoft.com> >> wrote: >> > Optimize notifying the host by deferring notification until there >> > are no more packets to be sent. This will help in batching the >> > requests >> > on the host. >> > >> > Signed-off-by: K. Y. Srinivasan <kys@...rosoft.com> >> > --- >> > drivers/net/hyperv/hyperv_net.h | 2 +- >> > drivers/net/hyperv/netvsc.c | 14 +++++++++----- >> > drivers/net/hyperv/netvsc_drv.c | 2 +- >> > drivers/net/hyperv/rndis_filter.c | 2 +- >> > 4 files changed, 12 insertions(+), 8 deletions(-) >> > >> > diff --git a/drivers/net/hyperv/hyperv_net.h >> > b/drivers/net/hyperv/hyperv_net.h >> > index 4815843..3fd9896 100644 >> > --- a/drivers/net/hyperv/hyperv_net.h >> > +++ b/drivers/net/hyperv/hyperv_net.h >> > @@ -184,7 +184,7 @@ struct rndis_device { >> > int netvsc_device_add(struct hv_device *device, void >> > *additional_info); >> > int netvsc_device_remove(struct hv_device *device); >> > int netvsc_send(struct hv_device *device, >> > - struct hv_netvsc_packet *packet); >> > + struct hv_netvsc_packet *packet, bool kick_q); >> > void netvsc_linkstatus_callback(struct hv_device *device_obj, >> > struct rndis_message *resp); >> > int netvsc_recv_callback(struct hv_device *device_obj, >> > diff --git a/drivers/net/hyperv/netvsc.c >> b/drivers/net/hyperv/netvsc.c >> > index 208eb05..9003b94 100644 >> > --- a/drivers/net/hyperv/netvsc.c >> > +++ b/drivers/net/hyperv/netvsc.c >> > @@ -707,7 +707,7 @@ static u32 netvsc_copy_to_send_buf(struct >> > netvsc_device *net_device, >> > } >> > >> > int netvsc_send(struct hv_device *device, >> > - struct hv_netvsc_packet *packet) >> > + struct hv_netvsc_packet *packet, bool kick_q) >> > { >> > struct netvsc_device *net_device; >> > int ret = 0; >> > @@ -719,6 +719,7 @@ int netvsc_send(struct hv_device *device, >> > u32 msg_size = 0; >> > struct sk_buff *skb = NULL; >> > u16 q_idx = packet->q_idx; >> > + u32 vmbus_flags = >> VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED; >> > >> > >> > net_device = get_outbound_net_device(device); >> > @@ -768,18 +769,21 @@ int netvsc_send(struct hv_device *device, >> > return -ENODEV; >> > >> > if (packet->page_buf_cnt) { >> > - ret = vmbus_sendpacket_pagebuffer(out_channel, >> > + ret = vmbus_sendpacket_pagebuffer_ctl(out_channel, >> > packet->page_buf, >> > packet->page_buf_cnt, >> > &sendMessage, >> > sizeof(struct >> nvsp_message), >> > - req_id); >> > + req_id, >> > + vmbus_flags, >> > + kick_q); >> > } else { >> > - ret = vmbus_sendpacket(out_channel, &sendMessage, >> > + ret = vmbus_sendpacket_ctl(out_channel, &sendMessage, >> > sizeof(struct nvsp_message), >> > req_id, >> > VM_PKT_DATA_INBAND, >> > - >> VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED); >> > + vmbus_flags, >> > + kick_q); >> > } >> > >> > if (ret == 0) { >> > diff --git a/drivers/net/hyperv/netvsc_drv.c >> > b/drivers/net/hyperv/netvsc_drv.c >> > index a06bd66..eae58db 100644 >> > --- a/drivers/net/hyperv/netvsc_drv.c >> > +++ b/drivers/net/hyperv/netvsc_drv.c >> > @@ -556,7 +556,7 @@ do_send: >> > packet->page_buf_cnt = init_page_array(rndis_msg, >> rndis_msg_size, >> > skb, &packet->page_buf[0]); >> > >> > - ret = netvsc_send(net_device_ctx->device_ctx, packet); >> > + ret = netvsc_send(net_device_ctx->device_ctx, packet, >> > !skb->xmit_more); >> > >> >> Looks like the issue of V2 still there (E.g we need to kick when >> hv_ringbuffer_write() returns -EAGAIN? > > Jason, this issue will be handled in the lower layer. I have already > submitted a patch to the vmbus > Driver that correctly signals the host when EAGAIN is encountered. > > Regards, > > K. Y Okay, find the mail but looks like I was not cced. Please keep me in the cc list for hyperv patches. Thanks -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists