octeontx2-pf: Use the napi_alloc_frag() to alloc the pool buffers
authorKevin Hao <haokexin@gmail.com>
Sat, 9 May 2020 10:43:10 +0000 (18:43 +0800)
committerJakub Kicinski <kuba@kernel.org>
Sun, 10 May 2020 04:04:40 +0000 (21:04 -0700)
commit7a36e4918e30fbd3c820f723ef53d8505283c9e0
tree297b36897d606bcdfac9d876e5df2e751584b822
parente7bb7ecefa817543e11fa3c1c3e55deb90b02e6c
octeontx2-pf: Use the napi_alloc_frag() to alloc the pool buffers

In the current codes, the octeontx2 uses its own method to allocate
the pool buffers, but there are some issues in this implementation.
1. We have to run the otx2_get_page() for each allocation cycle and
   this is pretty error prone. As I can see there is no invocation
   of the otx2_get_page() in otx2_pool_refill_task(), this will leave
   the allocated pages have the wrong refcount and may be freed wrongly.
2. It wastes memory. For example, if we only receive one packet in a
   NAPI RX cycle, and then allocate a 2K buffer with otx2_alloc_rbuf()
   to refill the pool buffers and leave the remain area of the allocated
   page wasted. On a kernel with 64K page, 62K area is wasted.

IMHO it is really unnecessary to implement our own method for the
buffers allocate, we can reuse the napi_alloc_frag() to simplify
our code.

Signed-off-by: Kevin Hao <haokexin@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h
drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c
drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h