#ifndef __NET_CFG80211_H #define __NET_CFG80211_H /* * 802.11 device and configuration interface * * Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net> * Copyright 2013-2014 Intel Mobile Communications GmbH * Copyright 2015 Intel Deutschland GmbH * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #include <linux/netdevice.h> #include <linux/debugfs.h> #include <linux/list.h> #include <linux/bug.h> #include <linux/netlink.h> #include <linux/skbuff.h> #include <linux/nl80211.h> #include <linux/if_ether.h> #include <linux/ieee80211.h> #include <linux/net.h> #include <net/regulatory.h> /** * DOC: Introduction * * cfg80211 is the configuration API for 802.11 devices in Linux. It bridges * userspace and drivers, and offers some utility functionality associated * with 802.11. cfg80211 must, directly or indirectly via mac80211, be used * by all modern wireless drivers in Linux, so that they offer a consistent * API through nl80211. For backward compatibility, cfg80211 also offers * wireless extensions to userspace, but hides them from drivers completely. * * Additionally, cfg80211 contains code to help enforce regulatory spectrum * use restrictions. */ /** * DOC: Device registration * * In order for a driver to use cfg80211, it must register the hardware device * with cfg80211. This happens through a number of hardware capability structs * described below. * * The fundamental structure for each device is the 'wiphy', of which each * instance describes a physical wireless device connected to the system. Each * such wiphy can have zero, one, or many virtual interfaces associated with * it, which need to be identified as such by pointing the network interface's * @ieee80211_ptr pointer to a &struct wireless_dev which further describes * the wireless part of the interface, normally this struct is embedded in the * network interface's private data area. Drivers can optionally allow creating * or destroying virtual interfaces on the fly, but without at least one or the * ability to create some the wireless device isn't useful. * * Each wiphy structure contains device capability information, and also has * a pointer to the various operations the driver offers. The definitions and * structures here describe these capabilities in detail. */ struct wiphy; /* * wireless hardware capability structures */ /** * enum ieee80211_channel_flags - channel flags * * Channel flags set by the regulatory control code. * * @IEEE80211_CHAN_DISABLED: This channel is disabled. * @IEEE80211_CHAN_NO_IR: do not initiate radiation, this includes * sending probe requests or beaconing. * @IEEE80211_CHAN_RADAR: Radar detection is required on this channel. * @IEEE80211_CHAN_NO_HT40PLUS: extension channel above this channel * is not permitted. * @IEEE80211_CHAN_NO_HT40MINUS: extension channel below this channel * is not permitted. * @IEEE80211_CHAN_NO_OFDM: OFDM is not allowed on this channel. * @IEEE80211_CHAN_NO_80MHZ: If the driver supports 80 MHz on the band, * this flag indicates that an 80 MHz channel cannot use this * channel as the control or any of the secondary channels. * This may be due to the driver or due to regulatory bandwidth * restrictions. * @IEEE80211_CHAN_NO_160MHZ: If the driver supports 160 MHz on the band, * this flag indicates that an 160 MHz channel cannot use this * channel as the control or any of the secondary channels. * This may be due to the driver or due to regulatory bandwidth * restrictions. * @IEEE80211_CHAN_INDOOR_ONLY: see %NL80211_FREQUENCY_ATTR_INDOOR_ONLY * @IEEE80211_CHAN_IR_CONCURRENT: see %NL80211_FREQUENCY_ATTR_IR_CONCURRENT * @IEEE80211_CHAN_NO_20MHZ: 20 MHz bandwidth is not permitted * on this channel. * @IEEE80211_CHAN_NO_10MHZ: 10 MHz bandwidth is not permitted * on this channel. * */ enum ieee80211_channel_flags { IEEE80211_CHAN_DISABLED = 1<<0, IEEE80211_CHAN_NO_IR = 1<<1, /* hole at 1<<2 */ IEEE80211_CHAN_RADAR = 1<<3, IEEE80211_CHAN_NO_HT40PLUS = 1<<4, IEEE80211_CHAN_NO_HT40MINUS = 1<<5, IEEE80211_CHAN_NO_OFDM = 1<<6, IEEE80211_CHAN_NO_80MHZ = 1<<7, IEEE80211_CHAN_NO_160MHZ = 1<<8, IEEE80211_CHAN_INDOOR_ONLY = 1<<9, IEEE80211_CHAN_IR_CONCURRENT = 1<<10, IEEE80211_CHAN_NO_20MHZ = 1<<11, IEEE80211_CHAN_NO_10MHZ = 1<<12, }; #define IEEE80211_CHAN_NO_HT40 \ (IEEE80211_CHAN_NO_HT40PLUS | IEEE80211_CHAN_NO_HT40MINUS) #define IEEE80211_DFS_MIN_CAC_TIME_MS 60000 #define IEEE80211_DFS_MIN_NOP_TIME_MS (30 * 60 * 1000) /** * struct ieee80211_channel - channel definition * * This structure describes a single channel for use * with cfg80211. * * @center_freq: center frequency in MHz * @hw_value: hardware-specific value for the channel * @flags: channel flags from &enum ieee80211_channel_flags. * @orig_flags: channel flags at registration time, used by regulatory * code to support devices with additional restrictions * @band: band this channel belongs to. * @max_antenna_gain: maximum antenna gain in dBi * @max_power: maximum transmission power (in dBm) * @max_reg_power: maximum regulatory transmission power (in dBm) * @beacon_found: helper to regulatory code to indicate when a beacon * has been found on this channel. Use regulatory_hint_found_beacon() * to enable this, this is useful only on 5 GHz band. * @orig_mag: internal use * @orig_mpwr: internal use * @dfs_state: current state of this channel. Only relevant if radar is required * on this channel. * @dfs_state_entered: timestamp (jiffies) when the dfs state was entered. * @dfs_cac_ms: DFS CAC time in milliseconds, this is valid for DFS channels. */ struct ieee80211_channel { enum nl80211_band band; u16 center_freq; u16 hw_value; u32 flags; int max_antenna_gain; int max_power; int max_reg_power; bool beacon_found; u32 orig_flags; int orig_mag, orig_mpwr; enum nl80211_dfs_state dfs_state; unsigned long dfs_state_entered; unsigned int dfs_cac_ms; }; /** * enum ieee80211_rate_flags - rate flags * * Hardware/specification flags for rates. These are structured * in a way that allows using the same bitrate structure for * different bands/PHY modes. * * @IEEE80211_RATE_SHORT_PREAMBLE: Hardware can send with short * preamble on this bitrate; only relevant in 2.4GHz band and * with CCK rates. * @IEEE80211_RATE_MANDATORY_A: This bitrate is a mandatory rate * when used with 802.11a (on the 5 GHz band); filled by the * core code when registering the wiphy. * @IEEE80211_RATE_MANDATORY_B: This bitrate is a mandatory rate * when used with 802.11b (on the 2.4 GHz band); filled by the * core code when registering the wiphy. * @IEEE80211_RATE_MANDATORY_G: This bitrate is a mandatory rate * when used with 802.11g (on the 2.4 GHz band); filled by the * core code when registering the wiphy. * @IEEE80211_RATE_ERP_G: This is an ERP rate in 802.11g mode. * @IEEE80211_RATE_SUPPORTS_5MHZ: Rate can be used in 5 MHz mode * @IEEE80211_RATE_SUPPORTS_10MHZ: Rate can be used in 10 MHz mode */ enum ieee80211_rate_flags { IEEE80211_RATE_SHORT_PREAMBLE = 1<<0, IEEE80211_RATE_MANDATORY_A = 1<<1, IEEE80211_RATE_MANDATORY_B = 1<<2, IEEE80211_RATE_MANDATORY_G = 1<<3, IEEE80211_RATE_ERP_G = 1<<4, IEEE80211_RATE_SUPPORTS_5MHZ = 1<<5, IEEE80211_RATE_SUPPORTS_10MHZ = 1<<6, }; /** * enum ieee80211_bss_type - BSS type filter * * @IEEE80211_BSS_TYPE_ESS: Infrastructure BSS * @IEEE80211_BSS_TYPE_PBSS: Personal BSS * @IEEE80211_BSS_TYPE_IBSS: Independent BSS * @IEEE80211_BSS_TYPE_MBSS: Mesh BSS * @IEEE80211_BSS_TYPE_ANY: Wildcard value for matching any BSS type */ enum ieee80211_bss_type { IEEE80211_BSS_TYPE_ESS, IEEE80211_BSS_TYPE_PBSS, IEEE80211_BSS_TYPE_IBSS, IEEE80211_BSS_TYPE_MBSS, IEEE80211_BSS_TYPE_ANY }; /** * enum ieee80211_privacy - BSS privacy filter * * @IEEE80211_PRIVACY_ON: privacy bit set * @IEEE80211_PRIVACY_OFF: privacy bit clear * @IEEE80211_PRIVACY_ANY: Wildcard value for matching any privacy setting */ enum ieee80211_privacy { IEEE80211_PRIVACY_ON, IEEE80211_PRIVACY_OFF, IEEE80211_PRIVACY_ANY }; #define IEEE80211_PRIVACY(x) \ ((x) ? IEEE80211_PRIVACY_ON : IEEE80211_PRIVACY_OFF) /** * struct ieee80211_rate - bitrate definition * * This structure describes a bitrate that an 802.11 PHY can * operate with. The two values @hw_value and @hw_value_short * are only for driver use when pointers to this structure are * passed around. * * @flags: rate-specific flags * @bitrate: bitrate in units of 100 Kbps * @hw_value: driver/hardware value for this rate * @hw_value_short: driver/hardware value for this rate when * short preamble is used */ struct ieee80211_rate { u32 flags; u16 bitrate; u16 hw_value, hw_value_short; }; /** * struct ieee80211_sta_ht_cap - STA's HT capabilities * * This structure describes most essential parameters needed * to describe 802.11n HT capabilities for an STA. * * @ht_supported: is HT supported by the STA * @cap: HT capabilities map as described in 802.11n spec * @ampdu_factor: Maximum A-MPDU length factor * @ampdu_density: Minimum A-MPDU spacing * @mcs: Supported MCS rates */ struct ieee80211_sta_ht_cap { u16 cap; /* use IEEE80211_HT_CAP_ */ bool ht_supported; u8 ampdu_factor; u8 ampdu_density; struct ieee80211_mcs_info mcs; }; /** * struct ieee80211_sta_vht_cap - STA's VHT capabilities * * This structure describes most essential parameters needed * to describe 802.11ac VHT capabilities for an STA. * * @vht_supported: is VHT supported by the STA * @cap: VHT capabilities map as described in 802.11ac spec * @vht_mcs: Supported VHT MCS rates */ struct ieee80211_sta_vht_cap { bool vht_supported; u32 cap; /* use IEEE80211_VHT_CAP_ */ struct ieee80211_vht_mcs_info vht_mcs; }; /** * struct ieee80211_supported_band - frequency band definition * * This structure describes a frequency band a wiphy * is able to operate in. * * @channels: Array of channels the hardware can operate in * in this band. * @band: the band this structure represents * @n_channels: Number of channels in @channels * @bitrates: Array of bitrates the hardware can operate with * in this band. Must be sorted to give a valid "supported * rates" IE, i.e. CCK rates first, then OFDM. * @n_bitrates: Number of bitrates in @bitrates * @ht_cap: HT capabilities in this band * @vht_cap: VHT capabilities in this band */ struct ieee80211_supported_band { struct ieee80211_channel *channels; struct ieee80211_rate *bitrates; enum nl80211_band band; int n_channels; int n_bitrates; struct ieee80211_sta_ht_cap ht_cap; struct ieee80211_sta_vht_cap vht_cap; }; /* * Wireless hardware/device configuration structures and methods */ /** * DOC: Actions and configuration * * Each wireless device and each virtual interface offer a set of configuration * operations and other actions that are invoked by userspace. Each of these * actions is described in the operations structure, and the parameters these * operations use are described separately. * * Additionally, some operations are asynchronous and expect to get status * information via some functions that drivers need to call. * * Scanning and BSS list handling with its associated functionality is described * in a separate chapter. */ /** * struct vif_params - describes virtual interface parameters * @use_4addr: use 4-address frames * @macaddr: address to use for this virtual interface. * If this parameter is set to zero address the driver may * determine the address as needed. * This feature is only fully supported by drivers that enable the * %NL80211_FEATURE_MAC_ON_CREATE flag. Others may support creating ** only p2p devices with specified MAC. */ struct vif_params { int use_4addr; u8 macaddr[ETH_ALEN]; }; /** * struct key_params - key information * * Information about a key * * @key: key material * @key_len: length of key material * @cipher: cipher suite selector * @seq: sequence counter (IV/PN) for TKIP and CCMP keys, only used * with the get_key() callback, must be in little endian, * length given by @seq_len. * @seq_len: length of @seq. */ struct key_params { const u8 *key; const u8 *seq; int key_len; int seq_len; u32 cipher; }; /** * struct cfg80211_chan_def - channel definition * @chan: the (control) channel * @width: channel width * @center_freq1: center frequency of first segment * @center_freq2: center frequency of second segment * (only with 80+80 MHz) */ struct cfg80211_chan_def { struct ieee80211_channel *chan; enum nl80211_chan_width width; u32 center_freq1; u32 center_freq2; }; /** * cfg80211_get_chandef_type - return old channel type from chandef * @chandef: the channel definition * * Return: The old channel type (NOHT, HT20, HT40+/-) from a given * chandef, which must have a bandwidth allowing this conversion. */
static inline enum nl80211_channel_type cfg80211_get_chandef_type(const struct cfg80211_chan_def *chandef) { switch (chandef->width) { case NL80211_CHAN_WIDTH_20_NOHT: return NL80211_CHAN_NO_HT; case NL80211_CHAN_WIDTH_20: return NL80211_CHAN_HT20; case NL80211_CHAN_WIDTH_40: if (chandef->center_freq1 > chandef->chan->center_freq) return NL80211_CHAN_HT40PLUS; return NL80211_CHAN_HT40MINUS; default: WARN_ON(1); return NL80211_CHAN_NO_HT; } }Contributors
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 64 | 100.00% | 2 | 100.00% |
Total | 64 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 54 | 100.00% | 1 | 100.00% |
Total | 54 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
simon wunderlich | simon wunderlich | 38 | 100.00% | 1 | 100.00% |
Total | 38 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
simon wunderlich | simon wunderlich | 71 | 100.00% | 1 | 100.00% |
Total | 71 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 72 | 100.00% | 1 | 100.00% |
Total | 72 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 19 | 82.61% | 1 | 50.00% |
eric dumazet | eric dumazet | 4 | 17.39% | 1 | 50.00% |
Total | 23 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 22 | 81.48% | 1 | 50.00% |
eric dumazet | eric dumazet | 5 | 18.52% | 1 | 50.00% |
Total | 27 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 25 | 100.00% | 1 | 100.00% |
Total | 25 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
david kilroy | david kilroy | 30 | 100.00% | 1 | 100.00% |
Total | 30 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 25 | 100.00% | 1 | 100.00% |
Total | 25 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 21 | 100.00% | 1 | 100.00% |
Total | 21 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 23 | 95.83% | 1 | 50.00% |
joe perches | joe perches | 1 | 4.17% | 1 | 50.00% |
Total | 24 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
ben greear | ben greear | 28 | 100.00% | 1 | 100.00% |
Total | 28 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 31 | 100.00% | 1 | 100.00% |
Total | 31 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 27 | 100.00% | 1 | 100.00% |
Total | 27 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 25 | 100.00% | 1 | 100.00% |
Total | 25 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
dmitry shmidt | dmitry shmidt | 44 | 59.46% | 1 | 25.00% |
johannes berg | johannes berg | 24 | 32.43% | 1 | 25.00% |
simon wunderlich | simon wunderlich | 5 | 6.76% | 1 | 25.00% |
emmanuel grumbach | emmanuel grumbach | 1 | 1.35% | 1 | 25.00% |
Total | 74 | 100.00% | 4 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
simon wunderlich | simon wunderlich | 45 | 64.29% | 1 | 33.33% |
dmitry shmidt | dmitry shmidt | 24 | 34.29% | 1 | 33.33% |
emmanuel grumbach | emmanuel grumbach | 1 | 1.43% | 1 | 33.33% |
Total | 70 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
dmitry shmidt | dmitry shmidt | 54 | 52.94% | 1 | 16.67% |
jussi kivilinna | jussi kivilinna | 37 | 36.27% | 1 | 16.67% |
johannes berg | johannes berg | 5 | 4.90% | 2 | 33.33% |
simon wunderlich | simon wunderlich | 5 | 4.90% | 1 | 16.67% |
emmanuel grumbach | emmanuel grumbach | 1 | 0.98% | 1 | 16.67% |
Total | 102 | 100.00% | 6 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
simon wunderlich | simon wunderlich | 67 | 68.37% | 1 | 25.00% |
dmitry shmidt | dmitry shmidt | 24 | 24.49% | 1 | 25.00% |
johannes berg | johannes berg | 6 | 6.12% | 1 | 25.00% |
emmanuel grumbach | emmanuel grumbach | 1 | 1.02% | 1 | 25.00% |
Total | 98 | 100.00% | 4 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 43 | 95.56% | 1 | 50.00% |
dedy lansky | dedy lansky | 2 | 4.44% | 1 | 50.00% |
Total | 45 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
simon wunderlich | simon wunderlich | 38 | 100.00% | 1 | 100.00% |
Total | 38 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 29 | 100.00% | 1 | 100.00% |
Total | 29 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 39 | 84.78% | 1 | 50.00% |
ahmad kholaif | ahmad kholaif | 7 | 15.22% | 1 | 50.00% |
Total | 46 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 22 | 100.00% | 1 | 100.00% |
Total | 22 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 29 | 100.00% | 2 | 100.00% |
Total | 29 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 18 | 100.00% | 2 | 100.00% |
Total | 18 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 37 | 94.87% | 2 | 66.67% |
ahmad kholaif | ahmad kholaif | 2 | 5.13% | 1 | 33.33% |
Total | 39 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 22 | 100.00% | 2 | 100.00% |
Total | 22 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
vidyullatha kanchanapally | vidyullatha kanchanapally | 60 | 100.00% | 1 | 100.00% |
Total | 60 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 31 | 100.00% | 1 | 100.00% |
Total | 31 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 44 | 100.00% | 2 | 100.00% |
Total | 44 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
gautam kumar shukla | gautam kumar shukla | 42 | 100.00% | 1 | 100.00% |
Total | 42 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
gautam kumar shukla | gautam kumar shukla | 44 | 100.00% | 1 | 100.00% |
Total | 44 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
johannes berg | johannes berg | 4456 | 46.18% | 164 | 38.68% |
jouni malinen | jouni malinen | 945 | 9.79% | 40 | 9.43% |
simon wunderlich | simon wunderlich | 492 | 5.10% | 14 | 3.30% |
luis carlos cobo rus | luis carlos cobo rus | 274 | 2.84% | 1 | 0.24% |
samuel ortiz | samuel ortiz | 253 | 2.62% | 2 | 0.47% |
luciano coelho | luciano coelho | 243 | 2.52% | 10 | 2.36% |
dmitry shmidt | dmitry shmidt | 235 | 2.44% | 1 | 0.24% |
arik nemtsov | arik nemtsov | 194 | 2.01% | 9 | 2.12% |
joe perches | joe perches | 178 | 1.84% | 2 | 0.47% |
yi zhu | yi zhu | 118 | 1.22% | 2 | 0.47% |
arend van spriel | arend van spriel | 102 | 1.06% | 4 | 0.94% |
gautam kumar shukla | gautam kumar shukla | 99 | 1.03% | 1 | 0.24% |
vasanthakumar thiagarajan | vasanthakumar thiagarajan | 98 | 1.02% | 4 | 0.94% |
henning rogge | henning rogge | 95 | 0.98% | 2 | 0.47% |
amitkumar karwar | amitkumar karwar | 91 | 0.94% | 3 | 0.71% |
kyeyoon park | kyeyoon park | 89 | 0.92% | 1 | 0.24% |
colin mccabe | colin mccabe | 86 | 0.89% | 1 | 0.24% |
ben greear | ben greear | 80 | 0.83% | 5 | 1.18% |
javier cardona | javier cardona | 75 | 0.78% | 11 | 2.59% |
felix fietkau | felix fietkau | 74 | 0.77% | 10 | 2.36% |
michal kazior | michal kazior | 71 | 0.74% | 5 | 1.18% |
thomas pedersen | thomas pedersen | 69 | 0.72% | 7 | 1.65% |
vidyullatha kanchanapally | vidyullatha kanchanapally | 68 | 0.70% | 1 | 0.24% |
andrei otcheretianski | andrei otcheretianski | 62 | 0.64% | 3 | 0.71% |
rostislav lisovy | rostislav lisovy | 61 | 0.63% | 2 | 0.47% |
eliad peller | eliad peller | 56 | 0.58% | 7 | 1.65% |
bruno randolf | bruno randolf | 56 | 0.58% | 6 | 1.42% |
antonio quartulli | antonio quartulli | 54 | 0.56% | 5 | 1.18% |
holger schurig | holger schurig | 51 | 0.53% | 2 | 0.47% |
paul stewart | paul stewart | 45 | 0.47% | 2 | 0.47% |
wey-yi guy | wey-yi guy | 42 | 0.44% | 1 | 0.24% |
michael wu | michael wu | 42 | 0.44% | 1 | 0.24% |
jussi kivilinna | jussi kivilinna | 41 | 0.42% | 2 | 0.47% |
dedy lansky | dedy lansky | 41 | 0.42% | 1 | 0.24% |
juuso oikarinen | juuso oikarinen | 40 | 0.41% | 2 | 0.47% |
david kilroy | david kilroy | 32 | 0.33% | 3 | 0.71% |
avraham stern | avraham stern | 31 | 0.32% | 1 | 0.24% |
yacine belkadi | yacine belkadi | 30 | 0.31% | 1 | 0.24% |
marco porsch | marco porsch | 29 | 0.30% | 2 | 0.47% |
janusz dziedzic | janusz dziedzic | 26 | 0.27% | 6 | 1.42% |
luis r. rodriguez | luis r. rodriguez | 26 | 0.27% | 7 | 1.65% |
mahesh palivela | mahesh palivela | 26 | 0.27% | 2 | 0.47% |
pandiyarajan pitchaimuthu | pandiyarajan pitchaimuthu | 22 | 0.23% | 1 | 0.24% |
andy green | andy green | 20 | 0.21% | 1 | 0.24% |
ashok nagarajan | ashok nagarajan | 19 | 0.20% | 4 | 0.94% |
kanchanapally, vidyullatha | kanchanapally, vidyullatha | 17 | 0.18% | 1 | 0.24% |
chun-yeow yeoh | chun-yeow yeoh | 17 | 0.18% | 4 | 0.94% |
david spinadel | david spinadel | 16 | 0.17% | 2 | 0.47% |
ilan peer | ilan peer | 16 | 0.17% | 2 | 0.47% |
sunil dutt | sunil dutt | 16 | 0.17% | 1 | 0.24% |
kalle valo | kalle valo | 15 | 0.16% | 3 | 0.71% |
jonathan doron | jonathan doron | 15 | 0.16% | 1 | 0.24% |
ahmad kholaif | ahmad kholaif | 15 | 0.16% | 1 | 0.24% |
sam leffler | sam leffler | 14 | 0.15% | 2 | 0.47% |
lior david | lior david | 12 | 0.12% | 1 | 0.24% |
alexander simon | alexander simon | 11 | 0.11% | 1 | 0.24% |
lukas turek | lukas turek | 9 | 0.09% | 1 | 0.24% |
emmanuel grumbach | emmanuel grumbach | 9 | 0.09% | 3 | 0.71% |
eric dumazet | eric dumazet | 9 | 0.09% | 1 | 0.24% |
assaf krauss | assaf krauss | 8 | 0.08% | 1 | 0.24% |
mohammed shafi shajakhan | mohammed shafi shajakhan | 8 | 0.08% | 2 | 0.47% |
jukka rissanen | jukka rissanen | 7 | 0.07% | 2 | 0.47% |
stanislaw gruszka | stanislaw gruszka | 7 | 0.07% | 2 | 0.47% |
colleen twitty | colleen twitty | 7 | 0.07% | 2 | 0.47% |
helmut schaa | helmut schaa | 7 | 0.07% | 2 | 0.47% |
vladimir kondratiev | vladimir kondratiev | 7 | 0.07% | 5 | 1.18% |
lorenzo bianconi | lorenzo bianconi | 7 | 0.07% | 1 | 0.24% |
ayala beker | ayala beker | 7 | 0.07% | 2 | 0.47% |
marek kwaczynski | marek kwaczynski | 6 | 0.06% | 1 | 0.24% |
seth forshee | seth forshee | 6 | 0.06% | 1 | 0.24% |
vivek natarajan | vivek natarajan | 6 | 0.06% | 1 | 0.24% |
rui paulo | rui paulo | 6 | 0.06% | 2 | 0.47% |
yogesh ashok powar | yogesh ashok powar | 4 | 0.04% | 1 | 0.24% |
tom gundersen | tom gundersen | 4 | 0.04% | 1 | 0.24% |
paul gortmaker | paul gortmaker | 3 | 0.03% | 1 | 0.24% |
sunil dutt undekari | sunil dutt undekari | 3 | 0.03% | 1 | 0.24% |
teemu paasikivi | teemu paasikivi | 3 | 0.03% | 1 | 0.24% |
hong wu | hong wu | 3 | 0.03% | 1 | 0.24% |
bala shanmugam | bala shanmugam | 3 | 0.03% | 1 | 0.24% |
rajkumar manoharan | rajkumar manoharan | 3 | 0.03% | 1 | 0.24% |
robert p. j. day | robert p. j. day | 2 | 0.02% | 2 | 0.47% |
eric w. biederman | eric w. biederman | 2 | 0.02% | 2 | 0.47% |
jiri pirko | jiri pirko | 1 | 0.01% | 1 | 0.24% |
akira moroo | akira moroo | 1 | 0.01% | 1 | 0.24% |
Total | 9649 | 100.00% | 424 | 100.00% |