Thread (36 messages) 36 messages, 5 authors, 2011-12-07

Re: [PATCH] drivers/net/usb/asix: resync from vendor's copy

From: Ben Hutchings <hidden>
Date: 2011-11-09 17:48:21
Also in: lkml

On Wed, 2011-11-09 at 12:40 -0500, Mark Lord wrote:
On 11-11-09 12:31 PM, Ben Hutchings wrote:
quoted
On Wed, 2011-11-09 at 12:20 -0500, Mark Lord wrote:
quoted
On 11-11-09 11:57 AM, Mark Lord wrote:
quoted
On 11-11-09 11:47 AM, Mark Lord wrote:
..
quoted
Note:  I'm looking at smsc95xx.c and smsc75xx.c for examples,
and they both have the same problem I'll have here:

How to update the csum settings atomically.
A spinlock is no good, because config register access is over USB.
Nevermind.. a slight change in the logic and all is well again.
..

Or even simpler (below).  I don't think this method requires any
extra locking, but I'm still open to persuasion.  :)
Looks reasonable, but...
quoted
static int ax88772b_set_features(struct net_device *netdev, u32 features)
{
        struct usbnet *dev = netdev_priv(netdev);
        struct ax88772b_data *priv = (struct ax88772b_data *)dev->driver_priv;
        u16 tx_csum = 0, rx_csum = 0;

        priv->features = features & (NETIF_F_HW_CSUM | NETIF_F_RXCSUM);
...why do you need priv->features at all?

There's code elsewhere that takes action under some conditions
based on the current setting of the NETIF_F_RXCSUM flag.

I don't claim to fully understand what's going on,
but it doesn't care much about races on set/clear of the flag.
And it can use dev->features.

Ben.

-- 
Ben Hutchings, Staff 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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help