• Mugunthan V N's avatar
    net: ethernet: davinci_cpdma: Add boundary for rx and tx descriptors · fae50823
    Mugunthan V N authored
    When there is heavy transmission traffic in the CPDMA, then Rx descriptors
    memory is also utilized as tx desc memory looses all rx descriptors and the
    driver stops working then.
    
    This patch adds boundary for tx and rx descriptors in bd ram dividing the
    descriptor memory to ensure that during heavy transmission tx doesn't use
    rx descriptors.
    
    This patch is already applied to davinci_emac driver, since CPSW and
    davici_dmac shares the same CPDMA, moving the boundry seperation from
    Davinci EMAC driver to CPDMA driver which was done in the following
    commit
    
    commit 86d8c07f
    Author: Sascha Hauer <s.hauer@pengutronix.de>
    Date:   Tue Jan 3 05:27:47 2012 +0000
    
        net/davinci: do not use all descriptors for tx packets
    
        The driver uses a shared pool for both rx and tx descriptors.
        During open it queues fixed number of 128 descriptors for receive
        packets. For each received packet it tries to queue another
        descriptor. If this fails the descriptor is lost for rx.
        The driver has no limitation on tx descriptors to use, so it
        can happen during a nmap / ping -f attack that the driver
        allocates all descriptors for tx and looses all rx descriptors.
        The driver stops working then.
        To fix this limit the number of tx descriptors used to half of
        the descriptors available, the rx path uses the other half.
    
        Tested on a custom board using nmap / ping -f to the board from
        two different hosts.
    Signed-off-by: default avatarMugunthan V N <mugunthanvnm@ti.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    fae50823
cpsw.c 40.2 KB