bnxt_en: Divide a page into 32K buffers for the aggregation ring if necessary.
authorMichael Chan <michael.chan@broadcom.com>
Mon, 25 Apr 2016 06:30:51 +0000 (02:30 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 27 Apr 2016 20:18:45 +0000 (16:18 -0400)
commit89d0a06c516339c0a2b3d02677f5d6310b3319fb
tree09e48f1ba0bfe519bc81483acf0f6cc48adeba44
parent2839f28bd5bf8fd2ab4a1ea3a5589c8f94364cbb
bnxt_en: Divide a page into 32K buffers for the aggregation ring if necessary.

If PAGE_SIZE is bigger than BNXT_RX_PAGE_SIZE, that means the native CPU
page is bigger than the maximum length of the RX BD.  Divide the page
into multiple 32K buffers for the aggregation ring.

Add an offset field in the bnxt_sw_rx_agg_bd struct to keep track of the
page offset of each buffer.  Since each page can be referenced by multiple
buffer entries, call get_page() as needed to get the proper reference
count.

Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c
drivers/net/ethernet/broadcom/bnxt/bnxt.h