mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 15:18:19 +00:00
Merge branch 'nfp-tso'
Merge branch 'nfp-tso' Simon Horman says: ==================== nfp: enable TSO by default this short series enables TSO by default on all NICs supported by the NFP driver. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
e7ce9fc9ad
3 changed files with 5 additions and 24 deletions
|
@ -56,17 +56,6 @@ nfp_nfdk_tx_tso(struct nfp_net_r_vector *r_vec, struct nfp_nfdk_tx_buf *txbuf,
|
||||||
segs = skb_shinfo(skb)->gso_segs;
|
segs = skb_shinfo(skb)->gso_segs;
|
||||||
mss = skb_shinfo(skb)->gso_size & NFDK_DESC_TX_MSS_MASK;
|
mss = skb_shinfo(skb)->gso_size & NFDK_DESC_TX_MSS_MASK;
|
||||||
|
|
||||||
/* Note: TSO of the packet with metadata prepended to skb is not
|
|
||||||
* supported yet, in which case l3/l4_offset and lso_hdrlen need
|
|
||||||
* be correctly handled here.
|
|
||||||
* Concern:
|
|
||||||
* The driver doesn't have md_bytes easily available at this point.
|
|
||||||
* The PCI.IN PD ME won't have md_bytes bytes to add to lso_hdrlen,
|
|
||||||
* so it needs the full length there. The app MEs might prefer
|
|
||||||
* l3_offset and l4_offset relative to the start of packet data,
|
|
||||||
* but could probably cope with it being relative to the CTM buf
|
|
||||||
* data offset.
|
|
||||||
*/
|
|
||||||
txd.l3_offset = l3_offset;
|
txd.l3_offset = l3_offset;
|
||||||
txd.l4_offset = l4_offset;
|
txd.l4_offset = l4_offset;
|
||||||
txd.lso_meta_res = 0;
|
txd.lso_meta_res = 0;
|
||||||
|
@ -190,12 +179,6 @@ static int nfp_nfdk_prep_port_id(struct sk_buff *skb)
|
||||||
if (unlikely(md_dst->type != METADATA_HW_PORT_MUX))
|
if (unlikely(md_dst->type != METADATA_HW_PORT_MUX))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Note: Unsupported case when TSO a skb with metedata prepended.
|
|
||||||
* See the comments in `nfp_nfdk_tx_tso` for details.
|
|
||||||
*/
|
|
||||||
if (unlikely(md_dst && skb_is_gso(skb)))
|
|
||||||
return -EOPNOTSUPP;
|
|
||||||
|
|
||||||
if (unlikely(skb_cow_head(skb, sizeof(md_dst->u.port_info.port_id))))
|
if (unlikely(skb_cow_head(skb, sizeof(md_dst->u.port_info.port_id))))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -2420,12 +2420,11 @@ static void nfp_net_netdev_init(struct nfp_net *nn)
|
||||||
if (nfp_app_has_tc(nn->app) && nn->port)
|
if (nfp_app_has_tc(nn->app) && nn->port)
|
||||||
netdev->hw_features |= NETIF_F_HW_TC;
|
netdev->hw_features |= NETIF_F_HW_TC;
|
||||||
|
|
||||||
/* Advertise but disable TSO by default.
|
/* C-Tag strip and S-Tag strip can't be supported simultaneously,
|
||||||
* C-Tag strip and S-Tag strip can't be supported simultaneously,
|
|
||||||
* so enable C-Tag strip and disable S-Tag strip by default.
|
* so enable C-Tag strip and disable S-Tag strip by default.
|
||||||
*/
|
*/
|
||||||
netdev->features &= ~(NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_HW_VLAN_STAG_RX);
|
netdev->features &= ~NETIF_F_HW_VLAN_STAG_RX;
|
||||||
nn->dp.ctrl &= ~(NFP_NET_CFG_CTRL_LSO_ANY | NFP_NET_CFG_CTRL_RXQINQ);
|
nn->dp.ctrl &= ~NFP_NET_CFG_CTRL_RXQINQ;
|
||||||
|
|
||||||
/* Finalise the netdev setup */
|
/* Finalise the netdev setup */
|
||||||
switch (nn->dp.ops->version) {
|
switch (nn->dp.ops->version) {
|
||||||
|
|
|
@ -380,11 +380,10 @@ int nfp_repr_init(struct nfp_app *app, struct net_device *netdev,
|
||||||
|
|
||||||
netdev->features = netdev->hw_features;
|
netdev->features = netdev->hw_features;
|
||||||
|
|
||||||
/* Advertise but disable TSO by default.
|
/* C-Tag strip and S-Tag strip can't be supported simultaneously,
|
||||||
* C-Tag strip and S-Tag strip can't be supported simultaneously,
|
|
||||||
* so enable C-Tag strip and disable S-Tag strip by default.
|
* so enable C-Tag strip and disable S-Tag strip by default.
|
||||||
*/
|
*/
|
||||||
netdev->features &= ~(NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_HW_VLAN_STAG_RX);
|
netdev->features &= ~NETIF_F_HW_VLAN_STAG_RX;
|
||||||
netif_set_tso_max_segs(netdev, NFP_NET_LSO_MAX_SEGS);
|
netif_set_tso_max_segs(netdev, NFP_NET_LSO_MAX_SEGS);
|
||||||
|
|
||||||
netdev->priv_flags |= IFF_NO_QUEUE | IFF_DISABLE_NETPOLL;
|
netdev->priv_flags |= IFF_NO_QUEUE | IFF_DISABLE_NETPOLL;
|
||||||
|
|
Loading…
Reference in a new issue