Index: uspace/drv/nic/ar9271/ar9271.c
===================================================================
--- uspace/drv/nic/ar9271/ar9271.c	(revision a931b7b2faca447e0708fd5fae0f85116e4c788d)
+++ uspace/drv/nic/ar9271/ar9271.c	(revision 09044cb23535bd9cffcad94397a217746432ba44)
@@ -463,12 +463,10 @@
 		}
 		
-		if(key_conf->flags & IEEE80211_KEY_FLAG_TYPE_PAIRWISE) {
-			reg_ptr = AR9271_KEY_TABLE_STA;
-			mic_reg_ptr = AR9271_KEY_TABLE_MIC_STA;
-		} else {
-			reg_ptr = AR9271_KEY_TABLE_GRP;
-			mic_reg_ptr = AR9271_KEY_TABLE_MIC_GRP;
-		}
-		
+		uint8_t key_id = 
+			(key_conf->flags & IEEE80211_KEY_FLAG_TYPE_PAIRWISE) ?
+				AR9271_STA_KEY_INDEX : key_conf->id;
+		
+		reg_ptr = AR9271_KEY_TABLE(key_id);
+		mic_reg_ptr = AR9271_KEY_TABLE(key_id + 64);
 		data_start = (void *) key_conf->data;
 		
@@ -558,5 +556,5 @@
 			ieee80211_setup_key_confirm(ieee80211_dev, true);
 	} else {
-		// TODO: Delete keys from device
+		/* TODO: Delete keys from device */
 		ieee80211_setup_key_confirm(ieee80211_dev, false);
 	}
@@ -591,9 +589,7 @@
 			(htc_tx_data_header_t *) 
 			(complete_buffer + sizeof(htc_frame_header_t));
-		/* TODO: Distinguish data type. */
 		data_header->data_type = HTC_DATA_NORMAL;
 		data_header->node_idx = 1;
 		data_header->vif_idx = 0;
-		/* TODO: There I should probably handle slot number. */
 		data_header->cookie = 0;
 		
@@ -639,5 +635,4 @@
 		mgmt_header->node_idx = 0;
 		mgmt_header->vif_idx = 0;
-		/* TODO: There I should probably handle slot number. */
 		mgmt_header->cookie = 0;
 		mgmt_header->keyix = 0xFF;
Index: uspace/drv/nic/ar9271/ar9271.h
===================================================================
--- uspace/drv/nic/ar9271/ar9271.h	(revision a931b7b2faca447e0708fd5fae0f85116e4c788d)
+++ uspace/drv/nic/ar9271/ar9271.h	(revision 09044cb23535bd9cffcad94397a217746432ba44)
@@ -136,8 +136,5 @@
 		
 	/* Key related registers */
-	AR9271_KEY_TABLE_GRP = 0x8820,
-	AR9271_KEY_TABLE_STA = 0x8880,
-	AR9271_KEY_TABLE_MIC_GRP = 0x9020,
-	AR9271_KEY_TABLE_MIC_STA = 0x9080,
+	AR9271_KEY_TABLE_BASE = 0x8800,
 	AR9271_KEY_TABLE_TYPE_WEP40 = 0x0,
 	AR9271_KEY_TABLE_TYPE_WEP104 = 0x1,
@@ -186,4 +183,7 @@
 	AR9271_FW_OFFSET = 0x903000,
 } ar9271_registers_t;
+
+/** Compute key table base position for key by its id. */
+#define AR9271_KEY_TABLE(id) (AR9271_KEY_TABLE_BASE + (id)*32)
 
 /** AR9271 Requests */
