svn commit: r190850 - in head/sys: dev/if_ndis net80211
Sam Leffler
sam at FreeBSD.org
Wed Apr 8 09:19:51 PDT 2009
Author: sam
Date: Wed Apr 8 16:19:50 2009
New Revision: 190850
URL: http://svn.freebsd.org/changeset/base/190850
Log:
o add a capability for drivers that require 802.3 encapsulation of
frames passed down through the transmit path
o mark ndis requiring 802.3 encap'd frames
Reviewed by: "Paul B. Mahol" <onemda at gmail.com>, thompsa
Modified:
head/sys/dev/if_ndis/if_ndis.c
head/sys/net80211/ieee80211_output.c
head/sys/net80211/ieee80211_var.h
Modified: head/sys/dev/if_ndis/if_ndis.c
==============================================================================
--- head/sys/dev/if_ndis/if_ndis.c Wed Apr 8 16:18:16 2009 (r190849)
+++ head/sys/dev/if_ndis/if_ndis.c Wed Apr 8 16:19:50 2009 (r190850)
@@ -753,7 +753,8 @@ ndis_attach(dev)
ic->ic_ifp = ifp;
ic->ic_opmode = IEEE80211_M_STA;
ic->ic_phytype = IEEE80211_T_DS;
- ic->ic_caps = IEEE80211_C_STA | IEEE80211_C_IBSS;
+ ic->ic_caps = IEEE80211_C_8023ENCAP |
+ IEEE80211_C_STA | IEEE80211_C_IBSS;
setbit(ic->ic_modecaps, IEEE80211_MODE_AUTO);
len = 0;
r = ndis_get_info(sc, OID_802_11_NETWORK_TYPES_SUPPORTED,
Modified: head/sys/net80211/ieee80211_output.c
==============================================================================
--- head/sys/net80211/ieee80211_output.c Wed Apr 8 16:18:16 2009 (r190849)
+++ head/sys/net80211/ieee80211_output.c Wed Apr 8 16:19:50 2009 (r190850)
@@ -253,14 +253,16 @@ ieee80211_start(struct ifnet *ifp)
}
}
#endif /* IEEE80211_SUPPORT_SUPERG */
- /*
- * Encapsulate the packet in prep for transmission.
- */
- m = ieee80211_encap(vap, ni, m);
- if (m == NULL) {
- /* NB: stat+msg handled in ieee80211_encap */
- ieee80211_free_node(ni);
- continue;
+ if (__predict_true((vap->iv_caps & IEEE80211_C_8023ENCAP) == 0)) {
+ /*
+ * Encapsulate the packet in prep for transmission.
+ */
+ m = ieee80211_encap(vap, ni, m);
+ if (m == NULL) {
+ /* NB: stat+msg handled in ieee80211_encap */
+ ieee80211_free_node(ni);
+ continue;
+ }
}
/*
Modified: head/sys/net80211/ieee80211_var.h
==============================================================================
--- head/sys/net80211/ieee80211_var.h Wed Apr 8 16:18:16 2009 (r190849)
+++ head/sys/net80211/ieee80211_var.h Wed Apr 8 16:19:50 2009 (r190850)
@@ -532,8 +532,9 @@ MALLOC_DECLARE(M_80211_VAP);
#define IEEE80211_FVEN_BITS "\20"
/* ic_caps/iv_caps: device driver capabilities */
-/* 0x2f available */
+/* 0x2e available */
#define IEEE80211_C_STA 0x00000001 /* CAPABILITY: STA available */
+#define IEEE80211_C_8023ENCAP 0x00000002 /* CAPABILITY: 802.3 encap */
#define IEEE80211_C_FF 0x00000040 /* CAPABILITY: ATH FF avail */
#define IEEE80211_C_TURBOP 0x00000080 /* CAPABILITY: ATH Turbo avail*/
#define IEEE80211_C_IBSS 0x00000100 /* CAPABILITY: IBSS available */
@@ -565,7 +566,7 @@ MALLOC_DECLARE(M_80211_VAP);
IEEE80211_C_TDMA)
#define IEEE80211_C_BITS \
- "\20\1STA\7FF\10TURBOP\11IBSS\12PMGT" \
+ "\20\1STA\002803ENCAP\7FF\10TURBOP\11IBSS\12PMGT" \
"\13HOSTAP\14AHDEMO\15SWRETRY\16TXPMGT\17SHSLOT\20SHPREAMBLE" \
"\21MONITOR\22DFS\30WPA1\31WPA2\32BURST\33WME\34WDS\36BGSCAN" \
"\37TXFRAG\40TDMA"
More information about the svn-src-head
mailing list