Sreekrishnan Venkateswaran (S_Krishna@in.ibm.com) Full-time Software Engineer, IBM India 2004 April
Today, there is no way to talk about computers and networks without considering Linux and wireless network technology. In this article, Sreekrishnan Venkateswaran explains the wireless networking through WLAN, Bluetooth, GPRS, GSM, and IRDA with Linux perspective. He uses a variety of different wireless devices and corresponding kernel layers, and user space tools to demonstrate how they work under Linux.
Wireless technology, such as WiReless Local Area Network, Bluetooth, GPRS (General Packet Radio Service), GSM (GLobal System for Mobile Communications), and IRDA (Infrared Data) providing services in different environments. Although WLAN supports higher speed and longer propagation distances than Bluetooth, it also requires more costs and consumes greater power. Although GPRS is slower than Bluetooth and WLANs, it can be used for mobile technology. Although they differ, or other reasons, devices with multiple wireless functions can use them. For example, according to the positioning input of the GPS module, the device can transparently switch the network from the GPRS on the road to a cheaper WLAN in the Internet cafe. The mobile phone can communicate with the arrhythmia monitor via Bluetooth. When the patient is getting a certain limit, the alert can be sent to the doctor via GSM.
Currently, wireless technology has been widely used in the form of PCMCIA, Compact Flash (CF) card, or for USB devices. Most computer systems include embedded devices, with PCMCIA, CF or USB interfaces, even without built-in support for wireless technology, can also be used immediately. This article analyzes some examples of wireless devices, and studies the Linux implementation, bus technology, and various agreements of the device driver.
First, by tracking the code stream of the WLAN sample card, you will learn how the WLAN device works under Linux, and you can also see how several Bluetooth devices are connected to the Linux Bluetooth stack and other kernel. Next, you will learn how to make GPRS and GSM devices work under Linux. The article finally analyzed IRDA support on Linux and briefly introduced performance issues related to wireless network devices.
Note: The kernel data structure and file names involved herein are used in the current Linux version. The root of the file name is relative to the Linux kernel source tree.
Linux 802.11 WLANWLAN communication system is generally used in the same building as another choice other than wired LANs. WLAN communicates with a radio broadcast band using ISM (Industrial, Scientific, Medical). WLAN's 802.11a standard uses 5 GHz band, supported maximum speeds of 54 Mbps, while 802.11b and 802.11g standards use 2.4 GHz band, which supports maximum 11 Mbps and 54 Mbps speed.
WLAN is similar to a wired Ethernet, which allocate a Mac (Media Access Control) address from the same address pool, and is a network device layer that appears in an Ethernet device. For example, the ARP (Address Resolution Protocol table is filled with WLAN MAC addresses and Ethernet MAC addresses.
However, WLANs are very different from the link layer in the link layer. For example, 802.11 standard uses conflict avoidance (CSMA / CA) instead of conflict detection (CSMA / CD) of Wired Ethernet. Moreover, unlike the Ethernet frame, the WLAN frame is confirmed. Due to the blur boundary between the WLAN workstation, the WLAN link layer has protocols that clear a region before transfer. For security considerations, WLAN's Wired Equivalent Privacy (WEP) encryption mechanism provides the same security level as wired network. WEP combines 40 bits or 104 bit keys with random 24-bit initial vector combination to add decryption data. WLAN supports two communication modes: AD HOC mode is used for communication between the small group workstations without having to use the access point in a short time of communication, and all communication of the Infrastructure mode must pass through the access point. The access point is periodically broadcast a service set identifier (SSID), and the SSID is used to distinguish a WLAN network to other networks.
Most available WLAN cards are based on INTERSIL PRISM or LUCENT HERMES chipset. Compaq, Nokia, Linksys, and D-Link cards use the Prism chipset, while Lucent OrinoCo card and Apple Airport use the Hermes chipset.
Linux WLAN supports Linux WLAN support consists of WLAN API implementation and WLAN device drivers. I will study them in turn.
There are two Linux projects to define a general WLAN API, and provide tools for user space applications to configure parameters and access information from the WLAN device driver. Wireless Extensions project provides a common Linux user space interface for different wireless network cards. The tool for this project includes iWconfig configured parameters (such as WLAN drivers and SSIDs). As part of the Wireless Extensions project, Linux-WLAN projects also supports tools for interacting from user space with WLAN device drivers. Unlike Wireless Extensions-based tools, these tools use syntax similar to SNMP (Simple Network Management Protocol) MIB (Management Information Base), which reflects the IEEE 802.11 specification. (See Resources for more information on the project.)
Continue to discuss the device driver, and the Linux device drivers that support popular WLAN cards include:
ORINOCO WLAN driver: It is part of the Linux kernel source code that supports Hermes-based cards and INTERSIL PRISM cards. The ORINOCO_CS module provides PCMCIA card service support for PCMCIA and CF cards. Linux-WLAN-NG driver for Linux-WLAN project: Supports a variety of PRISM chip-based cards. This driver supports Linux-WLAN API and partially supports Wireless Extensions. Host AP Device Driver: Supports the AP mode of the PRISM chipset that allows the WLAN host to function as an access point. Linux Symbol Spectrum Device Driver: Supports Symbol PCMCIA card. Unlike the PCMCIA card, the Symbol CF card lacks the board firmware, which relies on the device driver to download the firmware. A separate version of the driver is suitable for CF cards. Intel reassacks the Symbol PCMCIA card to the Intel Pro / Wireless card, and Socket communicates the Symbol CF card. ATMEL USB WLAN driver: Many USB WLAN devices are supported using the Atmel chipset. Please refer to the reference material to obtain driver information for these devices.
INTERSIL PRISM2 WLAN CF Card I will discuss INTERSIL PRISM2 802.11b WLAN CF card to show how it works with Linux PCMCIA, network equipment and protocols.
The Linux PCMCIA / CF layer is driven by the PCMCIA host controller, different card client drivers, user mode programs, which helps hot background process and kernel card services that interact with each part of the above and services. The central composition (see Referring). The PCMCIA controller connects the card to the system bus and maps the card to the host I / O and memory window, and causes the interrupts generated by the card to the free processor interrupt line. The CF card is smaller, but is compatible with PCMCIA and is often applied to handheld devices. The PCMCIA / CF card has two storage spaces: attribute memory and common memory (Common Memory). The property stores like CARD Information Structure (CIS) to save configuration registration and descriptor information. The Linux card service core interacts with the host controller device driver, card device driver, and user mode Cardmgr background process. It calls the event handler routine that calls the card driver when some events (such as card insertion, card shift, and low power) occurs. Although the card service transmits information from the card's CIS to CardMgr, CardMgr will transfer the resource allocation policy defined in the user space (/etc/pcmcia/config.opts) to allocate memory windows and interrupt levels to the card service. View Drivers / PCMCIA / DS.C can learn the kernel code interact with CardMgr, check /etc/pcmcia/config.OPTS to understand the user's space resource allocation strategy.
Insert Intersil WLAN CF card, the card service calls the PCMCIA event handler of the ORINOCO_CS module. Card service parses the CIS tuple (tuples) in the card properties memory and transmits the information to the CARDMGR, which will load the appropriate device driver from the / etc / pcmcia / config file (see Listing 1). Since the ManfID tuple in the CIS in the card matches the entry in / etc / pcmcia / config, Cardmgr binds the card with the Orinoco_CS driver. The device entry in Listing 1 specifies that the ORINOCO_CS driver consists of three core modules: orinoco, orinoco_cs, and hanmes. In addition, the CardMGR performs script / etc / wireless / wireless when the device belongs to the wireless (Wireless), when the device is started and stopped. This script uses the WLAN tool and utility to configure device driver parameters, such as WEP keywords, and SSID. It can also start network protocols on WLANs, such as DHCP (Dynamic Host Configuration Protocol, dynamic host configuration communication protocol). The example in Listing 1 uses the Wireless Extensions tool to perform device configuration. Note: The exact location of the PCMCIA configuration file depends on the Linux distribution used.
Listing 1. PCMCIA device entry for Intersil WLAN CF card
Card "Intersil Prism2 11 Mbps Wireless Adapter"
Manfid 0x0156, 0x0002
Bind "ORINOCO_CS"
Device "ORINOCO_CS"
Class "Wireless" Module "ORINOCO", "ORINOCO_CS", "Hermes"
Use / etc / pcmcia/wireless.Opts script to configure parameters such as WEP keywords and SSID.
Listing 2. Configuring WLAN-specific parameters
Iwconfig Ethx ESSID
Key Aaaa-aaaa-aa [1] key bbb-bbbb-bb [2] Key CCCC-CCCC-CC [3] Key DDDD-DDDD-DD [4]
: SET 64-BIT WEP Keys and Essid in The Driver
Iwconfig Ethx: Display Wlase Parameters
IWPRIV: GET NONGENERIC, Driver-Specific Parameters
IWList: List information and statistics from an interface
IWSPY: Read Quality of Link for A Set of Addresses
/ Proc / Net / Wireless: Wireless Statistics from the Device Driver
When inserted into the card, the ORINOCO_CS is like a traditional network device driver, calls Register_netDev to get the ETHX network interface name assigned to the WLAN interface. It also registers an interrupt generated by an interrupt service routine to serve the service to send and receive wireless data. The interrupt handler is part of the ORINOCO module and interacts with Linux network stacks. The main data structure using the Linux network stack is a SK_BUFF structure (defined in include / Linux / Skbuff.h, see Resources, which includes control information about a memory block attached to it). SK_Buffs provides valid buffer processing and stream control mechanisms for all network layers. The network device driver executes a dev_alloc_skb and a SKB_PUT to populate one SK_BUF with IP data, then transfer this SK_BUF to the TCP / IP stack by calling Netif_Rx. The ORINOCO interrupt service routine populates SK_Buffs from the data received from the WLAN and transmits it to the IP stack via Netif_Rx. The Linux TCP / IP application can run on the network interface provided by the INTERSIL WLAN CF card in the previously ticked.
Linux BluetoothBluetooth is a short-range wireless technology for replacing cables, supporting 723 kbps (asymmetry) and 432 Kbps (symmetry) speed, which can transmit data and voice. The BLUETOOTH device has a range of 10 meters (30 feet). (For the Bluetooth specification, please refer to the reference.)
Bluez is the official Linux Bluetooth stack, Host Control Interface, HCI, Bluetooth Protocol core, logical link control, and adapt protocol (L2CAP), SCO audio layer, other Bluetooth service , User space background process and configuration tools are composed (see Resources).
The Bluetooth specification supports the UART (universal asynchronous receiver / transmitter) and USB transport mechanism for Bluetooth HCI data packets. The Bluez Stack supports these two transport mechanisms (drivers / bluetooth /). Bluez Bnep (Bluetooth Network Packaging Agreement) implements Ethernet simulation on Bluetooth, which allows TCP / IP to run directly on Bluetooth. BNEP Module (NET / Bluetooth / Bnep /) and user mode PAND background process implements Bluetooth Personal Area Network (PAN). BNEP uses REGISTER_NETDEV to register himself as an Ethernet device to the Linux network layer, and use the Netif_Rx described above to describe the WLAN driver to populate SK_BUFFS and send it to the protocol stack. Bluez RFComm (Net / Bluetooth / RFC ») provides serial emulation on Bluetooth, which makes serial port applications (such as minicom) and protocols (such as Point-to-Point Protocol (PPP)) does not change on Bluetooth. The RFCOMM module and user mode Dund background process implements Bluetooth dial-up networks. The following list gives the BLUEZ modules, utilities, background processes, and profiles necessary to configure various protocol services on Bluetooth. Next, consider the Bluetooth CF card, Bluetooth USB adapter, an example of a built-in CSR Bluetooth chipset and an example of Sony Bluetooth headset, understand how they work in Linux.
Sharp Bluetooth CF card Sharp Bluetooth CF card uses a UART transmitter to transfer HCI data packets. In addition to serial_cs is outside the card service driver with Linux PCMCIA core interactive, Linux PCMCIA / CF layer interactions with other operating systems of the Sharp card is similar to interaction explained to the INTERSIL WLAN CF card. The serial_cs driver (will further explain further interpretation in the "Linux GPRS and Data" section on the "GSM below) to simulate the serial port on the SHARP CF card. The Bluez HCI_UART link driver interacts with the Bluetooth UART channel and connects the simulated serial port to the Bluez Stack.
The following list gives the modules that must be loaded when the card is inserted. Other Bluetooth CF cards, such as Pretec CompactBT cards, and socket Bluetooth cards, with UART interfaces, but have their own card service drivers (DRIVERS / Bluetooth / DTL1_CS.C and DRIVERS / Bluetooth / btuart_cs.c). Before this article, you will find more information about the Bluetooth UART Transmitter.
/ etc / pcmcia / config entries for Sharp Bluetooth CF cards:
Card "Sharp Bluetooth Card" Version "Sharp", "Bluetooth Card" bind "serial_cs"
The necessary kernel modules to be loaded:
Insmod Serial_CS Insmod Bluez Insmod L2Cap Insmod HCI_uart Insmod Bnep (for Pand) Insmod RFCMM (For Dund)
Bluez user space daemon process, utility and configuration file:
Hciattach TTYSX ANY [BAUD_RATE] [FLOW] HCICONFIG -A: Check the HCI interface. Hcitool -a Hci0 Scan 'Flush: Discover other devices. Hcidump: HCI sniffer. HCID: HCI background process. /etc/bluetooth/hcid.conf: HCI background process configuration file used by HCID, which specifies link mode (main or from), link policy, inquiry, and scan mode, and so on. / etc / bluetooth / Pindb: Bluez Pin database. Hcidump: Service Discovery Protocol Background Process. PAND: Run TCP / IP on Bluetooth (- Listen for server, - connect
LINUX USB subsystem (see Resources) Similar to the PCMCIA subsystem, they have host controller device drivers interact with mobile devices, and they all contain cores that provide services to the host controller and a single device device driver. Floor. The USB Host Controller follows one of two standards: UHCI (Universal Host Controller Interface) or OHCI (Open Host Controller Interface). Due to the PCMCIA, the Linux device driver for a single USB device does not depend on the host controller. Data transmitted via USB device is divided into four types (or pipelines):
Control Interrupt Bulk Isochronous
The first two are commonly used for small messages and then two are used for larger messages.
When the USB device is inserted, the host controller uses the control pipe to enumerate it and assign it to it device address (1 to 127). The device descriptor read by the host controller device driver includes information about the device, such as Class, Subclass, and Protocol. Linux's USBCORE kernel module supports USB host controllers and USB devices. And contain functions and data structures that the USB device driver can use. The USB driver uses USBCORE and its own class / subclass / protocol information (see Struct USB_Driver in INCLUDE / Linux / USB.H) to register two entry points: ProBe and Disconnect. When the corresponding USB device is attached, USBCORE matches the Class information read from the device configuration descriptor during enumeration, and binds the device with the corresponding driver. This core uses a data structure called USB Request Block or URB (defined in Include / Linux / USB.H) to manage data transfer between host and devices. The device driver uses these routines to request various types of data transmission (Control, Interrupt, Bulk, or Isochronous). After the transfer request is complete, the core will notify the driver using the previously registered callback function. For Bluetooth USB devices, the HCI command uses Control Piping, and the HCI event uses the Interrupt pipe, and the Asynchronous (ACL) data uses Bulk pipeline, while Synchronous (SCO) audio data uses Isochronous pipelines. The Bluetooth specification defines the class / subclass / protocol code 0xE / SubClass / Protocol code 0xE / 0x01 / 0x01 for the Bluetooth USB device. Bluez USB Transport Driver (Drivers / Bluetooth / HCI_USB.C) registers the Class / SubClass / Protocol information to the Linux USB core. When the Belkin USB adapter is inserted, the host controller device driver enumerates it. This driver can be attached to the Belkin USB device from the HCI_USB driver to the USB core from the adapter during the enumeration period. The HCI, ACL, and SCO data read from the HCI_USB drivers from the individual endpoints described above are transparent to the Bluez protocol stack. Once these, the Linux TCP / IP application can run on the Bluez BNEP by using the Bluez services and tools described above, while serial applications can run on the Bluez RFCMM.
Masterboard with built-in CSR Bluetooth chipset now, pay attention to the Bluetooth network data stream on the equipment with built-in Bluetooth chipset. Consider a handheld device with a built-in CSR Bluetooth chipset with a system using a UART interface. For the UART interface, the available protocols transmitting HCI data packets between Bluetooth devices and systems include BlueCore Serial Protocol (BCSP), H4 / UART, and H3 / RS232. The H4 acts as a standard method for transmitting Bluetooth data through the UART. UART is a proprietary BCSP protocol from the CSR defined in the specification to support error checksum retransmission. BCSP includes PCMCIA and CF cards on non-USB devices based on CSR BlueCore chips. Bluez supports BCSP and H4.
The traditional serial driver used by this motherboard UART channel can send and receive data from the Bluez UART transport driver. If you are designed to encapsulate HCI data packets using the BSCP protocol, you must use Hciattach (Hciattach TTYSX BCSP) to notify the Bluez link driver where x is the UART channel number connected to the CSR chipset. Now HCI_UART interacts with the CSR chip and transmits Bluetooth data to the Bluez Stack. Sony HBH-30 Bluetooth headset The Bluetooth device example shows the network data stream. Now consider the transfer of Bluetooth audio (SCO) data by viewing Sony Ericsson Bluetooth headset. Before the headset can start with Linux devices, it must be detected by the Bluetooth link layer on the Linux device. Therefore, you must put your headphones in the discovery mode (by pressing a button on the headset). In addition, you need to configure the PIN of the headset through the Bluez on the Linux device. Applications using Bluez SCO API on Linux Bluetooth devices can now send audio data to headphones. The audio data should be a format that the headset can understand (for example, the A-Law PCM [Pulse Code Moduction] format of the SONY headset). Some public domain utilities can convert audio (or even text files) into a variety of PCM formats.
The Bluetooth chip sets with the PCM interface PIN other than the HCI transmission interface. For example, if the device supports GSM and Bluetooth, the PCM line of the GSM chipset can be directly connected to the PCM audio line of the Bluetooth chip. You may have to configure the Bluetooth chipset on the Linux device to send the SCO audio data packet through the HCI transmission interface rather than the PCM interface.
The Linux GPRS and data GPRS on GSM is a data packet service for transmitting data through GSM, is a superior digital cellular standard. Although the data on the GSM is the line exchange and regardless of the use of a channel, the data on the GPRS is a traffic (packet-switched) data stream, and the user pays according to the use. The transmission speed of GSM is generally 9.6 kbps, while GPRS can run with 56 kbps to 170 kbps.
GPRS and GSM chips typically have a UART interface to the system. For the motherboards supported by the built-in GSM / GPRS (eg, a motherboard with a SIEMEN MC-45 module connected to the UART channel), the traditional serial driver can drive this link. Consider the formation factor of PCMCIA / CF (eg, an optional GPRS card), serial_cs (is a common card service driver for accessing the PCMCIA serial device) can allow other operating systems to treat this card as a serial device. The first unused serial device (/ dev / TTYSX) is assigned to this card, then this card can be accessed as a serial device. Serial_Cs can also be serially portable through the Global Positioning System (GPS) PCMCIA and CF cards. For a USB GPRS modem, the USB-To-Serial Converter typically converts to a virtual serial port, so other parts of the system will view it as a serial device.
The GPRS network is connected to an external network (such as an Internet) using the GGSN (GPRS gateway support node). The GPRS device is similar to a modem with an extended AT command set, which must be used to define a context using the AT command before entering the data mode. The context string looks similar to the example given in Listing 3. Listing 3. Concentration string
'At cgdcont = 1, "ip", "Internet.voiceestream.com", "0.0.0.0", 0, 0'
In this example, 1 represents the context number, IP is a data packet type, Internet.voiceStream.com is an Access Name (APN) string, 0.0.0.0 means that the service provider selects IP addresses, other parameters and data and headers Compression is related. The APN string depends on the service provider. User names and passwords are generally not required.
PPP allows a network protocol (such as TCP / IP) to run on the serial link. In the context of the wireless network, PPP can make TCP / IP on GPRS, and data is transmitted via GSM, Bluetooth RFCMM, and IRDA CommM. Listing 4 gives a public syntinct of the PPP background process PPPD.
Listing 4. Calling the public syntinct of the PPP background process PPPD
PPPD TTYSX CALL Connection-Script
In this example, TTYSX is a physical or virtual serial device (PPP runs on it), and Connection-Script is a file in the / etc / ppp / peers / directory, which is included in the PPPD and service providers. The AT command sequence used to establish a link. After establishing links and completes authentication, PPP will start the Network Control Protocol (NCP). IPCP (Internet Protocol Control Protocol, Internet Protocol Control Protocol) is an NCP for running IP. Once IPCP successfully passes the IP address, PPP begins to interact with TCP / IP stacks.
Listing 5 gives an example of a PPP link script for connecting to a GPRS service provider, and Listing 6 shows an example of a connection script for data connections to a GSM service provider.
Listing 5. PPPD link script example (/ etc / ppp / peer / gprs-script) for GPRS
115200
Connect "/ usr / sbin / chat -s -v" "" ip ",
"Internet2.voiceStream.com", "0.0.0.0", 0,0 ok at cgdata = "PPP", 1 "
CRTSCTS
NOIPDEFAULT
Modem
UsepeerDNS
DefaultRoute
Connect-Delay 5000
From the perspective of the operating system, the data on the GSM is similar to the data that is sent by the dial-up debug demodulator. The phone number of the Internet Service Provider (ISP) is dial-in using GSM, and a dial-up connection is created. Use the username and password to authenticate.
Once PPP establishes an IP connection with the service provider, the TCP application, such as a web browser, can be running on the GSM / GPRS device without changing.
The GSMLIB project provides utilities for sending voice and SMS (Short Messaging Service, SMS) via GSM (see Resources for more information on GSMLIB). It includes a utility that uses the phone book in the Subscriber Identity Module (SIM) card to send and receive SMS messages. Listing 6. PPPD connection script example (/ etc / ppp / peer / gsm-script) for transferring data over GSM
115200
Connect '/ usr / sbin / chat -s -v Abort "No Carrier" Abort "No Dialtone" Abort "Busy" "" AT OK
ATDT
CRTSCTS
NOIPDEFAULT
Modem
User "linux"
UsepeerDNS
DefaultRoute
Connect-Delay 5000
Linux Infrared DataInfrared Data (IRDA) is a specification with infrared wireless transmission data. Mainly used to connect a laptop or devices such as a video recorder or camera to a computer system.
IRDA speeds from Serial Infrared (SIR) 115 kbps to Very Fast Infrared (VFIR) 16 Mbps. Most IRDA chips in SIR mode are UART 16650 compatible (16650 is a public PC UART), so traditional Linux serial drivers can act as a link level driver. IRDA line specification implementation - IRTTY (DRIVERS / NET / IRDA / IRTTY.C), drives the serial driver drive SIR. The IRPORT driver (Drivers / Net / IRDA / IRPORT.C) replaces the IRTTY and Serial drivers and provides better device control. IRDA chip is not compatible with serial drives has its own device driver. For example, the NSC PC87108 chipset uses its own driver (NSC-IRCC.c). Similar to the HCI-USB driver discussed above, the IRDA-USB.C device driver supports USB IRDA FIR software dogs with the USB Bluetooth device.
IRLAP is a link access protocol layer responsible for IRDA devices discovery, retransmission, and stream control. The IRLMP link management and TinyTP remain above IRLAP. And they are IRCOMM and IRLAN layers. IRCOMM (implemented in Net / IRDA / IRCOMM / IRCOMM / IRCMM / IRCMM / IRCOMM / IRCOMM / IRCOMM / IRCOMM / IRCMM / IRCOMM / IRCMM / IRCMM / IRCOMM / IRCMM / IRC) provide the application running on a serial port (such as a terminal emulator). Irlan (implemented in NET / IRDA / IRLAN / IRLAN / IRLAN / IRLAN) provides virtual network interfaces that make TCP / IP running on the Irda stack. The IRLAN code uses register_netde to register the GTE device to the Linux network layer, send data to the Linux IP stack using Netif_RX (similar to the explanation of WLAN drivers and Bluetooth Bnep). IRCOMM is similar to Bluetooth RFcomm, while IRLAN is similar to Bluetooth Bnep.
Irobex is a simple protocol built on Tinytp that allows transmission of binary data. IROBEX extension defines the transmission of different data objects.
In order to apply an IRDA protocol on Linux, an IRDA utility (such as Irattach) must be installed, which is developed as part of the Linux Irda project. Performance issues Network performance depends on the characteristics of a particular carrier network. For example, the bandwidth of GPRS depends on the code mode used, and Bluetooth performance is affected by the network segment of the L2CAP layer. For communication between WLAN workstations and access points, frame confirmation will reduce bandwidth, and the number of other workstations using the same access point also brings the same impact.
The characteristics of the wireless network (such as low and fluctuated bandwidth and high delay) will distort TCP metrics and transmission policies. Although most of the loss in the wireless network comes from a signal recession, interference, and connection interrupts, TCP assumes that these losses are related to congestion, so it eliminate algorithms that reduce network traffic. There are a variety of items to adjust the behavior of TCP and web browsers to accommodate wireless networks.
Conclusion In this article, you browse the Linux device driver and network protocol layer for popular wireless technology including WLAN, Bluetooth, GPRS, GSM, and Irda. It also learns how different wireless devices work in Linux by tracking the corresponding code paths and discussion related user space tools.
Now, there is an understanding of the core support of various wireless technology, network technology, and bus technology on Linux. You can fix a variety of wireless devices with different formations, developing Linux required to enable non-supported devices. Nuclear code.
Reference
Read the Linux Wireless Extensions project page. Find more information about Linux-WLAN projects. Learn more about the Linux ORINOCO WLAN driver, go to "MPL / GPL Drivers for the Wavelan IEEE / ORINOCO AND OTHERS". Learn more about the Host AP driver of the Intersil WLAN card, read "Host AP Driver for Intersil Prism2 / 2.5 / 3". This web page contains a Linux device driver for the Spectrum-Based WLAN card (socket, Intel wireless / pro, and other). Linux driver based on ATMEL's USB WLAN device. Please read Linux PCMCIA Programmer's Guide. Alan Cox "NetWork Buffers" provides a good information about Linux network buffers (SK_Buffs). The Bluetooth Web site provides information about the Bluetooth specification. Do you like to work under Linux? The Linux wireless connection tutorial teaches you how to configure wireless network card under Linux (DeveloperWorks, 2003). The Linux Bluez Homepage provides the latest information on Bluez. Please read the "Programming Guide for Linux USB Device Drivers" (2000) of Detlef Fliegl. This article "Building Wireless Access Point on Linux" (DeveloperWorks, 2003) This article describes the content involved in building a wireless bridge with Linux, including software and hardware considerations. View Joshua Drake and Corwin Light Williams (Linux online! 2000). In the article "Open Source Wireless Tools Emerge" (2003), you know the rise of open source tools. GSMLIB's homepage provides a set of libraries and applications working on GSM. Please refer to Tips and Tricks (DeveloperWorks, 2002) This article learns how to manage mobile configuration files. For more information on using infrared communications on Linux, please find it on Linux IRDA. About the author Sreekrishnan Venkateswaran has a master's degree in computer science in Campl, India, India. He started working for IBM India since February 1996. His interest includes designing equipment drivers and network protocols. You can contact Sreekrishnan via s_krishna@in.ibm.com.