Major PHY related changes in WiFi 6

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 (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 […]