162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/* Raytheon wireless LAN PCMCIA card driver for Linux
362306a36Sopenharmony_ci   A  PCMCIA client driver for the Raylink wireless network card
462306a36Sopenharmony_ci   Written by Corey Thomas
562306a36Sopenharmony_ci*/
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#ifndef _RAY_CS_H_
862306a36Sopenharmony_ci#define _RAY_CS_H_
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cistruct beacon_rx {
1162306a36Sopenharmony_ci    struct mac_header mac;
1262306a36Sopenharmony_ci    UCHAR timestamp[8];
1362306a36Sopenharmony_ci    UCHAR beacon_intvl[2];
1462306a36Sopenharmony_ci    UCHAR capability[2];
1562306a36Sopenharmony_ci    UCHAR elements[sizeof(struct essid_element)
1662306a36Sopenharmony_ci                  + sizeof(struct rates_element)
1762306a36Sopenharmony_ci                  + sizeof(struct freq_hop_element)
1862306a36Sopenharmony_ci                  + sizeof(struct japan_call_sign_element)
1962306a36Sopenharmony_ci                  + sizeof(struct tim_element)];
2062306a36Sopenharmony_ci};
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci/* Return values for get_free{,_tx}_ccs */
2362306a36Sopenharmony_ci#define ECCSFULL  (-1)
2462306a36Sopenharmony_ci#define ECCSBUSY  (-2)
2562306a36Sopenharmony_ci#define ECARDGONE (-3)
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_citypedef struct ray_dev_t {
2862306a36Sopenharmony_ci    int card_status;
2962306a36Sopenharmony_ci    int authentication_state;
3062306a36Sopenharmony_ci    void __iomem *sram;            /* pointer to beginning of shared RAM     */
3162306a36Sopenharmony_ci    void __iomem *amem;            /* pointer to attribute mem window        */
3262306a36Sopenharmony_ci    void __iomem *rmem;            /* pointer to receive buffer window       */
3362306a36Sopenharmony_ci    struct pcmcia_device *finder;            /* pointer back to struct pcmcia_device for card    */
3462306a36Sopenharmony_ci    struct timer_list timer;
3562306a36Sopenharmony_ci    unsigned long tx_ccs_lock;
3662306a36Sopenharmony_ci    unsigned long ccs_lock;
3762306a36Sopenharmony_ci    int   dl_param_ccs;
3862306a36Sopenharmony_ci    union {
3962306a36Sopenharmony_ci        struct b4_startup_params b4;
4062306a36Sopenharmony_ci        struct b5_startup_params b5;
4162306a36Sopenharmony_ci    } sparm;
4262306a36Sopenharmony_ci    int timeout_flag;
4362306a36Sopenharmony_ci    UCHAR supported_rates[8];
4462306a36Sopenharmony_ci    UCHAR japan_call_sign[12];
4562306a36Sopenharmony_ci    struct startup_res_6 startup_res;
4662306a36Sopenharmony_ci    int num_multi;
4762306a36Sopenharmony_ci    /* Network parameters from start/join */
4862306a36Sopenharmony_ci    UCHAR bss_id[6];
4962306a36Sopenharmony_ci    UCHAR auth_id[6];
5062306a36Sopenharmony_ci    UCHAR net_default_tx_rate;
5162306a36Sopenharmony_ci    UCHAR encryption;
5262306a36Sopenharmony_ci    struct net_device_stats stats;
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci    UCHAR net_type;
5562306a36Sopenharmony_ci    UCHAR sta_type;
5662306a36Sopenharmony_ci    UCHAR fw_ver;
5762306a36Sopenharmony_ci    UCHAR fw_bld;
5862306a36Sopenharmony_ci    UCHAR fw_var;
5962306a36Sopenharmony_ci    UCHAR ASIC_version;
6062306a36Sopenharmony_ci    UCHAR assoc_id[2];
6162306a36Sopenharmony_ci    UCHAR tib_length;
6262306a36Sopenharmony_ci    UCHAR last_rsl;
6362306a36Sopenharmony_ci    int beacon_rxed;
6462306a36Sopenharmony_ci    struct beacon_rx last_bcn;
6562306a36Sopenharmony_ci    iw_stats	wstats;		/* Wireless specific stats */
6662306a36Sopenharmony_ci#ifdef WIRELESS_SPY
6762306a36Sopenharmony_ci    struct iw_spy_data		spy_data;
6862306a36Sopenharmony_ci    struct iw_public_data	wireless_data;
6962306a36Sopenharmony_ci#endif	/* WIRELESS_SPY */
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci} ray_dev_t;
7262306a36Sopenharmony_ci/*****************************************************************************/
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci#endif /* _RAY_CS_H_ */
75