Messages in this thread | ![/](/images/icornerl.gif) | | Subject | Re: [PATCH] drivers/net/usb/asix: resync from vendor's copy | From | Ben Hutchings <> | Date | Wed, 9 Nov 2011 17:31:51 +0000 |
| |
On Wed, 2011-11-09 at 12:20 -0500, Mark Lord wrote: > On 11-11-09 11:57 AM, Mark Lord wrote: > > On 11-11-09 11:47 AM, Mark Lord wrote: > > .. > >> 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...
> 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?
Ben.
> if (features & NETIF_F_HW_CSUM) > tx_csum = AX_TXCOE_DEF_CSUM; > if (features & NETIF_F_RXCSUM) > rx_csum = AX_RXCOE_DEF_CSUM; > ax8817x_write_cmd(dev, AX_CMD_WRITE_RXCOE_CTL, rx_csum, 0, 0, NULL); > ax8817x_write_cmd(dev, AX_CMD_WRITE_TXCOE_CTL, tx_csum, 0, 0, NULL); > return 0; > } >
-- 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.
| ![\](/images/icornerr.gif) |