Re: [PATCH] Re: Problem with Kernel Oops in ipw2200

reinette chatre <[email protected]> Fri, 21 Nov 2008 11:39:57 -0800
Newsgroups gmane.linux.kernel.wireless.general,gmane.linux.drivers.ipw2100.devel
Message-ID <1227296397.13619.33.camel@rc-desk>
On Mon, 2008-11-17 at 02:48 -0800, Frank Seidel wrote:
> From: Zhu Yi <[email protected]>
> 
> Fixes Oops in ipw2200:ipw_tx_skb when pinging through
> a WPA enterprise connection.
> 
> Signed-off-by: Zhu Yi <[email protected]>
> Tested-by: Frank Seidel <[email protected]>
> Signed-off-by: Ffrank Seidel <[email protected]>
> 
> ---
>  drivers/net/wireless/ipw2200.c |    5 +++++
>  1 file changed, 5 insertions(+)
> 
> --- a/drivers/net/wireless/ipw2200.c
> +++ b/drivers/net/wireless/ipw2200.c
> @@ -10190,6 +10190,11 @@ static int ipw_tx_skb(struct ipw_priv *p
>         u16 remaining_bytes;
>         int fc;
> 
> +       if (!(priv->status & STATUS_ASSOCIATED)) {
> +               IPW_DEBUG_TX("Tx attempt while not associated.\n");
> +               goto drop;
> +       }
> +
>         hdr_len = ieee80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl));
>         switch (priv->ieee->iw_mode) {
>         case IW_MODE_ADHOC:
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Frank,

The patch above was not accepted. Would it be possible for you to try
the patch below instead? Thank you very much.

diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c
b/drivers/net/wireless/ipw2x00/ipw2200.c
index c73173a..768bbde 100644
--- a/drivers/net/wireless/ipw2x00/ipw2200.c
+++ b/drivers/net/wireless/ipw2x00/ipw2200.c
@@ -189,6 +189,7 @@ static int ipw_up(struct ipw_priv *);
 static void ipw_bg_up(struct work_struct *work);
 static void ipw_down(struct ipw_priv *);
 static void ipw_bg_down(struct work_struct *work);
+static void ipw_link_down(struct ipw_priv *priv);
 static int ipw_config(struct ipw_priv *);
 static int init_supported_rates(struct ipw_priv *priv,
 				struct ipw_supported_rates *prates);
@@ -3897,6 +3898,7 @@ static int ipw_disassociate(void *data)
 	if (!(priv->status & (STATUS_ASSOCIATED | STATUS_ASSOCIATING)))
 		return 0;
 	ipw_send_disassociate(data, 0);
+	ipw_link_down(data);
 	return 1;
 }
 




--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html