lkml.org 
[lkml]   [2016]   [Sep]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 103/192] [PATCH 107/135] net: thunderx: Fix receive packet stats
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit ad2ecebd67d8a80fe5412d11df375a5ed2db7cd1 ]

    Counting rx packets for every CQE_RX in CQ irq handler is incorrect.
    Synchronization is missing when multiple queues are receiving packets
    simultaneously. Like transmit packet stats use HW stats here.

    Also removed unused 'cqe_type' parameter in nicvf_rcv_pkt_handler().

    Signed-off-by: Sunil Goutham <sgoutham@cavium.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/cavium/thunder/nicvf_main.c | 11 ++++++-----
    drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 8 ++------
    drivers/net/ethernet/cavium/thunder/nicvf_queues.h | 3 +--
    3 files changed, 9 insertions(+), 13 deletions(-)

    --- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
    +++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
    @@ -566,8 +566,7 @@ static inline void nicvf_set_rxhash(stru

    static void nicvf_rcv_pkt_handler(struct net_device *netdev,
    struct napi_struct *napi,
    - struct cmp_queue *cq,
    - struct cqe_rx_t *cqe_rx, int cqe_type)
    + struct cqe_rx_t *cqe_rx)
    {
    struct sk_buff *skb;
    struct nicvf *nic = netdev_priv(netdev);
    @@ -583,7 +582,7 @@ static void nicvf_rcv_pkt_handler(struct
    }

    /* Check for errors */
    - err = nicvf_check_cqe_rx_errs(nic, cq, cqe_rx);
    + err = nicvf_check_cqe_rx_errs(nic, cqe_rx);
    if (err && !cqe_rx->rb_cnt)
    return;

    @@ -674,8 +673,7 @@ loop:
    cq_idx, cq_desc->cqe_type);
    switch (cq_desc->cqe_type) {
    case CQE_TYPE_RX:
    - nicvf_rcv_pkt_handler(netdev, napi, cq,
    - cq_desc, CQE_TYPE_RX);
    + nicvf_rcv_pkt_handler(netdev, napi, cq_desc);
    work_done++;
    break;
    case CQE_TYPE_SEND:
    @@ -1345,6 +1343,9 @@ void nicvf_update_stats(struct nicvf *ni
    drv_stats->tx_frames_ok = stats->tx_ucast_frames_ok +
    stats->tx_bcast_frames_ok +
    stats->tx_mcast_frames_ok;
    + drv_stats->rx_frames_ok = stats->rx_ucast_frames +
    + stats->rx_bcast_frames +
    + stats->rx_mcast_frames;
    drv_stats->rx_drops = stats->rx_drop_red +
    stats->rx_drop_overrun;
    drv_stats->tx_drops = stats->tx_drops;
    --- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
    +++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
    @@ -1414,16 +1414,12 @@ void nicvf_update_sq_stats(struct nicvf
    }

    /* Check for errors in the receive cmp.queue entry */
    -int nicvf_check_cqe_rx_errs(struct nicvf *nic,
    - struct cmp_queue *cq, struct cqe_rx_t *cqe_rx)
    +int nicvf_check_cqe_rx_errs(struct nicvf *nic, struct cqe_rx_t *cqe_rx)
    {
    struct nicvf_hw_stats *stats = &nic->hw_stats;
    - struct nicvf_drv_stats *drv_stats = &nic->drv_stats;

    - if (!cqe_rx->err_level && !cqe_rx->err_opcode) {
    - drv_stats->rx_frames_ok++;
    + if (!cqe_rx->err_level && !cqe_rx->err_opcode)
    return 0;
    - }

    if (netif_msg_rx_err(nic))
    netdev_err(nic->netdev,
    --- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.h
    +++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.h
    @@ -344,8 +344,7 @@ u64 nicvf_queue_reg_read(struct nicvf *
    /* Stats */
    void nicvf_update_rq_stats(struct nicvf *nic, int rq_idx);
    void nicvf_update_sq_stats(struct nicvf *nic, int sq_idx);
    -int nicvf_check_cqe_rx_errs(struct nicvf *nic,
    - struct cmp_queue *cq, struct cqe_rx_t *cqe_rx);
    +int nicvf_check_cqe_rx_errs(struct nicvf *nic, struct cqe_rx_t *cqe_rx);
    int nicvf_check_cqe_tx_errs(struct nicvf *nic,
    struct cmp_queue *cq, struct cqe_send_t *cqe_tx);
    #endif /* NICVF_QUEUES_H */

    \
     
     \ /
      Last update: 2016-09-17 09:59    [W:4.098 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site