Messages in this thread | | | Date | Wed, 07 Dec 2011 11:59:11 -0500 | From | Mark Lord <> | Subject | Re: [PATCH] drivers/net/usb/asix: resync from vendor's copy |
| |
On 11-12-07 11:27 AM, Ben Hutchings wrote: > On Wed, 2011-12-07 at 11:21 -0500, Mark Lord wrote: .. >> Heh.. my thinking side says to use the exact same protocol-specific flags >> in both "hw_features" and "features", and therefore check for those flags >> inside the "set_features()" function. > > Right.
Thanks. Now now we have:
static int ax88772b_set_features(struct net_device *netdev, u32 features) { struct usbnet *dev = netdev_priv(netdev); u16 tx_csum = 0, rx_csum = 0;
if (features & NETIF_F_IP_CSUM) tx_csum |= AX_TXCOE_TCP | AX_TXCOE_UDP; if (features & NETIF_F_IPV6_CSUM) tx_csum |= AX_TXCOE_TCPV6 | AX_TXCOE_UDPV6; if (features & NETIF_F_RXCSUM) rx_csum = AX_RXCOE_DEF_CSUM; ax8817x_write_cmd(dev, AX_CMD_WRITE_TXCOE_CTL, tx_csum, 0, 0, NULL); ax8817x_write_cmd(dev, AX_CMD_WRITE_RXCOE_CTL, rx_csum, 0, 0, NULL); return 0; }
static int ax88772b_bind(struct usbnet *dev, struct usb_interface *intf) { ...
/* enable hardware checksums */ dev->net->hw_features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM; dev->net->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM; ax88772b_set_features(dev->net, dev->net->features); ... }
| |