Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jul 2011 14:10:11 +0200
From:      Monthadar Al Jaberi <monthadar@gmail.com>
To:        Adrian Chadd <adrian@freebsd.org>
Cc:        freebsd-wireless@freebsd.org
Subject:   Re: Ack, Net80211 & ath
Message-ID:  <CA%2BsBSoLY45Qthc9cP%2BFX9OTEEQu7N1jOA5Jvo13%2BcQKzC9KgVg@mail.gmail.com>
In-Reply-To: <CAJ-VmokS4TuTA7-vhB=tTSwhmnxnbAR94y_wHEo8L_v61LB1DQ@mail.gmail.com>
References:  <CA%2BsBSoLmGGZBWLSFbm9kh9YoRa4NO_wkx_330f_U7U7SH8s%2BkA@mail.gmail.com> <CAJ-Vmo=F9LhJaVoQT1t%2BTV-KCPh_D%2BnmH2BGNW=FkFBAzc7Mig@mail.gmail.com> <CA%2BsBSoKjviQyx5KbQrMrF_7LoJx3zeyV0=gXB1RrV==PXd4S_A@mail.gmail.com> <CA%2BsBSoK_0M92O13Xz96FJ-jHgGuE8xc%2BeMDRc6u5=NUEH97=TA@mail.gmail.com> <CAJ-Vmo=2EmcGYcCagXwXZARPFy5sQzDCSGG0V09kb8SM-j2YUQ@mail.gmail.com> <CA%2BsBSoJcSitMFTuGExuDJkv7zJOq6CBnnyRnncr=X0H1Pqy2Rw@mail.gmail.com> <CAJ-VmokKfjdJ=9xro4G1%2B2P59A3nzQsF4TKrw_dziXnn5Ji3og@mail.gmail.com> <CA%2BsBSo%2B-JL==P5HY%2BHWvA=mb6V3HOe1CxbEwbTfUXQ%2ByGOAjQA@mail.gmail.com> <CAJ-VmokS4TuTA7-vhB=tTSwhmnxnbAR94y_wHEo8L_v61LB1DQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Here is something, one should also implement the amrr_tx_complete() or
ammr_tx_update() approch and see how everything react.

anyone can test this? =)

diff --git a/sys/net80211/ieee80211_mesh.c b/sys/net80211/ieee80211_mesh.c
index 571a733..08e1764 100644
--- a/sys/net80211/ieee80211_mesh.c
+++ b/sys/net80211/ieee80211_mesh.c
@@ -709,6 +709,18 @@ mesh_rt_cleanup_cb(void *arg)
 	    mesh_rt_cleanup_cb, vap);
 }

+static void
+ieee80211_mesh_tx_cb(struct ieee80211_node *ni, void *arg, int status)
+{
+	if(status)
+		mesh_linkchange(ni, IEEE80211_NODE_MESH_HOLDING);
+}
+void
+ieee80211_mesh_add_callback(struct mbuf *m)
+{
+	ieee80211_add_callback(m, ieee80211_mesh_tx_cb, NULL);
+}
+

 /*
  * Helper function to note the Mesh Peer Link FSM change.
diff --git a/sys/net80211/ieee80211_mesh.h b/sys/net80211/ieee80211_mesh.h
index ad1b02a..4f012e5 100644
--- a/sys/net80211/ieee80211_mesh.h
+++ b/sys/net80211/ieee80211_mesh.h
@@ -473,6 +473,7 @@ void		ieee80211_mesh_init_neighbor(struct ieee80211_node *,
 		   const struct ieee80211_scanparams *);
 void		ieee80211_mesh_update_beacon(struct ieee80211vap *,
 		    struct ieee80211_beacon_offsets *);
+void		ieee80211_mesh_add_callback(struct mbuf *);

 /*
  * Return non-zero if proxy operation is enabled.
diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c
index 6020144..6a34731 100644
--- a/sys/net80211/ieee80211_output.c
+++ b/sys/net80211/ieee80211_output.c
@@ -271,6 +271,7 @@ ieee80211_start(struct ifnet *ifp)
 				ifp->if_oerrors++;
 				continue;
 			}
+			ieee80211_mesh_add_callback(m); /* XXX: right place? */
 		}
 #endif
 		if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) &&



On Wed, Jul 27, 2011 at 2:19 PM, Adrian Chadd <adrian@freebsd.org> wrote:
> On 27 July 2011 20:14, Monthadar Al Jaberi <monthadar@gmail.com> wrote:
>> not from what I can see, it overides vap->iv_input and vap->iv_recv_mgmt
>>
>> but not vap->iv_output...
>>
>> in ieee80211_start there is #ifdef IEEE80211_SUPPORT_MESH
>>
>> :S
>>
>> Okej for ieee80211_mgmt_output I see that mesh_send_action call it, so
>> I can put one callback there...
>
> I'll leave it up to you :) I'm knee-deep in ANI and radar detection
> code at the moment.
>
>
> Adrian
>



-- 
//Monthadar Al Jaberi



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BsBSoLY45Qthc9cP%2BFX9OTEEQu7N1jOA5Jvo13%2BcQKzC9KgVg>