mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
qed: align DPI configuration to HW requirements
When calculating doorbell BAR partitioning round up the number of CPUs to the nearest power of 2 so the size of the DPI (per user section) configured in the hardware will be stored properly and not truncated. Signed-off-by: Ram Amrani <Ram.Amrani@cavium.com> Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e015d58b44
commit
107392b75f
@ -72,6 +72,7 @@ extern const struct qed_common_ops qed_common_ops_pass;
|
||||
#define QED_WFQ_UNIT 100
|
||||
|
||||
#define QED_WID_SIZE (1024)
|
||||
#define QED_MIN_WIDS (4)
|
||||
#define QED_PF_DEMS_SIZE (4)
|
||||
|
||||
/* cau states */
|
||||
|
@ -1318,17 +1318,15 @@ static int
|
||||
qed_hw_init_dpi_size(struct qed_hwfn *p_hwfn,
|
||||
struct qed_ptt *p_ptt, u32 pwm_region_size, u32 n_cpus)
|
||||
{
|
||||
u32 dpi_page_size_1, dpi_page_size_2, dpi_page_size;
|
||||
u32 dpi_bit_shift, dpi_count;
|
||||
u32 dpi_bit_shift, dpi_count, dpi_page_size;
|
||||
u32 min_dpis;
|
||||
u32 n_wids;
|
||||
|
||||
/* Calculate DPI size */
|
||||
dpi_page_size_1 = QED_WID_SIZE * n_cpus;
|
||||
dpi_page_size_2 = max_t(u32, QED_WID_SIZE, PAGE_SIZE);
|
||||
dpi_page_size = max_t(u32, dpi_page_size_1, dpi_page_size_2);
|
||||
dpi_page_size = roundup_pow_of_two(dpi_page_size);
|
||||
n_wids = max_t(u32, QED_MIN_WIDS, n_cpus);
|
||||
dpi_page_size = QED_WID_SIZE * roundup_pow_of_two(n_wids);
|
||||
dpi_page_size = (dpi_page_size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1);
|
||||
dpi_bit_shift = ilog2(dpi_page_size / 4096);
|
||||
|
||||
dpi_count = pwm_region_size / dpi_page_size;
|
||||
|
||||
min_dpis = p_hwfn->pf_params.rdma_pf_params.min_dpis;
|
||||
|
Loading…
Reference in New Issue
Block a user