1/* 2 * Copyright (C) 2002 Intersil Americas Inc. 3 * Copyright (C) 2003 Luis R. Rodriguez <mcgrof@ruslug.rutgers.edu> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2 of the License 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 * 18 */ 19 20#ifndef _ISLPCI_MGT_H 21#define _ISLPCI_MGT_H 22 23#include <linux/wireless.h> 24#include <linux/skbuff.h> 25 26/* 27 * Function definitions 28 */ 29 30#define K_DEBUG(f, m, args...) do { if(f & m) printk(KERN_DEBUG args); } while(0) 31#define DEBUG(f, args...) K_DEBUG(f, pc_debug, args) 32 33extern int pc_debug; 34#define init_wds 0 /* help compiler optimize away dead code */ 35 36 37/* General driver definitions */ 38#define PCIDEVICE_LATENCY_TIMER_MIN 0x40 39#define PCIDEVICE_LATENCY_TIMER_VAL 0x50 40 41/* Debugging verbose definitions */ 42#define SHOW_NOTHING 0x00 /* overrules everything */ 43#define SHOW_ANYTHING 0xFF 44#define SHOW_ERROR_MESSAGES 0x01 45#define SHOW_TRAPS 0x02 46#define SHOW_FUNCTION_CALLS 0x04 47#define SHOW_TRACING 0x08 48#define SHOW_QUEUE_INDEXES 0x10 49#define SHOW_PIMFOR_FRAMES 0x20 50#define SHOW_BUFFER_CONTENTS 0x40 51#define VERBOSE 0x01 52 53/* Default card definitions */ 54#define CARD_DEFAULT_CHANNEL 6 55#define CARD_DEFAULT_MODE INL_MODE_CLIENT 56#define CARD_DEFAULT_IW_MODE IW_MODE_INFRA 57#define CARD_DEFAULT_BSSTYPE DOT11_BSSTYPE_INFRA 58#define CARD_DEFAULT_CLIENT_SSID "" 59#define CARD_DEFAULT_AP_SSID "default" 60#define CARD_DEFAULT_KEY1 "default_key_1" 61#define CARD_DEFAULT_KEY2 "default_key_2" 62#define CARD_DEFAULT_KEY3 "default_key_3" 63#define CARD_DEFAULT_KEY4 "default_key_4" 64#define CARD_DEFAULT_WEP 0 65#define CARD_DEFAULT_FILTER 0 66#define CARD_DEFAULT_WDS 0 67#define CARD_DEFAULT_AUTHEN DOT11_AUTH_OS 68#define CARD_DEFAULT_DOT1X 0 69#define CARD_DEFAULT_MLME_MODE DOT11_MLME_AUTO 70#define CARD_DEFAULT_CONFORMANCE OID_INL_CONFORMANCE_NONE 71#define CARD_DEFAULT_PROFILE DOT11_PROFILE_MIXED_G_WIFI 72#define CARD_DEFAULT_MAXFRAMEBURST DOT11_MAXFRAMEBURST_MIXED_SAFE 73 74/* PIMFOR package definitions */ 75#define PIMFOR_ETHERTYPE 0x8828 76#define PIMFOR_HEADER_SIZE 12 77#define PIMFOR_VERSION 1 78#define PIMFOR_OP_GET 0 79#define PIMFOR_OP_SET 1 80#define PIMFOR_OP_RESPONSE 2 81#define PIMFOR_OP_ERROR 3 82#define PIMFOR_OP_TRAP 4 83#define PIMFOR_OP_RESERVED 5 /* till 255 */ 84#define PIMFOR_DEV_ID_MHLI_MIB 0 85#define PIMFOR_FLAG_APPLIC_ORIGIN 0x01 86#define PIMFOR_FLAG_LITTLE_ENDIAN 0x02 87 88static inline void 89add_le32p(u32 * le_number, u32 add) 90{ 91 *le_number = cpu_to_le32(le32_to_cpup(le_number) + add); 92} 93 94void display_buffer(char *, int); 95 96/* 97 * Type definition section 98 * 99 * the structure defines only the header allowing copyless 100 * frame handling 101 */ 102typedef struct { 103 u8 version; 104 u8 operation; 105 u32 oid; 106 u8 device_id; 107 u8 flags; 108 u32 length; 109} __attribute__ ((packed)) 110pimfor_header_t; 111 112/* A received and interrupt-processed management frame, either for 113 * schedule_work(prism54_process_trap) or for priv->mgmt_received, 114 * processed by islpci_mgt_transaction(). */ 115struct islpci_mgmtframe { 116 struct net_device *ndev; /* pointer to network device */ 117 pimfor_header_t *header; /* payload header, points into buf */ 118 void *data; /* payload ex header, points into buf */ 119 struct work_struct ws; /* argument for schedule_work() */ 120 char buf[0]; /* fragment buffer */ 121}; 122 123int 124islpci_mgt_receive(struct net_device *ndev); 125 126int 127islpci_mgmt_rx_fill(struct net_device *ndev); 128 129void 130islpci_mgt_cleanup_transmit(struct net_device *ndev); 131 132int 133islpci_mgt_transaction(struct net_device *ndev, 134 int operation, unsigned long oid, 135 void *senddata, int sendlen, 136 struct islpci_mgmtframe **recvframe); 137 138static inline void 139islpci_mgt_release(struct islpci_mgmtframe *frame) 140{ 141 kfree(frame); 142} 143 144#endif /* _ISLPCI_MGT_H */ 145