blob: 8f4bbfe3a5a36661c30f3d7ae2062cbb54695f33 [file] [log] [blame]
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001/*
2 * Copyright (c) 2011-2015 The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
28/**
29 * @file ol_tx.h
30 * @brief Internal definitions for the high-level tx module.
31 */
32#ifndef _OL_TX__H_
33#define _OL_TX__H_
34
35#include <cdf_nbuf.h> /* cdf_nbuf_t */
36#include <cdf_lock.h>
37#include <ol_txrx_api.h> /* ol_txrx_vdev_handle */
38
39#include <ol_txrx_types.h> /* ol_tx_desc_t, ol_txrx_msdu_info_t */
40
41cdf_nbuf_t ol_tx_ll(ol_txrx_vdev_handle vdev, cdf_nbuf_t msdu_list);
42#ifdef WLAN_FEATURE_FASTPATH
43cdf_nbuf_t ol_tx_ll_fast(ol_txrx_vdev_handle vdev, cdf_nbuf_t msdu_list);
44#endif
45
46cdf_nbuf_t ol_tx_ll_queue(ol_txrx_vdev_handle vdev, cdf_nbuf_t msdu_list);
47
48#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
49#define OL_TX_LL ol_tx_ll_queue
50#else
51#define OL_TX_LL ol_tx_ll
52#endif
53
54#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
55void ol_tx_vdev_ll_pause_queue_send(void *context);
56void ol_tx_pdev_ll_pause_queue_send_all(struct ol_txrx_pdev_t *pdev);
57#else
58static inline void ol_tx_vdev_ll_pause_queue_send(void *context)
59{
60 return;
61}
62static inline
63void ol_tx_pdev_ll_pause_queue_send_all(struct ol_txrx_pdev_t *pdev)
64{
65 return;
66}
67#endif
68cdf_nbuf_t
69ol_tx_non_std_ll(ol_txrx_vdev_handle data_vdev,
70 enum ol_tx_spec tx_spec, cdf_nbuf_t msdu_list);
71
72cdf_nbuf_t
73ol_tx_reinject(struct ol_txrx_vdev_t *vdev, cdf_nbuf_t msdu, uint16_t peer_id);
74
75void ol_txrx_mgmt_tx_complete(void *ctxt, cdf_nbuf_t netbuf, int err);
76
77
78#if defined(FEATURE_TSO)
79void ol_tso_seg_list_init(struct ol_txrx_pdev_t *pdev, uint32_t num_seg);
80void ol_tso_seg_list_deinit(struct ol_txrx_pdev_t *pdev);
81#endif
82#endif /* _OL_TX__H_ */