cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

queue.h (1458B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Queue between the tx operation and the bh workqueue.
      4 *
      5 * Copyright (c) 2017-2020, Silicon Laboratories, Inc.
      6 * Copyright (c) 2010, ST-Ericsson
      7 */
      8#ifndef WFX_QUEUE_H
      9#define WFX_QUEUE_H
     10
     11#include <linux/skbuff.h>
     12#include <linux/atomic.h>
     13
     14struct wfx_dev;
     15struct wfx_vif;
     16
     17struct wfx_queue {
     18	struct sk_buff_head normal;
     19	struct sk_buff_head cab; /* Content After (DTIM) Beacon */
     20	atomic_t            pending_frames;
     21	int                 priority;
     22};
     23
     24void wfx_tx_lock(struct wfx_dev *wdev);
     25void wfx_tx_unlock(struct wfx_dev *wdev);
     26void wfx_tx_flush(struct wfx_dev *wdev);
     27void wfx_tx_lock_flush(struct wfx_dev *wdev);
     28
     29void wfx_tx_queues_init(struct wfx_vif *wvif);
     30void wfx_tx_queues_check_empty(struct wfx_vif *wvif);
     31bool wfx_tx_queues_has_cab(struct wfx_vif *wvif);
     32void wfx_tx_queues_put(struct wfx_vif *wvif, struct sk_buff *skb);
     33struct wfx_hif_msg *wfx_tx_queues_get(struct wfx_dev *wdev);
     34
     35bool wfx_tx_queue_empty(struct wfx_vif *wvif, struct wfx_queue *queue);
     36void wfx_tx_queue_drop(struct wfx_vif *wvif, struct wfx_queue *queue,
     37		       struct sk_buff_head *dropped);
     38
     39struct sk_buff *wfx_pending_get(struct wfx_dev *wdev, u32 packet_id);
     40void wfx_pending_drop(struct wfx_dev *wdev, struct sk_buff_head *dropped);
     41unsigned int wfx_pending_get_pkt_us_delay(struct wfx_dev *wdev, struct sk_buff *skb);
     42void wfx_pending_dump_old_frames(struct wfx_dev *wdev, unsigned int limit_ms);
     43
     44#endif