📄 airo.c_kernel_2.6.14_patch
字号:
diff -urpN a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c--- a/drivers/net/wireless/airo.c 2005-10-27 20:02:08.000000000 -0400+++ b/drivers/net/wireless/airo.c 2005-11-02 10:32:25.000000000 -0500@@ -4059,7 +4059,7 @@ static int PC4500_writerid(struct airo_i Cmd cmd; Resp rsp; - if (test_bit(FLAG_ENABLED, &ai->flags))+ if (test_bit(FLAG_ENABLED, &ai->flags) && (RID_WEP_TEMP != rid)) printk(KERN_ERR "%s: MAC should be disabled (rid=%04x)\n", __FUNCTION__, rid);@@ -5119,9 +5119,9 @@ static int set_wep_key(struct airo_info printk(KERN_INFO "Setting key %d\n", index); } - disable_MAC(ai, lock);+ if (perm) disable_MAC(ai, lock); writeWepKeyRid(ai, &wkr, perm, lock);- enable_MAC(ai, &rsp, lock);+ if (perm) enable_MAC(ai, &rsp, lock); return 0; } @@ -6202,6 +6202,8 @@ static int airo_set_encode(struct net_de { struct airo_info *local = dev->priv; CapabilityRid cap_rid; /* Card capability info */+ int perm = ( dwrq->flags & IW_ENCODE_TEMP ? 0 : 1 );+ u16 currentAuthType = local->config.authType; /* Is WEP supported ? */ readCapabilityRid(local, &cap_rid, 1);@@ -6244,7 +6246,7 @@ static int airo_set_encode(struct net_de /* Copy the key in the driver */ memcpy(key.key, extra, dwrq->length); /* Send the key to the card */- set_wep_key(local, index, key.key, key.len, 1, 1);+ set_wep_key(local, index, key.key, key.len, perm, 1); } /* WE specify that if a valid key is set, encryption * should be enabled (user may turn it off later)@@ -6252,13 +6254,12 @@ static int airo_set_encode(struct net_de if((index == current_index) && (key.len > 0) && (local->config.authType == AUTH_OPEN)) { local->config.authType = AUTH_ENCRYPT;- set_bit (FLAG_COMMIT, &local->flags); } } else { /* Do we want to just set the transmit key index ? */ int index = (dwrq->flags & IW_ENCODE_INDEX) - 1; if ((index >= 0) && (index < ((cap_rid.softCap & 0x80)?4:1))) {- set_wep_key(local, index, NULL, 0, 1, 1);+ set_wep_key(local, index, NULL, 0, perm, 1); } else /* Don't complain if only change the mode */ if(!dwrq->flags & IW_ENCODE_MODE) {@@ -6273,7 +6274,7 @@ static int airo_set_encode(struct net_de if(dwrq->flags & IW_ENCODE_OPEN) local->config.authType = AUTH_ENCRYPT; // Only Wep /* Commit the changes to flags if needed */- if(dwrq->flags & IW_ENCODE_MODE)+ if (local->config.authType != currentAuthType) set_bit (FLAG_COMMIT, &local->flags); return -EINPROGRESS; /* Call commit handler */ }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -