nfp: don't tell FW about the reserved buffer space
authorJakub Kicinski <jakub.kicinski@netronome.com>
Thu, 2 Mar 2017 23:26:20 +0000 (15:26 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 Mar 2017 17:46:53 +0000 (09:46 -0800)
Since commit c0f031bc8866 ("nfp_net: use alloc_frag() and build_skb()")
we are allocating buffers which have to hold both the data and skb to
be created in place by build_skb().

FW should only be told about the buffer space it can DMA to, that
is without the build_skb() headroom and tailroom.  Note: firmware
applications should validate the buffers against both MTU and
free list buffer size so oversized packets would not pass through
the NIC anyway.

Fixes: c0f031bc8866 ("nfp: use alloc_frag() and build_skb()")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/netronome/nfp/nfp_net_common.c

index 074259cc8e066d3a04fbe499af53e10cd292bdc8..00a83218857a97d48f5fcc69642615065ac15db9 100644 (file)
@@ -2198,7 +2198,8 @@ static int __nfp_net_set_config_and_enable(struct nfp_net *nn)
        nfp_net_write_mac_addr(nn);
 
        nn_writel(nn, NFP_NET_CFG_MTU, nn->netdev->mtu);
-       nn_writel(nn, NFP_NET_CFG_FLBUFSZ, nn->fl_bufsz);
+       nn_writel(nn, NFP_NET_CFG_FLBUFSZ,
+                 nn->fl_bufsz - NFP_NET_RX_BUF_NON_DATA);
 
        /* Enable device */
        new_ctrl |= NFP_NET_CFG_CTRL_ENABLE;