diff options
Diffstat (limited to 'drivers/staging/ks7010')
-rw-r--r-- | drivers/staging/ks7010/eap_packet.h | 34 | ||||
-rw-r--r-- | drivers/staging/ks7010/ks7010_sdio.c | 160 | ||||
-rw-r--r-- | drivers/staging/ks7010/ks_hostif.c | 158 | ||||
-rw-r--r-- | drivers/staging/ks7010/ks_hostif.h | 121 | ||||
-rw-r--r-- | drivers/staging/ks7010/ks_wlan.h | 8 | ||||
-rw-r--r-- | drivers/staging/ks7010/ks_wlan_ioctl.h | 6 | ||||
-rw-r--r-- | drivers/staging/ks7010/ks_wlan_net.c | 121 | ||||
-rw-r--r-- | drivers/staging/ks7010/michael_mic.c | 32 | ||||
-rw-r--r-- | drivers/staging/ks7010/michael_mic.h | 7 |
9 files changed, 305 insertions, 342 deletions
diff --git a/drivers/staging/ks7010/eap_packet.h b/drivers/staging/ks7010/eap_packet.h index 16a392abdaec..df7f760e4110 100644 --- a/drivers/staging/ks7010/eap_packet.h +++ b/drivers/staging/ks7010/eap_packet.h @@ -1,6 +1,8 @@ #ifndef EAP_PACKET_H #define EAP_PACKET_H +#include <linux/compiler.h> + #define WBIT(n) (1 << (n)) #ifndef ETH_ALEN @@ -19,14 +21,14 @@ struct ether_hdr { #define ETHER_PROTOCOL_TYPE_IP 0x0800 #define ETHER_PROTOCOL_TYPE_ARP 0x0806 /* followed by length octets of data */ -} __attribute__ ((packed)); +} __packed; struct ieee802_1x_hdr { unsigned char version; unsigned char type; unsigned short length; /* followed by length octets of data */ -} __attribute__ ((packed)); +} __packed; #define EAPOL_VERSION 2 @@ -51,25 +53,33 @@ enum { EAPOL_KEY_TYPE_RC4 = 1, EAPOL_KEY_TYPE_RSN = 2, struct ieee802_1x_eapol_key { unsigned char type; unsigned short key_length; - /* does not repeat within the life of the keying material used to - * encrypt the Key field; 64-bit NTP timestamp MAY be used here */ + /* + * does not repeat within the life of the keying material used to + * encrypt the Key field; 64-bit NTP timestamp MAY be used here + */ unsigned char replay_counter[IEEE8021X_REPLAY_COUNTER_LEN]; unsigned char key_iv[IEEE8021X_KEY_IV_LEN]; /* cryptographically random number */ - unsigned char key_index; /* key flag in the most significant bit: + unsigned char key_index; /* + * key flag in the most significant bit: * 0 = broadcast (default key), * 1 = unicast (key mapping key); key index is in the - * 7 least significant bits */ - /* HMAC-MD5 message integrity check computed with MS-MPPE-Send-Key as - * the key */ + * 7 least significant bits + */ + /* + * HMAC-MD5 message integrity check computed with MS-MPPE-Send-Key as + * the key + */ unsigned char key_signature[IEEE8021X_KEY_SIGN_LEN]; - /* followed by key: if packet body length = 44 + key length, then the + /* + * followed by key: if packet body length = 44 + key length, then the * key field (of key_length bytes) contains the key in encrypted form; * if packet body length = 44, key field is absent and key_length * represents the number of least significant octets from * MS-MPPE-Send-Key attribute to be used as the keying material; - * RC4 key used in encryption = Key-IV + MS-MPPE-Recv-Key */ -} __attribute__ ((packed)); + * RC4 key used in encryption = Key-IV + MS-MPPE-Recv-Key + */ +} __packed; #define WPA_NONCE_LEN 32 #define WPA_REPLAY_COUNTER_LEN 8 @@ -86,7 +96,7 @@ struct wpa_eapol_key { unsigned char key_mic[16]; unsigned short key_data_length; /* followed by key_data_length bytes of key_data */ -} __attribute__ ((packed)); +} __packed; #define WPA_KEY_INFO_TYPE_MASK (WBIT(0) | WBIT(1) | WBIT(2)) #define WPA_KEY_INFO_TYPE_HMAC_MD5_RC4 WBIT(0) diff --git a/drivers/staging/ks7010/ks7010_sdio.c b/drivers/staging/ks7010/ks7010_sdio.c index b7337fd813d5..81c46f4d0935 100644 --- a/drivers/staging/ks7010/ks7010_sdio.c +++ b/drivers/staging/ks7010/ks7010_sdio.c @@ -14,7 +14,7 @@ #include <linux/mmc/card.h> #include <linux/mmc/sdio_func.h> #include <linux/workqueue.h> -#include <asm/atomic.h> +#include <linux/atomic.h> #include "ks_wlan.h" #include "ks_wlan_ioctl.h" @@ -35,18 +35,18 @@ MODULE_DEVICE_TABLE(sdio, ks7010_sdio_ids); /* macro */ #define inc_txqhead(priv) \ - ( priv->tx_dev.qhead = (priv->tx_dev.qhead + 1) % TX_DEVICE_BUFF_SIZE ) + (priv->tx_dev.qhead = (priv->tx_dev.qhead + 1) % TX_DEVICE_BUFF_SIZE) #define inc_txqtail(priv) \ - ( priv->tx_dev.qtail = (priv->tx_dev.qtail + 1) % TX_DEVICE_BUFF_SIZE ) + (priv->tx_dev.qtail = (priv->tx_dev.qtail + 1) % TX_DEVICE_BUFF_SIZE) #define cnt_txqbody(priv) \ - (((priv->tx_dev.qtail + TX_DEVICE_BUFF_SIZE) - (priv->tx_dev.qhead)) % TX_DEVICE_BUFF_SIZE ) + (((priv->tx_dev.qtail + TX_DEVICE_BUFF_SIZE) - (priv->tx_dev.qhead)) % TX_DEVICE_BUFF_SIZE) #define inc_rxqhead(priv) \ - ( priv->rx_dev.qhead = (priv->rx_dev.qhead + 1) % RX_DEVICE_BUFF_SIZE ) + (priv->rx_dev.qhead = (priv->rx_dev.qhead + 1) % RX_DEVICE_BUFF_SIZE) #define inc_rxqtail(priv) \ - ( priv->rx_dev.qtail = (priv->rx_dev.qtail + 1) % RX_DEVICE_BUFF_SIZE ) + (priv->rx_dev.qtail = (priv->rx_dev.qtail + 1) % RX_DEVICE_BUFF_SIZE) #define cnt_rxqbody(priv) \ - (((priv->rx_dev.qtail + RX_DEVICE_BUFF_SIZE) - (priv->rx_dev.qhead)) % RX_DEVICE_BUFF_SIZE ) + (((priv->rx_dev.qtail + RX_DEVICE_BUFF_SIZE) - (priv->rx_dev.qhead)) % RX_DEVICE_BUFF_SIZE) static int ks7010_sdio_read(struct ks_wlan_private *priv, unsigned int address, unsigned char *buffer, int length) @@ -87,7 +87,7 @@ static int ks7010_sdio_write(struct ks_wlan_private *priv, unsigned int address, return rc; } -void ks_wlan_hw_sleep_doze_request(struct ks_wlan_private *priv) +static void ks_wlan_hw_sleep_doze_request(struct ks_wlan_private *priv) { unsigned char rw_data; int retval; @@ -115,10 +115,9 @@ void ks_wlan_hw_sleep_doze_request(struct ks_wlan_private *priv) out: priv->sleep_mode = atomic_read(&priv->sleepstatus.status); - return; } -void ks_wlan_hw_sleep_wakeup_request(struct ks_wlan_private *priv) +static void ks_wlan_hw_sleep_wakeup_request(struct ks_wlan_private *priv) { unsigned char rw_data; int retval; @@ -146,7 +145,6 @@ void ks_wlan_hw_sleep_wakeup_request(struct ks_wlan_private *priv) out: priv->sleep_mode = atomic_read(&priv->sleepstatus.status); - return; } void ks_wlan_hw_wakeup_request(struct ks_wlan_private *priv) @@ -159,9 +157,9 @@ void ks_wlan_hw_wakeup_request(struct ks_wlan_private *priv) rw_data = WAKEUP_REQ; retval = ks7010_sdio_write(priv, WAKEUP, &rw_data, sizeof(rw_data)); - if (retval) { + if (retval) DPRINTK(1, " error : WAKEUP=%02X\n", rw_data); - } + DPRINTK(4, "wake up : WAKEUP=%02X\n", rw_data); priv->last_wakeup = jiffies; ++priv->wakeup_count; @@ -171,19 +169,16 @@ void ks_wlan_hw_wakeup_request(struct ks_wlan_private *priv) } } -int _ks_wlan_hw_power_save(struct ks_wlan_private *priv) +static int _ks_wlan_hw_power_save(struct ks_wlan_private *priv) { - int rc = 0; unsigned char rw_data; int retval; if (priv->reg.powermgt == POWMGT_ACTIVE_MODE) - return rc; + return 0; if (priv->reg.operation_mode == MODE_INFRASTRUCTURE && (priv->connect_status & CONNECT_STATUS_MASK) == CONNECT_STATUS) { - - //DPRINTK(1,"psstatus.status=%d\n",atomic_read(&priv->psstatus.status)); if (priv->dev_state == DEVICE_STATE_SLEEP) { switch (atomic_read(&priv->psstatus.status)) { case PS_SNOOZE: /* 4 */ @@ -246,10 +241,9 @@ int _ks_wlan_hw_power_save(struct ks_wlan_private *priv) break; } } - } - return rc; + return 0; } int ks_wlan_hw_power_save(struct ks_wlan_private *priv) @@ -268,7 +262,7 @@ static int enqueue_txdev(struct ks_wlan_private *priv, unsigned char *p, if (priv->dev_state < DEVICE_STATE_BOOT) { kfree(p); - if (complete_handler != NULL) + if (complete_handler) (*complete_handler) (arg1, arg2); return 1; } @@ -277,7 +271,7 @@ static int enqueue_txdev(struct ks_wlan_private *priv, unsigned char *p, /* in case of buffer overflow */ DPRINTK(1, "tx buffer overflow\n"); kfree(p); - if (complete_handler != NULL) + if (complete_handler) (*complete_handler) (arg1, arg2); return 1; } @@ -297,11 +291,10 @@ static int enqueue_txdev(struct ks_wlan_private *priv, unsigned char *p, static int write_to_device(struct ks_wlan_private *priv, unsigned char *buffer, unsigned long size) { - int rc, retval; + int retval; unsigned char rw_data; struct hostif_hdr *hdr; hdr = (struct hostif_hdr *)buffer; - rc = 0; DPRINTK(4, "size=%d\n", hdr->size); if (hdr->event < HIF_DATA_REQ || HIF_REQ_MAX < hdr->event) { @@ -346,10 +339,9 @@ static void tx_device_task(void *dev) &priv->ks_wlan_hw.rw_wq, 1); return; } - } kfree(sp->sendp); /* allocated memory free */ - if (sp->complete_handler != NULL) /* TX Complete */ + if (sp->complete_handler) /* TX Complete */ (*sp->complete_handler) (sp->arg1, sp->arg2); inc_txqhead(priv); @@ -358,7 +350,6 @@ static void tx_device_task(void *dev) &priv->ks_wlan_hw.rw_wq, 0); } } - return; } int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, unsigned long size, @@ -402,12 +393,9 @@ static void rx_event_task(unsigned long dev) hostif_receive(priv, rp->data, rp->size); inc_rxqhead(priv); - if (cnt_rxqbody(priv) > 0) { + if (cnt_rxqbody(priv) > 0) tasklet_schedule(&priv->ks_wlan_hw.rx_bh_task); - } } - - return; } static void ks_wlan_hw_rx(void *dev, uint16_t size) @@ -432,9 +420,8 @@ static void ks_wlan_hw_rx(void *dev, uint16_t size) retval = ks7010_sdio_read(priv, DATA_WINDOW, &rx_buffer->data[0], hif_align_size(size)); - if (retval) { + if (retval) goto error_out; - } /* length check */ if (size > 2046 || size == 0) { @@ -449,9 +436,9 @@ static void ks_wlan_hw_rx(void *dev, uint16_t size) retval = ks7010_sdio_write(priv, READ_STATUS, &read_status, sizeof(read_status)); - if (retval) { + if (retval) DPRINTK(1, " error : READ_STATUS=%02X\n", read_status); - } + goto error_out; } @@ -465,9 +452,9 @@ static void ks_wlan_hw_rx(void *dev, uint16_t size) retval = ks7010_sdio_write(priv, READ_STATUS, &read_status, sizeof(read_status)); - if (retval) { + if (retval) DPRINTK(1, " error : READ_STATUS=%02X\n", read_status); - } + DPRINTK(4, "READ_STATUS=%02X\n", read_status); if (atomic_read(&priv->psstatus.confirm_wait)) { @@ -498,7 +485,7 @@ static void ks7010_rw_function(struct work_struct *work) /* wiat after DOZE */ if (time_after(priv->last_doze + ((30 * HZ) / 1000), jiffies)) { - DPRINTK(4, "wait after DOZE \n"); + DPRINTK(4, "wait after DOZE\n"); queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, &priv->ks_wlan_hw.rw_wq, 1); return; @@ -506,11 +493,13 @@ static void ks7010_rw_function(struct work_struct *work) /* wiat after WAKEUP */ while (time_after(priv->last_wakeup + ((30 * HZ) / 1000), jiffies)) { - DPRINTK(4, "wait after WAKEUP \n"); + DPRINTK(4, "wait after WAKEUP\n"); /* queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq,&priv->ks_wlan_hw.rw_wq, (priv->last_wakeup + ((30*HZ)/1000) - jiffies));*/ - printk("wake: %lu %lu\n", priv->last_wakeup + (30 * HZ) / 1000, - jiffies); + dev_info(&priv->ks_wlan_hw.sdio_card->func->dev, + "wake: %lu %lu\n", + priv->last_wakeup + (30 * HZ) / 1000, + jiffies); msleep(30); } @@ -549,17 +538,15 @@ static void ks7010_rw_function(struct work_struct *work) if (rw_data & RSIZE_MASK) { /* Read schedule */ ks_wlan_hw_rx((void *)priv, - (uint16_t) (((rw_data & RSIZE_MASK) << 4))); + (uint16_t)((rw_data & RSIZE_MASK) << 4)); } - if ((rw_data & WSTATUS_MASK)) { + if ((rw_data & WSTATUS_MASK)) tx_device_task((void *)priv); - } + _ks_wlan_hw_power_save(priv); err_out: sdio_release_host(priv->ks_wlan_hw.sdio_card->func); - - return; } static void ks_sdio_interrupt(struct sdio_func *func) @@ -607,7 +594,6 @@ static void ks_sdio_interrupt(struct sdio_func *func) } complete(&priv->psstatus.wakeup_wait); } - } do { @@ -624,7 +610,7 @@ static void ks_sdio_interrupt(struct sdio_func *func) rsize = rw_data & RSIZE_MASK; if (rsize) { /* Read schedule */ ks_wlan_hw_rx((void *)priv, - (uint16_t) (((rsize) << 4))); + (uint16_t)(rsize << 4)); } if (rw_data & WSTATUS_MASK) { #if 0 @@ -667,7 +653,6 @@ static void ks_sdio_interrupt(struct sdio_func *func) intr_out: queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, &priv->ks_wlan_hw.rw_wq, 0); - return; } static int trx_device_init(struct ks_wlan_private *priv) @@ -696,14 +681,12 @@ static void trx_device_exit(struct ks_wlan_private *priv) while (cnt_txqbody(priv) > 0) { sp = &priv->tx_dev.tx_dev_buff[priv->tx_dev.qhead]; kfree(sp->sendp); /* allocated memory free */ - if (sp->complete_handler != NULL) /* TX Complete */ + if (sp->complete_handler) /* TX Complete */ (*sp->complete_handler) (sp->arg1, sp->arg2); inc_txqhead(priv); } tasklet_kill(&priv->ks_wlan_hw.rx_bh_task); - - return; } static int ks7010_sdio_update_index(struct ks_wlan_private *priv, u32 index) @@ -711,7 +694,6 @@ static int ks7010_sdio_update_index(struct ks_wlan_private *priv, u32 index) int rc = 0; int retval; unsigned char *data_buf; - data_buf = NULL; data_buf = kmalloc(sizeof(u32), GFP_KERNEL); if (!data_buf) { @@ -732,8 +714,7 @@ static int ks7010_sdio_update_index(struct ks_wlan_private *priv, u32 index) goto error_out; } error_out: - if (data_buf) - kfree(data_buf); + kfree(data_buf); return rc; } @@ -744,7 +725,7 @@ static int ks7010_sdio_data_compare(struct ks_wlan_private *priv, u32 address, int rc = 0; int retval; unsigned char *read_buf; - read_buf = NULL; + read_buf = kmalloc(ROM_BUFF_SIZE, GFP_KERNEL); if (!read_buf) { rc = 1; @@ -758,13 +739,12 @@ static int ks7010_sdio_data_compare(struct ks_wlan_private *priv, u32 address, retval = memcmp(data, read_buf, size); if (retval) { - DPRINTK(0, "data compare error (%d) \n", retval); + DPRINTK(0, "data compare error (%d)\n", retval); rc = 3; goto error_out; } error_out: - if (read_buf) - kfree(read_buf); + kfree(read_buf); return rc; } @@ -778,14 +758,10 @@ static int ks7010_upload_firmware(struct ks_wlan_private *priv, int length; const struct firmware *fw_entry = NULL; - rom_buf = NULL; - /* buffer allocate */ rom_buf = kmalloc(ROM_BUFF_SIZE, GFP_KERNEL); - if (!rom_buf) { - rc = 3; - goto error_out0; - } + if (!rom_buf) + return 3; sdio_claim_host(card->func); @@ -799,7 +775,7 @@ static int ks7010_upload_firmware(struct ks_wlan_private *priv, retval = request_firmware(&fw_entry, ROM_FILE, &priv->ks_wlan_hw.sdio_card->func->dev); if (retval) - return retval; + goto error_out0; length = fw_entry->size; @@ -879,8 +855,7 @@ static int ks7010_upload_firmware(struct ks_wlan_private *priv, release_firmware(fw_entry); error_out0: sdio_release_host(card->func); - if (rom_buf) - kfree(rom_buf); + kfree(rom_buf); return rc; } @@ -903,9 +878,9 @@ static void ks7010_card_init(struct ks_wlan_private *priv) DPRINTK(1, "wait time out!! SME_START\n"); } - if (priv->mac_address_valid && priv->version_size) { + if (priv->mac_address_valid && priv->version_size) priv->dev_state = DEVICE_STATE_PREINIT; - } + hostif_sme_enqueue(priv, SME_GET_EEPROM_CKSUM); @@ -981,7 +956,7 @@ static int ks7010_sdio_probe(struct sdio_func *func, netdev = NULL; /* initilize ks_sdio_card */ - card = kzalloc(sizeof(struct ks_sdio_card), GFP_KERNEL); + card = kzalloc(sizeof(*card), GFP_KERNEL); if (!card) return -ENOMEM; @@ -1029,12 +1004,13 @@ static int ks7010_sdio_probe(struct sdio_func *func, /* private memory allocate */ netdev = alloc_etherdev(sizeof(*priv)); - if (netdev == NULL) { - printk(KERN_ERR "ks7010 : Unable to alloc new net device\n"); + if (!netdev) { + dev_err(&card->func->dev, "ks7010 : Unable to alloc new net device\n"); goto error_release_irq; } if (dev_alloc_name(netdev, "wlan%d") < 0) { - printk(KERN_ERR "ks7010 : Couldn't get name!\n"); + dev_err(&card->func->dev, + "ks7010 : Couldn't get name!\n"); goto error_free_netdev; } @@ -1048,9 +1024,9 @@ static int ks7010_sdio_probe(struct sdio_func *func, init_completion(&priv->ks_wlan_hw.ks7010_sdio_wait); priv->ks_wlan_hw.read_buf = NULL; priv->ks_wlan_hw.read_buf = kmalloc(RX_DATA_SIZE, GFP_KERNEL); - if (!priv->ks_wlan_hw.read_buf) { + if (!priv->ks_wlan_hw.read_buf) goto error_free_netdev; - } + priv->dev_state = DEVICE_STATE_PREBOOT; priv->net_dev = netdev; priv->firmware_version[0] = '\0'; @@ -1074,9 +1050,9 @@ static int ks7010_sdio_probe(struct sdio_func *func, /* Upload firmware */ ret = ks7010_upload_firmware(priv, card); /* firmware load */ if (ret) { - printk(KERN_ERR - "ks7010: firmware load failed !! retern code = %d\n", - ret); + dev_err(&card->func->dev, + "ks7010: firmware load failed !! return code = %d\n", + ret); goto error_free_read_buf; } @@ -1086,9 +1062,9 @@ static int ks7010_sdio_probe(struct sdio_func *func, sdio_claim_host(func); ret = ks7010_sdio_write(priv, INT_PENDING, &rw_data, sizeof(rw_data)); sdio_release_host(func); - if (ret) { + if (ret) DPRINTK(1, " error : INT_PENDING=%02X\n", rw_data); - } + DPRINTK(4, " clear Interrupt : INT_PENDING=%02X\n", rw_data); /* enable ks7010sdio interrupt (INT_GCR_B|INT_READ_STATUS|INT_WRITE_STATUS) */ @@ -1096,9 +1072,9 @@ static int ks7010_sdio_probe(struct sdio_func *func, sdio_claim_host(func); ret = ks7010_sdio_write(priv, INT_ENABLE, &rw_data, sizeof(rw_data)); sdio_release_host(func); - if (ret) { + if (ret) DPRINTK(1, " error : INT_ENABLE=%02X\n", rw_data); - } + DPRINTK(4, " enable Interrupt : INT_ENABLE=%02X\n", rw_data); priv->dev_state = DEVICE_STATE_BOOT; @@ -1141,18 +1117,18 @@ static void ks7010_sdio_remove(struct sdio_func *func) int ret; struct ks_sdio_card *card; struct ks_wlan_private *priv; - struct net_device *netdev; DPRINTK(1, "ks7010_sdio_remove()\n"); card = sdio_get_drvdata(func); - if (card == NULL) + if (!card) return; DPRINTK(1, "priv = card->priv\n"); priv = card->priv; - netdev = priv->net_dev; if (priv) { + struct net_device *netdev = priv->net_dev; + ks_wlan_net_stop(netdev); DPRINTK(1, "ks_wlan_net_stop\n"); @@ -1166,9 +1142,8 @@ static void ks7010_sdio_remove(struct sdio_func *func) /* send stop request to MAC */ { struct hostif_stop_request_t *pp; - pp = (struct hostif_stop_request_t *) - kzalloc(hif_align_size(sizeof(*pp)), GFP_KERNEL); - if (pp == NULL) { + pp = kzalloc(hif_align_size(sizeof(*pp)), GFP_KERNEL); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; /* to do goto ni suru */ } @@ -1176,7 +1151,7 @@ static void ks7010_sdio_remove(struct sdio_func *func) cpu_to_le16((uint16_t) (sizeof(*pp) - sizeof(pp->header.size))); - pp->header.event = cpu_to_le16((uint16_t) HIF_STOP_REQ); + pp->header.event = cpu_to_le16((uint16_t)HIF_STOP_REQ); sdio_claim_host(func); write_to_device(priv, (unsigned char *)pp, @@ -1199,9 +1174,7 @@ static void ks7010_sdio_remove(struct sdio_func *func) unregister_netdev(netdev); trx_device_exit(priv); - if (priv->ks_wlan_hw.read_buf) { - kfree(priv->ks_wlan_hw.read_buf); - } + kfree(priv->ks_wlan_hw.read_buf); free_netdev(priv->net_dev); card->priv = NULL; } @@ -1219,7 +1192,6 @@ static void ks7010_sdio_remove(struct sdio_func *func) DPRINTK(1, "kfree()\n"); DPRINTK(5, " Bye !!\n"); - return; } static struct sdio_driver ks7010_sdio_driver = { diff --git a/drivers/staging/ks7010/ks_hostif.c b/drivers/staging/ks7010/ks_hostif.c index a8822fe2bd60..c57ca581550a 100644 --- a/drivers/staging/ks7010/ks_hostif.c +++ b/drivers/staging/ks7010/ks_hostif.c @@ -14,21 +14,13 @@ #include "eap_packet.h" #include "michael_mic.h" +#include <linux/etherdevice.h> #include <linux/if_ether.h> #include <linux/if_arp.h> /* Include Wireless Extension definition and check version */ #include <net/iw_handler.h> /* New driver API */ -extern int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, - unsigned long size, - void (*complete_handler) (void *arg1, void *arg2), - void *arg1, void *arg2); -extern void send_packet_complete(void *, void *); - -extern void ks_wlan_hw_wakeup_request(struct ks_wlan_private *priv); -extern int ks_wlan_hw_power_save(struct ks_wlan_private *priv); - /* macro */ #define inc_smeqhead(priv) \ ( priv->sme_i.qhead = (priv->sme_i.qhead + 1) % SME_EVENT_BUFF_SIZE ) @@ -43,6 +35,7 @@ static inline u8 get_BYTE(struct ks_wlan_private *priv) { u8 data; + data = *(priv->rxp)++; /* length check in advance ! */ --(priv->rx_size); @@ -53,6 +46,7 @@ static inline u16 get_WORD(struct ks_wlan_private *priv) { u16 data; + data = (get_BYTE(priv) & 0xff); data |= ((get_BYTE(priv) << 8) & 0xff00); return data; @@ -62,6 +56,7 @@ static inline u32 get_DWORD(struct ks_wlan_private *priv) { u32 data; + data = (get_BYTE(priv) & 0xff); data |= ((get_BYTE(priv) << 8) & 0x0000ff00); data |= ((get_BYTE(priv) << 16) & 0x00ff0000); @@ -69,16 +64,20 @@ inline u32 get_DWORD(struct ks_wlan_private *priv) return data; } -void ks_wlan_hw_wakeup_task(struct work_struct *work) +static void ks_wlan_hw_wakeup_task(struct work_struct *work) { struct ks_wlan_private *priv = container_of(work, struct ks_wlan_private, ks_wlan_wakeup_task); int ps_status = atomic_read(&priv->psstatus.status); + long time_left; if (ps_status == PS_SNOOZE) { ks_wlan_hw_wakeup_request(priv); - if (!wait_for_completion_interruptible_timeout(&priv->psstatus.wakeup_wait, HZ / 50)) { /* 20ms timeout */ - DPRINTK(1, "wake up timeout !!!\n"); + time_left = wait_for_completion_interruptible_timeout( + &priv->psstatus.wakeup_wait, + msecs_to_jiffies(20)); + if (time_left <= 0) { + DPRINTK(1, "wake up timeout or interrupted !!!\n"); schedule_work(&priv->ks_wlan_wakeup_task); return; } @@ -96,8 +95,6 @@ void ks_wlan_hw_wakeup_task(struct work_struct *work) static int ks_wlan_do_power_save(struct ks_wlan_private *priv) { - int rc = 0; - DPRINTK(4, "psstatus.status=%d\n", atomic_read(&priv->psstatus.status)); if ((priv->connect_status & CONNECT_STATUS_MASK) == CONNECT_STATUS) { @@ -105,7 +102,7 @@ int ks_wlan_do_power_save(struct ks_wlan_private *priv) } else { priv->dev_state = DEVICE_STATE_READY; } - return rc; + return 0; } static @@ -217,7 +214,6 @@ int get_ap_information(struct ks_wlan_private *priv, struct ap_info_t *ap_info, { unsigned char *bp; int bsize, offset; - int rc = 0; DPRINTK(3, "\n"); memset(ap, 0, sizeof(struct local_ap_t)); @@ -240,13 +236,13 @@ int get_ap_information(struct ks_wlan_private *priv, struct ap_info_t *ap_info, offset = 0; while (bsize > offset) { - /* DPRINTK(4, "Element ID=%d \n",*bp); */ + /* DPRINTK(4, "Element ID=%d\n",*bp); */ switch (*bp) { case 0: /* ssid */ if (*(bp + 1) <= SSID_MAX_SIZE) { ap->ssid.size = *(bp + 1); } else { - DPRINTK(1, "size over :: ssid size=%d \n", + DPRINTK(1, "size over :: ssid size=%d\n", *(bp + 1)); ap->ssid.size = SSID_MAX_SIZE; } @@ -260,7 +256,7 @@ int get_ap_information(struct ks_wlan_private *priv, struct ap_info_t *ap_info, bp + 2, *(bp + 1)); ap->rate_set.size += *(bp + 1); } else { - DPRINTK(1, "size over :: rate size=%d \n", + DPRINTK(1, "size over :: rate size=%d\n", (*(bp + 1) + ap->rate_set.size)); memcpy(&(ap->rate_set.body[ap->rate_set.size]), bp + 2, @@ -276,7 +272,7 @@ int get_ap_information(struct ks_wlan_private *priv, struct ap_info_t *ap_info, if (*(bp + 1) <= RSN_IE_BODY_MAX) { ap->rsn_ie.size = *(bp + 1); } else { - DPRINTK(1, "size over :: rsn size=%d \n", + DPRINTK(1, "size over :: rsn size=%d\n", *(bp + 1)); ap->rsn_ie.size = RSN_IE_BODY_MAX; } @@ -289,7 +285,7 @@ int get_ap_information(struct ks_wlan_private *priv, struct ap_info_t *ap_info, ap->wpa_ie.size = *(bp + 1); } else { DPRINTK(1, - "size over :: wpa size=%d \n", + "size over :: wpa size=%d\n", *(bp + 1)); ap->wpa_ie.size = RSN_IE_BODY_MAX; } @@ -307,7 +303,7 @@ int get_ap_information(struct ks_wlan_private *priv, struct ap_info_t *ap_info, case 47: /* Reserve ID 47 Broadcom AP */ break; default: - DPRINTK(4, "unknown Element ID=%d \n", *bp); + DPRINTK(4, "unknown Element ID=%d\n", *bp); break; } offset += 2; /* id & size field */ @@ -315,7 +311,7 @@ int get_ap_information(struct ks_wlan_private *priv, struct ap_info_t *ap_info, bp += (*(bp + 1) + 2); /* pointer update */ } - return rc; + return 0; } static @@ -404,7 +400,7 @@ void hostif_data_indication(struct ks_wlan_private *priv) HZ >= 60) { mic_failure->failure = 0; } - DPRINTK(4, "MIC FAILURE \n"); + DPRINTK(4, "MIC FAILURE\n"); if (mic_failure->failure == 0) { mic_failure->failure = 1; mic_failure->counter = 0; @@ -481,8 +477,7 @@ void hostif_data_indication(struct ks_wlan_private *priv) netif_rx(skb); } else { printk(KERN_WARNING - "%s: Memory squeeze, dropping packet.\n", - skb->dev->name); + "ks_wlan: Memory squeeze, dropping packet.\n"); priv->nstats.rx_dropped++; } break; @@ -517,8 +512,7 @@ void hostif_data_indication(struct ks_wlan_private *priv) netif_rx(skb); } else { printk(KERN_WARNING - "%s: Memory squeeze, dropping packet.\n", - skb->dev->name); + "ks_wlan: Memory squeeze, dropping packet.\n"); priv->nstats.rx_dropped++; } break; @@ -778,7 +772,7 @@ void hostif_start_confirm(struct ks_wlan_private *priv) wrqu.data.flags = 0; wrqu.ap_addr.sa_family = ARPHRD_ETHER; if ((priv->connect_status & CONNECT_STATUS_MASK) == CONNECT_STATUS) { - memset(wrqu.ap_addr.sa_data, '\0', ETH_ALEN); + eth_zero_addr(wrqu.ap_addr.sa_data); DPRINTK(3, "IWEVENT: disconnect\n"); wireless_send_event(priv->net_dev, SIOCGIWAP, &wrqu, NULL); } @@ -836,7 +830,7 @@ void hostif_connect_indication(struct ks_wlan_private *priv) wrqu0.ap_addr.sa_family = ARPHRD_ETHER; if ((priv->connect_status & CONNECT_STATUS_MASK) == DISCONNECT_STATUS && (old_status & CONNECT_STATUS_MASK) == CONNECT_STATUS) { - memset(wrqu0.ap_addr.sa_data, '\0', ETH_ALEN); + eth_zero_addr(wrqu0.ap_addr.sa_data); DPRINTK(3, "IWEVENT: disconnect\n"); DPRINTK(3, "disconnect :: scan_ind_count=%d\n", priv->scan_ind_count); @@ -908,7 +902,7 @@ void hostif_stop_confirm(struct ks_wlan_private *priv) if ((priv->connect_status & CONNECT_STATUS_MASK) == DISCONNECT_STATUS && (old_status & CONNECT_STATUS_MASK) == CONNECT_STATUS) { - memset(wrqu0.ap_addr.sa_data, '\0', ETH_ALEN); + eth_zero_addr(wrqu0.ap_addr.sa_data); DPRINTK(3, "IWEVENT: disconnect\n"); printk("IWEVENT: disconnect\n"); DPRINTK(3, "disconnect :: scan_ind_count=%d\n", @@ -1148,7 +1142,7 @@ int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *packet) packet_len = packet->len; if (packet_len > ETH_FRAME_LEN) { - DPRINTK(1, "bad length packet_len=%d \n", packet_len); + DPRINTK(1, "bad length packet_len=%d\n", packet_len); dev_kfree_skb(packet); return -1; } @@ -1172,11 +1166,10 @@ int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *packet) } DPRINTK(4, "skb_buff length=%d\n", packet_len); - pp = (struct hostif_data_request_t *) - kmalloc(hif_align_size(sizeof(*pp) + 6 + packet_len + 8), - KS_WLAN_MEM_FLAG); + pp = kmalloc(hif_align_size(sizeof(*pp) + 6 + packet_len + 8), + KS_WLAN_MEM_FLAG); - if (pp == NULL) { + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); dev_kfree_skb(packet); return -2; @@ -1194,6 +1187,8 @@ int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *packet) DPRINTK(1, "ethernet->h_source=%02X:%02X:%02X:%02X:%02X:%02X\n", eth->h_source[0], eth->h_source[1], eth->h_source[2], eth->h_source[3], eth->h_source[4], eth->h_source[5]); + dev_kfree_skb(packet); + kfree(pp); return -3; } @@ -1231,7 +1226,7 @@ int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *packet) eth_hdr = (struct ether_hdr *)&pp->data[0]; eth_proto = ntohs(eth_hdr->h_proto); - /* for MIC FAILUER REPORT check */ + /* for MIC FAILURE REPORT check */ if (eth_proto == ETHER_PROTOCOL_TYPE_EAP && priv->wpa.mic_failure.failure > 0) { aa1x_hdr = (struct ieee802_1x_hdr *)(eth_hdr + 1); @@ -1284,7 +1279,7 @@ int hostif_data_request(struct ks_wlan_private *priv, struct sk_buff *packet) (void *)send_packet_complete, (void *)priv, (void *)packet); - /* MIC FAILUER REPORT check */ + /* MIC FAILURE REPORT check */ if (eth_proto == ETHER_PROTOCOL_TYPE_EAP && priv->wpa.mic_failure.failure > 0) { if (keyinfo & WPA_KEY_INFO_ERROR @@ -1313,9 +1308,8 @@ void hostif_mib_get_request(struct ks_wlan_private *priv, DPRINTK(3, "\n"); /* make primitive */ - pp = (struct hostif_mib_get_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1344,9 +1338,8 @@ void hostif_mib_set_request(struct ks_wlan_private *priv, } /* make primitive */ - pp = (struct hostif_mib_set_request_t *) - kmalloc(hif_align_size(sizeof(*pp) + size), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp) + size), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1374,9 +1367,8 @@ void hostif_start_request(struct ks_wlan_private *priv, unsigned char mode) DPRINTK(3, "\n"); /* make primitive */ - pp = (struct hostif_start_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1402,9 +1394,8 @@ void hostif_ps_adhoc_set_request(struct ks_wlan_private *priv) DPRINTK(3, "\n"); /* make primitive */ - pp = (struct hostif_ps_adhoc_set_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1443,12 +1434,11 @@ void hostif_infrastructure_set_request(struct ks_wlan_private *priv) struct hostif_infrastructure_set_request_t *pp; uint16_t capability; - DPRINTK(3, "ssid.size=%d \n", priv->reg.ssid.size); + DPRINTK(3, "ssid.size=%d\n", priv->reg.ssid.size); /* make primitive */ - pp = (struct hostif_infrastructure_set_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1505,17 +1495,16 @@ void hostif_infrastructure_set_request(struct ks_wlan_private *priv) ks_wlan_hw_tx(priv, pp, hif_align_size(sizeof(*pp)), NULL, NULL, NULL); } -void hostif_infrastructure_set2_request(struct ks_wlan_private *priv) +static void hostif_infrastructure_set2_request(struct ks_wlan_private *priv) { struct hostif_infrastructure_set2_request_t *pp; uint16_t capability; - DPRINTK(2, "ssid.size=%d \n", priv->reg.ssid.size); + DPRINTK(2, "ssid.size=%d\n", priv->reg.ssid.size); /* make primitive */ - pp = (struct hostif_infrastructure_set2_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1583,9 +1572,8 @@ void hostif_adhoc_set_request(struct ks_wlan_private *priv) DPRINTK(3, "\n"); /* make primitive */ - pp = (struct hostif_adhoc_set_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1629,9 +1617,8 @@ void hostif_adhoc_set2_request(struct ks_wlan_private *priv) DPRINTK(3, "\n"); /* make primitive */ - pp = (struct hostif_adhoc_set2_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1677,9 +1664,8 @@ void hostif_stop_request(struct ks_wlan_private *priv) DPRINTK(3, "\n"); /* make primitive */ - pp = (struct hostif_stop_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1700,9 +1686,8 @@ void hostif_phy_information_request(struct ks_wlan_private *priv) DPRINTK(3, "\n"); /* make primitive */ - pp = (struct hostif_phy_information_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1732,9 +1717,8 @@ void hostif_power_mngmt_request(struct ks_wlan_private *priv, DPRINTK(3, "mode=%lu wake_up=%lu receiveDTIMs=%lu\n", mode, wake_up, receiveDTIMs); /* make primitive */ - pp = (struct hostif_power_mngmt_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1755,13 +1739,12 @@ void hostif_sleep_request(struct ks_wlan_private *priv, unsigned long mode) { struct hostif_sleep_request_t *pp; - DPRINTK(3, "mode=%lu \n", mode); + DPRINTK(3, "mode=%lu\n", mode); if (mode == SLP_SLEEP) { /* make primitive */ - pp = (struct hostif_sleep_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1779,23 +1762,22 @@ void hostif_sleep_request(struct ks_wlan_private *priv, unsigned long mode) queue_delayed_work(priv->ks_wlan_hw.ks7010sdio_wq, &priv->ks_wlan_hw.rw_wq, 1); } else { - DPRINTK(3, "invalid mode %ld \n", mode); + DPRINTK(3, "invalid mode %ld\n", mode); return; } } static void hostif_bss_scan_request(struct ks_wlan_private *priv, - unsigned long scan_type, uint8_t * scan_ssid, + unsigned long scan_type, uint8_t *scan_ssid, uint8_t scan_ssid_len) { struct hostif_bss_scan_request_t *pp; DPRINTK(2, "\n"); /* make primitive */ - pp = (struct hostif_bss_scan_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1850,9 +1832,8 @@ void hostif_mic_failure_request(struct ks_wlan_private *priv, DPRINTK(3, "count=%d :: timer=%d\n", failure_count, timer); /* make primitive */ - pp = (struct hostif_mic_failure_request_t *) - kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); - if (pp == NULL) { + pp = kmalloc(hif_align_size(sizeof(*pp)), KS_WLAN_MEM_FLAG); + if (!pp) { DPRINTK(3, "allocate memory failed..\n"); return; } @@ -1867,7 +1848,7 @@ void hostif_mic_failure_request(struct ks_wlan_private *priv, ks_wlan_hw_tx(priv, pp, hif_align_size(sizeof(*pp)), NULL, NULL, NULL); } -/* Device I/O Recieve indicate */ +/* Device I/O Receive indicate */ static void devio_rec_ind(struct ks_wlan_private *priv, unsigned char *p, unsigned int size) { @@ -2700,7 +2681,6 @@ void hostif_sme_enqueue(struct ks_wlan_private *priv, unsigned short event) int hostif_init(struct ks_wlan_private *priv) { - int rc = 0; int i; DPRINTK(3, "\n"); @@ -2750,7 +2730,7 @@ int hostif_init(struct ks_wlan_private *priv) tasklet_init(&priv->sme_task, hostif_sme_task, (unsigned long)priv); - return rc; + return 0; } void hostif_exit(struct ks_wlan_private *priv) diff --git a/drivers/staging/ks7010/ks_hostif.h b/drivers/staging/ks7010/ks_hostif.h index dc806b5b47be..743f31ead56e 100644 --- a/drivers/staging/ks7010/ks_hostif.h +++ b/drivers/staging/ks7010/ks_hostif.h @@ -11,6 +11,9 @@ #ifndef _KS_HOSTIF_H_ #define _KS_HOSTIF_H_ + +#include <linux/compiler.h> + /* * HOST-MAC I/F events */ @@ -61,7 +64,7 @@ struct hostif_hdr { uint16_t size; uint16_t event; -} __attribute__ ((packed)); +} __packed; struct hostif_data_request_t { struct hostif_hdr header; @@ -70,7 +73,7 @@ struct hostif_data_request_t { #define TYPE_AUTH 0x0001 uint16_t reserved; uint8_t data[0]; -} __attribute__ ((packed)); +} __packed; struct hostif_data_indication_t { struct hostif_hdr header; @@ -81,14 +84,14 @@ struct hostif_data_indication_t { #define TYPE_GMK2 0x0003 uint16_t reserved; uint8_t data[0]; -} __attribute__ ((packed)); +} __packed; #define CHANNEL_LIST_MAX_SIZE 14 struct channel_list_t { uint8_t size; uint8_t body[CHANNEL_LIST_MAX_SIZE]; uint8_t pad; -} __attribute__ ((packed)); +} __packed; /* MIB Attribute */ #define DOT11_MAC_ADDRESS 0x21010100 /* MAC Address (R) */ @@ -141,7 +144,7 @@ struct channel_list_t { struct hostif_mib_get_request_t { struct hostif_hdr header; uint32_t mib_attribute; -} __attribute__ ((packed)); +} __packed; struct hostif_mib_value_t { uint16_t size; @@ -152,7 +155,7 @@ struct hostif_mib_value_t { #define MIB_VALUE_TYPE_COUNT32 3 #define MIB_VALUE_TYPE_OSTRING 4 uint8_t body[0]; -} __attribute__ ((packed)); +} __packed; struct hostif_mib_get_confirm_t { struct hostif_hdr header; @@ -163,19 +166,19 @@ struct hostif_mib_get_confirm_t { #define MIB_WRITE_ONLY 3 uint32_t mib_attribute; struct hostif_mib_value_t mib_value; -} __attribute__ ((packed)); +} __packed; struct hostif_mib_set_request_t { struct hostif_hdr header; uint32_t mib_attribute; struct hostif_mib_value_t mib_value; -} __attribute__ ((packed)); +} __packed; struct hostif_mib_set_confirm_t { struct hostif_hdr header; uint32_t mib_status; uint32_t mib_attribute; -} __attribute__ ((packed)); +} __packed; struct hostif_power_mngmt_request_t { struct hostif_hdr header; @@ -188,7 +191,7 @@ struct hostif_power_mngmt_request_t { uint32_t receiveDTIMs; #define DTIM_FALSE 0 #define DTIM_TRUE 1 -} __attribute__ ((packed)); +} __packed; /* power management mode */ enum { @@ -206,7 +209,7 @@ enum { struct hostif_power_mngmt_confirm_t { struct hostif_hdr header; uint16_t result_code; -} __attribute__ ((packed)); +} __packed; struct hostif_start_request_t { struct hostif_hdr header; @@ -215,64 +218,64 @@ struct hostif_start_request_t { #define MODE_INFRASTRUCTURE 1 #define MODE_AP 2 /* not used */ #define MODE_ADHOC 3 -} __attribute__ ((packed)); +} __packed; struct hostif_start_confirm_t { struct hostif_hdr header; uint16_t result_code; -} __attribute__ ((packed)); +} __packed; #define SSID_MAX_SIZE 32 struct ssid_t { uint8_t size; uint8_t body[SSID_MAX_SIZE]; uint8_t ssid_pad; -} __attribute__ ((packed)); +} __packed; #define RATE_SET_MAX_SIZE 16 struct rate_set8_t { uint8_t size; uint8_t body[8]; uint8_t rate_pad; -} __attribute__ ((packed)); +} __packed; struct FhParms_t { uint16_t dwellTime; uint8_t hopSet; uint8_t hopPattern; uint8_t hopIndex; -} __attribute__ ((packed)); +} __packed; struct DsParms_t { uint8_t channel; -} __attribute__ ((packed)); +} __packed; struct CfParms_t { uint8_t count; uint8_t period; uint16_t maxDuration; uint16_t durRemaining; -} __attribute__ ((packed)); +} __packed; struct IbssParms_t { uint16_t atimWindow; -} __attribute__ ((packed)); +} __packed; struct rsn_t { uint8_t size; #define RSN_BODY_SIZE 64 uint8_t body[RSN_BODY_SIZE]; -} __attribute__ ((packed)); +} __packed; struct ErpParams_t { uint8_t erp_info; -} __attribute__ ((packed)); +} __packed; struct rate_set16_t { uint8_t size; uint8_t body[16]; uint8_t rate_pad; -} __attribute__ ((packed)); +} __packed; struct ap_info_t { uint8_t bssid[6]; /* +00 */ @@ -299,7 +302,7 @@ struct ap_info_t { uint16_t body_size; /* +16 */ uint8_t body[1024]; /* +18 */ /* +1032 */ -} __attribute__ ((packed)); +} __packed; struct link_ap_info_t { uint8_t bssid[6]; /* +00 */ @@ -325,8 +328,8 @@ struct link_ap_info_t { struct { uint8_t size; /* +52 */ uint8_t body[128]; /* +53 */ - } __attribute__ ((packed)) rsn; -} __attribute__ ((packed)); + } __packed rsn; +} __packed; struct hostif_connect_indication_t { struct hostif_hdr header; @@ -334,16 +337,16 @@ struct hostif_connect_indication_t { #define RESULT_CONNECT 0 #define RESULT_DISCONNECT 1 struct link_ap_info_t link_ap_info; -} __attribute__ ((packed)); +} __packed; struct hostif_stop_request_t { struct hostif_hdr header; -} __attribute__ ((packed)); +} __packed; struct hostif_stop_confirm_t { struct hostif_hdr header; uint16_t result_code; -} __attribute__ ((packed)); +} __packed; struct hostif_ps_adhoc_set_request_t { struct hostif_hdr header; @@ -360,12 +363,12 @@ struct hostif_ps_adhoc_set_request_t { uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0 * bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */ uint16_t scan_type; -} __attribute__ ((packed)); +} __packed; struct hostif_ps_adhoc_set_confirm_t { struct hostif_hdr header; uint16_t result_code; -} __attribute__ ((packed)); +} __packed; struct hostif_infrastructure_set_request_t { struct hostif_hdr header; @@ -381,7 +384,7 @@ struct hostif_infrastructure_set_request_t { #define AUTH_TYPE_SHARED_KEY 1 struct channel_list_t channel_list; uint16_t scan_type; -} __attribute__ ((packed)); +} __packed; struct hostif_infrastructure_set2_request_t { struct hostif_hdr header; @@ -398,12 +401,12 @@ struct hostif_infrastructure_set2_request_t { struct channel_list_t channel_list; uint16_t scan_type; uint8_t bssid[ETH_ALEN]; -} __attribute__ ((packed)); +} __packed; struct hostif_infrastructure_set_confirm_t { struct hostif_hdr header; uint16_t result_code; -} __attribute__ ((packed)); +} __packed; struct hostif_adhoc_set_request_t { struct hostif_hdr header; @@ -415,7 +418,7 @@ struct hostif_adhoc_set_request_t { uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0 * bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */ uint16_t scan_type; -} __attribute__ ((packed)); +} __packed; struct hostif_adhoc_set2_request_t { struct hostif_hdr header; @@ -429,17 +432,17 @@ struct hostif_adhoc_set2_request_t { uint16_t scan_type; struct channel_list_t channel_list; uint8_t bssid[ETH_ALEN]; -} __attribute__ ((packed)); +} __packed; struct hostif_adhoc_set_confirm_t { struct hostif_hdr header; uint16_t result_code; -} __attribute__ ((packed)); +} __packed; struct last_associate_t { uint8_t type; uint8_t status; -} __attribute__ ((packed)); +} __packed; struct association_request_t { uint8_t type; @@ -450,7 +453,7 @@ struct association_request_t { uint16_t listen_interval; uint8_t ap_address[6]; uint16_t reqIEs_size; -} __attribute__ ((packed)); +} __packed; struct association_response_t { uint8_t type; @@ -461,7 +464,7 @@ struct association_response_t { uint16_t status; uint16_t association_id; uint16_t respIEs_size; -} __attribute__ ((packed)); +} __packed; struct hostif_associate_indication_t { struct hostif_hdr header; @@ -469,7 +472,7 @@ struct hostif_associate_indication_t { struct association_response_t assoc_resp; /* followed by (reqIEs_size + respIEs_size) octets of data */ /* reqIEs data *//* respIEs data */ -} __attribute__ ((packed)); +} __packed; struct hostif_bss_scan_request_t { struct hostif_hdr header; @@ -481,13 +484,13 @@ struct hostif_bss_scan_request_t { uint32_t ch_time_max; struct channel_list_t channel_list; struct ssid_t ssid; -} __attribute__ ((packed)); +} __packed; struct hostif_bss_scan_confirm_t { struct hostif_hdr header; uint16_t result_code; uint16_t reserved; -} __attribute__ ((packed)); +} __packed; struct hostif_phy_information_request_t { struct hostif_hdr header; @@ -495,7 +498,7 @@ struct hostif_phy_information_request_t { #define NORMAL_TYPE 0 #define TIME_TYPE 1 uint16_t time; /* unit 100ms */ -} __attribute__ ((packed)); +} __packed; struct hostif_phy_information_confirm_t { struct hostif_hdr header; @@ -507,30 +510,30 @@ struct hostif_phy_information_confirm_t { uint32_t rx_frame; uint32_t tx_error; uint32_t rx_error; -} __attribute__ ((packed)); +} __packed; /* sleep mode */ #define SLP_ACTIVE 0 #define SLP_SLEEP 1 struct hostif_sleep_request_t { struct hostif_hdr header; -} __attribute__ ((packed)); +} __packed; struct hostif_sleep_confirm_t { struct hostif_hdr header; uint16_t result_code; -} __attribute__ ((packed)); +} __packed; struct hostif_mic_failure_request_t { struct hostif_hdr header; uint16_t failure_count; uint16_t timer; -} __attribute__ ((packed)); +} __packed; struct hostif_mic_failure_confirm_t { struct hostif_hdr header; uint16_t result_code; -} __attribute__ ((packed)); +} __packed; #define BASIC_RATE 0x80 #define RATE_MASK 0x7F @@ -616,13 +619,21 @@ enum { #include "ks_wlan.h" /* function prototype */ -extern int hostif_data_request(struct ks_wlan_private *priv, - struct sk_buff *packet); -extern void hostif_receive(struct ks_wlan_private *priv, unsigned char *p, - unsigned int size); -extern void hostif_sme_enqueue(struct ks_wlan_private *priv, uint16_t event); -extern int hostif_init(struct ks_wlan_private *priv); -extern void hostif_exit(struct ks_wlan_private *priv); +int hostif_data_request(struct ks_wlan_private *priv, + struct sk_buff *packet); +void hostif_receive(struct ks_wlan_private *priv, unsigned char *p, + unsigned int size); +void hostif_sme_enqueue(struct ks_wlan_private *priv, uint16_t event); +int hostif_init(struct ks_wlan_private *priv); +void hostif_exit(struct ks_wlan_private *priv); +int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, + unsigned long size, + void (*complete_handler) (void *arg1, void *arg2), + void *arg1, void *arg2); +void send_packet_complete(void *, void *); + +void ks_wlan_hw_wakeup_request(struct ks_wlan_private *priv); +int ks_wlan_hw_power_save(struct ks_wlan_private *priv); static inline int hif_align_size(int size) diff --git a/drivers/staging/ks7010/ks_wlan.h b/drivers/staging/ks7010/ks_wlan.h index f05dc0122fcb..c2cc288ae899 100644 --- a/drivers/staging/ks7010/ks_wlan.h +++ b/drivers/staging/ks7010/ks_wlan.h @@ -219,7 +219,7 @@ struct rsn_ie_t { uint8_t id; /* 0xdd = WPA or 0x30 = RSN */ uint8_t size; /* max ? 255 ? */ uint8_t body[RSN_IE_BODY_MAX]; -} __attribute__ ((packed)); +} __packed; #ifdef WPS #define WPS_IE_BODY_MAX 255 @@ -227,7 +227,7 @@ struct wps_ie_t { uint8_t id; /* 221 'dd <len> 00 50 F2 04' */ uint8_t size; /* max ? 255 ? */ uint8_t body[WPS_IE_BODY_MAX]; -} __attribute__ ((packed)); +} __packed; #endif /* WPS */ struct local_ap_t { @@ -499,7 +499,7 @@ struct ks_wlan_private { uint wakeup_count; /* for detect wakeup loop */ }; -extern int ks_wlan_net_start(struct net_device *dev); -extern int ks_wlan_net_stop(struct net_device *dev); +int ks_wlan_net_start(struct net_device *dev); +int ks_wlan_net_stop(struct net_device *dev); #endif /* _KS_WLAN_H */ diff --git a/drivers/staging/ks7010/ks_wlan_ioctl.h b/drivers/staging/ks7010/ks_wlan_ioctl.h index 49369e497808..84554b6bb239 100644 --- a/drivers/staging/ks7010/ks_wlan_ioctl.h +++ b/drivers/staging/ks7010/ks_wlan_ioctl.h @@ -58,9 +58,9 @@ #include "ks_wlan.h" #include <linux/netdevice.h> -extern int ks_wlan_read_config_file(struct ks_wlan_private *priv); -extern int ks_wlan_setup_parameter(struct ks_wlan_private *priv, - unsigned int commit_flag); +int ks_wlan_read_config_file(struct ks_wlan_private *priv); +int ks_wlan_setup_parameter(struct ks_wlan_private *priv, + unsigned int commit_flag); #endif /* __KERNEL__ */ diff --git a/drivers/staging/ks7010/ks_wlan_net.c b/drivers/staging/ks7010/ks_wlan_net.c index 1e21eb1c4667..b2b4fa4c3834 100644 --- a/drivers/staging/ks7010/ks_wlan_net.c +++ b/drivers/staging/ks7010/ks_wlan_net.c @@ -9,7 +9,6 @@ * published by the Free Software Foundation. */ -#include <linux/version.h> #include <linux/module.h> #include <linux/kernel.h> #include <linux/compiler.h> @@ -70,10 +69,6 @@ static const struct iw_handler_def ks_wlan_handler_def; /* * function prototypes */ -extern int ks_wlan_hw_tx(struct ks_wlan_private *priv, void *p, - unsigned long size, - void (*complete_handler) (void *arg1, void *arg2), - void *arg1, void *arg2); static int ks_wlan_open(struct net_device *dev); static void ks_wlan_tx_timeout(struct net_device *dev); static int ks_wlan_start_xmit(struct sk_buff *skb, struct net_device *dev); @@ -238,9 +233,9 @@ static int ks_wlan_set_freq(struct net_device *dev, /* We should do a better check than that, * based on the card capability !!! */ if ((channel < 1) || (channel > 14)) { - printk(KERN_DEBUG - "%s: New channel value of %d is invalid!\n", - dev->name, fwrq->m); + netdev_dbg(dev, + "%s: New channel value of %d is invalid!\n", + dev->name, fwrq->m); rc = -EINVAL; } else { /* Yes ! We can set it !!! */ @@ -402,7 +397,7 @@ static int ks_wlan_set_wap(struct net_device *dev, struct iw_request_info *info, priv->need_commit |= SME_MODE_SET; } } else { - memset(priv->reg.bssid, 0x0, ETH_ALEN); + eth_zero_addr(priv->reg.bssid); return -EOPNOTSUPP; } @@ -433,7 +428,7 @@ static int ks_wlan_get_wap(struct net_device *dev, struct iw_request_info *info, if ((priv->connect_status & CONNECT_STATUS_MASK) == CONNECT_STATUS) { memcpy(awrq->sa_data, &(priv->current_ap.bssid[0]), ETH_ALEN); } else { - memset(awrq->sa_data, 0, ETH_ALEN); + eth_zero_addr(awrq->sa_data); } awrq->sa_family = ARPHRD_ETHER; @@ -2092,7 +2087,7 @@ static int ks_wlan_set_pmksa(struct net_device *dev, list_for_each(ptr, &priv->pmklist.head) { pmk = list_entry(ptr, struct pmk_t, list); if (!memcmp(pmksa->bssid.sa_data, pmk->bssid, ETH_ALEN)) { /* match address! list del. */ - memset(pmk->bssid, 0, ETH_ALEN); + eth_zero_addr(pmk->bssid); memset(pmk->pmkid, 0, IW_PMKID_LEN); list_del_init(&pmk->list); break; @@ -2676,17 +2671,17 @@ static int ks_wlan_set_sleep_mode(struct net_device *dev, if (*uwrq == SLP_SLEEP) { priv->sleep_mode = *uwrq; - printk("SET_SLEEP_MODE %d\n", priv->sleep_mode); + netdev_info(dev, "SET_SLEEP_MODE %d\n", priv->sleep_mode); hostif_sme_enqueue(priv, SME_STOP_REQUEST); hostif_sme_enqueue(priv, SME_SLEEP_REQUEST); } else if (*uwrq == SLP_ACTIVE) { priv->sleep_mode = *uwrq; - printk("SET_SLEEP_MODE %d\n", priv->sleep_mode); + netdev_info(dev, "SET_SLEEP_MODE %d\n", priv->sleep_mode); hostif_sme_enqueue(priv, SME_SLEEP_REQUEST); } else { - printk("SET_SLEEP_MODE %d errror\n", *uwrq); + netdev_err(dev, "SET_SLEEP_MODE %d errror\n", *uwrq); return -EINVAL; } @@ -2788,7 +2783,7 @@ static int ks_wlan_get_wps_enable(struct net_device *dev, } /* for SLEEP MODE */ *uwrq = priv->wps.wps_enabled; - printk("return=%d\n", *uwrq); + netdev_info(dev, "return=%d\n", *uwrq); return 0; } @@ -2978,117 +2973,117 @@ static int ks_wlan_get_eeprom_cksum(struct net_device *dev, return 0; } -static void print_hif_event(int event) +static void print_hif_event(struct net_device *dev, int event) { switch (event) { case HIF_DATA_REQ: - printk("HIF_DATA_REQ\n"); + netdev_info(dev, "HIF_DATA_REQ\n"); break; case HIF_DATA_IND: - printk("HIF_DATA_IND\n"); + netdev_info(dev, "HIF_DATA_IND\n"); break; case HIF_MIB_GET_REQ: - printk("HIF_MIB_GET_REQ\n"); + netdev_info(dev, "HIF_MIB_GET_REQ\n"); break; case HIF_MIB_GET_CONF: - printk("HIF_MIB_GET_CONF\n"); + netdev_info(dev, "HIF_MIB_GET_CONF\n"); break; case HIF_MIB_SET_REQ: - printk("HIF_MIB_SET_REQ\n"); + netdev_info(dev, "HIF_MIB_SET_REQ\n"); break; case HIF_MIB_SET_CONF: - printk("HIF_MIB_SET_CONF\n"); + netdev_info(dev, "HIF_MIB_SET_CONF\n"); break; case HIF_POWERMGT_REQ: - printk("HIF_POWERMGT_REQ\n"); + netdev_info(dev, "HIF_POWERMGT_REQ\n"); break; case HIF_POWERMGT_CONF: - printk("HIF_POWERMGT_CONF\n"); + netdev_info(dev, "HIF_POWERMGT_CONF\n"); break; case HIF_START_REQ: - printk("HIF_START_REQ\n"); + netdev_info(dev, "HIF_START_REQ\n"); break; case HIF_START_CONF: - printk("HIF_START_CONF\n"); + netdev_info(dev, "HIF_START_CONF\n"); break; case HIF_CONNECT_IND: - printk("HIF_CONNECT_IND\n"); + netdev_info(dev, "HIF_CONNECT_IND\n"); break; case HIF_STOP_REQ: - printk("HIF_STOP_REQ\n"); + netdev_info(dev, "HIF_STOP_REQ\n"); break; case HIF_STOP_CONF: - printk("HIF_STOP_CONF\n"); + netdev_info(dev, "HIF_STOP_CONF\n"); break; case HIF_PS_ADH_SET_REQ: - printk("HIF_PS_ADH_SET_REQ\n"); + netdev_info(dev, "HIF_PS_ADH_SET_REQ\n"); break; case HIF_PS_ADH_SET_CONF: - printk("HIF_PS_ADH_SET_CONF\n"); + netdev_info(dev, "HIF_PS_ADH_SET_CONF\n"); break; case HIF_INFRA_SET_REQ: - printk("HIF_INFRA_SET_REQ\n"); + netdev_info(dev, "HIF_INFRA_SET_REQ\n"); break; case HIF_INFRA_SET_CONF: - printk("HIF_INFRA_SET_CONF\n"); + netdev_info(dev, "HIF_INFRA_SET_CONF\n"); break; case HIF_ADH_SET_REQ: - printk("HIF_ADH_SET_REQ\n"); + netdev_info(dev, "HIF_ADH_SET_REQ\n"); break; case HIF_ADH_SET_CONF: - printk("HIF_ADH_SET_CONF\n"); + netdev_info(dev, "HIF_ADH_SET_CONF\n"); break; case HIF_AP_SET_REQ: - printk("HIF_AP_SET_REQ\n"); + netdev_info(dev, "HIF_AP_SET_REQ\n"); break; case HIF_AP_SET_CONF: - printk("HIF_AP_SET_CONF\n"); + netdev_info(dev, "HIF_AP_SET_CONF\n"); break; case HIF_ASSOC_INFO_IND: - printk("HIF_ASSOC_INFO_IND\n"); + netdev_info(dev, "HIF_ASSOC_INFO_IND\n"); break; case HIF_MIC_FAILURE_REQ: - printk("HIF_MIC_FAILURE_REQ\n"); + netdev_info(dev, "HIF_MIC_FAILURE_REQ\n"); break; case HIF_MIC_FAILURE_CONF: - printk("HIF_MIC_FAILURE_CONF\n"); + netdev_info(dev, "HIF_MIC_FAILURE_CONF\n"); break; case HIF_SCAN_REQ: - printk("HIF_SCAN_REQ\n"); + netdev_info(dev, "HIF_SCAN_REQ\n"); break; case HIF_SCAN_CONF: - printk("HIF_SCAN_CONF\n"); + netdev_info(dev, "HIF_SCAN_CONF\n"); break; case HIF_PHY_INFO_REQ: - printk("HIF_PHY_INFO_REQ\n"); + netdev_info(dev, "HIF_PHY_INFO_REQ\n"); break; case HIF_PHY_INFO_CONF: - printk("HIF_PHY_INFO_CONF\n"); + netdev_info(dev, "HIF_PHY_INFO_CONF\n"); break; case HIF_SLEEP_REQ: - printk("HIF_SLEEP_REQ\n"); + netdev_info(dev, "HIF_SLEEP_REQ\n"); break; case HIF_SLEEP_CONF: - printk("HIF_SLEEP_CONF\n"); + netdev_info(dev, "HIF_SLEEP_CONF\n"); break; case HIF_PHY_INFO_IND: - printk("HIF_PHY_INFO_IND\n"); + netdev_info(dev, "HIF_PHY_INFO_IND\n"); break; case HIF_SCAN_IND: - printk("HIF_SCAN_IND\n"); + netdev_info(dev, "HIF_SCAN_IND\n"); break; case HIF_INFRA_SET2_REQ: - printk("HIF_INFRA_SET2_REQ\n"); + netdev_info(dev, "HIF_INFRA_SET2_REQ\n"); break; case HIF_INFRA_SET2_CONF: - printk("HIF_INFRA_SET2_CONF\n"); + netdev_info(dev, "HIF_INFRA_SET2_CONF\n"); break; case HIF_ADH_SET2_REQ: - printk("HIF_ADH_SET2_REQ\n"); + netdev_info(dev, "HIF_ADH_SET2_REQ\n"); break; case HIF_ADH_SET2_CONF: - printk("HIF_ADH_SET2_CONF\n"); + netdev_info(dev, "HIF_ADH_SET2_CONF\n"); } } @@ -3105,7 +3100,7 @@ static int ks_wlan_hostt(struct net_device *dev, struct iw_request_info *info, event = priv->hostt.buff[(priv->hostt.qtail - 1 - i) % SME_EVENT_BUFF_SIZE]; - print_hif_event(event); + print_hif_event(dev, event); } return 0; } @@ -3335,7 +3330,7 @@ int ks_wlan_set_mac_address(struct net_device *dev, void *addr) priv->mac_address_valid = 0; hostif_sme_enqueue(priv, SME_MACADDRESS_SET_REQUEST); - printk(KERN_INFO + netdev_info(dev, "ks_wlan: MAC ADDRESS = %02x:%02x:%02x:%02x:%02x:%02x\n", priv->eth_addr[0], priv->eth_addr[1], priv->eth_addr[2], priv->eth_addr[3], priv->eth_addr[4], priv->eth_addr[5]); @@ -3354,8 +3349,6 @@ void ks_wlan_tx_timeout(struct net_device *dev) } priv->nstats.tx_errors++; netif_wake_queue(dev); - - return; } static @@ -3366,8 +3359,8 @@ int ks_wlan_start_xmit(struct sk_buff *skb, struct net_device *dev) DPRINTK(3, "in_interrupt()=%ld\n", in_interrupt()); - if (skb == NULL) { - printk(KERN_ERR "ks_wlan: skb == NULL!!!\n"); + if (!skb) { + netdev_err(dev, "ks_wlan: skb == NULL!!!\n"); return 0; } if (priv->dev_state < DEVICE_STATE_READY) { @@ -3396,13 +3389,13 @@ void send_packet_complete(void *arg1, void *arg2) DPRINTK(3, "\n"); - priv->nstats.tx_bytes += packet->len; priv->nstats.tx_packets++; if (netif_queue_stopped(priv->net_dev)) netif_wake_queue(priv->net_dev); if (packet) { + priv->nstats.tx_bytes += packet->len; dev_kfree_skb(packet); packet = NULL; } @@ -3421,8 +3414,6 @@ void ks_wlan_set_multicast_list(struct net_device *dev) return; /* not finished initialize */ } hostif_sme_enqueue(priv, SME_MULTICAST_REQUEST); - - return; } static @@ -3433,7 +3424,7 @@ int ks_wlan_open(struct net_device *dev) priv->cur_rx = 0; if (!priv->mac_address_valid) { - printk(KERN_ERR "ks_wlan : %s Not READY !!\n", dev->name); + netdev_err(dev, "ks_wlan : %s Not READY !!\n", dev->name); return -EBUSY; } else netif_start_queue(dev); @@ -3512,17 +3503,11 @@ int ks_wlan_net_stop(struct net_device *dev) { struct ks_wlan_private *priv = netdev_priv(dev); - int ret = 0; priv->device_open_status = 0; del_timer_sync(&update_phyinfo_timer); if (netif_running(dev)) netif_stop_queue(dev); - return ret; -} - -int ks_wlan_reset(struct net_device *dev) -{ return 0; } diff --git a/drivers/staging/ks7010/michael_mic.c b/drivers/staging/ks7010/michael_mic.c index e14c109b3cab..78ae2b8fb7f3 100644 --- a/drivers/staging/ks7010/michael_mic.c +++ b/drivers/staging/ks7010/michael_mic.c @@ -20,18 +20,24 @@ #define getUInt32( A, B ) (uint32_t)(A[B+0] << 0) + (A[B+1] << 8) + (A[B+2] << 16) + (A[B+3] << 24) // Convert from UInt32 to Byte[] in a portable way -#define putUInt32( A, B, C ) A[B+0] = (uint8_t) (C & 0xff); \ - A[B+1] = (uint8_t) ((C>>8) & 0xff); \ - A[B+2] = (uint8_t) ((C>>16) & 0xff); \ - A[B+3] = (uint8_t) ((C>>24) & 0xff) +#define putUInt32(A, B, C) \ +do { \ + A[B + 0] = (uint8_t)(C & 0xff); \ + A[B + 1] = (uint8_t)((C >> 8) & 0xff); \ + A[B + 2] = (uint8_t)((C >> 16) & 0xff); \ + A[B + 3] = (uint8_t)((C >> 24) & 0xff); \ +} while (0) // Reset the state to the empty message. -#define MichaelClear( A ) A->L = A->K0; \ - A->R = A->K1; \ - A->nBytesInM = 0; +#define MichaelClear(A) \ +do { \ + A->L = A->K0; \ + A->R = A->K1; \ + A->nBytesInM = 0; \ +} while (0) static -void MichaelInitializeFunction(struct michel_mic_t *Mic, uint8_t * key) +void MichaelInitializeFunction(struct michel_mic_t *Mic, uint8_t *key) { // Set the key Mic->K0 = getUInt32(key, 0); @@ -54,7 +60,7 @@ do{ \ }while(0) static -void MichaelAppend(struct michel_mic_t *Mic, uint8_t * src, int nBytes) +void MichaelAppend(struct michel_mic_t *Mic, uint8_t *src, int nBytes) { int addlen; if (Mic->nBytesInM) { @@ -88,7 +94,7 @@ void MichaelAppend(struct michel_mic_t *Mic, uint8_t * src, int nBytes) } static -void MichaelGetMIC(struct michel_mic_t *Mic, uint8_t * dst) +void MichaelGetMIC(struct michel_mic_t *Mic, uint8_t *dst) { uint8_t *data = Mic->M; switch (Mic->nBytesInM) { @@ -116,9 +122,9 @@ void MichaelGetMIC(struct michel_mic_t *Mic, uint8_t * dst) MichaelClear(Mic); } -void MichaelMICFunction(struct michel_mic_t *Mic, uint8_t * Key, - uint8_t * Data, int Len, uint8_t priority, - uint8_t * Result) +void MichaelMICFunction(struct michel_mic_t *Mic, uint8_t *Key, + uint8_t *Data, int Len, uint8_t priority, + uint8_t *Result) { uint8_t pad_data[4] = { priority, 0, 0, 0 }; // Compute the MIC value diff --git a/drivers/staging/ks7010/michael_mic.h b/drivers/staging/ks7010/michael_mic.h index c7e4eb280961..efaa21788fc7 100644 --- a/drivers/staging/ks7010/michael_mic.h +++ b/drivers/staging/ks7010/michael_mic.h @@ -20,7 +20,6 @@ struct michel_mic_t { uint8_t Result[8]; }; -extern -void MichaelMICFunction(struct michel_mic_t *Mic, uint8_t * Key, - uint8_t * Data, int Len, uint8_t priority, - uint8_t * Result); +void MichaelMICFunction(struct michel_mic_t *Mic, uint8_t *Key, + uint8_t *Data, int Len, uint8_t priority, + uint8_t *Result); |