/* * Definitions for ioctls to access DHD iovars. * Based on wlioctl.h (for Broadcom 802.11abg driver). * (Moves towards generic ioctls for BCM drivers/iovars.) * * Definitions subject to change without notice. * * Copyright (C) 1999-2012, Broadcom Corporation * * Unless you and Broadcom execute a separate written software license * agreement governing use of this software, this software is licensed to you * under the terms of the GNU General Public License version 2 (the "GPL"), * available at http://www.broadcom.com/licenses/GPLv2.php, with the * following added to such license: * * As a special exception, the copyright holders of this software give you * permission to link this software with independent modules, and to copy and * distribute the resulting executable under terms of your choice, provided that * you also meet, for each linked independent module, the terms and conditions of * the license of that module. An independent module is a module which is not * derived from this software. The special exception does not apply to any * modifications of the software. * * Notwithstanding the above, under no circumstances may you combine this * software in any way with any other Broadcom software provided under a license * other than the GPL, without Broadcom's express prior written consent. * * $Id: dhdioctl.h 303826 2011-12-20 06:02:09Z $ */ #ifndef _dhdioctl_h_ #define _dhdioctl_h_ #include <typedefs.h> /* require default structure packing */ #define BWL_DEFAULT_PACKING #include <packed_section_start.h> /* Linux network driver ioctl encoding */ typedef struct dhd_ioctl { uint cmd; /* common ioctl definition */ void *buf; /* pointer to user buffer */ uint len; /* length of user buffer */ bool set; /* get or set request (optional) */ uint used; /* bytes read or written (optional) */ uint needed; /* bytes needed (optional) */ uint driver; /* to identify target driver */ } dhd_ioctl_t; /* Underlying BUS definition */ enum { BUS_TYPE_USB = 0, /* for USB dongles */ BUS_TYPE_SDIO /* for SDIO dongles */ }; /* per-driver magic numbers */ #define DHD_IOCTL_MAGIC 0x00444944 /* bump this number if you change the ioctl interface */ #define DHD_IOCTL_VERSION 1 #define DHD_IOCTL_MAXLEN 8192 /* max length ioctl buffer required */ #define DHD_IOCTL_SMLEN 256 /* "small" length ioctl buffer required */ /* common ioctl definitions */ #define DHD_GET_MAGIC 0 #define DHD_GET_VERSION 1 #define DHD_GET_VAR 2 #define DHD_SET_VAR 3 /* message levels */ #define DHD_ERROR_VAL 0x0001 #define DHD_TRACE_VAL 0x0002 #define DHD_INFO_VAL 0x0004 #define DHD_DATA_VAL 0x0008 #define DHD_CTL_VAL 0x0010 #define DHD_TIMER_VAL 0x0020 #define DHD_HDRS_VAL 0x0040 #define DHD_BYTES_VAL 0x0080 #define DHD_INTR_VAL 0x0100 #define DHD_LOG_VAL 0x0200 #define DHD_GLOM_VAL 0x0400 #define DHD_EVENT_VAL 0x0800 #define DHD_BTA_VAL 0x1000 #define DHD_ISCAN_VAL 0x2000 #define DHD_ARPOE_VAL 0x4000 #define DHD_REORDER_VAL 0x8000 #ifdef SDTEST /* For pktgen iovar */ typedef struct dhd_pktgen { uint version; /* To allow structure change tracking */ uint freq; /* Max ticks between tx/rx attempts */ uint count; /* Test packets to send/rcv each attempt */ uint print; /* Print counts every <print> attempts */ uint total; /* Total packets (or bursts) */ uint minlen; /* Minimum length of packets to send */ uint maxlen; /* Maximum length of packets to send */ uint numsent; /* Count of test packets sent */ uint numrcvd; /* Count of test packets received */ uint numfail; /* Count of test send failures */ uint mode; /* Test mode (type of test packets) */ uint stop; /* Stop after this many tx failures */ } dhd_pktgen_t; /* Version in case structure changes */ #define DHD_PKTGEN_VERSION 2 /* Type of test packets to use */ #define DHD_PKTGEN_ECHO 1 /* Send echo requests */ #define DHD_PKTGEN_SEND 2 /* Send discard packets */ #define DHD_PKTGEN_RXBURST 3 /* Request dongle send N packets */ #define DHD_PKTGEN_RECV 4 /* Continuous rx from continuous tx dongle */ #endif /* SDTEST */ /* Enter idle immediately (no timeout) */ #define DHD_IDLE_IMMEDIATE (-1) /* Values for idleclock iovar: other values are the sd_divisor to use when idle */ #define DHD_IDLE_ACTIVE 0 /* Do not request any SD clock change when idle */ #define DHD_IDLE_STOP (-1) /* Request SD clock be stopped (and use SD1 mode) */ /* require default structure packing */ #include <packed_section_end.h> #endif /* _dhdioctl_h_ */