Message ID | 913d4885a93b10a9ff4d8f1de318cefa54c803e6.1542794577.git.igor.russkikh@aquantia.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add support for Aquantia AQtion USB to 5/2.5GbE devices | expand |
From: Igor Russkikh <Igor.Russkikh@aquantia.com> Date: Wed, 21 Nov 2018 10:13:48 +0000 > @@ -832,6 +832,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; ... > +#define AQ_TX_DESC_MSS_MASK 0x7FFF This implies a GSO size limit, which you need to advertise properly in netdevice->gso_max_size. Also, where is the TSO feature flag being set to actually enable the stack sending your GSO frames?
Hi David, On 22.11.2018 22:17, David Miller wrote: > From: Igor Russkikh <Igor.Russkikh@aquantia.com> > Date: Wed, 21 Nov 2018 10:13:48 +0000 > >> @@ -832,6 +832,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; > ... >> +#define AQ_TX_DESC_MSS_MASK 0x7FFF > > This implies a GSO size limit, which you need to advertise properly in > netdevice->gso_max_size. Right, will do this. Thanks for your other comments as well, will fix in v4. > Also, where is the TSO feature flag being set to actually enable the > stack sending your GSO frames? Thats the same patch: /* 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) Regards, Igor
diff --git a/drivers/net/usb/aqc111.c b/drivers/net/usb/aqc111.c index 36d0da6efbed..4bb493c7224f 100644 --- a/drivers/net/usb/aqc111.c +++ b/drivers/net/usb/aqc111.c @@ -832,6 +832,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; diff --git a/drivers/net/usb/aqc111.h b/drivers/net/usb/aqc111.h index 165cdb8b022c..a7a333914461 100644 --- a/drivers/net/usb/aqc111.h +++ b/drivers/net/usb/aqc111.h @@ -22,10 +22,12 @@ /* 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