bnxt_dim.c 938 B

123456789101112131415161718192021222324252627282930313233
  1. /* Broadcom NetXtreme-C/E network driver.
  2. *
  3. * Copyright (c) 2017-2018 Broadcom Limited
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation.
  8. */
  9. #include <linux/net_dim.h>
  10. #include "bnxt_hsi.h"
  11. #include "bnxt.h"
  12. void bnxt_dim_work(struct work_struct *work)
  13. {
  14. struct net_dim *dim = container_of(work, struct net_dim,
  15. work);
  16. struct bnxt_cp_ring_info *cpr = container_of(dim,
  17. struct bnxt_cp_ring_info,
  18. dim);
  19. struct bnxt_napi *bnapi = container_of(cpr,
  20. struct bnxt_napi,
  21. cp_ring);
  22. struct net_dim_cq_moder cur_moder =
  23. net_dim_get_rx_moderation(dim->mode, dim->profile_ix);
  24. cpr->rx_ring_coal.coal_ticks = cur_moder.usec;
  25. cpr->rx_ring_coal.coal_bufs = cur_moder.pkts;
  26. bnxt_hwrm_set_ring_coal(bnapi->bp, bnapi);
  27. dim->state = NET_DIM_START_MEASURE;
  28. }