linux/drivers/net/wireless/silabs/wfx/data_tx.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Data transmitting implementation.
 *
 * Copyright (c) 2017-2020, Silicon Laboratories, Inc.
 * Copyright (c) 2010, ST-Ericsson
 */
#include <net/mac80211.h>
#include <linux/etherdevice.h>

#include "data_tx.h"
#include "wfx.h"
#include "bh.h"
#include "sta.h"
#include "queue.h"
#include "debug.h"
#include "traces.h"
#include "hif_tx_mib.h"

static int wfx_get_hw_rate(struct wfx_dev *wdev, const struct ieee80211_tx_rate *rate)
{}

/* TX policy cache implementation */

static void wfx_tx_policy_build(struct wfx_vif *wvif, struct wfx_tx_policy *policy,
				struct ieee80211_tx_rate *rates)
{}

static bool wfx_tx_policy_is_equal(const struct wfx_tx_policy *a, const struct wfx_tx_policy *b)
{}

static int wfx_tx_policy_find(struct wfx_tx_policy_cache *cache, struct wfx_tx_policy *wanted)
{}

static void wfx_tx_policy_use(struct wfx_tx_policy_cache *cache, struct wfx_tx_policy *entry)
{}

static int wfx_tx_policy_release(struct wfx_tx_policy_cache *cache, struct wfx_tx_policy *entry)
{}

static int wfx_tx_policy_get(struct wfx_vif *wvif, struct ieee80211_tx_rate *rates, bool *renew)
{}

static void wfx_tx_policy_put(struct wfx_vif *wvif, int idx)
{}

static int wfx_tx_policy_upload(struct wfx_vif *wvif)
{}

void wfx_tx_policy_upload_work(struct work_struct *work)
{}

void wfx_tx_policy_init(struct wfx_vif *wvif)
{}

/* Tx implementation */

static bool wfx_is_action_back(struct ieee80211_hdr *hdr)
{}

struct wfx_tx_priv *wfx_skb_tx_priv(struct sk_buff *skb)
{}

struct wfx_hif_req_tx *wfx_skb_txreq(struct sk_buff *skb)
{}

struct wfx_vif *wfx_skb_wvif(struct wfx_dev *wdev, struct sk_buff *skb)
{}

static u8 wfx_tx_get_link_id(struct wfx_vif *wvif, struct ieee80211_sta *sta,
			     struct ieee80211_hdr *hdr)
{}

static void wfx_tx_fixup_rates(struct ieee80211_tx_rate *rates)
{}

static u8 wfx_tx_get_retry_policy_id(struct wfx_vif *wvif, struct ieee80211_tx_info *tx_info)
{}

static int wfx_tx_get_frame_format(struct ieee80211_tx_info *tx_info)
{}

static int wfx_tx_get_icv_len(struct ieee80211_key_conf *hw_key)
{}

static int wfx_tx_inner(struct wfx_vif *wvif, struct ieee80211_sta *sta, struct sk_buff *skb)
{}

void wfx_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control, struct sk_buff *skb)
{}

static void wfx_skb_dtor(struct wfx_vif *wvif, struct sk_buff *skb)
{}

static void wfx_tx_fill_rates(struct wfx_dev *wdev, struct ieee80211_tx_info *tx_info,
			      const struct wfx_hif_cnf_tx *arg)
{}

void wfx_tx_confirm_cb(struct wfx_dev *wdev, const struct wfx_hif_cnf_tx *arg)
{}

static void wfx_flush_vif(struct wfx_vif *wvif, u32 queues, struct sk_buff_head *dropped)
{}

void wfx_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, u32 queues, bool drop)
{}