Problem with crypto when initializing TKIP

From: Larry Finger
Date: Mon Apr 16 2012 - 01:29:22 EST


I am trying to fix the driver r8192e_pci from the staging tree. It works fine with WEP and CCMP encryption, but it fails when trying to initialize TKIP. This driver does not use mac80211, but incorporates its own softmac routines.

This problem is a regression between 3.2.0 and 3.3.0, but I was unable to get a reasonable result using bisection.

Routine rtllib_tkip_init() from drivers/staging/rtl8192e/rtllib_crypt_tkip.c does the same set of steps as is done in mac80211. Everything works with mac80211.

The block cipher allocation calls to crypto_alloc_blkcipher("ecb(arc4)",...) are OK. The crypto_alloc_hash("michael_mic",...) call is the part that fails. The problem shows up in the code fragment below from crypto/api.c:

ok = crypto_probing_notify(CRYPTO_MSG_ALG_REQUEST, larval);

if (ok == NOTIFY_STOP)
alg = crypto_larval_wait(larval);
else {
crypto_mod_put(larval);
alg = ERR_PTR(-ENOENT);
}

The value of ok is NOTIFY_OK, which leads to a return of -ENOENT and a failure of the initialization.

I know this code is pretty old, and perhaps nobody remembers it, but I would appreciate some pointers on debugging this issue.

Thanks,

Larry
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/