On 5/30/2016 11:00 AM, Yuanhan Liu wrote: > On Mon, May 30, 2016 at 02:40:00AM +0000, Xie, Huawei wrote: >> On 5/27/2016 5:06 PM, Yuanhan Liu wrote: >>> On Tue, May 24, 2016 at 09:38:32PM +0800, Huawei Xie wrote: >>>> vq->vq_ring_mem = mz->phys_addr; >>>> vq->vq_ring_virt_mem = mz->addr; >>>> - PMD_INIT_LOG(DEBUG, "vq->vq_ring_mem: 0x%"PRIx64, >>>> (uint64_t)mz->phys_addr); >>>> - PMD_INIT_LOG(DEBUG, "vq->vq_ring_virt_mem: 0x%"PRIx64, >>>> (uint64_t)(uintptr_t)mz->addr); >>>> - vq->virtio_net_hdr_mz = NULL; >>>> - vq->virtio_net_hdr_mem = 0; >>>> + PMD_INIT_LOG(DEBUG, "vq->vq_ring_mem: 0x%"PRIx64, >>>> + (uint64_t)mz->phys_addr); >>>> + PMD_INIT_LOG(DEBUG, "vq->vq_ring_virt_mem: 0x%"PRIx64, >>>> + (uint64_t)(uintptr_t)mz->addr); >>>> + >>>> + hdr_mz = rte_memzone_reserve_aligned(vq_hdr_name, sz_hdr_mz, socket_id, >>>> + 0, RTE_CACHE_LINE_SIZE); >>> We don't need allocate hdr_mz for Rx queue, and in such case, sz_hdr_mz >>> is 0. I'm wondering what hdr_mz would be then, NULL? >>> >>> Anyway, you should skip the hdr_mz allocation for Rx queue, and I also >>> would suggest you to move the vq_hdr_name setup here. >> will check sz_hdr_mz before the zone allocation. >> >> >>>> + if (hdr_mz == NULL) { >>>> + if (rte_errno == EEXIST) >>>> + hdr_mz = rte_memzone_lookup(vq_hdr_name); >>>> + if (hdr_mz == NULL) { >>>> + ret = -ENOMEM; >>>> + goto fail_q_alloc; >>>> + } >>>> + } >>>> >>> ... >>>> >>>> PMD_INIT_FUNC_TRACE(); >>>> ret = virtio_dev_queue_setup(dev, VTNET_CQ, VTNET_SQ_CQ_QUEUE_IDX, >>>> - vtpci_queue_idx, 0, socket_id, &vq); >>>> + vtpci_queue_idx, 0, socket_id, (void **)&cvq); >>> Unnecessary cast. Note that there are few others like that in this >>> patch. >> This cast is needed. > Oh, right, indeed. Sorry. > >>>> - PMD_RX_LOG(DEBUG, "dequeue:%d", num); >>>> - PMD_RX_LOG(DEBUG, "packet len:%d", len[0]); >>>> + PMD_RX_LOG(DEBUG, "dequeue:%d\n", num); >>>> + PMD_RX_LOG(DEBUG, "packet len:%d\n", len[0]); >>> We should not append "\n" for PMD_RX_LOG; this macro alreadys does it. >> Weird. Will remove it. Thanks. >> >>> Another note is that you might want to run checkpatch; I saw quite many >>> warnings. >> Had checked. The warnings are all due to 80 char limitation of >> virtio_rxq_stats_strings. Just 4 or 5 chars cross 80 line limit. I >> prefer to keep the fields aligned. > Agreed. However, I was talking about others warnings.
ok, i see you are using checkpatch of newer Linux kernel. > > --yliu > > --- > CHECK:BRACES: braces {} should be used on all arms of this statement > #198: FILE: drivers/net/virtio/virtio_ethdev.c:343: would fix this. > + if (queue_type == VTNET_RQ) > [...] > + else if (queue_type == VTNET_TQ) { > [...] > + } else if (queue_type == VTNET_CQ) { > [...] > > CHECK:CAMELCASE: Avoid CamelCase: <PRIx64> > #280: FILE: drivers/net/virtio/virtio_ethdev.c:404: > + PMD_INIT_LOG(DEBUG, "vq->vq_ring_mem: 0x%"PRIx64, > > CHECK:CONCATENATED_STRING: Concatenated strings should use spaces > between elements > #280: FILE: drivers/net/virtio/virtio_ethdev.c:404: > + PMD_INIT_LOG(DEBUG, "vq->vq_ring_mem: 0x%"PRIx64, > > CHECK:CONCATENATED_STRING: Concatenated strings should use spaces > between elements > #282: FILE: drivers/net/virtio/virtio_ethdev.c:406: > + PMD_INIT_LOG(DEBUG, "vq->vq_ring_virt_mem: 0x%"PRIx64, > > WARNING:UNSPECIFIED_INT: Prefer 'unsigned int' to bare use of 'unsigned' > #482: FILE: drivers/net/virtio/virtio_ethdev.c:753: > + unsigned nstats = dev->data->nb_tx_queues * VIRTIO_NB_TXQ_XSTATS > + > > WARNING:LONG_LINE: line over 80 characters > #551: FILE: drivers/net/virtio/virtio_ethdev.c:819: > + memset(txvq->stats.size_bins, 0, > sizeof(txvq->stats.size_bins[0]) * 8); > > WARNING:LONG_LINE: line over 80 characters > #571: FILE: drivers/net/virtio/virtio_ethdev.c:832: > + memset(rxvq->stats.size_bins, 0, > sizeof(rxvq->stats.size_bins[0]) * 8); would fix this. > > CHECK:MULTIPLE_ASSIGNMENTS: multiple assignments should be avoided > #1529: FILE: drivers/net/virtio/virtio_rxtx_simple.c:362: > + nb_commit = nb_pkts = RTE_MIN((vq->vq_free_cnt >> 1), nb_pkts); > > CHECK:SPACING: No space is necessary after a cast > #1530: FILE: drivers/net/virtio/virtio_rxtx_simple.c:363: > + desc_idx = (uint16_t) (vq->vq_avail_idx & desc_idx_max); All other warnings are due to the newer checkpatch script, and not introduced by this patch, so wouldn't fix in this patch. But i think some are better programming practice, like 'Concatenated strings should use spaces between elements', so would post a patch to fix them in virtio driver (if possible, all other drivers).