Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/net/wireless/ath/ath9k/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  dynack.h   Sprache: C

 
/*
 * Copyright (c) 2014, Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */


#ifndef DYNACK_H
#define DYNACK_H

#define ATH_DYN_BUF 64

struct ath_hw;
struct ath_node;

/**
 * struct ath_dyn_rxbuf - ACK frame ring buffer
 * @h_rb: ring buffer head
 * @t_rb: ring buffer tail
 * @tstamp: ACK RX timestamp buffer
 */

struct ath_dyn_rxbuf {
 u16 h_rb, t_rb;
 u32 tstamp[ATH_DYN_BUF];
};

struct ts_info {
 u32 tstamp;
 u32 dur;
};

struct haddr_pair {
 u8 h_dest[ETH_ALEN];
 u8 h_src[ETH_ALEN];
};

/**
 * struct ath_dyn_txbuf - tx frame ring buffer
 * @h_rb: ring buffer head
 * @t_rb: ring buffer tail
 * @addr: dest/src address pair for a given TX frame
 * @ts: TX frame timestamp buffer
 */

struct ath_dyn_txbuf {
 u16 h_rb, t_rb;
 struct haddr_pair addr[ATH_DYN_BUF];
 struct ts_info ts[ATH_DYN_BUF];
};

/**
 * struct ath_dynack - dynack processing info
 * @enabled: enable dyn ack processing
 * @ackto: current ACK timeout
 * @lto: last ACK timeout computation
 * @nodes: ath_node linked list
 * @qlock: ts queue spinlock
 * @ack_rbf: ACK ts ring buffer
 * @st_rbf: status ts ring buffer
 */

struct ath_dynack {
 bool enabled;
 int ackto;
 unsigned long lto;

 struct list_head nodes;

 /* protect timestamp queue access */
 spinlock_t qlock;
 struct ath_dyn_rxbuf ack_rbf;
 struct ath_dyn_txbuf st_rbf;
};

#if defined(CONFIG_ATH9K_DYNACK)
void ath_dynack_reset(struct ath_hw *ah);
void ath_dynack_node_init(struct ath_hw *ah, struct ath_node *an);
void ath_dynack_node_deinit(struct ath_hw *ah, struct ath_node *an);
void ath_dynack_init(struct ath_hw *ah);
void ath_dynack_sample_ack_ts(struct ath_hw *ah, struct sk_buff *skb, u32 ts);
void ath_dynack_sample_tx_ts(struct ath_hw *ah, struct sk_buff *skb,
        struct ath_tx_status *ts,
        struct ieee80211_sta *sta);
#else
static inline void ath_dynack_init(struct ath_hw *ah) {}
static inline void ath_dynack_node_init(struct ath_hw *ah,
     struct ath_node *an) {}
static inline void ath_dynack_node_deinit(struct ath_hw *ah,
       struct ath_node *an) {}
static inline void ath_dynack_sample_ack_ts(struct ath_hw *ah,
         struct sk_buff *skb, u32 ts) {}
static inline void ath_dynack_sample_tx_ts(struct ath_hw *ah,
        struct sk_buff *skb,
        struct ath_tx_status *ts,
        struct ieee80211_sta *sta) {}
#endif

#endif /* DYNACK_H */

Messung V0.5
C=96 H=92 G=93

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.