[haiku-commits] r35008 - in haiku/branches/developer/colin/wireless: headers/posix/sys headers/private/net src/add-ons/kernel/network/devices/ieee80211 src/add-ons/kernel/network/devices/ieee80211/stack

  • From: coling@xxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 11 Jan 2010 15:16:52 +0100 (CET)

Author: colin
Date: 2010-01-11 15:16:52 +0100 (Mon, 11 Jan 2010)
New Revision: 35008
Changeset: http://dev.haiku-os.org/changeset/35008/haiku

Added:
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211.h
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_control.cpp
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_control.h
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_device.h
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Device.cpp
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Device.h
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Jamfile
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Management.cpp
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Management.h
Removed:
   haiku/branches/developer/colin/wireless/headers/private/net/ieee80211.h
Modified:
   haiku/branches/developer/colin/wireless/headers/posix/sys/sockio.h
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/Jamfile
   
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211.cpp
Log:
* Basic design concept of the IEEE 802.11 stack layed out.
  The ieee80211 device will be tightly coupled with the object oriented
  Ieee80211::Stack. Using module mechanism to load & access Ieee80211::Stack
  seems inappropriate, as this stack is needed concurrent to the ieee80211
  device, only.
* Separating C based and C++ based code into different file naming schemes:
  - ieee80211*.cpp files are handling transition from C to C++ and vice versa.
  - stack/[A-Z]*.cpp files contain C++ code, only.
* Locating all ieee80211 related headers in devices/ieee80211/ as long as their
  scope is somewhat unclear.
* Adding two socket ioctls for managing IEEE 802.11 states. Their naming has
  been kept compatible to FreeBSD. By using ioctls there is no need for
  structural changes in Haiku's network stack.
* Code cleanup mainly geared towards comment usage and pointer style.


Modified: haiku/branches/developer/colin/wireless/headers/posix/sys/sockio.h
===================================================================
--- haiku/branches/developer/colin/wireless/headers/posix/sys/sockio.h  
2010-01-11 13:39:27 UTC (rev 35007)
+++ haiku/branches/developer/colin/wireless/headers/posix/sys/sockio.h  
2010-01-11 14:16:52 UTC (rev 35008)
@@ -1,65 +1,68 @@
 /*
- * Copyright 2002-2007, Haiku Inc. All Rights Reserved.
+ * Copyright 2002-2010, Haiku Inc. All Rights Reserved.
  * Distributed under the terms of the MIT License.
  */
 #ifndef _SYS_SOCKIO_H
 #define _SYS_SOCKIO_H
 
 
-#define SIOCADDRT                      8900    /* add route */
-#define SIOCDELRT                      8901    /* delete route */
-#define SIOCSIFADDR                    8902    /* set interface address */
-#define SIOCGIFADDR                    8903    /* get interface address */
-#define SIOCSIFDSTADDR         8904    /* set point-to-point address */
-#define SIOCGIFDSTADDR         8905    /* get point-to-point address */
-#define SIOCSIFFLAGS           8906    /* set interface flags */
-#define SIOCGIFFLAGS           8907    /* get interface flags */
-#define SIOCGIFBRDADDR         8908    /* get broadcast address */
-#define SIOCSIFBRDADDR         8909    /* set broadcast address */
-#define SIOCGIFCOUNT           8910    /* count interfaces */
-#define SIOCGIFCONF                    8911    /* get interface list */
-#define SIOCGIFINDEX           8912    /* interface name -> index */
-#define SIOCGIFNAME                    8913    /* interface index -> name */
-#define SIOCGIFNETMASK         8914    /* get net address mask */
-#define SIOCSIFNETMASK         8915    /* set net address mask */
-#define SIOCGIFMETRIC          8916    /* get interface metric */
-#define SIOCSIFMETRIC          8917    /* set interface metric */
-#define SIOCDIFADDR                    8918    /* delete interface address */
-#define SIOCAIFADDR                    8919    /* configure interface alias */
-#define SIOCADDMULTI           8920    /* add multicast address */
-#define SIOCDELMULTI           8921    /* delete multicast address */
-#define SIOCGIFMTU                     8922    /* get interface MTU */
-#define SIOCSIFMTU                     8923    /* set interface MTU */
-#define SIOCSIFMEDIA           8924    /* set net media */
-#define SIOCGIFMEDIA           8925    /* get net media */
+#define SIOCADDRT                      8900    // add route
+#define SIOCDELRT                      8901    // delete route
+#define SIOCSIFADDR                    8902    // set interface address
+#define SIOCGIFADDR                    8903    // get interface address
+#define SIOCSIFDSTADDR         8904    // set point-to-point address
+#define SIOCGIFDSTADDR         8905    // get point-to-point address
+#define SIOCSIFFLAGS           8906    // set interface flags
+#define SIOCGIFFLAGS           8907    // get interface flags
+#define SIOCGIFBRDADDR         8908    // get broadcast address
+#define SIOCSIFBRDADDR         8909    // set broadcast address
+#define SIOCGIFCOUNT           8910    // count interfaces
+#define SIOCGIFCONF                    8911    // get interface list
+#define SIOCGIFINDEX           8912    // interface name -> index
+#define SIOCGIFNAME                    8913    // interface index -> name
+#define SIOCGIFNETMASK         8914    // get net address mask
+#define SIOCSIFNETMASK         8915    // set net address mask
+#define SIOCGIFMETRIC          8916    // get interface metric
+#define SIOCSIFMETRIC          8917    // set interface metric
+#define SIOCDIFADDR                    8918    // delete interface address
+#define SIOCAIFADDR                    8919    // configure interface alias
+#define SIOCADDMULTI           8920    // add multicast address
+#define SIOCDELMULTI           8921    // delete multicast address
+#define SIOCGIFMTU                     8922    // get interface MTU
+#define SIOCSIFMTU                     8923    // set interface MTU
+#define SIOCSIFMEDIA           8924    // set net media
+#define SIOCGIFMEDIA           8925    // get net media
 
-#define SIOCGRTSIZE                    8926    /* get route table size */
-#define SIOCGRTTABLE           8927    /* get route table */
-#define SIOCGETRT                      8928    /* get route information for 
destination */
+#define SIOCGRTSIZE                    8926    // get route table size
+#define SIOCGRTTABLE           8927    // get route table
+#define SIOCGETRT                      8928    // get route information for 
destination
 
-#define SIOCGIFSTATS           8929    /* get interface stats */
-#define SIOCGIFPARAM           8930    /* get interface parameter */
-#define SIOCGIFTYPE                    8931    /* get interface type */
+#define SIOCGIFSTATS           8929    // get interface stats
+#define SIOCGIFPARAM           8930    // get interface parameter
+#define SIOCGIFTYPE                    8931    // get interface type
 
-#define SIOCSPACKETCAP         8932    /* Start capturing packets on an 
interface */
-#define SIOCCPACKETCAP         8933    /* Stop capturing packets on an 
interface */
+#define SIOCSPACKETCAP         8932    // Start capturing packets on an 
interface
+#define SIOCCPACKETCAP         8933    // Stop capturing packets on an 
interface
 
-#define SIOCSHIWAT                     8934    /* set high watermark */
-#define SIOCGHIWAT                     8935    /* get high watermark */
-#define SIOCSLOWAT                     8936    /* set low watermark */
-#define SIOCGLOWAT                     8937    /* get low watermark */
-#define SIOCATMARK                     8938    /* at out-of-band mark? */
-#define SIOCSPGRP                      8939    /* set process group */
-#define SIOCGPGRP                      8940    /* get process group */
+#define SIOCSHIWAT                     8934    // set high watermark
+#define SIOCGHIWAT                     8935    // get high watermark
+#define SIOCSLOWAT                     8936    // set low watermark
+#define SIOCGLOWAT                     8937    // get low watermark
+#define SIOCATMARK                     8938    // at out-of-band mark?
+#define SIOCSPGRP                      8939    // set process group
+#define SIOCGPGRP                      8940    // get process group
 
-#define SIOCGPRIVATE_0         8941    /* device private 0 */
-#define SIOCGPRIVATE_1         8942    /* device private 1 */
-#define SIOCSDRVSPEC           8943    /* set driver-specific parameters */
-#define SIOCGDRVSPEC           8944    /* get driver-specific parameters */
+#define SIOCGPRIVATE_0         8941    // device private 0
+#define SIOCGPRIVATE_1         8942    // device private 1
+#define SIOCSDRVSPEC           8943    // set driver-specific parameters
+#define SIOCGDRVSPEC           8944    // get driver-specific parameters
 
-#define SIOCSIFGENERIC         8945    /* generic IF set op */
-#define SIOCGIFGENERIC         8946    /* generic IF get op */
+#define SIOCSIFGENERIC         8945    // generic IF set op
+#define SIOCGIFGENERIC         8946    // generic IF get op
 
-#define SIOCEND                                9000    /* SIOCEND >= highest 
SIOC* */
+#define SIOCG80211                     8947    // get IEEE 802.11 data
+#define SIOCS80211                     8948    // set IEEE 802.11 data
 
-#endif /* _SYS_SOCKIO_H */
+#define SIOCEND                                9000    // SIOCEND >= highest 
SIOC*
+
+#endif // _SYS_SOCKIO_H

Modified: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/Jamfile
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/Jamfile
        2010-01-11 13:39:27 UTC (rev 35007)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/Jamfile
        2010-01-11 14:16:52 UTC (rev 35008)
@@ -1,8 +1,15 @@
+SubInclude HAIKU_TOP src add-ons kernel network devices ieee80211 stack ;
+
 SubDir HAIKU_TOP src add-ons kernel network devices ieee80211 ;
 
+UseHeaders [ FDirName $(SUBDIR) ] : true ;
+UseHeaders [ FDirName $(SUBDIR) stack ] ;
+
 UsePrivateKernelHeaders ;
 UsePrivateHeaders net ;
 
 KernelAddon ieee80211 :
        ieee80211.cpp
+       ieee80211_control.cpp
+       : libieee80211.a
        ;

Modified: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211.cpp
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211.cpp
  2010-01-11 13:39:27 UTC (rev 35007)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211.cpp
  2010-01-11 14:16:52 UTC (rev 35008)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2010, Haiku, Inc. All Rights Reserved.
+ * Copyright 2010 Haiku Inc. All Rights Reserved.
  * Distributed under the terms of the MIT License.
  *
  * Authors:
@@ -7,15 +7,17 @@
  */
 
 
+#include <sys/sockio.h>
+
 #include <ieee80211.h>
+#include <ieee80211_control.h>
+#include <ieee80211_device.h>
 
 #include <net_buffer.h>
-#include <net_device.h>
 #include <net_stack.h>
 
 #include <lock.h>
 #include <util/AutoLock.h>
-#include <util/DoublyLinkedList.h>
 
 #include <KernelExport.h>
 
@@ -29,30 +31,25 @@
 #include <string.h>
 
 
-struct ieee80211_device : net_device,
-       DoublyLinkedListLinkImpl<ieee80211_device> {
-       int             fd;
-};
+net_buffer_module_info* gBufferModule;
+static net_stack_module_info* sStackModule;
 
-net_buffer_module_info *gBufferModule;
-static net_stack_module_info *sStackModule;
 
-
 //     #pragma mark -
 
 
 status_t
-ieee80211_init(const char *name, net_device **_device)
+ieee80211_init(const char* name, net_device** _device)
 {
        if (strncmp(name, "/dev/net/ieee80211/", 19))
                return B_BAD_VALUE;
 
        status_t status = get_module(NET_BUFFER_MODULE_NAME,
-               (module_info **)&gBufferModule);
+               reinterpret_cast<module_info**>(&gBufferModule));
        if (status < B_OK)
                return status;
 
-       ieee80211_device *device = new (std::nothrow) ieee80211_device;
+       ieee80211_device* device = new (std::nothrow) ieee80211_device;
        if (device == NULL) {
                put_module(NET_BUFFER_MODULE_NAME);
                return B_NO_MEMORY;
@@ -60,36 +57,49 @@
 
        memset(device, 0, sizeof(ieee80211_device));
 
-       strcpy(device->name, name);
+       strncpy(device->name, name, IF_NAMESIZE);
        device->flags = IFF_BROADCAST | IFF_LINK | IFF_SIMPLEX;
        device->type = IFT_IEEE80211;
        device->mtu = IEEE80211_MTU;
        device->media = IFM_ACTIVE | IFM_IEEE80211;
        device->header_length = IEEE80211_NON_QOS_3_ADDRESS_DATA_HEADER_LENGTH;
-       device->fd = -1;
-
+       
        *_device = device;
        return B_OK;
 }
 
 
 status_t
-ieee80211_uninit(net_device *device)
+ieee80211_uninit(net_device* _device)
 {
+       Ieee80211::Device* device
+               = reinterpret_cast<ieee80211_device*>(_device)->genericDevice;
+
        put_module(NET_BUFFER_MODULE_NAME);
        delete device;
+       delete _device;
 
        return B_OK;
 }
 
 
 status_t
-ieee80211_up(net_device *_device)
+ieee80211_up(net_device* _device)
 {
-       ieee80211_device *device = (ieee80211_device *)_device;
+       ieee80211_device* device = reinterpret_cast<ieee80211_device*>(_device);
 
-       device->fd = open(device->name, O_RDWR);
-       if (device->fd < 0)
+       device->genericDevice = new (std::nothrow) Ieee80211::Device();
+       if (device->genericDevice == NULL) 
+               return B_NO_MEMORY;
+
+       status_t status = device->genericDevice->InitCheck();
+       if (device->genericDevice->InitCheck() < B_OK) {
+               delete device->genericDevice;
+               return status;
+       }
+
+       device->genericDevice->fFileDescriptor = open(_device->name, O_RDWR);
+       if (device->genericDevice->fFileDescriptor < 0)
                return errno;
 
        return B_OK;
@@ -97,68 +107,79 @@
 
 
 void
-ieee80211_down(net_device *_device)
+ieee80211_down(net_device* _device)
 {
-       ieee80211_device *device = (ieee80211_device *)_device;
+       Ieee80211::Device* device
+               = reinterpret_cast<ieee80211_device*>(_device)->genericDevice;
 
-       close(device->fd);
-       device->fd = -1;
+       close(device->fFileDescriptor);
+       device->fFileDescriptor = -1;
 }
 
 
 status_t
-ieee80211_control(net_device *_device, int32 op, void *argument,
-       size_t length)
+ieee80211_control(net_device* _device, int32 op, void* argument, size_t length)
 {
-       ieee80211_device *device = (ieee80211_device *)_device;
-       return ioctl(device->fd, op, argument, length);
+       ieee80211_device* device
+               = reinterpret_cast<ieee80211_device*>(_device);
+       ieee80211req_t* request
+               = reinterpret_cast<ieee80211req_t*>(argument);
+
+       switch (op) {
+               case SIOCG80211:
+                       return ieee80211_from_management(device, request, 
length);
+               case SIOCS80211:
+                       return ieee80211_to_management(device, request, length);
+       }
+
+       return ioctl(device->genericDevice->fFileDescriptor, op, argument, 
length);
 }
 
 
 status_t
-ieee80211_send_data(net_device *_device, net_buffer *buffer)
+ieee80211_send_data(net_device* _device, net_buffer* buffer)
 {
        return B_OK;
 }
 
 
 status_t
-ieee80211_receive_data(net_device *_device, net_buffer **_buffer)
+ieee80211_receive_data(net_device* _device, net_buffer** _buffer)
 {
        return B_OK;
 }
 
 
 status_t
-ieee80211_set_mtu(net_device *_device, size_t mtu)
+ieee80211_set_mtu(net_device* _device, size_t mtu)
 {
        return B_OK;
 }
 
 
 status_t
-ieee80211_set_promiscuous(net_device *_device, bool promiscuous)
+ieee80211_set_promiscuous(net_device* _device, bool promiscuous)
 {
        return B_OK;
 }
 
 
 status_t
-ieee80211_set_media(net_device *device, uint32 media)
+ieee80211_set_media(net_device* _device, uint32 media)
 {
        return EOPNOTSUPP;
 }
 
 
 status_t
-ieee80211_add_multicast(struct net_device *_device, const sockaddr *_address)
+ieee80211_add_multicast(struct net_device* _device, const sockaddr* _address)
 {
        return EOPNOTSUPP;
 }
 
 
 status_t
-ieee80211_remove_multicast(struct net_device *_device, const sockaddr 
*_address)
+ieee80211_remove_multicast(struct net_device* _device, const sockaddr* 
_address)
 {
        return EOPNOTSUPP;
 }
@@ -171,9 +192,11 @@
                case B_MODULE_INIT:
                {
                        status_t status = get_module(NET_STACK_MODULE_NAME,
-                               (module_info **)&sStackModule);
+                               reinterpret_cast<module_info**>(&sStackModule));
                        if (status < B_OK)
                                return status;
+                       
+                       // TODO construct Ieee80211::Stack object
 
                        return B_OK;
                }
@@ -181,6 +204,8 @@
                case B_MODULE_UNINIT:
                {
                        put_module(NET_STACK_MODULE_NAME);
+                       
+                       // TODO destruct Ieee80211::Stack object
                        return B_OK;
                }
 
@@ -190,7 +215,7 @@
 }
 
 
-net_device_module_info sIeee80211Module = {
+net_device_module_info sIeee80211DeviceModule = {
        {
                "network/devices/ieee80211/v1",
                0,
@@ -210,7 +235,7 @@
        ieee80211_remove_multicast,
 };
 
-module_info *modules[] = {
-       (module_info *)&sIeee80211Module,
+module_info* modules[] = {
+       reinterpret_cast<module_info*>(&sIeee80211DeviceModule),
        NULL
 };

Copied: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211.h
 (from rev 34887, 
haiku/branches/developer/colin/wireless/headers/private/net/ieee80211.h)
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211.h
                            (rev 0)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211.h
    2010-01-11 14:16:52 UTC (rev 35008)
@@ -0,0 +1,15 @@
+/*
+ * Copyright 2010 Haiku Inc. All rights reserved.
+ * Distributed under the terms of the MIT License.
+ */
+#ifndef IEEE80211_H_
+#define IEEE80211_H_
+
+
+#define IEEE80211_MTU 2304
+       // IEEE 802.11-2007, p.60
+
+#define IEEE80211_NON_QOS_3_ADDRESS_DATA_HEADER_LENGTH 24
+       // IEEE 802.11-2007, p.77
+
+#endif // IEEE80211_H_

Added: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_control.cpp
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_control.cpp
                          (rev 0)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_control.cpp
  2010-01-11 14:16:52 UTC (rev 35008)
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2010 Haiku Inc. All Rights Reserved.
+ * Distributed under the terms of the MIT License.
+ *
+ * Authors:
+ *             Colin Günther, coling@xxxxxx
+ */
+
+
+#include <ieee80211_control.h>
+#include <ieee80211_device.h>
+
+
+/*!    Handles flow of information from the Station Management Entity.
+       For retrieving data from the Station Management Entity (SME), like 
getting
+       properties or detected wireless networks.
+
+       \param _device on which the SME will operate.
+       \param _request to be performed by the SME.
+       \param length of _request in byte. Needed to copy-out the _request data
+               into userland memory.
+ */
+status_t
+ieee80211_from_management(ieee80211_device* _device, ieee80211req_t* _request,
+       size_t length)
+{
+       return B_NOT_SUPPORTED;
+}
+
+
+/*!    Handles flow of information into the Station Management Entity.
+       For delivering new data to the Station Management Entity (SME), like
+       setting properties or scanning for wireless networks.
+
+       \param _device on which the SME will operate.
+       \param _request to be performed by the SME.
+       \param length of _request in byte. Needed to copy-in the _request data
+               from userland memory.
+ */
+status_t
+ieee80211_to_management(ieee80211_device* _device, ieee80211req_t* _request,
+       size_t length)
+{
+       return B_NOT_SUPPORTED;
+}


Property changes on: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_control.cpp
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_control.h
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_control.h
                            (rev 0)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_control.h
    2010-01-11 14:16:52 UTC (rev 35008)
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2010 Haiku Inc. All rights reserved.
+ * Distributed under the terms of the MIT License.
+ */
+#ifndef IEEE80211_CONTROL_H_
+#define IEEE80211_CONTROL_H_
+
+
+#include <SupportDefs.h>
+
+#include <ieee80211_device.h>
+
+
+// #pragma mark - request types
+
+
+enum request_t {
+       IEEE80211_IOC_CHANNEL,  // get/set channel number
+       IEEE80211_IOC_BSSID,    // get/set BSSID of desired WLAN
+       IEEE80211_IOC_CONN_REQ  // connect to a specific WLAN
+};
+
+
+// #pragma mark - request structures
+
+
+struct request_data {
+       uint16  lengthInByte;
+       void*   data;
+};
+typedef struct request_data request_data_t;
+
+struct ieee80211req {
+       request_t               type;
+       request_data_t  data;
+};
+typedef struct ieee80211req ieee80211req_t;
+
+
+status_t ieee80211_from_management(ieee80211_device*, ieee80211req_t*, size_t);
+status_t ieee80211_to_management(ieee80211_device*, ieee80211req_t*, size_t);
+
+#endif // IEEE80211_CONTROL_H_


Property changes on: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_control.h
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_device.h
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_device.h
                             (rev 0)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_device.h
     2010-01-11 14:16:52 UTC (rev 35008)
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2010 Haiku Inc. All rights reserved.
+ * Distributed under the terms of the MIT License.
+ */
+#ifndef IEEE80211_DEVICE_H_
+#define IEEE80211_DEVICE_H_
+
+
+#include <net_device.h>
+
+#include <DoublyLinkedList.h>
+
+#include "Device.h"
+
+
+struct ieee80211_device : net_device,
+       DoublyLinkedListLinkImpl<ieee80211_device> {
+       Ieee80211::Device* genericDevice;
+};
+
+#endif /* IEEE80211_DEVICE_H_ */


Property changes on: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/ieee80211_device.h
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Device.cpp
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Device.cpp
                               (rev 0)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Device.cpp
       2010-01-11 14:16:52 UTC (rev 35008)
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2010 Haiku Inc. All rights reserved.
+ * Distributed under the terms of the MIT License.
+ *
+ * Authors:
+ *             Colin Günther, coling@xxxxxx
+ */
+
+
+/*!    Implementation of the stack part of the generic IEEE 802.11 device.
+       This class embeds all methods for interacting with the the driver part
+       of the generic IEEE 802.11 device via io controls.
+ */
+
+
+#include "Device.h"
+
+
+using namespace Ieee80211;
+
+
+status_t
+Device::InitCheck()
+{
+       return B_OK;
+}


Property changes on: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Device.cpp
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Device.h
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Device.h
                         (rev 0)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Device.h
 2010-01-11 14:16:52 UTC (rev 35008)
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2010 Haiku Inc. All rights reserved.
+ * Distributed under the terms of the MIT License.
+ */
+#ifndef DEVICE_H_
+#define DEVICE_H_
+
+
+#include <SupportDefs.h>
+
+
+namespace Ieee80211 {
+
+class Device {
+public:
+       status_t        InitCheck();
+       
+       int                     fFileDescriptor;
+};
+
+}      // namespace Ieee80211
+
+#endif // DEVICE_H_


Property changes on: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Device.h
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Jamfile
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Jamfile
                          (rev 0)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Jamfile
  2010-01-11 14:16:52 UTC (rev 35008)
@@ -0,0 +1,6 @@
+SubDir HAIKU_TOP src add-ons kernel network devices ieee80211 stack ;
+
+KernelStaticLibrary libieee80211.a :
+       Device.cpp
+       Management.cpp
+       ;

Added: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Management.cpp
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Management.cpp
                           (rev 0)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Management.cpp
   2010-01-11 14:16:52 UTC (rev 35008)
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2010 Haiku Inc. All Rights Reserved.
+ * Distributed under the terms of the MIT License.
+ *
+ * Authors:
+ *             Colin Günther, coling@xxxxxx
+ */
+
+
+/*!    Implementation of the Station Management Entity (SME).
+       The term SME refers to the concept as described in the IEEE 802.11
+       documentation.
+       It handles all management related tasks, needed for operating the
+       wireless connection properly. 
+
+       \sa IEEE Std 802.11-2007, section 10 "Layer Management"
+ */
+
+
+#include "Management.h"
+
+
+namespace Ieee80211 {
+
+}      // namespace Ieee80211


Property changes on: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Management.cpp
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Management.h
===================================================================
--- 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Management.h
                             (rev 0)
+++ 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Management.h
     2010-01-11 14:16:52 UTC (rev 35008)
@@ -0,0 +1,9 @@
+/*
+ * Copyright 2010 Haiku Inc. All rights reserved.
+ * Distributed under the terms of the MIT License.
+ */
+#ifndef MANAGEMENT_H_
+#define MANAGEMENT_H_
+
+
+#endif // MANAGEMENT_H_


Property changes on: 
haiku/branches/developer/colin/wireless/src/add-ons/kernel/network/devices/ieee80211/stack/Management.h
___________________________________________________________________
Added: svn:mime-type
   + text/plain


Other related posts: