nfp: allow TSO packets with metadata prepended in NFDK path
authorYinjun Zhang <yinjun.zhang@corigine.com>
Tue, 5 Jul 2022 07:36:03 +0000 (08:36 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 6 Jul 2022 07:15:39 +0000 (08:15 +0100)
Packets with metadata prepended can be correctly handled in
firmware when TSO is enabled, now remove the error path and
related comments. Since there's no existing firmware that
uses prepended metadata, no need to add compatibility check
here.

Signed-off-by: Yinjun Zhang <yinjun.zhang@corigine.com>
Reviewed-by: Louis Peens <louis.peens@corigine.com>
Signed-off-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/netronome/nfp/nfdk/dp.c

index 34fe179..0b4f550 100644 (file)
@@ -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;
        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.l4_offset = l4_offset;
        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))
                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))))
                return -ENOMEM;