uintptr_t
roc_nix_inl_inb_sa_get(struct roc_nix *roc_nix, bool inb_inl_dev, uint32_t spi)
{
- uint32_t max_spi, min_spi, mask;
+ uint32_t max_spi = 0, min_spi = 0, mask;
uintptr_t sa_base;
uint64_t sz;
if (!sz)
return 0;
- if (roc_nix->custom_sa_action)
+ if (roc_nix && roc_nix->custom_sa_action)
return (sa_base + (spi * sz));
/* Check if SPI is in range */
nix->outb_se_ring_base =
roc_nix->port_id * ROC_NIX_SOFT_EXP_PER_PORT_MAX_RINGS;
- if (inl_dev == NULL) {
+ if (inl_dev == NULL || !inl_dev->set_soft_exp_poll) {
nix->outb_se_ring_cnt = 0;
return 0;
}
plt_free(nix->outb_sa_base);
nix->outb_sa_base = NULL;
- if (idev && idev->nix_inl_dev) {
+ if (idev && idev->nix_inl_dev && nix->outb_se_ring_cnt) {
inl_dev = idev->nix_inl_dev;
ring_base = inl_dev->sa_soft_exp_ring;
+ ring_base += nix->outb_se_ring_base;
- for (i = 0; i < ROC_NIX_INL_MAX_SOFT_EXP_RNGS; i++) {
+ for (i = 0; i < nix->outb_se_ring_cnt; i++) {
if (ring_base[i])
plt_free(PLT_PTR_CAST(ring_base[i]));
}
inl_dev->wqe_skip = roc_inl_dev->wqe_skip;
inl_dev->spb_drop_pc = NIX_AURA_DROP_PC_DFLT;
inl_dev->lpb_drop_pc = NIX_AURA_DROP_PC_DFLT;
+ inl_dev->set_soft_exp_poll = roc_inl_dev->set_soft_exp_poll;
if (roc_inl_dev->spb_drop_pc)
inl_dev->spb_drop_pc = roc_inl_dev->spb_drop_pc;
if (rc)
goto sso_release;
- if (roc_inl_dev->set_soft_exp_poll) {
+ if (inl_dev->set_soft_exp_poll) {
rc = nix_inl_outb_poll_thread_setup(inl_dev);
if (rc)
goto cpt_release;
inl_dev = idev->nix_inl_dev;
pci_dev = inl_dev->pci_dev;
- if (roc_inl_dev->set_soft_exp_poll) {
+ if (inl_dev->set_soft_exp_poll) {
soft_exp_poll_thread_exit = true;
pthread_join(inl_dev->soft_exp_poll_thread, NULL);
plt_bitmap_free(inl_dev->soft_exp_ring_bmap);
pthread_t soft_exp_poll_thread;
uint32_t soft_exp_poll_freq;
uint64_t *sa_soft_exp_ring;
+ bool set_soft_exp_poll;
/* Soft expiry ring bitmap */
struct plt_bitmap *soft_exp_ring_bmap;