wmi_unified_bcn_tlv.c 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. * Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
  3. *
  4. * Permission to use, copy, modify, and/or distribute this software for
  5. * any purpose with or without fee is hereby granted, provided that the
  6. * above copyright notice and this permission notice appear in all
  7. * copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
  10. * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
  11. * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
  12. * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  13. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
  14. * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  15. * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  16. * PERFORMANCE OF THIS SOFTWARE.
  17. */
  18. #include <osdep.h>
  19. #include <wmi.h>
  20. #include <wmi_unified_priv.h>
  21. #include "wmi_unified_bcn_api.h"
  22. /**
  23. * send_bcn_buf_ll_cmd_tlv() - prepare and send beacon buffer to fw for LL
  24. * @wmi_handle: wmi handle
  25. * @param: bcn ll cmd parameter
  26. *
  27. * Return: QDF_STATUS_SUCCESS for success otherwise failure
  28. */
  29. static QDF_STATUS send_bcn_buf_ll_cmd_tlv(
  30. wmi_unified_t wmi_handle,
  31. wmi_bcn_send_from_host_cmd_fixed_param *param)
  32. {
  33. wmi_bcn_send_from_host_cmd_fixed_param *cmd;
  34. wmi_buf_t wmi_buf;
  35. QDF_STATUS ret;
  36. wmi_buf = wmi_buf_alloc(wmi_handle, sizeof(*cmd));
  37. if (!wmi_buf)
  38. return QDF_STATUS_E_FAILURE;
  39. cmd = (wmi_bcn_send_from_host_cmd_fixed_param *)wmi_buf_data(wmi_buf);
  40. WMITLV_SET_HDR(&cmd->tlv_header,
  41. WMITLV_TAG_STRUC_wmi_bcn_send_from_host_cmd_fixed_param,
  42. WMITLV_GET_STRUCT_TLVLEN
  43. (wmi_bcn_send_from_host_cmd_fixed_param));
  44. cmd->vdev_id = param->vdev_id;
  45. cmd->data_len = param->data_len;
  46. cmd->frame_ctrl = param->frame_ctrl;
  47. cmd->frag_ptr = param->frag_ptr;
  48. cmd->dtim_flag = param->dtim_flag;
  49. wmi_mtrace(WMI_PDEV_SEND_BCN_CMDID, cmd->vdev_id, 0);
  50. ret = wmi_unified_cmd_send(wmi_handle, wmi_buf, sizeof(*cmd),
  51. WMI_PDEV_SEND_BCN_CMDID);
  52. if (QDF_IS_STATUS_ERROR(ret)) {
  53. wmi_err("Failed to send WMI_PDEV_SEND_BCN_CMDID command");
  54. wmi_buf_free(wmi_buf);
  55. }
  56. return ret;
  57. }
  58. void wmi_bcn_attach_tlv(wmi_unified_t wmi_handle)
  59. {
  60. struct wmi_ops *ops = wmi_handle->ops;
  61. ops->send_bcn_buf_ll_cmd = send_bcn_buf_ll_cmd_tlv;
  62. }