• Sukadev Bhattiprolu's avatar
    ibmvnic: clean pending indirect buffs during reset · 65d6470d
    Sukadev Bhattiprolu authored
    We batch subordinate command response queue (scrq) descriptors that we
    need to send to the VIOS using an "indirect" buffer. If after we queue
    one or more scrqs in the indirect buffer encounter an error (say fail
    to allocate an skb), we leave the queued scrq descriptors in the
    indirect buffer until the next call to ibmvnic_xmit().
    
    On the next call to ibmvnic_xmit(), it is possible that the adapter is
    going through a reset and it is possible that the long term  buffers
    have been unmapped on the VIOS side. If we proceed to flush (send) the
    packets that are in the indirect buffer, we will end up using the old
    map ids and this can cause the VIOS to trigger an unnecessary FATAL
    error reset.
    
    Instead of flushing packets remaining on the indirect_buff, discard
    (clean) them instead.
    
    Fixes: 0d973388 ("ibmvnic: Introduce xmit_more support using batched subCRQ hcalls")
    Signed-off-by: default avatarSukadev Bhattiprolu <sukadev@linux.ibm.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    65d6470d
ibmvnic.c 152 KB