MCPcopy Create free account
hub / github.com/F-Stack/f-stack / __vsi_queues_bind_intr

Function __vsi_queues_bind_intr

dpdk/drivers/net/i40e/i40e_ethdev.c:1975–2048  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1973}
1974
1975static void
1976__vsi_queues_bind_intr(struct i40e_vsi *vsi, uint16_t msix_vect,
1977 int base_queue, int nb_queue,
1978 uint16_t itr_idx)
1979{
1980 int i;
1981 uint32_t val;
1982 struct i40e_hw *hw = I40E_VSI_TO_HW(vsi);
1983 struct i40e_pf *pf = I40E_VSI_TO_PF(vsi);
1984
1985 /* Bind all RX queues to allocated MSIX interrupt */
1986 for (i = 0; i < nb_queue; i++) {
1987 val = (msix_vect << I40E_QINT_RQCTL_MSIX_INDX_SHIFT) |
1988 itr_idx << I40E_QINT_RQCTL_ITR_INDX_SHIFT |
1989 ((base_queue + i + 1) <<
1990 I40E_QINT_RQCTL_NEXTQ_INDX_SHIFT) |
1991 (0 << I40E_QINT_RQCTL_NEXTQ_TYPE_SHIFT) |
1992 I40E_QINT_RQCTL_CAUSE_ENA_MASK;
1993
1994 if (i == nb_queue - 1)
1995 val |= I40E_QINT_RQCTL_NEXTQ_INDX_MASK;
1996 I40E_WRITE_REG(hw, I40E_QINT_RQCTL(base_queue + i), val);
1997 }
1998
1999 /* Write first RX queue to Link list register as the head element */
2000 if (vsi->type != I40E_VSI_SRIOV) {
2001 uint16_t interval =
2002 i40e_calc_itr_interval(1, pf->support_multi_driver);
2003
2004 if (msix_vect == I40E_MISC_VEC_ID) {
2005 I40E_WRITE_REG(hw, I40E_PFINT_LNKLST0,
2006 (base_queue <<
2007 I40E_PFINT_LNKLST0_FIRSTQ_INDX_SHIFT) |
2008 (0x0 <<
2009 I40E_PFINT_LNKLST0_FIRSTQ_TYPE_SHIFT));
2010 I40E_WRITE_REG(hw,
2011 I40E_PFINT_ITR0(I40E_ITR_INDEX_DEFAULT),
2012 interval);
2013 } else {
2014 I40E_WRITE_REG(hw, I40E_PFINT_LNKLSTN(msix_vect - 1),
2015 (base_queue <<
2016 I40E_PFINT_LNKLSTN_FIRSTQ_INDX_SHIFT) |
2017 (0x0 <<
2018 I40E_PFINT_LNKLSTN_FIRSTQ_TYPE_SHIFT));
2019 I40E_WRITE_REG(hw,
2020 I40E_PFINT_ITRN(I40E_ITR_INDEX_DEFAULT,
2021 msix_vect - 1),
2022 interval);
2023 }
2024 } else {
2025 uint32_t reg;
2026
2027 if (msix_vect == I40E_MISC_VEC_ID) {
2028 I40E_WRITE_REG(hw,
2029 I40E_VPINT_LNKLST0(vsi->user_param),
2030 (base_queue <<
2031 I40E_VPINT_LNKLST0_FIRSTQ_INDX_SHIFT) |
2032 (0x0 <<

Callers 1

Calls 1

i40e_calc_itr_intervalFunction · 0.85

Tested by

no test coverage detected