OSDN Git Service

net: usb: aqc111: Add support for TSO
authorDmitry Bezrukov <dmitry.bezrukov@aquantia.com>
Mon, 26 Nov 2018 09:33:28 +0000 (09:33 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 27 Nov 2018 23:46:07 +0000 (15:46 -0800)
Signed-off-by: Dmitry Bezrukov <dmitry.bezrukov@aquantia.com>
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/aqc111.c
drivers/net/usb/aqc111.h

index 7b69d0a..fce2a4f 100644 (file)
@@ -395,6 +395,8 @@ static int aqc111_bind(struct usbnet *dev, struct usb_interface *intf)
        dev->net->hw_features |= AQ_SUPPORT_HW_FEATURE;
        dev->net->features |= AQ_SUPPORT_FEATURE;
 
+       netif_set_gso_max_size(dev->net, 65535);
+
        aqc111_read_fw_version(dev, aqc111_data);
        aqc111_data->autoneg = AUTONEG_ENABLE;
        aqc111_data->advertised_speed = (usb_speed == USB_SPEED_SUPER) ?
@@ -832,6 +834,10 @@ static struct sk_buff *aqc111_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
        /*Length of actual data*/
        tx_desc |= skb->len & AQ_TX_DESC_LEN_MASK;
 
+       /* TSO MSS */
+       tx_desc |= ((u64)(skb_shinfo(skb)->gso_size & AQ_TX_DESC_MSS_MASK)) <<
+                  AQ_TX_DESC_MSS_SHIFT;
+
        headroom = (skb->len + sizeof(tx_desc)) % 8;
        if (headroom != 0)
                padding_size = 8 - headroom;
index 165cdb8..a7a3339 100644 (file)
 
 /* Feature. ********************************************/
 #define AQ_SUPPORT_FEATURE     (NETIF_F_SG | NETIF_F_IP_CSUM |\
-                                NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM)
+                                NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM |\
+                                NETIF_F_TSO)
 
 #define AQ_SUPPORT_HW_FEATURE  (NETIF_F_SG | NETIF_F_IP_CSUM |\
-                                NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM)
+                                NETIF_F_IPV6_CSUM | NETIF_F_RXCSUM |\
+                                NETIF_F_TSO)
 
 /* SFR Reg. ********************************************/
 
@@ -162,6 +164,8 @@ struct aqc111_data {
 /* TX Descriptor */
 #define AQ_TX_DESC_LEN_MASK    0x1FFFFF
 #define AQ_TX_DESC_DROP_PADD   BIT(28)
+#define AQ_TX_DESC_MSS_MASK    0x7FFF
+#define AQ_TX_DESC_MSS_SHIFT   0x20
 
 #define AQ_RX_HW_PAD                   0x02