> -----Original Message----- > From: Linus Torvalds [mailto:torvalds@xxxxxxxxxxxxxxxxxxxx] > Sent: Thursday, June 9, 2016 5:12 PM > To: KY Srinivasan <kys@xxxxxxxxxxxxx> > Cc: davem@xxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; lkml <linux- > kernel@xxxxxxxxxxxxxxx>; devel@xxxxxxxxxxxxxxxxxxxxxx; olaf@xxxxxxxxx; > apw@xxxxxxxxxxxxx; jasowang@xxxxxxxxxx; > leann.ogasawara@xxxxxxxxxxxxx > Subject: Re: [PATCH net-next] netvsc: Use the new in-place consumption APIs in > the rx path > > Srinivasan, > > these are all sent through linuxonhyperv.com, and fail DMARC because > they have a microsoft.com address but no valid DKIM. > > Please fix your email setup. You need to go through the real > microsoft smtp servers if you use a microsoft.com address. Or you need > to get linuxonhyperv.com fixed as a smtp server with the proper MS > email signing. > > Linus Thanks Linus, we will fix our email setup. Regards, K. Y > > On Thu, Jun 9, 2016 at 6:34 PM, K. Y. Srinivasan <kys@xxxxxxxxxxxxx> wrote: > > Use the new APIs for eliminating a copy on the receive path. These new APIs > also > > help in minimizing the number of memory barriers we end up issuing (in the > > ringbuffer code) since we can better control when we want to expose the ring > > state to the host. > > > > Signed-off-by: K. Y. Srinivasan <kys@xxxxxxxxxxxxx> > > Reviewed-by: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx> > > Tested-by: Dexuan Cui <decui@xxxxxxxxxxxxx> > > Tested-by: Simon Xiao <sixiao@xxxxxxxxxxxxx> > > --- > > drivers/net/hyperv/netvsc.c | 88 +++++++++++++++++++++++++++++--------- > ----- > > 1 files changed, 59 insertions(+), 29 deletions(-) > > > > diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c > > index 719cb35..8cd4c19 100644 > > --- a/drivers/net/hyperv/netvsc.c > > +++ b/drivers/net/hyperv/netvsc.c > > @@ -1141,6 +1141,39 @@ static inline void netvsc_receive_inband(struct > hv_device *hdev, > > } > > } > > > > +static void netvsc_process_raw_pkt(struct hv_device *device, > > + struct vmbus_channel *channel, > > + struct netvsc_device *net_device, > > + struct net_device *ndev, > > + u64 request_id, > > + struct vmpacket_descriptor *desc) > > +{ > > + struct nvsp_message *nvmsg; > > + > > + nvmsg = (struct nvsp_message *)((unsigned long) > > + desc + (desc->offset8 << 3)); > > + > > + switch (desc->type) { > > + case VM_PKT_COMP: > > + netvsc_send_completion(net_device, channel, device, desc); > > + break; > > + > > + case VM_PKT_DATA_USING_XFER_PAGES: > > + netvsc_receive(net_device, channel, device, desc); > > + break; > > + > > + case VM_PKT_DATA_INBAND: > > + netvsc_receive_inband(device, net_device, nvmsg); > > + break; > > + > > + default: > > + netdev_err(ndev, "unhandled packet type %d, tid %llx\n", > > + desc->type, request_id); > > + break; > > + } > > +} > > + > > + > > void netvsc_channel_cb(void *context) > > { > > int ret; > > @@ -1153,7 +1186,7 @@ void netvsc_channel_cb(void *context) > > unsigned char *buffer; > > int bufferlen = NETVSC_PACKET_SIZE; > > struct net_device *ndev; > > - struct nvsp_message *nvmsg; > > + bool need_to_commit = false; > > > > if (channel->primary_channel != NULL) > > device = channel->primary_channel->device_obj; > > @@ -1167,39 +1200,36 @@ void netvsc_channel_cb(void *context) > > buffer = get_per_channel_state(channel); > > > > do { > > + desc = get_next_pkt_raw(channel); > > + if (desc != NULL) { > > + netvsc_process_raw_pkt(device, > > + channel, > > + net_device, > > + ndev, > > + desc->trans_id, > > + desc); > > + > > + put_pkt_raw(channel, desc); > > + need_to_commit = true; > > + continue; > > + } > > + if (need_to_commit) { > > + need_to_commit = false; > > + commit_rd_index(channel); > > + } > > + > > ret = vmbus_recvpacket_raw(channel, buffer, bufferlen, > > &bytes_recvd, &request_id); > > if (ret == 0) { > > if (bytes_recvd > 0) { > > desc = (struct vmpacket_descriptor *)buffer; > > - nvmsg = (struct nvsp_message *)((unsigned long) > > - desc + (desc->offset8 << 3)); > > - switch (desc->type) { > > - case VM_PKT_COMP: > > - netvsc_send_completion(net_device, > > - channel, > > - device, desc); > > - break; > > - > > - case VM_PKT_DATA_USING_XFER_PAGES: > > - netvsc_receive(net_device, channel, > > - device, desc); > > - break; > > - > > - case VM_PKT_DATA_INBAND: > > - netvsc_receive_inband(device, > > - net_device, > > - nvmsg); > > - break; > > - > > - default: > > - netdev_err(ndev, > > - "unhandled packet type %d, " > > - "tid %llx len %d\n", > > - desc->type, request_id, > > - bytes_recvd); > > - break; > > - } > > + netvsc_process_raw_pkt(device, > > + channel, > > + net_device, > > + ndev, > > + request_id, > > + desc); > > + > > > > } else { > > /* > > -- > > 1.7.4.1 > > _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel