All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ben Hutchings <bhutchings@solarflare.com>
To: GuanXuetao <gxt@mprc.pku.edu.cn>
Cc: arnd@arndb.de, linux-kernel@vger.kernel.org,
	linux-arch@vger.kernel.org, greg@kroah.com,
	netdev@vger.kernel.org
Subject: Re: [PATCH 2/6] unicore32: add pkunity-v3 mac/net driver (umal)
Date: Thu, 26 May 2011 10:56:09 -0700	[thread overview]
Message-ID: <1306432569.17233.123.camel@localhost> (raw)
In-Reply-To: <556924396ee34f4af94a2f03767973f1cec35e22.1306408804.git.gxt@mprc.pku.edu.cn>

On Thu, 2011-05-26 at 11:36 +0000, GuanXuetao wrote:
[...]
> --- /dev/null
> +++ b/drivers/net/mac-puv3.c
[...]
> +/**********************************************************************
> + *  Simple types
> + ********************************************************************* */
> +enum umal_speed {
> +	umal_speed_none = 0,
> +	umal_speed_10 = SPEED_10,
> +	umal_speed_100 = SPEED_100,
> +	umal_speed_1000 = SPEED_1000,
> +};

Just use the numbers directly: 0, 10, 100, 1000.

[...]
> +#define ETHER_ADDR_LEN		6

This is already called ETH_ALEN.

[...]
> +/**********************************************************************
> + *  DMA Descriptor structure
> + ********************************************************************* */
> +struct umaldmadscr {
> +	dma_addr_t   PacketStartAddr;
> +	int          PacketSize;
> +	dma_addr_t   NextDescriptor;
> +	struct umaldmadscr *NextDescriptor_Virt;
> +};

Linux naming convention for structure fields is words_with_underscores
not TitleCase.

[...]
> +/**********************************************************************
> + *  UMAL_MII_RESET(bus)
> + *
> + *  Reset MII bus.
> + *
> + *  Input parameters:
> + *	   bus     - MDIO bus handle
> + *
> + *  Return value:
> + *	   0 if ok
> + ********************************************************************* */

Function documentation comments must follow the kernel-doc format.

[...]
> +static int umaldma_add_rcvbuffer(struct umal_softc *sc, struct umaldma *d,
> +		struct sk_buff *sb)
> +{
[...]
> +	/*
> +	 * Allocate a sk_buff if we don't already have one.
> +	 * If we do have an sk_buff, reset it so that it's empty.
> +	 *
> +	 * Note: sk_buffs don't seem to be guaranteed to have any sort
> +	 * of alignment when they are allocated.  Therefore, allocate enough
> +	 * extra space to make sure that:
> +	 *
> +	 *    1. the data does not start in the middle of a cache line.
> +	 *    2. The data does not end in the middle of a cache line
> +	 *    3. The buffer can be aligned such that the IP addresses are
> +	 *       naturally aligned.
> +	 *
> +	 *  Remember, the SOCs MAC writes whole cache lines at a time,
> +	 *  without reading the old contents first.  So, if the sk_buff's
> +	 *  data portion starts in the middle of a cache line, the SOC
> +	 *  DMA will trash the beginning (and ending) portions.
> +	 */
> +	if (sb == NULL) {
> +		sb_new = netdev_alloc_skb(dev, ENET_PACKET_SIZE +
> +		       SMP_CACHE_BYTES * 2 + NET_IP_ALIGN);
> +		if (sb_new == NULL) {
> +			pr_info("%s: sk_buff allocation failed\n",
> +			       d->umaldma_eth->umal_dev->name);
> +			return -ENOBUFS;

Surely -ENOMEM.

> +		}
> +		skb_reserve(sb_new, 2);

This presumably needs to be:

		skb_reserve(sb_new, SMP_CACHE_BYTES + NET_IP_ALIGN);

unless you assume that the skb allocator will always ensure cache line
alignment (in which case, why use padding of SMP_CACHE_BYTES * 2?).

[...]
> +static void umaldma_tx_process(struct umal_softc *sc, struct umaldma *d,
> +		int poll)
> +{
> +	struct net_device *dev = sc->umal_dev;
> +	int curidx;
> +	int hwidx;
> +	struct umaldmadscr *dsc;
> +	struct sk_buff *sb;
> +	unsigned long flags;
> +	int packets_handled = 0;
> +	unsigned int int_status;
> +
> +	spin_lock_irqsave(&(sc->umal_lock), flags);
> +
> +	if (!netif_device_present(dev))
> +		return;
[...]

This returns with the lock held!

(This is not by any means a thorough review.)

Ben.

-- 
Ben Hutchings, Senior Software Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.

  parent reply	other threads:[~2011-05-26 17:56 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-26 11:36 [PATCH 0/6] unicore32 subsystem: 6 patches for 2.6.39 GuanXuetao
2011-05-26 11:36 ` [PATCH 1/6] unicore32: move rtc-puv3.c to drivers/rtc directory GuanXuetao
2011-05-26 12:40   ` Arnd Bergmann
2011-05-27  3:04     ` Guan Xuetao
2011-05-27  3:04       ` Guan Xuetao
2011-05-26 11:36 ` [PATCH 2/6] unicore32: add pkunity-v3 mac/net driver (umal) GuanXuetao
2011-05-26 12:43   ` Arnd Bergmann
2011-05-27  3:08     ` Guan Xuetao
2011-05-27  3:08       ` Guan Xuetao
2011-05-26 17:56   ` Ben Hutchings [this message]
2011-05-27  4:27     ` Guan Xuetao
2011-05-27  4:27       ` Guan Xuetao
2011-05-27  9:19   ` Arnd Bergmann
2011-05-28  2:52     ` Guan Xuetao
2011-05-28  2:52       ` Guan Xuetao
2011-05-26 11:36 ` [PATCH 3/6] unicore32: change zImage physical address, though it's PIC codes GuanXuetao
2011-05-26 12:44   ` Arnd Bergmann
2011-05-26 11:36 ` [PATCH 4/6] unicore32: add KBUILD_DEFCONFIG with unicore32_defconfig (old debug_defconfig) GuanXuetao
2011-05-26 12:45   ` Arnd Bergmann
2011-05-26 11:36 ` [PATCH 5/6] unicore32: change PERCPU to PERCPU_SECTION GuanXuetao
2011-05-26 11:46   ` Tejun Heo
2011-05-26 11:36 ` [PATCH 6/6] unicore32: using generic-y format for one line asm-generic files GuanXuetao
2011-05-26 12:45   ` Arnd Bergmann
2011-05-27  3:24     ` Guan Xuetao
2011-05-27  3:24       ` Guan Xuetao
2011-05-26 12:50 ` [PATCH 0/6] unicore32 subsystem: 6 patches for 2.6.39 Arnd Bergmann
2011-05-27  2:58   ` Guan Xuetao
2011-05-27  2:58     ` Guan Xuetao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1306432569.17233.123.camel@localhost \
    --to=bhutchings@solarflare.com \
    --cc=arnd@arndb.de \
    --cc=greg@kroah.com \
    --cc=gxt@mprc.pku.edu.cn \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.