From e09b41010ba33a20a87472ee821fa407a5b8da36 Mon Sep 17 00:00:00 2001 From: José Pekkarinen Date: Mon, 11 Apr 2016 10:41:07 +0300 Subject: These changes are the raw update to linux-4.4.6-rt14. Kernel sources are taken from kernel.org, and rt patch from the rt wiki download page. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit During the rebasing, the following patch collided: Force tick interrupt and get rid of softirq magic(I70131fb85). Collisions have been removed because its logic was found on the source already. Change-Id: I7f57a4081d9deaa0d9ccfc41a6c8daccdee3b769 Signed-off-by: José Pekkarinen --- kernel/drivers/staging/wlan-ng/cfg80211.c | 17 +- kernel/drivers/staging/wlan-ng/hfa384x_usb.c | 2 +- kernel/drivers/staging/wlan-ng/p80211conv.c | 56 +- kernel/drivers/staging/wlan-ng/p80211conv.h | 7 +- kernel/drivers/staging/wlan-ng/p80211meta.h | 90 --- kernel/drivers/staging/wlan-ng/p80211wep.c | 14 - kernel/drivers/staging/wlan-ng/prism2fw.c | 21 +- kernel/drivers/staging/wlan-ng/prism2sta.c | 1050 +++++++++++++------------- kernel/drivers/staging/wlan-ng/prism2usb.c | 8 +- 9 files changed, 579 insertions(+), 686 deletions(-) delete mode 100644 kernel/drivers/staging/wlan-ng/p80211meta.h (limited to 'kernel/drivers/staging/wlan-ng') diff --git a/kernel/drivers/staging/wlan-ng/cfg80211.c b/kernel/drivers/staging/wlan-ng/cfg80211.c index 7c87aecf4..8c1e3f06a 100644 --- a/kernel/drivers/staging/wlan-ng/cfg80211.c +++ b/kernel/drivers/staging/wlan-ng/cfg80211.c @@ -2,7 +2,6 @@ #include "hfa384x.h" #include "prism2mgmt.h" - /* Prism2 channel/frequency/bitrate declarations */ static const struct ieee80211_channel prism2_channels[] = { { .center_freq = 2412 }, @@ -34,7 +33,6 @@ static const u32 prism2_cipher_suites[PRISM2_NUM_CIPHER_SUITES] = { WLAN_CIPHER_SUITE_WEP104 }; - /* prism2 device private data */ struct prism2_wiphy_private { wlandevice_t *wlandev; @@ -48,7 +46,6 @@ struct prism2_wiphy_private { static const void * const prism2_wiphy_privid = &prism2_wiphy_privid; - /* Helper Functions */ static int prism2_result2err(int prism2_result) { @@ -100,7 +97,6 @@ static int prism2_domibset_pstr32(wlandevice_t *wlandev, return p80211req_dorequest(wlandev, (u8 *) &msg); } - /* The interface functions, called by the cfg80211 layer */ static int prism2_change_virtual_intf(struct wiphy *wiphy, struct net_device *dev, @@ -298,7 +294,6 @@ static int prism2_set_default_key(struct wiphy *wiphy, struct net_device *dev, return err; } - static int prism2_get_station(struct wiphy *wiphy, struct net_device *dev, const u8 *mac, struct station_info *sinfo) { @@ -322,7 +317,6 @@ static int prism2_get_station(struct wiphy *wiphy, struct net_device *dev, result = wlandev->mlmerequest(wlandev, (struct p80211msg *) &quality); - if (result == 0) { sinfo->txrate.legacy = quality.txrate.data; sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE); @@ -623,7 +617,6 @@ static int prism2_disconnect(struct wiphy *wiphy, struct net_device *dev, int result; int err = 0; - /* Do a join, with a bogus ssid. Thats the only way I can think of */ msg_join.msgcode = DIDmsg_lnxreq_autojoin; @@ -638,7 +631,6 @@ static int prism2_disconnect(struct wiphy *wiphy, struct net_device *dev, return err; } - static int prism2_join_ibss(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ibss_params *params) { @@ -650,7 +642,6 @@ static int prism2_leave_ibss(struct wiphy *wiphy, struct net_device *dev) return -EOPNOTSUPP; } - static int prism2_set_tx_power(struct wiphy *wiphy, struct wireless_dev *wdev, enum nl80211_tx_power_setting type, int mbm) { @@ -706,9 +697,6 @@ exit: return err; } - - - /* Interface callback functions, passing data back up to the cfg80211 layer */ void prism2_connect_result(wlandevice_t *wlandev, u8 failed) { @@ -722,7 +710,7 @@ void prism2_connect_result(wlandevice_t *wlandev, u8 failed) void prism2_disconnected(wlandevice_t *wlandev) { cfg80211_disconnected(wlandev->netdev, 0, NULL, - 0, GFP_KERNEL); + 0, false, GFP_KERNEL); } void prism2_roamed(wlandevice_t *wlandev) @@ -731,7 +719,6 @@ void prism2_roamed(wlandevice_t *wlandev) NULL, 0, NULL, 0, GFP_KERNEL); } - /* Structures for declaring wiphy interface */ static const struct cfg80211_ops prism2_usb_cfg_ops = { .change_virtual_intf = prism2_change_virtual_intf, @@ -750,7 +737,6 @@ static const struct cfg80211_ops prism2_usb_cfg_ops = { .get_tx_power = prism2_get_tx_power, }; - /* Functions to create/free wiphy interface */ static struct wiphy *wlan_create_wiphy(struct device *dev, wlandevice_t *wlandev) { @@ -788,7 +774,6 @@ static struct wiphy *wlan_create_wiphy(struct device *dev, wlandevice_t *wlandev return wiphy; } - static void wlan_free_wiphy(struct wiphy *wiphy) { wiphy_unregister(wiphy); diff --git a/kernel/drivers/staging/wlan-ng/hfa384x_usb.c b/kernel/drivers/staging/wlan-ng/hfa384x_usb.c index e109a7fd4..444ebed73 100644 --- a/kernel/drivers/staging/wlan-ng/hfa384x_usb.c +++ b/kernel/drivers/staging/wlan-ng/hfa384x_usb.c @@ -1194,7 +1194,7 @@ int hfa384x_cmd_download(hfa384x_t *hw, u16 mode, u16 lowaddr, ----------------------------------------------------------------*/ int hfa384x_corereset(hfa384x_t *hw, int holdtime, int settletime, int genesis) { - int result = 0; + int result; result = usb_reset_device(hw->usb); if (result < 0) { diff --git a/kernel/drivers/staging/wlan-ng/p80211conv.c b/kernel/drivers/staging/wlan-ng/p80211conv.c index bd69e8cf2..1b02cdf9d 100644 --- a/kernel/drivers/staging/wlan-ng/p80211conv.c +++ b/kernel/drivers/staging/wlan-ng/p80211conv.c @@ -129,13 +129,13 @@ int skb_ether_to_p80211(wlandevice_t *wlandev, u32 ethconv, } else { /* step 1: classify ether frame, DIX or 802.3? */ proto = ntohs(e_hdr.type); - if (proto <= 1500) { + if (proto <= ETH_DATA_LEN) { pr_debug("802.3 len: %d\n", skb->len); /* codes <= 1500 reserved for 802.3 lengths */ /* it's 802.3, pass ether payload unchanged, */ /* trim off ethernet header */ - skb_pull(skb, WLAN_ETHHDR_LEN); + skb_pull(skb, ETH_HLEN); /* leave off any PAD octets. */ skb_trim(skb, proto); @@ -144,7 +144,7 @@ int skb_ether_to_p80211(wlandevice_t *wlandev, u32 ethconv, /* it's DIXII, time for some conversion */ /* trim off ethernet header */ - skb_pull(skb, WLAN_ETHHDR_LEN); + skb_pull(skb, ETH_HLEN); /* tack on SNAP */ e_snap = @@ -207,6 +207,8 @@ int skb_ether_to_p80211(wlandevice_t *wlandev, u32 ethconv, /* XXXX need to pick keynum other than default? */ p80211_wep->data = kmalloc(skb->len, GFP_ATOMIC); + if (!p80211_wep->data) + return -ENOMEM; foo = wep_encrypt(wlandev, skb->data, p80211_wep->data, skb->len, (wlandev->hostwep & HOSTWEP_DEFAULTKEY_MASK), @@ -279,8 +281,8 @@ int skb_p80211_to_ether(wlandevice_t *wlandev, u32 ethconv, u16 fc; unsigned int payload_length; unsigned int payload_offset; - u8 daddr[WLAN_ETHADDR_LEN]; - u8 saddr[WLAN_ETHADDR_LEN]; + u8 daddr[ETH_ALEN]; + u8 saddr[ETH_ALEN]; union p80211_hdr *w_hdr; struct wlan_ethhdr *e_hdr; struct wlan_llc *e_llc; @@ -296,16 +298,16 @@ int skb_p80211_to_ether(wlandevice_t *wlandev, u32 ethconv, /* setup some vars for convenience */ fc = le16_to_cpu(w_hdr->a3.fc); if ((WLAN_GET_FC_TODS(fc) == 0) && (WLAN_GET_FC_FROMDS(fc) == 0)) { - memcpy(daddr, w_hdr->a3.a1, WLAN_ETHADDR_LEN); - memcpy(saddr, w_hdr->a3.a2, WLAN_ETHADDR_LEN); + ether_addr_copy(daddr, w_hdr->a3.a1); + ether_addr_copy(saddr, w_hdr->a3.a2); } else if ((WLAN_GET_FC_TODS(fc) == 0) && (WLAN_GET_FC_FROMDS(fc) == 1)) { - memcpy(daddr, w_hdr->a3.a1, WLAN_ETHADDR_LEN); - memcpy(saddr, w_hdr->a3.a3, WLAN_ETHADDR_LEN); + ether_addr_copy(daddr, w_hdr->a3.a1); + ether_addr_copy(saddr, w_hdr->a3.a3); } else if ((WLAN_GET_FC_TODS(fc) == 1) && (WLAN_GET_FC_FROMDS(fc) == 0)) { - memcpy(daddr, w_hdr->a3.a3, WLAN_ETHADDR_LEN); - memcpy(saddr, w_hdr->a3.a2, WLAN_ETHADDR_LEN); + ether_addr_copy(daddr, w_hdr->a3.a3); + ether_addr_copy(saddr, w_hdr->a3.a2); } else { payload_offset = WLAN_HDR_A4_LEN; if (payload_length < WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN) { @@ -313,8 +315,8 @@ int skb_p80211_to_ether(wlandevice_t *wlandev, u32 ethconv, return 1; } payload_length -= (WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN); - memcpy(daddr, w_hdr->a4.a3, WLAN_ETHADDR_LEN); - memcpy(saddr, w_hdr->a4.a4, WLAN_ETHADDR_LEN); + ether_addr_copy(daddr, w_hdr->a4.a3); + ether_addr_copy(saddr, w_hdr->a4.a4); } /* perform de-wep if necessary.. */ @@ -358,16 +360,16 @@ int skb_p80211_to_ether(wlandevice_t *wlandev, u32 ethconv, /* Test for the various encodings */ if ((payload_length >= sizeof(struct wlan_ethhdr)) && (e_llc->dsap != 0xaa || e_llc->ssap != 0xaa) && - ((memcmp(daddr, e_hdr->daddr, WLAN_ETHADDR_LEN) == 0) || - (memcmp(saddr, e_hdr->saddr, WLAN_ETHADDR_LEN) == 0))) { + ((!ether_addr_equal_unaligned(daddr, e_hdr->daddr)) || + (!ether_addr_equal_unaligned(saddr, e_hdr->saddr)))) { pr_debug("802.3 ENCAP len: %d\n", payload_length); /* 802.3 Encapsulated */ /* Test for an overlength frame */ - if (payload_length > (netdev->mtu + WLAN_ETHHDR_LEN)) { + if (payload_length > (netdev->mtu + ETH_HLEN)) { /* A bogus length ethfrm has been encap'd. */ /* Is someone trying an oflow attack? */ netdev_err(netdev, "ENCAP frame too large (%d > %d)\n", - payload_length, netdev->mtu + WLAN_ETHHDR_LEN); + payload_length, netdev->mtu + ETH_HLEN); return 1; } @@ -404,9 +406,9 @@ int skb_p80211_to_ether(wlandevice_t *wlandev, u32 ethconv, skb_pull(skb, payload_offset); /* create 802.3 header at beginning of skb. */ - e_hdr = (struct wlan_ethhdr *) skb_push(skb, WLAN_ETHHDR_LEN); - memcpy(e_hdr->daddr, daddr, WLAN_ETHADDR_LEN); - memcpy(e_hdr->saddr, saddr, WLAN_ETHADDR_LEN); + e_hdr = (struct wlan_ethhdr *)skb_push(skb, ETH_HLEN); + ether_addr_copy(e_hdr->daddr, daddr); + ether_addr_copy(e_hdr->saddr, saddr); e_hdr->type = htons(payload_length); /* chop off the 802.11 CRC */ @@ -444,10 +446,10 @@ int skb_p80211_to_ether(wlandevice_t *wlandev, u32 ethconv, skb_pull(skb, sizeof(struct wlan_snap)); /* create 802.3 header at beginning of skb. */ - e_hdr = (struct wlan_ethhdr *) skb_push(skb, WLAN_ETHHDR_LEN); + e_hdr = (struct wlan_ethhdr *)skb_push(skb, ETH_HLEN); e_hdr->type = e_snap->type; - memcpy(e_hdr->daddr, daddr, WLAN_ETHADDR_LEN); - memcpy(e_hdr->saddr, saddr, WLAN_ETHADDR_LEN); + ether_addr_copy(e_hdr->daddr, daddr); + ether_addr_copy(e_hdr->saddr, saddr); /* chop off the 802.11 CRC */ skb_trim(skb, skb->len - WLAN_CRC_LEN); @@ -471,9 +473,9 @@ int skb_p80211_to_ether(wlandevice_t *wlandev, u32 ethconv, skb_pull(skb, payload_offset); /* create 802.3 header at beginning of skb. */ - e_hdr = (struct wlan_ethhdr *) skb_push(skb, WLAN_ETHHDR_LEN); - memcpy(e_hdr->daddr, daddr, WLAN_ETHADDR_LEN); - memcpy(e_hdr->saddr, saddr, WLAN_ETHADDR_LEN); + e_hdr = (struct wlan_ethhdr *)skb_push(skb, ETH_HLEN); + ether_addr_copy(e_hdr->daddr, daddr); + ether_addr_copy(e_hdr->saddr, saddr); e_hdr->type = htons(payload_length); /* chop off the 802.11 CRC */ @@ -529,7 +531,7 @@ int p80211_stt_findproto(u16 proto) Need to do some testing to confirm. */ - if (proto == 0x80f3) /* APPLETALK */ + if (proto == ETH_P_AARP) /* APPLETALK */ return 1; return 0; diff --git a/kernel/drivers/staging/wlan-ng/p80211conv.h b/kernel/drivers/staging/wlan-ng/p80211conv.h index e031a74d2..8c10357be 100644 --- a/kernel/drivers/staging/wlan-ng/p80211conv.h +++ b/kernel/drivers/staging/wlan-ng/p80211conv.h @@ -53,14 +53,11 @@ #ifndef _LINUX_P80211CONV_H #define _LINUX_P80211CONV_H -#define WLAN_ETHADDR_LEN 6 #define WLAN_IEEE_OUI_LEN 3 #define WLAN_ETHCONV_ENCAP 1 #define WLAN_ETHCONV_8021h 3 -#define WLAN_ETHHDR_LEN 14 - #define P80211CAPTURE_VERSION 0x80211001 #define P80211_FRMMETA_MAGIC 0x802110 @@ -131,8 +128,8 @@ struct p80211_metawep { /* local ether header type */ struct wlan_ethhdr { - u8 daddr[WLAN_ETHADDR_LEN]; - u8 saddr[WLAN_ETHADDR_LEN]; + u8 daddr[ETH_ALEN]; + u8 saddr[ETH_ALEN]; u16 type; } __packed; diff --git a/kernel/drivers/staging/wlan-ng/p80211meta.h b/kernel/drivers/staging/wlan-ng/p80211meta.h deleted file mode 100644 index c5f1a63ad..000000000 --- a/kernel/drivers/staging/wlan-ng/p80211meta.h +++ /dev/null @@ -1,90 +0,0 @@ -/* p80211meta.h -* -* Macros, constants, types, and funcs for p80211 metadata -* -* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved. -* -------------------------------------------------------------------- -* -* linux-wlan -* -* The contents of this file are subject to the Mozilla Public -* License Version 1.1 (the "License"); you may not use this file -* except in compliance with the License. You may obtain a copy of -* the License at http://www.mozilla.org/MPL/ -* -* Software distributed under the License is distributed on an "AS -* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -* implied. See the License for the specific language governing -* rights and limitations under the License. -* -* Alternatively, the contents of this file may be used under the -* terms of the GNU Public License version 2 (the "GPL"), in which -* case the provisions of the GPL are applicable instead of the -* above. If you wish to allow the use of your version of this file -* only under the terms of the GPL and not to allow others to use -* your version of this file under the MPL, indicate your decision -* by deleting the provisions above and replace them with the notice -* and other provisions required by the GPL. If you do not delete -* the provisions above, a recipient may use your version of this -* file under either the MPL or the GPL. -* -* -------------------------------------------------------------------- -* -* Inquiries regarding the linux-wlan Open Source project can be -* made directly to: -* -* AbsoluteValue Systems Inc. -* info@linux-wlan.com -* http://www.linux-wlan.com -* -* -------------------------------------------------------------------- -* -* Portions of the development of this software were funded by -* Intersil Corporation as part of PRISM(R) chipset product development. -* -* -------------------------------------------------------------------- -* -* This file declares some of the constants and types used in various -* parts of the linux-wlan system. -* -* Notes: -* - Constant values are always in HOST byte order. -* -* All functions and statics declared here are implemented in p80211types.c -* -------------------------------------------------------------------- -*/ - -#ifndef _P80211META_H -#define _P80211META_H - -/*----------------------------------------------------------------*/ -/* The following structure types are used for the metadata */ -/* representation of category list metadata, group list metadata, */ -/* and data item metadata for both Mib and Messages. */ - -struct p80211meta { - char *name; /* data item name */ - u32 did; /* partial did */ - u32 flags; /* set of various flag bits */ - u32 min; /* min value of a BOUNDEDint */ - u32 max; /* max value of a BOUNDEDint */ - - u32 maxlen; /* maxlen of a OCTETSTR or DISPLAYSTR */ - u32 minlen; /* minlen of a OCTETSTR or DISPLAYSTR */ - p80211enum_t *enumptr; /* ptr to the enum type for ENUMint */ - p80211_totext_t totextptr; /* ptr to totext conversion function */ - p80211_fromtext_t fromtextptr; /* ptr to totext conversion function */ - p80211_valid_t validfunptr; /* ptr to totext conversion function */ -}; - -struct grplistitem { - char *name; - struct p80211meta *itemlist; -}; - -struct catlistitem { - char *name; - struct grplistitem *grplist; -}; - -#endif /* _P80211META_H */ diff --git a/kernel/drivers/staging/wlan-ng/p80211wep.c b/kernel/drivers/staging/wlan-ng/p80211wep.c index c4fabadf5..c363456d9 100644 --- a/kernel/drivers/staging/wlan-ng/p80211wep.c +++ b/kernel/drivers/staging/wlan-ng/p80211wep.c @@ -53,7 +53,6 @@ #include #include -/* #define WEP_DEBUG */ #include "p80211hdr.h" #include "p80211types.h" @@ -133,10 +132,6 @@ int wep_change_key(wlandevice_t *wlandev, int keynum, u8 *key, int keylen) if (keynum >= NUM_WEPKEYS) return -1; -#ifdef WEP_DEBUG - pr_debug("WEP key %d len %d = %*phC\n", keynum, keylen, - 8, key); -#endif wlandev->wep_keylens[keynum] = keylen; memcpy(wlandev->wep_keys[keynum], key, keylen); @@ -181,10 +176,6 @@ int wep_decrypt(wlandevice_t *wlandev, u8 *buf, u32 len, int key_override, keylen += 3; /* add in IV bytes */ -#ifdef WEP_DEBUG - pr_debug("D %d: %*ph (%d %d) %*phC\n", len, 3, key, - keyidx, keylen, 5, key + 3); -#endif /* set up the RC4 state */ for (i = 0; i < 256; i++) @@ -258,11 +249,6 @@ int wep_encrypt(wlandevice_t *wlandev, u8 *buf, u8 *dst, u32 len, int keynum, keylen += 3; /* add in IV bytes */ -#ifdef WEP_DEBUG - pr_debug("E %d (%d/%d %d) %*ph %*phC\n", len, - iv[3], keynum, keylen, 3, key, 5, key + 3); -#endif - /* set up the RC4 state */ for (i = 0; i < 256; i++) s[i] = i; diff --git a/kernel/drivers/staging/wlan-ng/prism2fw.c b/kernel/drivers/staging/wlan-ng/prism2fw.c index 9408644cc..8fc80df0b 100644 --- a/kernel/drivers/staging/wlan-ng/prism2fw.c +++ b/kernel/drivers/staging/wlan-ng/prism2fw.c @@ -584,13 +584,12 @@ static int mkimage(struct imgchunk *clist, unsigned int *ccnt) ----------------------------------------------------------------*/ static int mkpdrlist(struct pda *pda) { - int result = 0; u16 *pda16 = (u16 *) pda->buf; int curroff; /* in 'words' */ pda->nrec = 0; curroff = 0; - while (curroff < (HFA384x_PDA_LEN_MAX / 2) && + while (curroff < (HFA384x_PDA_LEN_MAX / 2 - 1) && le16_to_cpu(pda16[curroff + 1]) != HFA384x_PDR_END_OF_PDA) { pda->rec[pda->nrec] = (hfa384x_pdrec_t *) &(pda16[curroff]); @@ -626,16 +625,14 @@ static int mkpdrlist(struct pda *pda) curroff += le16_to_cpu(pda16[curroff]) + 1; } - if (curroff >= (HFA384x_PDA_LEN_MAX / 2)) { + if (curroff >= (HFA384x_PDA_LEN_MAX / 2 - 1)) { pr_err("no end record found or invalid lengths in PDR data, exiting. %x %d\n", curroff, pda->nrec); return 1; } - if (le16_to_cpu(pda16[curroff + 1]) == HFA384x_PDR_END_OF_PDA) { - pda->rec[pda->nrec] = (hfa384x_pdrec_t *) &(pda16[curroff]); - (pda->nrec)++; - } - return result; + pda->rec[pda->nrec] = (hfa384x_pdrec_t *) &(pda16[curroff]); + (pda->nrec)++; + return 0; } /*---------------------------------------------------------------- @@ -708,7 +705,10 @@ static int plugimage(struct imgchunk *fchunk, unsigned int nfchunks, continue; } - /* Validate plug address against chunk data and identify chunk */ + /* + * Validate plug address against + * chunk data and identify chunk + */ for (c = 0; c < nfchunks; c++) { cstart = fchunk[c].addr; cend = fchunk[c].addr + fchunk[c].len; @@ -923,7 +923,8 @@ static int read_fwfile(const struct ihex_binrec *record) rcnt, s3info[ns3info].len, s3info[ns3info].type); - if (((s3info[ns3info].len - 1) * sizeof(u16)) > sizeof(s3info[ns3info].info)) { + if (((s3info[ns3info].len - 1) * sizeof(u16)) > + sizeof(s3info[ns3info].info)) { pr_err("S3 inforec length too long - aborting\n"); return 1; } diff --git a/kernel/drivers/staging/wlan-ng/prism2sta.c b/kernel/drivers/staging/wlan-ng/prism2sta.c index ddb294e70..c57f48a1d 100644 --- a/kernel/drivers/staging/wlan-ng/prism2sta.c +++ b/kernel/drivers/staging/wlan-ng/prism2sta.c @@ -1,54 +1,54 @@ /* src/prism2/driver/prism2sta.c -* -* Implements the station functionality for prism2 -* -* Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved. -* -------------------------------------------------------------------- -* -* linux-wlan -* -* The contents of this file are subject to the Mozilla Public -* License Version 1.1 (the "License"); you may not use this file -* except in compliance with the License. You may obtain a copy of -* the License at http://www.mozilla.org/MPL/ -* -* Software distributed under the License is distributed on an "AS -* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -* implied. See the License for the specific language governing -* rights and limitations under the License. -* -* Alternatively, the contents of this file may be used under the -* terms of the GNU Public License version 2 (the "GPL"), in which -* case the provisions of the GPL are applicable instead of the -* above. If you wish to allow the use of your version of this file -* only under the terms of the GPL and not to allow others to use -* your version of this file under the MPL, indicate your decision -* by deleting the provisions above and replace them with the notice -* and other provisions required by the GPL. If you do not delete -* the provisions above, a recipient may use your version of this -* file under either the MPL or the GPL. -* -* -------------------------------------------------------------------- -* -* Inquiries regarding the linux-wlan Open Source project can be -* made directly to: -* -* AbsoluteValue Systems Inc. -* info@linux-wlan.com -* http://www.linux-wlan.com -* -* -------------------------------------------------------------------- -* -* Portions of the development of this software were funded by -* Intersil Corporation as part of PRISM(R) chipset product development. -* -* -------------------------------------------------------------------- -* -* This file implements the module and linux pcmcia routines for the -* prism2 driver. -* -* -------------------------------------------------------------------- -*/ + * + * Implements the station functionality for prism2 + * + * Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved. + * -------------------------------------------------------------------- + * + * linux-wlan + * + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * Alternatively, the contents of this file may be used under the + * terms of the GNU Public License version 2 (the "GPL"), in which + * case the provisions of the GPL are applicable instead of the + * above. If you wish to allow the use of your version of this file + * only under the terms of the GPL and not to allow others to use + * your version of this file under the MPL, indicate your decision + * by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL. If you do not delete + * the provisions above, a recipient may use your version of this + * file under either the MPL or the GPL. + * + * -------------------------------------------------------------------- + * + * Inquiries regarding the linux-wlan Open Source project can be + * made directly to: + * + * AbsoluteValue Systems Inc. + * info@linux-wlan.com + * http://www.linux-wlan.com + * + * -------------------------------------------------------------------- + * + * Portions of the development of this software were funded by + * Intersil Corporation as part of PRISM(R) chipset product development. + * + * -------------------------------------------------------------------- + * + * This file implements the module and linux pcmcia routines for the + * prism2 driver. + * + * -------------------------------------------------------------------- + */ #include #include @@ -130,27 +130,27 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev, static void prism2sta_inf_psusercnt(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf); -/*---------------------------------------------------------------- -* prism2sta_open -* -* WLAN device open method. Called from p80211netdev when kernel -* device open (start) method is called in response to the -* SIOCSIIFFLAGS ioctl changing the flags bit IFF_UP -* from clear to set. -* -* Arguments: -* wlandev wlan device structure -* -* Returns: -* 0 success -* >0 f/w reported error -* <0 driver reported error -* -* Side effects: -* -* Call context: -* process thread -----------------------------------------------------------------*/ +/* + * prism2sta_open + * + * WLAN device open method. Called from p80211netdev when kernel + * device open (start) method is called in response to the + * SIOCSIIFFLAGS ioctl changing the flags bit IFF_UP + * from clear to set. + * + * Arguments: + * wlandev wlan device structure + * + * Returns: + * 0 success + * >0 f/w reported error + * <0 driver reported error + * + * Side effects: + * + * Call context: + * process thread + */ static int prism2sta_open(wlandevice_t *wlandev) { /* We don't currently have to do anything else. @@ -164,27 +164,27 @@ static int prism2sta_open(wlandevice_t *wlandev) return 0; } -/*---------------------------------------------------------------- -* prism2sta_close -* -* WLAN device close method. Called from p80211netdev when kernel -* device close method is called in response to the -* SIOCSIIFFLAGS ioctl changing the flags bit IFF_UP -* from set to clear. -* -* Arguments: -* wlandev wlan device structure -* -* Returns: -* 0 success -* >0 f/w reported error -* <0 driver reported error -* -* Side effects: -* -* Call context: -* process thread -----------------------------------------------------------------*/ +/* + * prism2sta_close + * + * WLAN device close method. Called from p80211netdev when kernel + * device close method is called in response to the + * SIOCSIIFFLAGS ioctl changing the flags bit IFF_UP + * from set to clear. + * + * Arguments: + * wlandev wlan device structure + * + * Returns: + * 0 success + * >0 f/w reported error + * <0 driver reported error + * + * Side effects: + * + * Call context: + * process thread + */ static int prism2sta_close(wlandevice_t *wlandev) { /* We don't currently have to do anything else. @@ -196,48 +196,48 @@ static int prism2sta_close(wlandevice_t *wlandev) return 0; } -/*---------------------------------------------------------------- -* prism2sta_reset -* -* Currently not implemented. -* -* Arguments: -* wlandev wlan device structure -* none -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* process thread -----------------------------------------------------------------*/ +/* + * prism2sta_reset + * + * Currently not implemented. + * + * Arguments: + * wlandev wlan device structure + * none + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * process thread + */ static void prism2sta_reset(wlandevice_t *wlandev) { } -/*---------------------------------------------------------------- -* prism2sta_txframe -* -* Takes a frame from p80211 and queues it for transmission. -* -* Arguments: -* wlandev wlan device structure -* pb packet buffer struct. Contains an 802.11 -* data frame. -* p80211_hdr points to the 802.11 header for the packet. -* Returns: -* 0 Success and more buffs available -* 1 Success but no more buffs -* 2 Allocation failure -* 4 Buffer full or queue busy -* -* Side effects: -* -* Call context: -* process thread -----------------------------------------------------------------*/ +/* + * prism2sta_txframe + * + * Takes a frame from p80211 and queues it for transmission. + * + * Arguments: + * wlandev wlan device structure + * pb packet buffer struct. Contains an 802.11 + * data frame. + * p80211_hdr points to the 802.11 header for the packet. + * Returns: + * 0 Success and more buffs available + * 1 Success but no more buffs + * 2 Allocation failure + * 4 Buffer full or queue busy + * + * Side effects: + * + * Call context: + * process thread + */ static int prism2sta_txframe(wlandevice_t *wlandev, struct sk_buff *skb, union p80211_hdr *p80211_hdr, struct p80211_metawep *p80211_wep) @@ -253,30 +253,30 @@ static int prism2sta_txframe(wlandevice_t *wlandev, struct sk_buff *skb, return hfa384x_drvr_txframe(hw, skb, p80211_hdr, p80211_wep); } -/*---------------------------------------------------------------- -* prism2sta_mlmerequest -* -* wlan command message handler. All we do here is pass the message -* over to the prism2sta_mgmt_handler. -* -* Arguments: -* wlandev wlan device structure -* msg wlan command message -* Returns: -* 0 success -* <0 successful acceptance of message, but we're -* waiting for an async process to finish before -* we're done with the msg. When the asynch -* process is done, we'll call the p80211 -* function p80211req_confirm() . -* >0 An error occurred while we were handling -* the message. -* -* Side effects: -* -* Call context: -* process thread -----------------------------------------------------------------*/ +/* + * prism2sta_mlmerequest + * + * wlan command message handler. All we do here is pass the message + * over to the prism2sta_mgmt_handler. + * + * Arguments: + * wlandev wlan device structure + * msg wlan command message + * Returns: + * 0 success + * <0 successful acceptance of message, but we're + * waiting for an async process to finish before + * we're done with the msg. When the asynch + * process is done, we'll call the p80211 + * function p80211req_confirm() . + * >0 An error occurred while we were handling + * the message. + * + * Side effects: + * + * Call context: + * process thread + */ static int prism2sta_mlmerequest(wlandevice_t *wlandev, struct p80211msg *msg) { hfa384x_t *hw = (hfa384x_t *) wlandev->priv; @@ -386,27 +386,27 @@ static int prism2sta_mlmerequest(wlandevice_t *wlandev, struct p80211msg *msg) return result; } -/*---------------------------------------------------------------- -* prism2sta_ifstate -* -* Interface state. This is the primary WLAN interface enable/disable -* handler. Following the driver/load/deviceprobe sequence, this -* function must be called with a state of "enable" before any other -* commands will be accepted. -* -* Arguments: -* wlandev wlan device structure -* msgp ptr to msg buffer -* -* Returns: -* A p80211 message resultcode value. -* -* Side effects: -* -* Call context: -* process thread (usually) -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_ifstate + * + * Interface state. This is the primary WLAN interface enable/disable + * handler. Following the driver/load/deviceprobe sequence, this + * function must be called with a state of "enable" before any other + * commands will be accepted. + * + * Arguments: + * wlandev wlan device structure + * msgp ptr to msg buffer + * + * Returns: + * A p80211 message resultcode value. + * + * Side effects: + * + * Call context: + * process thread (usually) + * interrupt + */ u32 prism2sta_ifstate(wlandevice_t *wlandev, u32 ifstate) { hfa384x_t *hw = (hfa384x_t *) wlandev->priv; @@ -428,7 +428,8 @@ u32 prism2sta_ifstate(wlandevice_t *wlandev, u32 ifstate) result = hfa384x_drvr_start(hw); if (result) { netdev_err(wlandev->netdev, - "hfa384x_drvr_start() failed,result=%d\n", (int)result); + "hfa384x_drvr_start() failed,result=%d\n", + (int)result); result = P80211ENUM_resultcode_implementation_failure; wlandev->msdstate = WLAN_MSD_HWPRESENT; @@ -471,7 +472,8 @@ u32 prism2sta_ifstate(wlandevice_t *wlandev, u32 ifstate) result = hfa384x_drvr_start(hw); if (result) { netdev_err(wlandev->netdev, - "hfa384x_drvr_start() failed,result=%d\n", (int)result); + "hfa384x_drvr_start() failed,result=%d\n", + (int)result); result = P80211ENUM_resultcode_implementation_failure; wlandev->msdstate = WLAN_MSD_HWPRESENT; @@ -481,7 +483,8 @@ u32 prism2sta_ifstate(wlandevice_t *wlandev, u32 ifstate) result = prism2sta_getcardinfo(wlandev); if (result) { netdev_err(wlandev->netdev, - "prism2sta_getcardinfo() failed,result=%d\n", (int)result); + "prism2sta_getcardinfo() failed,result=%d\n", + (int)result); result = P80211ENUM_resultcode_implementation_failure; hfa384x_drvr_stop(hw); @@ -491,7 +494,8 @@ u32 prism2sta_ifstate(wlandevice_t *wlandev, u32 ifstate) result = prism2sta_globalsetup(wlandev); if (result) { netdev_err(wlandev->netdev, - "prism2sta_globalsetup() failed,result=%d\n", (int)result); + "prism2sta_globalsetup() failed,result=%d\n", + (int)result); result = P80211ENUM_resultcode_implementation_failure; hfa384x_drvr_stop(hw); @@ -557,25 +561,25 @@ u32 prism2sta_ifstate(wlandevice_t *wlandev, u32 ifstate) return result; } -/*---------------------------------------------------------------- -* prism2sta_getcardinfo -* -* Collect the NICID, firmware version and any other identifiers -* we'd like to have in host-side data structures. -* -* Arguments: -* wlandev wlan device structure -* -* Returns: -* 0 success -* >0 f/w reported error -* <0 driver reported error -* -* Side effects: -* -* Call context: -* Either. -----------------------------------------------------------------*/ +/* + * prism2sta_getcardinfo + * + * Collect the NICID, firmware version and any other identifiers + * we'd like to have in host-side data structures. + * + * Arguments: + * wlandev wlan device structure + * + * Returns: + * 0 success + * >0 f/w reported error + * <0 driver reported error + * + * Side effects: + * + * Call context: + * Either. + */ static int prism2sta_getcardinfo(wlandevice_t *wlandev) { int result = 0; @@ -673,7 +677,8 @@ static int prism2sta_getcardinfo(wlandevice_t *wlandev) } /* get all the Compatibility range, modem interface supplier - fields in byte order */ + * fields in byte order + */ hw->cap_sup_mfi.role = le16_to_cpu(hw->cap_sup_mfi.role); hw->cap_sup_mfi.id = le16_to_cpu(hw->cap_sup_mfi.id); hw->cap_sup_mfi.variant = le16_to_cpu(hw->cap_sup_mfi.variant); @@ -696,7 +701,8 @@ static int prism2sta_getcardinfo(wlandevice_t *wlandev) } /* get all the Compatibility range, controller interface supplier - fields in byte order */ + * fields in byte order + */ hw->cap_sup_cfi.role = le16_to_cpu(hw->cap_sup_cfi.role); hw->cap_sup_cfi.id = le16_to_cpu(hw->cap_sup_cfi.id); hw->cap_sup_cfi.variant = le16_to_cpu(hw->cap_sup_cfi.variant); @@ -719,7 +725,8 @@ static int prism2sta_getcardinfo(wlandevice_t *wlandev) } /* get all the Compatibility range, primary firmware supplier - fields in byte order */ + * fields in byte order + */ hw->cap_sup_pri.role = le16_to_cpu(hw->cap_sup_pri.role); hw->cap_sup_pri.id = le16_to_cpu(hw->cap_sup_pri.id); hw->cap_sup_pri.variant = le16_to_cpu(hw->cap_sup_pri.variant); @@ -742,7 +749,8 @@ static int prism2sta_getcardinfo(wlandevice_t *wlandev) } /* get all the Compatibility range, station firmware supplier - fields in byte order */ + * fields in byte order + */ hw->cap_sup_sta.role = le16_to_cpu(hw->cap_sup_sta.role); hw->cap_sup_sta.id = le16_to_cpu(hw->cap_sup_sta.id); hw->cap_sup_sta.variant = le16_to_cpu(hw->cap_sup_sta.variant); @@ -773,7 +781,8 @@ static int prism2sta_getcardinfo(wlandevice_t *wlandev) } /* get all the Compatibility range, primary f/w actor, CFI supplier - fields in byte order */ + * fields in byte order + */ hw->cap_act_pri_cfi.role = le16_to_cpu(hw->cap_act_pri_cfi.role); hw->cap_act_pri_cfi.id = le16_to_cpu(hw->cap_act_pri_cfi.id); hw->cap_act_pri_cfi.variant = le16_to_cpu(hw->cap_act_pri_cfi.variant); @@ -796,7 +805,8 @@ static int prism2sta_getcardinfo(wlandevice_t *wlandev) } /* get all the Compatibility range, station f/w actor, CFI supplier - fields in byte order */ + * fields in byte order + */ hw->cap_act_sta_cfi.role = le16_to_cpu(hw->cap_act_sta_cfi.role); hw->cap_act_sta_cfi.id = le16_to_cpu(hw->cap_act_sta_cfi.id); hw->cap_act_sta_cfi.variant = le16_to_cpu(hw->cap_act_sta_cfi.variant); @@ -819,7 +829,8 @@ static int prism2sta_getcardinfo(wlandevice_t *wlandev) } /* get all the Compatibility range, station f/w actor, MFI supplier - fields in byte order */ + * fields in byte order + */ hw->cap_act_sta_mfi.role = le16_to_cpu(hw->cap_act_sta_mfi.role); hw->cap_act_sta_mfi.id = le16_to_cpu(hw->cap_act_sta_mfi.id); hw->cap_act_sta_mfi.variant = le16_to_cpu(hw->cap_act_sta_mfi.variant); @@ -880,24 +891,24 @@ done: return result; } -/*---------------------------------------------------------------- -* prism2sta_globalsetup -* -* Set any global RIDs that we want to set at device activation. -* -* Arguments: -* wlandev wlan device structure -* -* Returns: -* 0 success -* >0 f/w reported error -* <0 driver reported error -* -* Side effects: -* -* Call context: -* process thread -----------------------------------------------------------------*/ +/* + * prism2sta_globalsetup + * + * Set any global RIDs that we want to set at device activation. + * + * Arguments: + * wlandev wlan device structure + * + * Returns: + * 0 success + * >0 f/w reported error + * <0 driver reported error + * + * Side effects: + * + * Call context: + * process thread + */ static int prism2sta_globalsetup(wlandevice_t *wlandev) { hfa384x_t *hw = (hfa384x_t *) wlandev->priv; @@ -930,47 +941,47 @@ exit: return result; } -/*---------------------------------------------------------------- -* prism2sta_inf_handover -* -* Handles the receipt of a Handover info frame. Should only be present -* in APs only. -* -* Arguments: -* wlandev wlan device structure -* inf ptr to info frame (contents in hfa384x order) -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_inf_handover + * + * Handles the receipt of a Handover info frame. Should only be present + * in APs only. + * + * Arguments: + * wlandev wlan device structure + * inf ptr to info frame (contents in hfa384x order) + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ static void prism2sta_inf_handover(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) { pr_debug("received infoframe:HANDOVER (unhandled)\n"); } -/*---------------------------------------------------------------- -* prism2sta_inf_tallies -* -* Handles the receipt of a CommTallies info frame. -* -* Arguments: -* wlandev wlan device structure -* inf ptr to info frame (contents in hfa384x order) -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_inf_tallies + * + * Handles the receipt of a CommTallies info frame. + * + * Arguments: + * wlandev wlan device structure + * inf ptr to info frame (contents in hfa384x order) + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ static void prism2sta_inf_tallies(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) { @@ -982,8 +993,8 @@ static void prism2sta_inf_tallies(wlandevice_t *wlandev, int cnt; /* - ** Determine if these are 16-bit or 32-bit tallies, based on the - ** record length of the info record. + * Determine if these are 16-bit or 32-bit tallies, based on the + * record length of the info record. */ cnt = sizeof(hfa384x_CommTallies32_t) / sizeof(u32); @@ -1000,23 +1011,23 @@ static void prism2sta_inf_tallies(wlandevice_t *wlandev, } } -/*---------------------------------------------------------------- -* prism2sta_inf_scanresults -* -* Handles the receipt of a Scan Results info frame. -* -* Arguments: -* wlandev wlan device structure -* inf ptr to info frame (contents in hfa384x order) -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_inf_scanresults + * + * Handles the receipt of a Scan Results info frame. + * + * Arguments: + * wlandev wlan device structure + * inf ptr to info frame (contents in hfa384x order) + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ static void prism2sta_inf_scanresults(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) { @@ -1056,23 +1067,23 @@ static void prism2sta_inf_scanresults(wlandevice_t *wlandev, } } -/*---------------------------------------------------------------- -* prism2sta_inf_hostscanresults -* -* Handles the receipt of a Scan Results info frame. -* -* Arguments: -* wlandev wlan device structure -* inf ptr to info frame (contents in hfa384x order) -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_inf_hostscanresults + * + * Handles the receipt of a Scan Results info frame. + * + * Arguments: + * wlandev wlan device structure + * inf ptr to info frame (contents in hfa384x order) + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ static void prism2sta_inf_hostscanresults(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) { @@ -1097,23 +1108,23 @@ static void prism2sta_inf_hostscanresults(wlandevice_t *wlandev, wake_up_interruptible(&hw->cmdq); }; -/*---------------------------------------------------------------- -* prism2sta_inf_chinforesults -* -* Handles the receipt of a Channel Info Results info frame. -* -* Arguments: -* wlandev wlan device structure -* inf ptr to info frame (contents in hfa384x order) -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_inf_chinforesults + * + * Handles the receipt of a Channel Info Results info frame. + * + * Arguments: + * wlandev wlan device structure + * inf ptr to info frame (contents in hfa384x order) + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ static void prism2sta_inf_chinforesults(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) { @@ -1244,9 +1255,9 @@ void prism2sta_processing_defer(struct work_struct *data) HFA384x_RID_CURRENTSSID, result); return; } - prism2mgmt_bytestr2pstr((struct hfa384x_bytestr *) &ssid, - (p80211pstrd_t *) & - wlandev->ssid); + prism2mgmt_bytestr2pstr( + (struct hfa384x_bytestr *) &ssid, + (p80211pstrd_t *) &wlandev->ssid); /* Collect the port status */ result = hfa384x_drvr_getconfig16(hw, @@ -1410,23 +1421,23 @@ void prism2sta_processing_defer(struct work_struct *data) wlandev->linkstatus = (hw->link_status == HFA384x_LINK_CONNECTED); } -/*---------------------------------------------------------------- -* prism2sta_inf_linkstatus -* -* Handles the receipt of a Link Status info frame. -* -* Arguments: -* wlandev wlan device structure -* inf ptr to info frame (contents in hfa384x order) -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_inf_linkstatus + * + * Handles the receipt of a Link Status info frame. + * + * Arguments: + * wlandev wlan device structure + * inf ptr to info frame (contents in hfa384x order) + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ static void prism2sta_inf_linkstatus(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) { @@ -1437,24 +1448,24 @@ static void prism2sta_inf_linkstatus(wlandevice_t *wlandev, schedule_work(&hw->link_bh); } -/*---------------------------------------------------------------- -* prism2sta_inf_assocstatus -* -* Handles the receipt of an Association Status info frame. Should -* be present in APs only. -* -* Arguments: -* wlandev wlan device structure -* inf ptr to info frame (contents in hfa384x order) -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_inf_assocstatus + * + * Handles the receipt of an Association Status info frame. Should + * be present in APs only. + * + * Arguments: + * wlandev wlan device structure + * inf ptr to info frame (contents in hfa384x order) + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ static void prism2sta_inf_assocstatus(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) { @@ -1467,19 +1478,19 @@ static void prism2sta_inf_assocstatus(wlandevice_t *wlandev, rec.reason = le16_to_cpu(rec.reason); /* - ** Find the address in the list of authenticated stations. - ** If it wasn't found, then this address has not been previously - ** authenticated and something weird has happened if this is - ** anything other than an "authentication failed" message. - ** If the address was found, then set the "associated" flag for - ** that station, based on whether the station is associating or - ** losing its association. Something weird has also happened - ** if we find the address in the list of authenticated stations - ** but we are getting an "authentication failed" message. + * Find the address in the list of authenticated stations. + * If it wasn't found, then this address has not been previously + * authenticated and something weird has happened if this is + * anything other than an "authentication failed" message. + * If the address was found, then set the "associated" flag for + * that station, based on whether the station is associating or + * losing its association. Something weird has also happened + * if we find the address in the list of authenticated stations + * but we are getting an "authentication failed" message. */ for (i = 0; i < hw->authlist.cnt; i++) - if (memcmp(rec.sta_addr, hw->authlist.addr[i], ETH_ALEN) == 0) + if (ether_addr_equal(rec.sta_addr, hw->authlist.addr[i])) break; if (i >= hw->authlist.cnt) { @@ -1497,25 +1508,25 @@ static void prism2sta_inf_assocstatus(wlandevice_t *wlandev, } } -/*---------------------------------------------------------------- -* prism2sta_inf_authreq -* -* Handles the receipt of an Authentication Request info frame. Should -* be present in APs only. -* -* Arguments: -* wlandev wlan device structure -* inf ptr to info frame (contents in hfa384x order) -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -* -----------------------------------------------------------------*/ +/* + * prism2sta_inf_authreq + * + * Handles the receipt of an Authentication Request info frame. Should + * be present in APs only. + * + * Arguments: + * wlandev wlan device structure + * inf ptr to info frame (contents in hfa384x order) + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + * + */ static void prism2sta_inf_authreq(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) { @@ -1541,28 +1552,28 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev, u8 *addr; /* - ** Build the AuthenticateStation record. Initialize it for denying - ** authentication. + * Build the AuthenticateStation record. Initialize it for denying + * authentication. */ ether_addr_copy(rec.address, inf->info.authreq.sta_addr); rec.status = P80211ENUM_status_unspec_failure; /* - ** Authenticate based on the access mode. + * Authenticate based on the access mode. */ switch (hw->accessmode) { case WLAN_ACCESS_NONE: /* - ** Deny all new authentications. However, if a station - ** is ALREADY authenticated, then accept it. + * Deny all new authentications. However, if a station + * is ALREADY authenticated, then accept it. */ for (i = 0; i < hw->authlist.cnt; i++) - if (memcmp(rec.address, hw->authlist.addr[i], - ETH_ALEN) == 0) { + if (ether_addr_equal(rec.address, + hw->authlist.addr[i])) { rec.status = P80211ENUM_status_successful; break; } @@ -1572,7 +1583,7 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev, case WLAN_ACCESS_ALL: /* - ** Allow all authentications. + * Allow all authentications. */ rec.status = P80211ENUM_status_successful; @@ -1581,13 +1592,13 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev, case WLAN_ACCESS_ALLOW: /* - ** Only allow the authentication if the MAC address - ** is in the list of allowed addresses. - ** - ** Since this is the interrupt handler, we may be here - ** while the access list is in the middle of being - ** updated. Choose the list which is currently okay. - ** See "prism2mib_priv_accessallow()" for details. + * Only allow the authentication if the MAC address + * is in the list of allowed addresses. + * + * Since this is the interrupt handler, we may be here + * while the access list is in the middle of being + * updated. Choose the list which is currently okay. + * See "prism2mib_priv_accessallow()" for details. */ if (hw->allow.modify == 0) { @@ -1599,7 +1610,7 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev, } for (i = 0; i < cnt; i++, addr += ETH_ALEN) - if (memcmp(rec.address, addr, ETH_ALEN) == 0) { + if (ether_addr_equal(rec.address, addr)) { rec.status = P80211ENUM_status_successful; break; } @@ -1609,13 +1620,13 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev, case WLAN_ACCESS_DENY: /* - ** Allow the authentication UNLESS the MAC address is - ** in the list of denied addresses. - ** - ** Since this is the interrupt handler, we may be here - ** while the access list is in the middle of being - ** updated. Choose the list which is currently okay. - ** See "prism2mib_priv_accessdeny()" for details. + * Allow the authentication UNLESS the MAC address is + * in the list of denied addresses. + * + * Since this is the interrupt handler, we may be here + * while the access list is in the middle of being + * updated. Choose the list which is currently okay. + * See "prism2mib_priv_accessdeny()" for details. */ if (hw->deny.modify == 0) { @@ -1629,7 +1640,7 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev, rec.status = P80211ENUM_status_successful; for (i = 0; i < cnt; i++, addr += ETH_ALEN) - if (memcmp(rec.address, addr, ETH_ALEN) == 0) { + if (ether_addr_equal(rec.address, addr)) { rec.status = P80211ENUM_status_unspec_failure; break; } @@ -1638,28 +1649,29 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev, } /* - ** If the authentication is okay, then add the MAC address to the - ** list of authenticated stations. Don't add the address if it - ** is already in the list. (802.11b does not seem to disallow - ** a station from issuing an authentication request when the - ** station is already authenticated. Does this sort of thing - ** ever happen? We might as well do the check just in case.) + * If the authentication is okay, then add the MAC address to the + * list of authenticated stations. Don't add the address if it + * is already in the list. (802.11b does not seem to disallow + * a station from issuing an authentication request when the + * station is already authenticated. Does this sort of thing + * ever happen? We might as well do the check just in case.) */ added = 0; if (rec.status == P80211ENUM_status_successful) { for (i = 0; i < hw->authlist.cnt; i++) - if (memcmp(rec.address, hw->authlist.addr[i], ETH_ALEN) - == 0) + if (ether_addr_equal(rec.address, + hw->authlist.addr[i])) break; if (i >= hw->authlist.cnt) { if (hw->authlist.cnt >= WLAN_AUTH_MAX) { rec.status = P80211ENUM_status_ap_full; } else { - ether_addr_copy(hw->authlist.addr[hw->authlist.cnt], - rec.address); + ether_addr_copy( + hw->authlist.addr[hw->authlist.cnt], + rec.address); hw->authlist.cnt++; added = 1; } @@ -1667,9 +1679,9 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev, } /* - ** Send back the results of the authentication. If this doesn't work, - ** then make sure to remove the address from the authenticated list if - ** it was added. + * Send back the results of the authentication. If this doesn't work, + * then make sure to remove the address from the authenticated list if + * it was added. */ rec.status = cpu_to_le16(rec.status); @@ -1686,24 +1698,24 @@ static void prism2sta_inf_authreq_defer(wlandevice_t *wlandev, } } -/*---------------------------------------------------------------- -* prism2sta_inf_psusercnt -* -* Handles the receipt of a PowerSaveUserCount info frame. Should -* be present in APs only. -* -* Arguments: -* wlandev wlan device structure -* inf ptr to info frame (contents in hfa384x order) -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_inf_psusercnt + * + * Handles the receipt of a PowerSaveUserCount info frame. Should + * be present in APs only. + * + * Arguments: + * wlandev wlan device structure + * inf ptr to info frame (contents in hfa384x order) + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ static void prism2sta_inf_psusercnt(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) { @@ -1712,23 +1724,23 @@ static void prism2sta_inf_psusercnt(wlandevice_t *wlandev, hw->psusercount = le16_to_cpu(inf->info.psusercnt.usercnt); } -/*---------------------------------------------------------------- -* prism2sta_ev_info -* -* Handles the Info event. -* -* Arguments: -* wlandev wlan device structure -* inf ptr to a generic info frame -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_ev_info + * + * Handles the Info event. + * + * Arguments: + * wlandev wlan device structure + * inf ptr to a generic info frame + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ void prism2sta_ev_info(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) { inf->infotype = le16_to_cpu(inf->infotype); @@ -1777,46 +1789,46 @@ void prism2sta_ev_info(wlandevice_t *wlandev, hfa384x_InfFrame_t *inf) } } -/*---------------------------------------------------------------- -* prism2sta_ev_txexc -* -* Handles the TxExc event. A Transmit Exception event indicates -* that the MAC's TX process was unsuccessful - so the packet did -* not get transmitted. -* -* Arguments: -* wlandev wlan device structure -* status tx frame status word -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_ev_txexc + * + * Handles the TxExc event. A Transmit Exception event indicates + * that the MAC's TX process was unsuccessful - so the packet did + * not get transmitted. + * + * Arguments: + * wlandev wlan device structure + * status tx frame status word + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ void prism2sta_ev_txexc(wlandevice_t *wlandev, u16 status) { pr_debug("TxExc status=0x%x.\n", status); } -/*---------------------------------------------------------------- -* prism2sta_ev_tx -* -* Handles the Tx event. -* -* Arguments: -* wlandev wlan device structure -* status tx frame status word -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_ev_tx + * + * Handles the Tx event. + * + * Arguments: + * wlandev wlan device structure + * status tx frame status word + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ void prism2sta_ev_tx(wlandevice_t *wlandev, u16 status) { pr_debug("Tx Complete, status=0x%04x\n", status); @@ -1824,49 +1836,49 @@ void prism2sta_ev_tx(wlandevice_t *wlandev, u16 status) wlandev->netdev->stats.tx_packets++; } -/*---------------------------------------------------------------- -* prism2sta_ev_rx -* -* Handles the Rx event. -* -* Arguments: -* wlandev wlan device structure -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_ev_rx + * + * Handles the Rx event. + * + * Arguments: + * wlandev wlan device structure + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ void prism2sta_ev_rx(wlandevice_t *wlandev, struct sk_buff *skb) { p80211netdev_rx(wlandev, skb); } -/*---------------------------------------------------------------- -* prism2sta_ev_alloc -* -* Handles the Alloc event. -* -* Arguments: -* wlandev wlan device structure -* -* Returns: -* nothing -* -* Side effects: -* -* Call context: -* interrupt -----------------------------------------------------------------*/ +/* + * prism2sta_ev_alloc + * + * Handles the Alloc event. + * + * Arguments: + * wlandev wlan device structure + * + * Returns: + * nothing + * + * Side effects: + * + * Call context: + * interrupt + */ void prism2sta_ev_alloc(wlandevice_t *wlandev) { netif_wake_queue(wlandev->netdev); } -/*---------------------------------------------------------------- +/* * create_wlan * * Called at module init time. This creates the wlandevice_t structure @@ -1884,7 +1896,7 @@ void prism2sta_ev_alloc(wlandevice_t *wlandev) * Call context: * process thread * -----------------------------------------------------------------*/ +*/ static wlandevice_t *create_wlan(void) { wlandevice_t *wlandev = NULL; diff --git a/kernel/drivers/staging/wlan-ng/prism2usb.c b/kernel/drivers/staging/wlan-ng/prism2usb.c index e92bbc12b..8abf3f87a 100644 --- a/kernel/drivers/staging/wlan-ng/prism2usb.c +++ b/kernel/drivers/staging/wlan-ng/prism2usb.c @@ -6,7 +6,7 @@ #define PRISM_DEV(vid, pid, name) \ { USB_DEVICE(vid, pid), \ - .driver_info = (unsigned long) name } + .driver_info = (unsigned long)name } static struct usb_device_id usb_prism_tbl[] = { PRISM_DEV(0x04bb, 0x0922, "IOData AirPort WN-B11/USBS"), @@ -136,7 +136,7 @@ static void prism2sta_disconnect_usb(struct usb_interface *interface) { wlandevice_t *wlandev; - wlandev = (wlandevice_t *) usb_get_intfdata(interface); + wlandev = (wlandevice_t *)usb_get_intfdata(interface); if (wlandev != NULL) { LIST_HEAD(cleanlist); struct list_head *entry; @@ -229,7 +229,7 @@ static int prism2sta_suspend(struct usb_interface *interface, hfa384x_t *hw = NULL; wlandevice_t *wlandev; - wlandev = (wlandevice_t *) usb_get_intfdata(interface); + wlandev = (wlandevice_t *)usb_get_intfdata(interface); if (!wlandev) return -ENODEV; @@ -252,7 +252,7 @@ static int prism2sta_resume(struct usb_interface *interface) hfa384x_t *hw = NULL; wlandevice_t *wlandev; - wlandev = (wlandevice_t *) usb_get_intfdata(interface); + wlandev = (wlandevice_t *)usb_get_intfdata(interface); if (!wlandev) return -ENODEV; -- cgit 1.2.3-korg