Skip to contentSkip to conversation

patch "staging: wilc1000: Fix problem with wrong vif index" added to staging-next

PATCH [email protected] 1 participant 1 message Apr 8, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

staging: wilc1000: Fix problem with wrong vif index

to my staging git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
in the staging-next branch.

The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)

The patch will also be merged in the next major kernel release during the merge window.

If you have any questions about this process, please let me know.

Quoted 1 line

From 0e490657c7214cce33fbca3d88227298c5c968ae Mon Sep 17 00:00:00 2001

From: Aditya Shankar <[email protected]>
Date: Fri, 7 Apr 2017 17:24:58 +0530
Subject: staging: wilc1000: Fix problem with wrong vif index

The vif->idx value is always 0 for two interfaces.

wl->vif_num = 0;

loop {
     ...

     vif->idx = wl->vif_num;
     ...
     wl->vif_num = i;
      ....
     i++;
     ...
}

At present, vif->idx is assigned the value of wl->vif_num
at the beginning of this block and device is initialized
based on this index value.
In the next iteration, wl->vif_num is still 0 as it is only updated later but gets assigned to vif->idx in the beginning. This causes problems later when we try to reference a particular interface and also while configuring the firmware.

This patch moves the assignment to vif->idx from the beginning of the block to after wl->vif_num is updated with latest value of i.

Fixes commit 735bb39ca3be ("staging: wilc1000: simplify vif[i]->ndev accesses")
---
 drivers/staging/wilc1000/linux_wlan.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/staging/wilc1000/linux_wlan.c +2 -1
index 2eebc6215cac..bdf11c9f44a8 100644
@@ -1251,11 +1251,12 @@ int wilc_netdev_init(struct wilc **wilc, struct device *dev, int io_type,
 		else
 			strcpy(ndev->name, "p2p%d");
 
-		vif->idx = wl->vif_num;
 		vif->wilc = *wilc;
 		vif->ndev = ndev;
 		wl->vif[i] = vif;
 		wl->vif_num = i;
+		vif->idx = wl->vif_num;
+
 		ndev->netdev_ops = &wilc_netdev_ops;
 
 		{
Signature · 1 line
2.12.2