On Fri, Aug 30, 2024 at 9:28 PM Aleksandr Loktionov <aleksandr.loktio...@intel.com> wrote: > > In cases when vf sends malformed packets that are classified as > malicious, sometimes it causes tx queue to freeze. This frozen queue can be > stuck for several minutes being unusable. When mdd event occurs, there is a > posibility to perform a graceful vf reset to quickly bring vf back to > operational state. > > Currently vf iqueues are being disabled if mdd event occurs. > Add the ability to reset vf if tx or rx mdd occurs. > Add mdd events logging throttling /* avoid dmesg polution */. > Unify tx rx mdd messages formats. > > Co-developed-by: Jan Sokolowski <jan.sokolow...@intel.com> > Signed-off-by: Jan Sokolowski <jan.sokolow...@intel.com> > Co-developed-by: Padraig J Connolly <padraig.j.conno...@intel.com> > Signed-off-by: Padraig J Connolly <padraig.j.conno...@intel.com> > Signed-off-by: Aleksandr Loktionov <aleksandr.loktio...@intel.com> > ---
Thanks, we need this. ice has the same ability. Just one question about the patch: [...] > static void i40e_handle_mdd_event(struct i40e_pf *pf) > { > struct i40e_hw *hw = &pf->hw; > bool mdd_detected = false; > struct i40e_vf *vf; > u32 reg; > int i; > > - if (!test_bit(__I40E_MDD_EVENT_PENDING, pf->state)) > + if (!test_and_clear_bit(__I40E_MDD_EVENT_PENDING, pf->state)) { OK, using test_and_clear_bit is good, but ...: [...] > > /* re-enable mdd interrupt cause */ > clear_bit(__I40E_MDD_EVENT_PENDING, pf->state); Here the bit is cleared again. Why? > reg = rd32(hw, I40E_PFINT_ICR0_ENA); > reg |= I40E_PFINT_ICR0_ENA_MAL_DETECT_MASK; > wr32(hw, I40E_PFINT_ICR0_ENA, reg); > i40e_flush(hw); > + > + i40e_print_vfs_mdd_events(pf); > } Michal