As seen in the introduction for 802.11ax (here), the major change that was introduced in 802.11ax (WiFi 6) was the introduction of multi-user transmission in a single transmit frame and OFDMA. Some of the other major changes in PHY as related to the previous generation WiFi 5 are tabulated below 802.11ac (WiFi 6) 802.11ax (Wifi […]
Introduction to 802.11ax (WiFi 6/e)
The next evolution of the WLAN standard after 802.11ac is the 802.11ax standard. In the meantime WiFi Org has adopted a new nomenclature of naming different standards by a WIFI number. Hence, 802.11ac became WiFi 5 and 802.11ax is termed WiFi 6. WiFi 6 includes the 2.4 GHz and 5 GHz band operation. A new […]
Opportunistic Key Caching (OKC)
Some Vendors such as Cisco extend the PMKID key caching mechanism to pro-actively cache the keys in a WiFi BSS network. This mechanism is also termed as proactive or opportunistic PMKID caching. As a refresher, The PMKID Key caching as seen in the article <PMKID Key Caching> is to cache the Pairwise Master Key ID […]
PMKID Caching
PMKID stands for Pairwise Master Key Identifier. It is a unique identifier that is generated during PMK security association for a specific AP-Client. The PMKID computation is basically a truncate-128 operation on HMAC-SHA-1/HMAC-SHA-256/HMAC-SHA-384 hashing. The different ways of obtaining PMKID depends on the cipher suite selected for RSN. Refer section “12.7.1.3 Pairwise key hierarchy” in […]
sysfs APIs and sample sysfs implementation in the Linux Kernel
The below table provides a sub-list of sysfs APIs that can be used to provide data to user space from a kernel module. For a more comprehensive list – refer sysfs.h file in the specific Linux Kernel version that you are working with. Kernel API Description struct kobject *kobject_create_and_add(const char *name, struct kobject *parent) This […]
Tasklets in the Linux kernel
Tasklets are a means of achieving bottom-half processing in the Linux Kernel. What is bottom-half and the need for bottom half is explained in the article below. https://www.hitchhikersguidetolearning.com/2021/05/09/bottom-half-processing-in-the-linux-kernel/ Tasklets are the preferred mechanism to defer execution in Linux. Tasklets are implemented on top of softirqs – HI_SOFTIRQ and TASKLET_SOFTIRQ. The high priority tasklets (placed in […]
Bottom Half Processing in the Linux Kernel
What is “Bottom Half” ? This question can arise for any one who is new to the way Linux addresses a specific interrupt. In response to an interrupt, an interrupt handler might have to complete a number of tasks which might consume a significant amount of time but the interrupt line cannot be held high […]
Interrupt Service Routine -Keyboard Interrupt Example
The below code shows a keyboard interrupt program. The Keyboard interrupt line number on an x86 based system is “1“. The program attempts to obtain the key press from the user and act upon it. In the program – the key press and key release both trigger the interrupt line and the ISR – “keyboard_isr” […]
Interrupt Service Routine (ISR)
The Interrupt service routine handles an interrupt in the Linux Kernel. The interrupt service routine for the Interrupt is registered using the “request_irq” API. The IRQ can be released using the “free_irq” API. The “handler” function pointer parameter in the request_irq API is the handler of the interrupt, The “irq” parameter is the interrupt request […]
Looking at /proc/interrupts
The “/proc” file-system provides details of the interrupts generated in the system. The output of “/proc/interrupts” is provided below. The output of “/proc/interrupts” shows all the different interrupts that have handlers (Interrupt Service Routines – ISRs) registered for them. The first column indicates the IRQ number. Subsequent columns indicate how many interrupts have been generated […]