diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ieee80211/ieee80211_wx.c | 4 | ||||
-rw-r--r-- | net/ieee80211/softmac/ieee80211softmac_module.c | 17 | ||||
-rw-r--r-- | net/ieee80211/softmac/ieee80211softmac_priv.h | 2 | ||||
-rw-r--r-- | net/ieee80211/softmac/ieee80211softmac_wx.c | 12 | ||||
-rw-r--r-- | net/socket.c | 6 |
5 files changed, 27 insertions, 14 deletions
diff --git a/net/ieee80211/ieee80211_wx.c b/net/ieee80211/ieee80211_wx.c index af7f9bbfd18a..b885fd189403 100644 --- a/net/ieee80211/ieee80211_wx.c +++ b/net/ieee80211/ieee80211_wx.c | |||
@@ -42,7 +42,7 @@ static const char *ieee80211_modes[] = { | |||
42 | }; | 42 | }; |
43 | 43 | ||
44 | #define MAX_CUSTOM_LEN 64 | 44 | #define MAX_CUSTOM_LEN 64 |
45 | static char *ipw2100_translate_scan(struct ieee80211_device *ieee, | 45 | static char *ieee80211_translate_scan(struct ieee80211_device *ieee, |
46 | char *start, char *stop, | 46 | char *start, char *stop, |
47 | struct ieee80211_network *network) | 47 | struct ieee80211_network *network) |
48 | { | 48 | { |
@@ -274,7 +274,7 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee, | |||
274 | 274 | ||
275 | if (ieee->scan_age == 0 || | 275 | if (ieee->scan_age == 0 || |
276 | time_after(network->last_scanned + ieee->scan_age, jiffies)) | 276 | time_after(network->last_scanned + ieee->scan_age, jiffies)) |
277 | ev = ipw2100_translate_scan(ieee, ev, stop, network); | 277 | ev = ieee80211_translate_scan(ieee, ev, stop, network); |
278 | else | 278 | else |
279 | IEEE80211_DEBUG_SCAN("Not showing network '%s (" | 279 | IEEE80211_DEBUG_SCAN("Not showing network '%s (" |
280 | MAC_FMT ")' due to age (%dms).\n", | 280 | MAC_FMT ")' due to age (%dms).\n", |
diff --git a/net/ieee80211/softmac/ieee80211softmac_module.c b/net/ieee80211/softmac/ieee80211softmac_module.c index 6f99f781bff8..60f06a31f0d1 100644 --- a/net/ieee80211/softmac/ieee80211softmac_module.c +++ b/net/ieee80211/softmac/ieee80211softmac_module.c | |||
@@ -183,16 +183,21 @@ void ieee80211softmac_start(struct net_device *dev) | |||
183 | */ | 183 | */ |
184 | if (mac->txrates_change) | 184 | if (mac->txrates_change) |
185 | oldrates = mac->txrates; | 185 | oldrates = mac->txrates; |
186 | if (ieee->modulation & IEEE80211_OFDM_MODULATION) { | 186 | /* FIXME: We don't correctly handle backing down to lower |
187 | mac->txrates.default_rate = IEEE80211_OFDM_RATE_54MB; | 187 | rates, so 801.11g devices start off at 11M for now. People |
188 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT; | 188 | can manually change it if they really need to, but 11M is |
189 | mac->txrates.default_fallback = IEEE80211_OFDM_RATE_24MB; | 189 | more reliable. Note similar logic in |
190 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK; | 190 | ieee80211softmac_wx_set_rate() */ |
191 | } else if (ieee->modulation & IEEE80211_CCK_MODULATION) { | 191 | if (ieee->modulation & IEEE80211_CCK_MODULATION) { |
192 | mac->txrates.default_rate = IEEE80211_CCK_RATE_11MB; | 192 | mac->txrates.default_rate = IEEE80211_CCK_RATE_11MB; |
193 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT; | 193 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT; |
194 | mac->txrates.default_fallback = IEEE80211_CCK_RATE_5MB; | 194 | mac->txrates.default_fallback = IEEE80211_CCK_RATE_5MB; |
195 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK; | 195 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK; |
196 | } else if (ieee->modulation & IEEE80211_OFDM_MODULATION) { | ||
197 | mac->txrates.default_rate = IEEE80211_OFDM_RATE_54MB; | ||
198 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT; | ||
199 | mac->txrates.default_fallback = IEEE80211_OFDM_RATE_24MB; | ||
200 | change |= IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK; | ||
196 | } else | 201 | } else |
197 | assert(0); | 202 | assert(0); |
198 | if (mac->txrates_change) | 203 | if (mac->txrates_change) |
diff --git a/net/ieee80211/softmac/ieee80211softmac_priv.h b/net/ieee80211/softmac/ieee80211softmac_priv.h index 9ba7dbd161eb..65d9816c8ecc 100644 --- a/net/ieee80211/softmac/ieee80211softmac_priv.h +++ b/net/ieee80211/softmac/ieee80211softmac_priv.h | |||
@@ -167,7 +167,7 @@ static inline int ieee80211softmac_scan_sanity_check(struct ieee80211softmac_dev | |||
167 | ) || ieee80211softmac_scan_handlers_check_self(sm); | 167 | ) || ieee80211softmac_scan_handlers_check_self(sm); |
168 | } | 168 | } |
169 | 169 | ||
170 | #define IEEE80211SOFTMAC_PROBE_DELAY HZ/2 | 170 | #define IEEE80211SOFTMAC_PROBE_DELAY HZ/50 |
171 | #define IEEE80211SOFTMAC_WORKQUEUE_NAME_LEN (17 + IFNAMSIZ) | 171 | #define IEEE80211SOFTMAC_WORKQUEUE_NAME_LEN (17 + IFNAMSIZ) |
172 | 172 | ||
173 | struct ieee80211softmac_network { | 173 | struct ieee80211softmac_network { |
diff --git a/net/ieee80211/softmac/ieee80211softmac_wx.c b/net/ieee80211/softmac/ieee80211softmac_wx.c index e1a9bc6d36ff..b559aa9b5507 100644 --- a/net/ieee80211/softmac/ieee80211softmac_wx.c +++ b/net/ieee80211/softmac/ieee80211softmac_wx.c | |||
@@ -135,11 +135,15 @@ ieee80211softmac_wx_set_rate(struct net_device *net_dev, | |||
135 | int err = -EINVAL; | 135 | int err = -EINVAL; |
136 | 136 | ||
137 | if (in_rate == -1) { | 137 | if (in_rate == -1) { |
138 | /* automatic detect */ | 138 | /* FIXME: We don't correctly handle backing down to lower |
139 | if (ieee->modulation & IEEE80211_OFDM_MODULATION) | 139 | rates, so 801.11g devices start off at 11M for now. People |
140 | in_rate = 54000000; | 140 | can manually change it if they really need to, but 11M is |
141 | else | 141 | more reliable. Note similar logic in |
142 | ieee80211softmac_wx_set_rate() */ | ||
143 | if (ieee->modulation & IEEE80211_CCK_MODULATION) | ||
142 | in_rate = 11000000; | 144 | in_rate = 11000000; |
145 | else | ||
146 | in_rate = 54000000; | ||
143 | } | 147 | } |
144 | 148 | ||
145 | switch (in_rate) { | 149 | switch (in_rate) { |
diff --git a/net/socket.c b/net/socket.c index fcd77eac0ccf..b13042f68c02 100644 --- a/net/socket.c +++ b/net/socket.c | |||
@@ -119,6 +119,9 @@ static ssize_t sock_writev(struct file *file, const struct iovec *vector, | |||
119 | static ssize_t sock_sendpage(struct file *file, struct page *page, | 119 | static ssize_t sock_sendpage(struct file *file, struct page *page, |
120 | int offset, size_t size, loff_t *ppos, int more); | 120 | int offset, size_t size, loff_t *ppos, int more); |
121 | 121 | ||
122 | extern ssize_t generic_splice_sendpage(struct inode *inode, struct file *out, | ||
123 | size_t len, unsigned int flags); | ||
124 | |||
122 | 125 | ||
123 | /* | 126 | /* |
124 | * Socket files have a set of 'special' operations as well as the generic file ones. These don't appear | 127 | * Socket files have a set of 'special' operations as well as the generic file ones. These don't appear |
@@ -141,7 +144,8 @@ static struct file_operations socket_file_ops = { | |||
141 | .fasync = sock_fasync, | 144 | .fasync = sock_fasync, |
142 | .readv = sock_readv, | 145 | .readv = sock_readv, |
143 | .writev = sock_writev, | 146 | .writev = sock_writev, |
144 | .sendpage = sock_sendpage | 147 | .sendpage = sock_sendpage, |
148 | .splice_write = generic_splice_sendpage, | ||
145 | }; | 149 | }; |
146 | 150 | ||
147 | /* | 151 | /* |