linux/drivers/staging/vt6656/rxtx.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
   4 * All rights reserved.
   5 *
   6 * File: rxtx.h
   7 *
   8 * Purpose:
   9 *
  10 * Author: Jerry Chen
  11 *
  12 * Date: Jun. 27, 2002
  13 *
  14 */
  15
  16#ifndef __RXTX_H__
  17#define __RXTX_H__
  18
  19#include "device.h"
  20#include "wcmd.h"
  21#include "baseband.h"
  22
  23#define DEFAULT_MGN_LIFETIME_RES_64us   125  /* 64us */
  24#define DEFAULT_MSDU_LIFETIME_RES_64us  8000
  25
  26/* Length, Service, and Signal fields of Phy for Tx */
  27struct vnt_phy_field {
  28        u8 signal;
  29        u8 service;
  30        __le16 len;
  31} __packed;
  32
  33/* MIC HDR data header */
  34struct vnt_mic_hdr {
  35        u8 id;
  36        u8 tx_priority;
  37        u8 mic_addr2[6];
  38        u8 ccmp_pn[IEEE80211_CCMP_PN_LEN];
  39        __be16 payload_len;
  40        __be16 hlen;
  41        __le16 frame_control;
  42        u8 addr1[6];
  43        u8 addr2[6];
  44        u8 addr3[6];
  45        __le16 seq_ctrl;
  46        u8 addr4[6];
  47        u16 packing; /* packing to 48 bytes */
  48} __packed;
  49
  50/* RsvTime buffer header */
  51struct vnt_rrv_time_rts {
  52        __le16 rts_rrv_time_ba;
  53        __le16 rts_rrv_time_aa;
  54        __le16 rts_rrv_time_bb;
  55        u16 wReserved;
  56        __le16 rrv_time_b;
  57        __le16 rrv_time_a;
  58} __packed;
  59
  60struct vnt_rrv_time_cts {
  61        __le16 cts_rrv_time_ba;
  62        u16 wReserved;
  63        __le16 rrv_time_b;
  64        __le16 rrv_time_a;
  65} __packed;
  66
  67struct vnt_rrv_time_ab {
  68        __le16 rts_rrv_time;
  69        __le16 rrv_time;
  70} __packed;
  71
  72/* TX data header */
  73struct vnt_tx_datahead_g {
  74        struct vnt_phy_field b;
  75        struct vnt_phy_field a;
  76        __le16 duration_b;
  77        __le16 duration_a;
  78        __le16 time_stamp_off_b;
  79        __le16 time_stamp_off_a;
  80} __packed;
  81
  82struct vnt_tx_datahead_ab {
  83        struct vnt_phy_field ab;
  84        __le16 duration;
  85        __le16 time_stamp_off;
  86} __packed;
  87
  88/* RTS buffer header */
  89struct vnt_rts_g {
  90        struct vnt_phy_field b;
  91        struct vnt_phy_field a;
  92        __le16 duration_ba;
  93        __le16 duration_aa;
  94        __le16 duration_bb;
  95        u16 wReserved;
  96        struct ieee80211_rts data;
  97        struct vnt_tx_datahead_g data_head;
  98} __packed __aligned(2);
  99
 100struct vnt_rts_ab {
 101        struct vnt_phy_field ab;
 102        __le16 duration;
 103        u16 wReserved;
 104        struct ieee80211_rts data;
 105        struct vnt_tx_datahead_ab data_head;
 106} __packed __aligned(2);
 107
 108/* CTS buffer header */
 109struct vnt_cts {
 110        struct vnt_phy_field b;
 111        __le16 duration_ba;
 112        u16 wReserved;
 113        struct ieee80211_cts data;
 114        u16 reserved2;
 115        struct vnt_tx_datahead_g data_head;
 116} __packed __aligned(2);
 117
 118union vnt_tx_data_head {
 119        /* rts g */
 120        struct vnt_rts_g rts_g;
 121        /* rts a/b */
 122        struct vnt_rts_ab rts_ab;
 123        /* cts g */
 124        struct vnt_cts cts_g;
 125        /* no rts/cts */
 126        struct vnt_tx_datahead_ab data_head_ab;
 127};
 128
 129struct vnt_tx_mic_hdr {
 130        struct vnt_mic_hdr hdr;
 131        union vnt_tx_data_head head;
 132} __packed;
 133
 134union vnt_tx {
 135        struct vnt_tx_mic_hdr mic;
 136        union vnt_tx_data_head head;
 137};
 138
 139union vnt_tx_head {
 140        struct {
 141                struct vnt_rrv_time_rts rts;
 142                union vnt_tx tx;
 143        } __packed tx_rts;
 144        struct {
 145                struct vnt_rrv_time_cts cts;
 146                union vnt_tx tx;
 147        } __packed tx_cts;
 148        struct {
 149                struct vnt_rrv_time_ab ab;
 150                union vnt_tx tx;
 151        } __packed tx_ab;
 152};
 153
 154struct vnt_tx_fifo_head {
 155        u8 tx_key[WLAN_KEY_LEN_CCMP];
 156        __le16 fifo_ctl;
 157        __le16 time_stamp;
 158        __le16 frag_ctl;
 159        __le16 current_rate;
 160} __packed;
 161
 162struct vnt_tx_buffer {
 163        struct vnt_tx_fifo_head fifo_head;
 164        union vnt_tx_head tx_head;
 165} __packed;
 166
 167struct vnt_tx_short_buf_head {
 168        __le16 fifo_ctl;
 169        u16 time_stamp;
 170        struct vnt_phy_field ab;
 171        __le16 duration;
 172        __le16 time_stamp_off;
 173} __packed;
 174
 175int vnt_tx_packet(struct vnt_private *priv, struct sk_buff *skb);
 176int vnt_beacon_make(struct vnt_private *priv, struct ieee80211_vif *vif);
 177int vnt_beacon_enable(struct vnt_private *priv, struct ieee80211_vif *vif,
 178                      struct ieee80211_bss_conf *conf);
 179
 180#endif /* __RXTX_H__ */
 181