On Sunday 19 November 2006 01:21, Johannes Berg wrote:
> If hardware shall do scanning, the hw_scan operation must be set. However,
> if the driver is for multiple cards that may or may not do hardware
> scanning, it'll need a flag.
>
> Similar issues arise with passive_scan().
>
> This patch introduces flags to fix these issues.
>
> Signed-off-by: Johannes Berg <[EMAIL PROTECTED]>
>
> ---
> more fallout from my earlier patches... this time it's the scanning ops
> that were still used as flags as well as ops.
>
> --- wireless-dev.orig/include/net/d80211.h 2006-11-19 01:08:12.439520302
> +0100
> +++ wireless-dev/include/net/d80211.h 2006-11-19 01:14:14.859520302 +0100
> @@ -504,6 +504,12 @@ struct ieee80211_wiphy {
> /* do hardware fragmentation */
> #define IEEE80211_HW_FRAG (1<<15)
>
> + /* hardware does scanning instead of software */
> +#define IEEE80211_HW_PASSIVE_SCAN (1<<16)
> +
> + /* hardware does scanning instead of software */
> +#define IEEE80211_HW_SCAN (1<<17)
> +
> u32 flags; /* hardware flags defined above */
>
> /* Set to the size of a needed device specific skb headroom for TX
> skbs. */
> @@ -627,7 +633,8 @@ struct ieee80211_ops {
> struct ieee80211_scan_conf *conf);
>
> /* Ask the hardware to service the scan request, no need to start
> - * the scan state machine in stack. */
> + * the scan state machine in stack.
> + * This callback goes along with the IEEE80211_HW_SCAN flag */
> int (*hw_scan)(struct ieee80211_wiphy *wiphy, u8 *ssid,
> size_t len);
>
> --- wireless-dev.orig/net/d80211/ieee80211_sta.c 2006-11-19
> 01:07:49.509520302 +0100
> +++ wireless-dev/net/d80211/ieee80211_sta.c 2006-11-19 01:18:49.879520302
> +0100
> @@ -2552,7 +2552,7 @@ int ieee80211_sta_req_scan(struct net_de
>
> printk(KERN_DEBUG "%s: starting scan\n", dev->name);
>
> - if (local->ops->hw_scan) {
> + if (local->ops->hw_scan && local->wiphy.flags & IEEE80211_HW_SCAN) {
Please wrap this into ()
(Hm, actually, the compiler should complain on this...)
> int rc = local->ops->hw_scan(local_to_wiphy(local),
> ssid, ssid_len);
> if (!rc) {
> --- wireless-dev.orig/net/d80211/ieee80211_scan.c 2006-11-19
> 01:18:19.249520302 +0100
> +++ wireless-dev/net/d80211/ieee80211_scan.c 2006-11-19 01:18:22.599520302
> +0100
> @@ -114,7 +114,8 @@ static void ieee80211_scan_start(struct
> struct ieee80211_channel *chan = NULL;
> int ret;
>
> - if (!local->hw->passive_scan) {
> + if (!local->ops->passive_scan ||
> + !(local->wiphy.flags & IEEE80211_HW_PASSIVE_SCAN)) {
> printk(KERN_DEBUG "%s: Scan handler called, yet the hardware "
> "does not support passive scanning. Disabled.\n",
> local->mdev->name);
>
>
>
--
Greetings Michael.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html