svn commit: r243622 - head/sys/dev/iwn

2012-11-27 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Nov 27 19:09:36 2012
New Revision: 243622
URL: http://svnweb.freebsd.org/changeset/base/243622

Log:
  fix a panic resulting from a stray ''
  
  MFC after:1 week

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Tue Nov 27 19:07:28 2012(r243621)
+++ head/sys/dev/iwn/if_iwn.c   Tue Nov 27 19:09:36 2012(r243622)
@@ -1253,7 +1253,7 @@ iwn_dma_contig_free(struct iwn_dma_info 
bus_dmamap_sync(dma-tag, dma-map,
BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
bus_dmamap_unload(dma-tag, dma-map);
-   bus_dmamem_free(dma-tag, dma-vaddr, dma-map);
+   bus_dmamem_free(dma-tag, dma-vaddr, dma-map);
dma-vaddr = NULL;
}
bus_dmamap_destroy(dma-tag, dma-map);
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r239641 - releng/9.1/sys/net80211

2012-08-24 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Aug 24 06:56:44 2012
New Revision: 239641
URL: http://svn.freebsd.org/changeset/base/239641

Log:
  MFC r231187:
  Update the 802.11s IE numbers to represent the latest 802.11 amendment
  standard.
  
  This update breaks compatibility with older mesh setups but is necessary as
  the previous IDs are used by another amendment leading to unexpected results
  when trying to associate with an accesspoint using the affected IDs.
  
  Approved by:  re (kib)

Modified:
  releng/9.1/sys/net80211/ieee80211.h
Directory Properties:
  releng/9.1/sys/   (props changed)

Modified: releng/9.1/sys/net80211/ieee80211.h
==
--- releng/9.1/sys/net80211/ieee80211.h Fri Aug 24 06:55:16 2012
(r239640)
+++ releng/9.1/sys/net80211/ieee80211.h Fri Aug 24 06:56:44 2012
(r239641)
@@ -709,27 +709,32 @@ enum {
IEEE80211_ELEMID_VENDOR = 221,  /* vendor private */
 
/*
-* 802.11s IEs based on D3.03 spec and were not assigned by
-* ANA. Beware changing them because some of them are being
-* kept compatible with Linux.
+* 802.11s IEs
+* NB: On vanilla Linux still IEEE80211_ELEMID_MESHPEER = 55,
+* but they defined a new with id 117 called PEER_MGMT.
+* NB: complies with open80211
 */
-   IEEE80211_ELEMID_MESHCONF   = 51,
-   IEEE80211_ELEMID_MESHID = 52,
-   IEEE80211_ELEMID_MESHLINK   = 35,
-   IEEE80211_ELEMID_MESHCNGST  = 36,
-   IEEE80211_ELEMID_MESHPEER   = 55,
-   IEEE80211_ELEMID_MESHCSA= 38,
-   IEEE80211_ELEMID_MESHTIM= 39,
-   IEEE80211_ELEMID_MESHAWAKEW = 40,
-   IEEE80211_ELEMID_MESHBEACONT= 41,
-   IEEE80211_ELEMID_MESHPANN   = 48,
-   IEEE80211_ELEMID_MESHRANN   = 49,
-   IEEE80211_ELEMID_MESHPREQ   = 68,
-   IEEE80211_ELEMID_MESHPREP   = 69,
-   IEEE80211_ELEMID_MESHPERR   = 70,
-   IEEE80211_ELEMID_MESHPXU= 53,
-   IEEE80211_ELEMID_MESHPXUC   = 54,
-   IEEE80211_ELEMID_MESHAH = 60, /* Abbreviated Handshake */
+   IEEE80211_ELEMID_MESHCONF   = 113,
+   IEEE80211_ELEMID_MESHID = 114,
+   IEEE80211_ELEMID_MESHLINK   = 115,
+   IEEE80211_ELEMID_MESHCNGST  = 116,
+   IEEE80211_ELEMID_MESHPEER   = 117,
+   IEEE80211_ELEMID_MESHCSA= 118,
+   IEEE80211_ELEMID_MESHTIM= 39, /* XXX: remove */
+   IEEE80211_ELEMID_MESHAWAKEW = 119,
+   IEEE80211_ELEMID_MESHBEACONT= 120,
+   /* 121-124 MMCAOP not implemented yet */
+   IEEE80211_ELEMID_MESHPANN   = 125, /* XXX: is GANN now, not used */
+   IEEE80211_ELEMID_MESHRANN   = 126,
+   /* 127 Extended Capabilities */
+   /* 128-129 reserved */
+   IEEE80211_ELEMID_MESHPREQ   = 130,
+   IEEE80211_ELEMID_MESHPREP   = 131,
+   IEEE80211_ELEMID_MESHPERR   = 132,
+   /* 133-136 reserved */
+   IEEE80211_ELEMID_MESHPXU= 137,
+   IEEE80211_ELEMID_MESHPXUC   = 138,
+   IEEE80211_ELEMID_MESHAH = 60, /* XXX: remove */
 };
 
 struct ieee80211_tim_ie {
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r239649 - head/release/doc/en_US.ISO8859-1/relnotes

2012-08-24 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Aug 24 13:55:22 2012
New Revision: 239649
URL: http://svn.freebsd.org/changeset/base/239649

Log:
  Document update of 802.11s IE identifiers.

Modified:
  head/release/doc/en_US.ISO8859-1/relnotes/article.sgml

Modified: head/release/doc/en_US.ISO8859-1/relnotes/article.sgml
==
--- head/release/doc/en_US.ISO8859-1/relnotes/article.sgml  Fri Aug 24 
13:11:30 2012(r239648)
+++ head/release/doc/en_US.ISO8859-1/relnotes/article.sgml  Fri Aug 24 
13:55:22 2012(r239649)
@@ -282,6 +282,13 @@
   para role=mergedA bug in TCP options padding, where the wrong padding
 bytes were used, has been fixed./para
 
+  para role=mergedThe IEEE 802.11s element identifiers have
+been updated to reflect the final version of the amendment.  This
+update breaks compatibility with older mesh setups but is necessary
+as the previous IDs are used by another amendment leading to
+unexpected results when trying to associate with an accesspoint
+using the affected IDs./para
+
 /sect3
 
 sect3 id=disks
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r239650 - stable/9/release/doc/en_US.ISO8859-1/relnotes

2012-08-24 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Aug 24 14:11:54 2012
New Revision: 239650
URL: http://svn.freebsd.org/changeset/base/239650

Log:
  MFC r239649:
  Document update of 802.11s IE identifiers.

Modified:
  stable/9/release/doc/en_US.ISO8859-1/relnotes/article.sgml
Directory Properties:
  stable/9/release/   (props changed)

Modified: stable/9/release/doc/en_US.ISO8859-1/relnotes/article.sgml
==
--- stable/9/release/doc/en_US.ISO8859-1/relnotes/article.sgml  Fri Aug 24 
13:55:22 2012(r239649)
+++ stable/9/release/doc/en_US.ISO8859-1/relnotes/article.sgml  Fri Aug 24 
14:11:54 2012(r239650)
@@ -871,6 +871,14 @@ wpi0: wpi_rx_intr: bus_dmamap_load faile
  literalexport9/literal hook has been added for NetFlow
  v9 data.  Note that data export can be done
  simultaneously in both version 5 and version 9./para
+
+   para revision=239615The IEEE 802.11s element identifiers have
+ been updated to reflect the final version of the amendment.  This
+ update breaks compatibility with older mesh setups but is necessary
+ as the previous IDs are used by another amendment leading to
+ unexpected results when trying to associate with an accesspoint
+ using the affected IDs./para
+
 /sect3
 
 sect3 id=disks
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r239651 - stable/8/release/doc/en_US.ISO8859-1/relnotes

2012-08-24 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Aug 24 14:22:47 2012
New Revision: 239651
URL: http://svn.freebsd.org/changeset/base/239651

Log:
  MFC r239649:
  Document update of 802.11s IE identifiers.

Modified:
  stable/8/release/doc/en_US.ISO8859-1/relnotes/article.sgml
Directory Properties:
  stable/8/release/   (props changed)

Modified: stable/8/release/doc/en_US.ISO8859-1/relnotes/article.sgml
==
--- stable/8/release/doc/en_US.ISO8859-1/relnotes/article.sgml  Fri Aug 24 
14:11:54 2012(r239650)
+++ stable/8/release/doc/en_US.ISO8859-1/relnotes/article.sgml  Fri Aug 24 
14:22:47 2012(r239651)
@@ -718,6 +718,13 @@
 
para revision=212319os; virtual network stack (vnet) now
  supports IPv4 multicast routing./para
+
+   para revision=239616The IEEE 802.11s element identifiers have
+ been updated to reflect the final version of the amendment.  This
+ update breaks compatibility with older mesh setups but is necessary
+ as the previous IDs are used by another amendment leading to
+ unexpected results when trying to associate with an accesspoint
+ using the affected IDs./para
   /sect3
 
   sect3 id=disks
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r239653 - releng/9.1/release/doc/en_US.ISO8859-1/relnotes

2012-08-24 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Aug 24 14:50:44 2012
New Revision: 239653
URL: http://svn.freebsd.org/changeset/base/239653

Log:
  MFC r239649:
  Document update of 802.11s IE identifiers.
  
  Approved by:  re (kib)

Modified:
  releng/9.1/release/doc/en_US.ISO8859-1/relnotes/article.sgml
Directory Properties:
  releng/9.1/release/   (props changed)

Modified: releng/9.1/release/doc/en_US.ISO8859-1/relnotes/article.sgml
==
--- releng/9.1/release/doc/en_US.ISO8859-1/relnotes/article.sgmlFri Aug 
24 14:25:57 2012(r239652)
+++ releng/9.1/release/doc/en_US.ISO8859-1/relnotes/article.sgmlFri Aug 
24 14:50:44 2012(r239653)
@@ -871,6 +871,14 @@ wpi0: wpi_rx_intr: bus_dmamap_load faile
  literalexport9/literal hook has been added for NetFlow
  v9 data.  Note that data export can be done
  simultaneously in both version 5 and version 9./para
+
+   para revision=239615The IEEE 802.11s element identifiers have
+ been updated to reflect the final version of the amendment.  This
+ update breaks compatibility with older mesh setups but is necessary
+ as the previous IDs are used by another amendment leading to
+ unexpected results when trying to associate with an accesspoint
+ using the affected IDs./para
+
 /sect3
 
 sect3 id=disks
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r239615 - stable/9/sys/net80211

2012-08-23 Thread Bernhard Schmidt
Author: bschmidt
Date: Thu Aug 23 17:09:52 2012
New Revision: 239615
URL: http://svn.freebsd.org/changeset/base/239615

Log:
  MFC r231187:
  Update the 802.11s IE numbers to represent the latest 802.11 amendment
  standard.
  
  This update breaks compatibility with older mesh setups but is necessary as
  the previous IDs are used by another amendment leading to unexpected results
  when trying to associate with an accesspoint using the affected IDs.
  
  Discussed with:   re
  Tested by:honestqiao at gmail dot com

Modified:
  stable/9/sys/net80211/ieee80211.h
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/net80211/ieee80211.h
==
--- stable/9/sys/net80211/ieee80211.h   Thu Aug 23 17:08:07 2012
(r239614)
+++ stable/9/sys/net80211/ieee80211.h   Thu Aug 23 17:09:52 2012
(r239615)
@@ -709,27 +709,32 @@ enum {
IEEE80211_ELEMID_VENDOR = 221,  /* vendor private */
 
/*
-* 802.11s IEs based on D3.03 spec and were not assigned by
-* ANA. Beware changing them because some of them are being
-* kept compatible with Linux.
+* 802.11s IEs
+* NB: On vanilla Linux still IEEE80211_ELEMID_MESHPEER = 55,
+* but they defined a new with id 117 called PEER_MGMT.
+* NB: complies with open80211
 */
-   IEEE80211_ELEMID_MESHCONF   = 51,
-   IEEE80211_ELEMID_MESHID = 52,
-   IEEE80211_ELEMID_MESHLINK   = 35,
-   IEEE80211_ELEMID_MESHCNGST  = 36,
-   IEEE80211_ELEMID_MESHPEER   = 55,
-   IEEE80211_ELEMID_MESHCSA= 38,
-   IEEE80211_ELEMID_MESHTIM= 39,
-   IEEE80211_ELEMID_MESHAWAKEW = 40,
-   IEEE80211_ELEMID_MESHBEACONT= 41,
-   IEEE80211_ELEMID_MESHPANN   = 48,
-   IEEE80211_ELEMID_MESHRANN   = 49,
-   IEEE80211_ELEMID_MESHPREQ   = 68,
-   IEEE80211_ELEMID_MESHPREP   = 69,
-   IEEE80211_ELEMID_MESHPERR   = 70,
-   IEEE80211_ELEMID_MESHPXU= 53,
-   IEEE80211_ELEMID_MESHPXUC   = 54,
-   IEEE80211_ELEMID_MESHAH = 60, /* Abbreviated Handshake */
+   IEEE80211_ELEMID_MESHCONF   = 113,
+   IEEE80211_ELEMID_MESHID = 114,
+   IEEE80211_ELEMID_MESHLINK   = 115,
+   IEEE80211_ELEMID_MESHCNGST  = 116,
+   IEEE80211_ELEMID_MESHPEER   = 117,
+   IEEE80211_ELEMID_MESHCSA= 118,
+   IEEE80211_ELEMID_MESHTIM= 39, /* XXX: remove */
+   IEEE80211_ELEMID_MESHAWAKEW = 119,
+   IEEE80211_ELEMID_MESHBEACONT= 120,
+   /* 121-124 MMCAOP not implemented yet */
+   IEEE80211_ELEMID_MESHPANN   = 125, /* XXX: is GANN now, not used */
+   IEEE80211_ELEMID_MESHRANN   = 126,
+   /* 127 Extended Capabilities */
+   /* 128-129 reserved */
+   IEEE80211_ELEMID_MESHPREQ   = 130,
+   IEEE80211_ELEMID_MESHPREP   = 131,
+   IEEE80211_ELEMID_MESHPERR   = 132,
+   /* 133-136 reserved */
+   IEEE80211_ELEMID_MESHPXU= 137,
+   IEEE80211_ELEMID_MESHPXUC   = 138,
+   IEEE80211_ELEMID_MESHAH = 60, /* XXX: remove */
 };
 
 struct ieee80211_tim_ie {
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r239616 - stable/8/sys/net80211

2012-08-23 Thread Bernhard Schmidt
Author: bschmidt
Date: Thu Aug 23 17:09:58 2012
New Revision: 239616
URL: http://svn.freebsd.org/changeset/base/239616

Log:
  MFC r231187:
  Update the 802.11s IE numbers to represent the latest 802.11 amendment
  standard.
  
  This update breaks compatibility with older mesh setups but is necessary as
  the previous IDs are used by another amendment leading to unexpected results
  when trying to associate with an accesspoint using the affected IDs.
  
  Discussed with:   re
  Tested by:honestqiao at gmail dot com

Modified:
  stable/8/sys/net80211/ieee80211.h
Directory Properties:
  stable/8/sys/   (props changed)

Modified: stable/8/sys/net80211/ieee80211.h
==
--- stable/8/sys/net80211/ieee80211.h   Thu Aug 23 17:09:52 2012
(r239615)
+++ stable/8/sys/net80211/ieee80211.h   Thu Aug 23 17:09:58 2012
(r239616)
@@ -708,27 +708,32 @@ enum {
IEEE80211_ELEMID_VENDOR = 221,  /* vendor private */
 
/*
-* 802.11s IEs based on D3.03 spec and were not assigned by
-* ANA. Beware changing them because some of them are being
-* kept compatible with Linux.
+* 802.11s IEs
+* NB: On vanilla Linux still IEEE80211_ELEMID_MESHPEER = 55,
+* but they defined a new with id 117 called PEER_MGMT.
+* NB: complies with open80211
 */
-   IEEE80211_ELEMID_MESHCONF   = 51,
-   IEEE80211_ELEMID_MESHID = 52,
-   IEEE80211_ELEMID_MESHLINK   = 35,
-   IEEE80211_ELEMID_MESHCNGST  = 36,
-   IEEE80211_ELEMID_MESHPEER   = 55,
-   IEEE80211_ELEMID_MESHCSA= 38,
-   IEEE80211_ELEMID_MESHTIM= 39,
-   IEEE80211_ELEMID_MESHAWAKEW = 40,
-   IEEE80211_ELEMID_MESHBEACONT= 41,
-   IEEE80211_ELEMID_MESHPANN   = 48,
-   IEEE80211_ELEMID_MESHRANN   = 49,
-   IEEE80211_ELEMID_MESHPREQ   = 68,
-   IEEE80211_ELEMID_MESHPREP   = 69,
-   IEEE80211_ELEMID_MESHPERR   = 70,
-   IEEE80211_ELEMID_MESHPXU= 53,
-   IEEE80211_ELEMID_MESHPXUC   = 54,
-   IEEE80211_ELEMID_MESHAH = 60, /* Abbreviated Handshake */
+   IEEE80211_ELEMID_MESHCONF   = 113,
+   IEEE80211_ELEMID_MESHID = 114,
+   IEEE80211_ELEMID_MESHLINK   = 115,
+   IEEE80211_ELEMID_MESHCNGST  = 116,
+   IEEE80211_ELEMID_MESHPEER   = 117,
+   IEEE80211_ELEMID_MESHCSA= 118,
+   IEEE80211_ELEMID_MESHTIM= 39, /* XXX: remove */
+   IEEE80211_ELEMID_MESHAWAKEW = 119,
+   IEEE80211_ELEMID_MESHBEACONT= 120,
+   /* 121-124 MMCAOP not implemented yet */
+   IEEE80211_ELEMID_MESHPANN   = 125, /* XXX: is GANN now, not used */
+   IEEE80211_ELEMID_MESHRANN   = 126,
+   /* 127 Extended Capabilities */
+   /* 128-129 reserved */
+   IEEE80211_ELEMID_MESHPREQ   = 130,
+   IEEE80211_ELEMID_MESHPREP   = 131,
+   IEEE80211_ELEMID_MESHPERR   = 132,
+   /* 133-136 reserved */
+   IEEE80211_ELEMID_MESHPXU= 137,
+   IEEE80211_ELEMID_MESHPXUC   = 138,
+   IEEE80211_ELEMID_MESHAH = 60, /* XXX: remove */
 };
 
 struct ieee80211_tim_ie {
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r237917 - stable/9/sys/dev/iwn

2012-07-01 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun Jul  1 09:30:37 2012
New Revision: 237917
URL: http://svn.freebsd.org/changeset/base/237917

Log:
  MFC BA/DELBA fixes:
  - r234321:
Use the M_AMPDU_MPDU flag to determine when to manually set the seqno and
use a BA queue.
  - r235686:
Discard frames after a DELBA which where queued during an active BA
session.
  - r235687:
remove unused vap variable
  - r237647:
Fix a TX aggregation issue, if after the last compressed BA notification
the TX queue is empty, there won't be a TX done notification, effectly
resulting in an mbuf leak. The correct way to handle this is to free
up mbufs on both BA and TX done notifications up to the last sent seqno.
  - r237649 (1):
We need to defer passing the DELBA request to the firmware until the aggr
queue is empty or the firmware will go nuts.
  
  PR:   kern/167806 (1)

Modified:
  stable/9/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/iwn/if_iwn.c
==
--- stable/9/sys/dev/iwn/if_iwn.c   Sun Jul  1 09:17:55 2012
(r237916)
+++ stable/9/sys/dev/iwn/if_iwn.c   Sun Jul  1 09:30:37 2012
(r237917)
@@ -2432,23 +2432,66 @@ static void
 iwn_rx_compressed_ba(struct iwn_softc *sc, struct iwn_rx_desc *desc,
 struct iwn_rx_data *data)
 {
+   struct iwn_ops *ops = sc-ops;
struct ifnet *ifp = sc-sc_ifp;
struct iwn_node *wn;
struct ieee80211_node *ni;
struct iwn_compressed_ba *ba = (struct iwn_compressed_ba *)(desc + 1);
struct iwn_tx_ring *txq;
+   struct iwn_tx_data *txdata;
struct ieee80211_tx_ampdu *tap;
+   struct mbuf *m;
uint64_t bitmap;
+   uint16_t ssn;
uint8_t tid;
-   int ackfailcnt = 0, i, shift;
+   int ackfailcnt = 0, i, lastidx, qid, *res, shift;
 
bus_dmamap_sync(sc-rxq.data_dmat, data-map, BUS_DMASYNC_POSTREAD);
 
-   txq = sc-txq[le16toh(ba-qid)];
-   tap = sc-qid2tap[le16toh(ba-qid)];
+   qid = le16toh(ba-qid);
+   txq = sc-txq[ba-qid];
+   tap = sc-qid2tap[ba-qid];
tid = WME_AC_TO_TID(tap-txa_ac);
-   ni = tap-txa_ni;
-   wn = (void *)ni;
+   wn = (void *)tap-txa_ni;
+
+   res = NULL;
+   ssn = 0;
+   if (!IEEE80211_AMPDU_RUNNING(tap)) {
+   res = tap-txa_private;
+   ssn = tap-txa_start  0xfff;
+   }
+
+   for (lastidx = le16toh(ba-ssn)  0xff; txq-read != lastidx;) {
+   txdata = txq-data[txq-read];
+
+   /* Unmap and free mbuf. */
+   bus_dmamap_sync(txq-data_dmat, txdata-map,
+   BUS_DMASYNC_POSTWRITE);
+   bus_dmamap_unload(txq-data_dmat, txdata-map);
+   m = txdata-m, txdata-m = NULL;
+   ni = txdata-ni, txdata-ni = NULL;
+
+   KASSERT(ni != NULL, (no node));
+   KASSERT(m != NULL, (no mbuf));
+
+   if (m-m_flags  M_TXCB)
+   ieee80211_process_callback(ni, m, 1);
+
+   m_freem(m);
+   ieee80211_free_node(ni);
+
+   txq-queued--;
+   txq-read = (txq-read + 1) % IWN_TX_RING_COUNT;
+   }
+
+   if (txq-queued == 0  res != NULL) {
+   iwn_nic_lock(sc);
+   ops-ampdu_tx_stop(sc, qid, tid, ssn);
+   iwn_nic_unlock(sc);
+   sc-qid2tap[qid] = NULL;
+   free(res, M_DEVBUF);
+   return;
+   }
 
if (wn-agg[tid].bitmap == 0)
return;
@@ -2460,6 +2503,7 @@ iwn_rx_compressed_ba(struct iwn_softc *s
if (wn-agg[tid].nframes  (64 - shift))
return;
 
+   ni = tap-txa_ni;
bitmap = (le64toh(ba-bitmap)  shift)  wn-agg[tid].bitmap;
for (i = 0; bitmap; i++) {
if ((bitmap  1) == 0) {
@@ -2759,19 +2803,20 @@ static void
 iwn_ampdu_tx_done(struct iwn_softc *sc, int qid, int idx, int nframes,
 void *stat)
 {
+   struct iwn_ops *ops = sc-ops;
struct ifnet *ifp = sc-sc_ifp;
struct iwn_tx_ring *ring = sc-txq[qid];
struct iwn_tx_data *data;
struct mbuf *m;
struct iwn_node *wn;
struct ieee80211_node *ni;
-   struct ieee80211vap *vap;
struct ieee80211_tx_ampdu *tap;
uint64_t bitmap;
uint32_t *status = stat;
uint16_t *aggstatus = stat;
+   uint16_t ssn;
uint8_t tid;
-   int bit, i, lastidx, seqno, shift, start;
+   int bit, i, lastidx, *res, seqno, shift, start;
 
 #ifdef NOT_YET
if (nframes == 1) {
@@ -2804,27 +2849,32 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, 
bitmap |= 1ULL  bit;
}
tap = sc-qid2tap[qid];
-   if (tap != NULL) {
-   tid = WME_AC_TO_TID(tap-txa_ac);
-   wn = (void *)tap-txa_ni;
-   

svn commit: r237647 - head/sys/dev/iwn

2012-06-27 Thread Bernhard Schmidt
Author: bschmidt
Date: Wed Jun 27 15:55:34 2012
New Revision: 237647
URL: http://svn.freebsd.org/changeset/base/237647

Log:
  Fix a TX aggregation issue, if after the last compressed BA notification
  the TX queue is empty, there won't be a TX done notification, effectly
  resulting in an mbuf leak. The correct way to handle this is to free
  up mbufs on both BA and TX done notifications up to the last sent seqno.
  
  Tested by:osa@
  MFC after:3 days

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Wed Jun 27 12:30:56 2012(r237646)
+++ head/sys/dev/iwn/if_iwn.c   Wed Jun 27 15:55:34 2012(r237647)
@@ -2437,18 +2437,43 @@ iwn_rx_compressed_ba(struct iwn_softc *s
struct ieee80211_node *ni;
struct iwn_compressed_ba *ba = (struct iwn_compressed_ba *)(desc + 1);
struct iwn_tx_ring *txq;
+   struct iwn_tx_data *txdata;
struct ieee80211_tx_ampdu *tap;
+   struct mbuf *m;
uint64_t bitmap;
uint8_t tid;
-   int ackfailcnt = 0, i, shift;
+   int ackfailcnt = 0, i, lastidx, qid, shift;
 
bus_dmamap_sync(sc-rxq.data_dmat, data-map, BUS_DMASYNC_POSTREAD);
 
-   txq = sc-txq[le16toh(ba-qid)];
-   tap = sc-qid2tap[le16toh(ba-qid)];
+   qid = le16toh(ba-qid);
+   txq = sc-txq[ba-qid];
+   tap = sc-qid2tap[ba-qid];
tid = tap-txa_tid;
-   ni = tap-txa_ni;
-   wn = (void *)ni;
+   wn = (void *)tap-txa_ni;
+
+   for (lastidx = le16toh(ba-ssn)  0xff; txq-read != lastidx;) {
+   txdata = txq-data[txq-read];
+
+   /* Unmap and free mbuf. */
+   bus_dmamap_sync(txq-data_dmat, txdata-map,
+   BUS_DMASYNC_POSTWRITE);
+   bus_dmamap_unload(txq-data_dmat, txdata-map);
+   m = txdata-m, txdata-m = NULL;
+   ni = txdata-ni, txdata-ni = NULL;
+
+   KASSERT(ni != NULL, (no node));
+   KASSERT(m != NULL, (no mbuf));
+
+   if (m-m_flags  M_TXCB)
+   ieee80211_process_callback(ni, m, 1);
+
+   m_freem(m);
+   ieee80211_free_node(ni);
+
+   txq-queued--;
+   txq-read = (txq-read + 1) % IWN_TX_RING_COUNT;
+   }
 
if (wn-agg[tid].bitmap == 0)
return;
@@ -2460,6 +2485,7 @@ iwn_rx_compressed_ba(struct iwn_softc *s
if (wn-agg[tid].nframes  (64 - shift))
return;
 
+   ni = tap-txa_ni;
bitmap = (le64toh(ba-bitmap)  shift)  wn-agg[tid].bitmap;
for (i = 0; bitmap; i++) {
if ((bitmap  1) == 0) {
@@ -2815,8 +2841,6 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, 
for (lastidx = (seqno  0xff); ring-read != lastidx;) {
data = ring-data[ring-read];
 
-   KASSERT(data-ni != NULL, (no node));
-
/* Unmap and free mbuf. */
bus_dmamap_sync(ring-data_dmat, data-map,
BUS_DMASYNC_POSTWRITE);
@@ -2824,6 +2848,9 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, 
m = data-m, data-m = NULL;
ni = data-ni, data-ni = NULL;
 
+   KASSERT(ni != NULL, (no node));
+   KASSERT(m != NULL, (no mbuf));
+
if (m-m_flags  M_TXCB)
ieee80211_process_callback(ni, m, 1);
 
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r237649 - head/sys/dev/iwn

2012-06-27 Thread Bernhard Schmidt
Author: bschmidt
Date: Wed Jun 27 16:07:01 2012
New Revision: 237649
URL: http://svn.freebsd.org/changeset/base/237649

Log:
  We need to defer passing the DELBA request to the firmware until the aggr
  queue is empty or the firmware will go nuts.
  
  PR:   kern/167806
  Tested by:osa@, Brandon Gooch (earlier version),
Bojan Petrovic (earlier version)
  MFC after:3 days

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Wed Jun 27 16:05:09 2012(r237648)
+++ head/sys/dev/iwn/if_iwn.c   Wed Jun 27 16:07:01 2012(r237649)
@@ -2432,6 +2432,7 @@ static void
 iwn_rx_compressed_ba(struct iwn_softc *sc, struct iwn_rx_desc *desc,
 struct iwn_rx_data *data)
 {
+   struct iwn_ops *ops = sc-ops;
struct ifnet *ifp = sc-sc_ifp;
struct iwn_node *wn;
struct ieee80211_node *ni;
@@ -2441,8 +2442,9 @@ iwn_rx_compressed_ba(struct iwn_softc *s
struct ieee80211_tx_ampdu *tap;
struct mbuf *m;
uint64_t bitmap;
+   uint16_t ssn;
uint8_t tid;
-   int ackfailcnt = 0, i, lastidx, qid, shift;
+   int ackfailcnt = 0, i, lastidx, qid, *res, shift;
 
bus_dmamap_sync(sc-rxq.data_dmat, data-map, BUS_DMASYNC_POSTREAD);
 
@@ -2452,6 +2454,13 @@ iwn_rx_compressed_ba(struct iwn_softc *s
tid = tap-txa_tid;
wn = (void *)tap-txa_ni;
 
+   res = NULL;
+   ssn = 0;
+   if (!IEEE80211_AMPDU_RUNNING(tap)) {
+   res = tap-txa_private;
+   ssn = tap-txa_start  0xfff;
+   }
+
for (lastidx = le16toh(ba-ssn)  0xff; txq-read != lastidx;) {
txdata = txq-data[txq-read];
 
@@ -2475,6 +2484,15 @@ iwn_rx_compressed_ba(struct iwn_softc *s
txq-read = (txq-read + 1) % IWN_TX_RING_COUNT;
}
 
+   if (txq-queued == 0  res != NULL) {
+   iwn_nic_lock(sc);
+   ops-ampdu_tx_stop(sc, qid, tid, ssn);
+   iwn_nic_unlock(sc);
+   sc-qid2tap[qid] = NULL;
+   free(res, M_DEVBUF);
+   return;
+   }
+
if (wn-agg[tid].bitmap == 0)
return;
 
@@ -2785,6 +2803,7 @@ static void
 iwn_ampdu_tx_done(struct iwn_softc *sc, int qid, int idx, int nframes,
 void *stat)
 {
+   struct iwn_ops *ops = sc-ops;
struct ifnet *ifp = sc-sc_ifp;
struct iwn_tx_ring *ring = sc-txq[qid];
struct iwn_tx_data *data;
@@ -2795,8 +2814,9 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, 
uint64_t bitmap;
uint32_t *status = stat;
uint16_t *aggstatus = stat;
+   uint16_t ssn;
uint8_t tid;
-   int bit, i, lastidx, seqno, shift, start;
+   int bit, i, lastidx, *res, seqno, shift, start;
 
 #ifdef NOT_YET
if (nframes == 1) {
@@ -2829,12 +2849,17 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, 
bitmap |= 1ULL  bit;
}
tap = sc-qid2tap[qid];
-   if (tap != NULL) {
-   tid = tap-txa_tid;
-   wn = (void *)tap-txa_ni;
-   wn-agg[tid].bitmap = bitmap;
-   wn-agg[tid].startidx = start;
-   wn-agg[tid].nframes = nframes;
+   tid = tap-txa_tid;
+   wn = (void *)tap-txa_ni;
+   wn-agg[tid].bitmap = bitmap;
+   wn-agg[tid].startidx = start;
+   wn-agg[tid].nframes = nframes;
+
+   res = NULL;
+   ssn = 0;
+   if (!IEEE80211_AMPDU_RUNNING(tap)) {
+   res = tap-txa_private;
+   ssn = tap-txa_start  0xfff;
}
 
seqno = le32toh(*(status + nframes))  0xfff;
@@ -2861,6 +2886,15 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, 
ring-read = (ring-read + 1) % IWN_TX_RING_COUNT;
}
 
+   if (ring-queued == 0  res != NULL) {
+   iwn_nic_lock(sc);
+   ops-ampdu_tx_stop(sc, qid, tid, ssn);
+   iwn_nic_unlock(sc);
+   sc-qid2tap[qid] = NULL;
+   free(res, M_DEVBUF);
+   return;
+   }
+
sc-sc_tx_timer = 0;
if (ring-queued  IWN_TX_RING_LOMARK) {
sc-qfullmsk = ~(1  ring-qid);
@@ -5661,6 +5695,8 @@ iwn_ampdu_tx_start(struct ieee80211com *
if ((error = iwn_nic_lock(sc)) != 0)
return 0;
qid = *(int *)tap-txa_private;
+   DPRINTF(sc, IWN_DEBUG_XMIT, %s: ra=%d tid=%d ssn=%d qid=%d\n,
+   __func__, wn-id, tid, tap-txa_start, qid);
ops-ampdu_tx_start(sc, ni, qid, tid, tap-txa_start  0xfff);
iwn_nic_unlock(sc);
 
@@ -5676,10 +5712,14 @@ iwn_ampdu_tx_stop(struct ieee80211_node 
uint8_t tid = tap-txa_tid;
int qid;
 
+   sc-sc_addba_stop(ni, tap);
+
if (tap-txa_private == NULL)
return;
 
qid = *(int *)tap-txa_private;
+   if (sc-txq[qid].queued != 0)
+   return;
if (iwn_nic_lock(sc) != 

svn commit: r236005 - stable/9/share/man/man4

2012-05-25 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri May 25 16:09:06 2012
New Revision: 236005
URL: http://svn.freebsd.org/changeset/base/236005

Log:
  MFC r235235-235237:
  Update man page due to import of RT2800/RT3000 support.

Modified:
  stable/9/share/man/man4/ral.4
Directory Properties:
  stable/9/share/man/man4/   (props changed)

Modified: stable/9/share/man/man4/ral.4
==
--- stable/9/share/man/man4/ral.4   Fri May 25 16:07:39 2012
(r236004)
+++ stable/9/share/man/man4/ral.4   Fri May 25 16:09:06 2012
(r236005)
@@ -1,5 +1,4 @@
-.\ Copyright (c) 2005, 2006
-.\ Damien Bergamini damien.bergam...@free.fr
+.\ Copyright (c) 2005-2010 Damien Bergamini damien.bergam...@free.fr
 .\
 .\ Permission to use, copy, modify, and distribute this software for any
 .\ purpose with or without fee is hereby granted, provided that the above
@@ -15,12 +14,12 @@
 .\
 .\ $FreeBSD$
 .\
-.Dd July 8, 2009
+.Dd May 10, 2012
 .Dt RAL 4
 .Os
 .Sh NAME
 .Nm ral
-.Nd Ralink Technology IEEE 802.11 wireless network driver
+.Nd Ralink Technology IEEE 802.11a/g/n wireless network device
 .Sh SYNOPSIS
 To compile this driver into the kernel,
 place the following lines in your
@@ -42,31 +41,43 @@ if_ral_load=YES
 .Sh DESCRIPTION
 The
 .Nm
-driver supports PCI/CardBus wireless adapters based on the Ralink Technology
-RT2500, RT2501, and RT2600 chipsets.
+driver supports PCI/PCIe/CardBus wireless adapters based on the Ralink RT2500,
+RT2501, RT2600, RT2700, RT2800 and RT3090 chipsets.
 .Pp
 The RT2500 chipset is the first generation of 802.11b/g adapters from Ralink.
-It consists of two integrated chips, a RT2560 MAC/BBP and a RT2525 radio
+It consists of two integrated chips, an RT2560 MAC/BBP and an RT2525 radio
 transceiver.
 .Pp
-The RT2501 chipset is the second generation of 802.11b/g adapters from Ralink.
-It consists of two integrated chips, a RT2561 MAC/BBP and a RT2527 radio
+The RT2501 chipset is the second generation of 802.11a/b/g adapters from
+Ralink.
+It consists of two integrated chips, an RT2561 MAC/BBP and an RT2527 radio
 transceiver.
 This chipset provides support for the IEEE 802.11e standard with multiple
 hardware transmission queues and allows scatter/gather for efficient DMA
 operations.
 .Pp
-The RT2600 chipset consists of two integrated chips, a RT2661 MAC/BBP and a
+The RT2600 chipset consists of two integrated chips, an RT2661 MAC/BBP and an
 RT2529 radio transceiver.
 This chipset uses the MIMO (multiple-input multiple-output) technology with
-multiple antennas to extend the operating range of the adapter and to achieve
-higher throughput.
-MIMO is the basis of the forthcoming IEEE 802.11n standard.
-.Pp
-The transmit speed is user-selectable or can be adapted automatically by the
-driver depending on the received signal strength and on the number of hardware
-transmission retries.
+multiple radio transceivers to extend the operating range of the adapter and
+to achieve higher throughput.
+However, the RT2600 chipset does not support any of the 802.11n features.
+.Pp
+The RT2700 chipset is a low-cost version of the RT2800 chipset.
+It supports a single transmit path and two receiver paths (1T2R).
+It consists of two integrated chips, an RT2760 or RT2790 (PCIe) MAC/BBP and
+an RT2720 (2.4GHz) or RT2750 (2.4GHz/5GHz) radio transceiver.
+.Pp
+The RT2800 chipset is the first generation of 802.11n adapters from Ralink.
+It consists of two integrated chips, an RT2860 or RT2890 (PCIe) MAC/BBP and
+an RT2820 (2.4GHz) or RT2850 (2.4GHz/5GHz) radio transceiver.
+The RT2800 chipset supports two transmit paths and up to three receiver
+paths (2T2R/2T3R).
+It can achieve speeds up to 144Mbps (20MHz bandwidth) and 300Mbps (40MHz
+bandwidth.)
 .Pp
+The RT3090 chipset is the first generation of single-chip 802.11n adapters
+from Ralink.
 .Nm
 supports
 .Cm station ,
@@ -92,13 +103,16 @@ Multiple
 interfaces may be operated together with a
 .Cm hostap
 interface to construct a wireless repeater device.
+.Pp
+The transmit speed is user-selectable or can be adapted automatically by the
+driver depending on the number of hardware transmission retries.
 For more information on configuring this device, see
 .Xr ifconfig 8 .
 .Sh HARDWARE
 The
 .Nm
-driver supports PCI/CardBus wireless adapters based on the Ralink Technology
-RT2500, RT2501, and RT2600 chipsets, including:
+driver supports PCI/PCIe/CardBus wireless adapters based on Ralink Technology
+chipsets, including:
 .Pp
 .Bl -column -compact .Li Atlantis Land A02-PCM-W54 RT2561S CardBus
 .It Em Card Ta Em MAC/BBP Ta Em Bus
@@ -188,9 +202,6 @@ RT2500, RT2501, and RT2600 chipsets, inc
 .It Zonet ZEW1500 Ta RT2560 Ta CardBus
 .It Zonet ZEW1600 Ta RT2560 Ta PCI
 .El
-.Pp
-An up to date list can be found at
-.Pa http://damien.bergamini.free.fr/ral/list.html .
 .Sh EXAMPLES
 Join an existing BSS network (i.e., connect to an access point):
 .Pp
@@ -238,7 +249,7 @@ This should not happen.
 .Xr 

svn commit: r236008 - stable/8/share/man/man4

2012-05-25 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri May 25 16:40:31 2012
New Revision: 236008
URL: http://svn.freebsd.org/changeset/base/236008

Log:
  MFC r235235-235237:
  Update man page due to import of RT2800/RT3000 support.

Modified:
  stable/8/share/man/man4/ral.4
Directory Properties:
  stable/8/share/man/man4/   (props changed)

Modified: stable/8/share/man/man4/ral.4
==
--- stable/8/share/man/man4/ral.4   Fri May 25 16:39:56 2012
(r236007)
+++ stable/8/share/man/man4/ral.4   Fri May 25 16:40:31 2012
(r236008)
@@ -1,5 +1,4 @@
-.\ Copyright (c) 2005, 2006
-.\ Damien Bergamini damien.bergam...@free.fr
+.\ Copyright (c) 2005-2010 Damien Bergamini damien.bergam...@free.fr
 .\
 .\ Permission to use, copy, modify, and distribute this software for any
 .\ purpose with or without fee is hereby granted, provided that the above
@@ -15,12 +14,12 @@
 .\
 .\ $FreeBSD$
 .\
-.Dd July 8, 2009
+.Dd May 10, 2012
 .Dt RAL 4
 .Os
 .Sh NAME
 .Nm ral
-.Nd Ralink Technology IEEE 802.11 wireless network driver
+.Nd Ralink Technology IEEE 802.11a/g/n wireless network device
 .Sh SYNOPSIS
 To compile this driver into the kernel,
 place the following lines in your
@@ -42,31 +41,43 @@ if_ral_load=YES
 .Sh DESCRIPTION
 The
 .Nm
-driver supports PCI/CardBus wireless adapters based on the Ralink Technology
-RT2500, RT2501, and RT2600 chipsets.
+driver supports PCI/PCIe/CardBus wireless adapters based on the Ralink RT2500,
+RT2501, RT2600, RT2700, RT2800 and RT3090 chipsets.
 .Pp
 The RT2500 chipset is the first generation of 802.11b/g adapters from Ralink.
-It consists of two integrated chips, a RT2560 MAC/BBP and a RT2525 radio
+It consists of two integrated chips, an RT2560 MAC/BBP and an RT2525 radio
 transceiver.
 .Pp
-The RT2501 chipset is the second generation of 802.11b/g adapters from Ralink.
-It consists of two integrated chips, a RT2561 MAC/BBP and a RT2527 radio
+The RT2501 chipset is the second generation of 802.11a/b/g adapters from
+Ralink.
+It consists of two integrated chips, an RT2561 MAC/BBP and an RT2527 radio
 transceiver.
 This chipset provides support for the IEEE 802.11e standard with multiple
 hardware transmission queues and allows scatter/gather for efficient DMA
 operations.
 .Pp
-The RT2600 chipset consists of two integrated chips, a RT2661 MAC/BBP and a
+The RT2600 chipset consists of two integrated chips, an RT2661 MAC/BBP and an
 RT2529 radio transceiver.
 This chipset uses the MIMO (multiple-input multiple-output) technology with
-multiple antennas to extend the operating range of the adapter and to achieve
-higher throughput.
-MIMO is the basis of the forthcoming IEEE 802.11n standard.
-.Pp
-The transmit speed is user-selectable or can be adapted automatically by the
-driver depending on the received signal strength and on the number of hardware
-transmission retries.
+multiple radio transceivers to extend the operating range of the adapter and
+to achieve higher throughput.
+However, the RT2600 chipset does not support any of the 802.11n features.
+.Pp
+The RT2700 chipset is a low-cost version of the RT2800 chipset.
+It supports a single transmit path and two receiver paths (1T2R).
+It consists of two integrated chips, an RT2760 or RT2790 (PCIe) MAC/BBP and
+an RT2720 (2.4GHz) or RT2750 (2.4GHz/5GHz) radio transceiver.
+.Pp
+The RT2800 chipset is the first generation of 802.11n adapters from Ralink.
+It consists of two integrated chips, an RT2860 or RT2890 (PCIe) MAC/BBP and
+an RT2820 (2.4GHz) or RT2850 (2.4GHz/5GHz) radio transceiver.
+The RT2800 chipset supports two transmit paths and up to three receiver
+paths (2T2R/2T3R).
+It can achieve speeds up to 144Mbps (20MHz bandwidth) and 300Mbps (40MHz
+bandwidth.)
 .Pp
+The RT3090 chipset is the first generation of single-chip 802.11n adapters
+from Ralink.
 .Nm
 supports
 .Cm station ,
@@ -92,13 +103,16 @@ Multiple
 interfaces may be operated together with a
 .Cm hostap
 interface to construct a wireless repeater device.
+.Pp
+The transmit speed is user-selectable or can be adapted automatically by the
+driver depending on the number of hardware transmission retries.
 For more information on configuring this device, see
 .Xr ifconfig 8 .
 .Sh HARDWARE
 The
 .Nm
-driver supports PCI/CardBus wireless adapters based on the Ralink Technology
-RT2500, RT2501, and RT2600 chipsets, including:
+driver supports PCI/PCIe/CardBus wireless adapters based on Ralink Technology
+chipsets, including:
 .Pp
 .Bl -column -compact .Li Atlantis Land A02-PCM-W54 RT2561S CardBus
 .It Em Card Ta Em MAC/BBP Ta Em Bus
@@ -188,9 +202,6 @@ RT2500, RT2501, and RT2600 chipsets, inc
 .It Zonet ZEW1500 Ta RT2560 Ta CardBus
 .It Zonet ZEW1600 Ta RT2560 Ta PCI
 .El
-.Pp
-An up to date list can be found at
-.Pa http://damien.bergamini.free.fr/ral/list.html .
 .Sh EXAMPLES
 Join an existing BSS network (i.e., connect to an access point):
 .Pp
@@ -239,7 +250,7 @@ This should not happen.
 .Xr 

svn commit: r236010 - stable/8/sys/dev/ral

2012-05-25 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri May 25 16:52:00 2012
New Revision: 236010
URL: http://svn.freebsd.org/changeset/base/236010

Log:
  MFC r220502:
  Don't hardcode assumptions about basic rates, similar to what the rt2661
  support code does. While here remove an unnecessary loop.

Modified:
  stable/8/sys/dev/ral/rt2560.c
  stable/8/sys/dev/ral/rt2661.c
Directory Properties:
  stable/8/sys/   (props changed)

Modified: stable/8/sys/dev/ral/rt2560.c
==
--- stable/8/sys/dev/ral/rt2560.c   Fri May 25 16:45:56 2012
(r236009)
+++ stable/8/sys/dev/ral/rt2560.c   Fri May 25 16:52:00 2012
(r236010)
@@ -144,7 +144,8 @@ static void rt2560_enable_tsf_sync(stru
 static voidrt2560_enable_tsf(struct rt2560_softc *);
 static voidrt2560_update_plcp(struct rt2560_softc *);
 static voidrt2560_update_slot(struct ifnet *);
-static voidrt2560_set_basicrates(struct rt2560_softc *);
+static voidrt2560_set_basicrates(struct rt2560_softc *,
+   const struct ieee80211_rateset *);
 static voidrt2560_update_led(struct rt2560_softc *, int, int);
 static voidrt2560_set_bssid(struct rt2560_softc *, const uint8_t 
*);
 static voidrt2560_set_macaddr(struct rt2560_softc *, uint8_t *);
@@ -779,7 +780,7 @@ rt2560_newstate(struct ieee80211vap *vap
 
if (vap-iv_opmode != IEEE80211_M_MONITOR) {
rt2560_update_plcp(sc);
-   rt2560_set_basicrates(sc);
+   rt2560_set_basicrates(sc, ni-ni_rates);
rt2560_set_bssid(sc, ni-ni_bssid);
}
 
@@ -2353,22 +2354,29 @@ rt2560_update_slot(struct ifnet *ifp)
 }
 
 static void
-rt2560_set_basicrates(struct rt2560_softc *sc)
+rt2560_set_basicrates(struct rt2560_softc *sc,
+const struct ieee80211_rateset *rs)
 {
+#define RV(r)  ((r)  IEEE80211_RATE_VAL)
struct ifnet *ifp = sc-sc_ifp;
struct ieee80211com *ic = ifp-if_l2com;
+   uint32_t mask = 0;
+   uint8_t rate;
+   int i;
 
-   /* update basic rate set */
-   if (ic-ic_curmode == IEEE80211_MODE_11B) {
-   /* 11b basic rates: 1, 2Mbps */
-   RAL_WRITE(sc, RT2560_ARSP_PLCP_1, 0x3);
-   } else if (IEEE80211_IS_CHAN_5GHZ(ic-ic_curchan)) {
-   /* 11a basic rates: 6, 12, 24Mbps */
-   RAL_WRITE(sc, RT2560_ARSP_PLCP_1, 0x150);
-   } else {
-   /* 11g basic rates: 1, 2, 5.5, 11, 6, 12, 24Mbps */
-   RAL_WRITE(sc, RT2560_ARSP_PLCP_1, 0x15f);
+   for (i = 0; i  rs-rs_nrates; i++) {
+   rate = rs-rs_rates[i];
+
+   if (!(rate  IEEE80211_RATE_BASIC))
+   continue;
+
+   mask |= 1  ic-ic_rt-rateCodeToIndex[RV(rate)];
}
+
+   RAL_WRITE(sc, RT2560_ARSP_PLCP_1, mask);
+
+   DPRINTF(sc, Setting basic rate mask to 0x%x\n, mask);
+#undef RV
 }
 
 static void

Modified: stable/8/sys/dev/ral/rt2661.c
==
--- stable/8/sys/dev/ral/rt2661.c   Fri May 25 16:45:56 2012
(r236009)
+++ stable/8/sys/dev/ral/rt2661.c   Fri May 25 16:52:00 2012
(r236010)
@@ -1915,7 +1915,7 @@ rt2661_set_basicrates(struct rt2661_soft
struct ieee80211com *ic = ifp-if_l2com;
uint32_t mask = 0;
uint8_t rate;
-   int i, j;
+   int i;
 
for (i = 0; i  rs-rs_nrates; i++) {
rate = rs-rs_rates[i];
@@ -1923,13 +1923,7 @@ rt2661_set_basicrates(struct rt2661_soft
if (!(rate  IEEE80211_RATE_BASIC))
continue;
 
-   /*
-* Find h/w rate index.  We know it exists because the rate
-* set has already been negotiated.
-*/
-   for (j = 0; ic-ic_sup_rates[IEEE80211_MODE_11G].rs_rates[j] != 
RV(rate); j++);
-
-   mask |= 1  j;
+   mask |= 1  ic-ic_rt-rateCodeToIndex[RV(rate)];
}
 
RAL_WRITE(sc, RT2661_TXRX_CSR5, mask);
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r235843 - stable/9/sys/dev/iwn

2012-05-23 Thread Bernhard Schmidt
Author: bschmidt
Date: Wed May 23 16:43:16 2012
New Revision: 235843
URL: http://svn.freebsd.org/changeset/base/235843

Log:
  MFC r235684:
  Add some more 100/130 series device IDs.

Modified:
  stable/9/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/iwn/if_iwn.c
==
--- stable/9/sys/dev/iwn/if_iwn.c   Wed May 23 16:19:19 2012
(r235842)
+++ stable/9/sys/dev/iwn/if_iwn.c   Wed May 23 16:43:16 2012
(r235843)
@@ -92,6 +92,9 @@ static const struct iwn_ident iwn_ident_
{ 0x8086, 0x0885, Intel Centrino Wireless-N + WiMAX 6150  },
{ 0x8086, 0x0886, Intel Centrino Wireless-N + WiMAX 6150  },
{ 0x8086, 0x0896, Intel Centrino Wireless-N 130   },
+   { 0x8086, 0x0887, Intel Centrino Wireless-N 130   },
+   { 0x8086, 0x08ae, Intel Centrino Wireless-N 100   },
+   { 0x8086, 0x08af, Intel Centrino Wireless-N 100   },
{ 0x8086, 0x4229, Intel Wireless WiFi Link 4965   },
{ 0x8086, 0x422b, Intel Centrino Ultimate-N 6300  },
{ 0x8086, 0x422c, Intel Centrino Advanced-N 6200  },
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r235844 - stable/8/sys/dev/iwn

2012-05-23 Thread Bernhard Schmidt
Author: bschmidt
Date: Wed May 23 16:43:37 2012
New Revision: 235844
URL: http://svn.freebsd.org/changeset/base/235844

Log:
  MFC r235684:
  Add some more 100/130 series device IDs.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Wed May 23 16:43:16 2012
(r235843)
+++ stable/8/sys/dev/iwn/if_iwn.c   Wed May 23 16:43:37 2012
(r235844)
@@ -92,6 +92,9 @@ static const struct iwn_ident iwn_ident_
{ 0x8086, 0x0885, Intel Centrino Wireless-N + WiMAX 6150  },
{ 0x8086, 0x0886, Intel Centrino Wireless-N + WiMAX 6150  },
{ 0x8086, 0x0896, Intel Centrino Wireless-N 130   },
+   { 0x8086, 0x0887, Intel Centrino Wireless-N 130   },
+   { 0x8086, 0x08ae, Intel Centrino Wireless-N 100   },
+   { 0x8086, 0x08af, Intel Centrino Wireless-N 100   },
{ 0x8086, 0x4229, Intel Wireless WiFi Link 4965   },
{ 0x8086, 0x422b, Intel Centrino Ultimate-N 6300  },
{ 0x8086, 0x422c, Intel Centrino Advanced-N 6200  },
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r235684 - head/sys/dev/iwn

2012-05-20 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun May 20 09:29:14 2012
New Revision: 235684
URL: http://svn.freebsd.org/changeset/base/235684

Log:
  Add some more 100/130 series device IDs.
  
  MFC after:3 days

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Sun May 20 08:17:20 2012(r235683)
+++ head/sys/dev/iwn/if_iwn.c   Sun May 20 09:29:14 2012(r235684)
@@ -92,6 +92,9 @@ static const struct iwn_ident iwn_ident_
{ 0x8086, 0x0885, Intel Centrino Wireless-N + WiMAX 6150  },
{ 0x8086, 0x0886, Intel Centrino Wireless-N + WiMAX 6150  },
{ 0x8086, 0x0896, Intel Centrino Wireless-N 130   },
+   { 0x8086, 0x0887, Intel Centrino Wireless-N 130   },
+   { 0x8086, 0x08ae, Intel Centrino Wireless-N 100   },
+   { 0x8086, 0x08af, Intel Centrino Wireless-N 100   },
{ 0x8086, 0x4229, Intel Wireless WiFi Link 4965   },
{ 0x8086, 0x422b, Intel Centrino Ultimate-N 6300  },
{ 0x8086, 0x422c, Intel Centrino Advanced-N 6200  },
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r235685 - head/sys/dev/ath

2012-05-20 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun May 20 09:46:48 2012
New Revision: 235685
URL: http://svn.freebsd.org/changeset/base/235685

Log:
  Remove unused variable.

Modified:
  head/sys/dev/ath/if_ath_rx.c

Modified: head/sys/dev/ath/if_ath_rx.c
==
--- head/sys/dev/ath/if_ath_rx.cSun May 20 09:29:14 2012
(r235684)
+++ head/sys/dev/ath/if_ath_rx.cSun May 20 09:46:48 2012
(r235685)
@@ -766,7 +766,6 @@ ath_rx_proc(struct ath_softc *sc, int re
((_pa) - (_sc)-sc_rxdma.dd_desc_paddr)))
struct ath_buf *bf;
struct ifnet *ifp = sc-sc_ifp;
-   struct ieee80211com *ic = ifp-if_l2com;
struct ath_hal *ah = sc-sc_ah;
struct ath_desc *ds;
struct ath_rx_status *rs;
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r235686 - head/sys/dev/iwn

2012-05-20 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun May 20 10:00:36 2012
New Revision: 235686
URL: http://svn.freebsd.org/changeset/base/235686

Log:
  Discard frames after a DELBA which where queued during an active BA
  session.
  
  MFC after:1 week

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Sun May 20 09:46:48 2012(r235685)
+++ head/sys/dev/iwn/if_iwn.c   Sun May 20 10:00:36 2012(r235686)
@@ -3314,6 +3314,11 @@ iwn_tx_data(struct iwn_softc *sc, struct
if (m-m_flags  M_AMPDU_MPDU) {
struct ieee80211_tx_ampdu *tap = ni-ni_tx_ampdu[ac];
 
+   if (!IEEE80211_AMPDU_RUNNING(tap)) {
+   m_freem(m);
+   return EINVAL;
+   }
+
ac = *(int *)tap-txa_private;
*(uint16_t *)wh-i_seq =
htole16(ni-ni_txseqs[tid]  IEEE80211_SEQ_SEQ_SHIFT);
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r235687 - head/sys/dev/iwn

2012-05-20 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun May 20 10:02:24 2012
New Revision: 235687
URL: http://svn.freebsd.org/changeset/base/235687

Log:
  remove unused vap variable
  
  MFC after:1 week

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Sun May 20 10:00:36 2012(r235686)
+++ head/sys/dev/iwn/if_iwn.c   Sun May 20 10:02:24 2012(r235687)
@@ -2767,7 +2767,6 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, 
struct mbuf *m;
struct iwn_node *wn;
struct ieee80211_node *ni;
-   struct ieee80211vap *vap;
struct ieee80211_tx_ampdu *tap;
uint64_t bitmap;
uint32_t *status = stat;
@@ -2826,7 +2825,6 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, 
bus_dmamap_unload(ring-data_dmat, data-map);
m = data-m, data-m = NULL;
ni = data-ni, data-ni = NULL;
-   vap = ni-ni_vap;
 
if (m-m_flags  M_TXCB)
ieee80211_process_callback(ni, m, 1);
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r235328 - in stable/9/usr.sbin/wpa: . hostapd wpa_supplicant

2012-05-12 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat May 12 08:22:41 2012
New Revision: 235328
URL: http://svn.freebsd.org/changeset/base/235328

Log:
  MFC r234711, r234756-234759, r234786:
  
  r234711:
  fix EAP server support after the 0.7.3 import:
  - eap_xxx.c files have been renamed to eap_server_xxx.c
  - additional crypto files are required for some options
  - EAP_MD5 and EAP_GTC is now enabled by default to match vendor config
  - move each file on its own line to hopefully make further diffs easier
to read
  
  EAP_SERVER is now enabled by default. Fiddling with HOSTAPD_CFLAGS in
  src.conf is no longer required to get a basic WPA-EAP/radius setup
  running. [1]
  
  r234756-234758:
  - Follow up r234711 and do same for the supplicant, one file/option per
line. While here merge the options which are always enabled.
  - enable EAP_GTC and EAP_OTP to match upstream's default configuration
  - not only the file names have changed from eap_xxx.c to eap_server_xxx.c,
the defines too
  
  r234759:
  Move crypto stuff into a common Makefile.  While here fix the
  WITHOUT_OPENSSL build by using the wpa's internal crypto support if
  openssl is not available, this allows us to unconditionally enable
  EAP support.
  
  r234786:
  Fix WITHOUT_EXAMPLES build:
  While removing unnecessary entries from .PATH.c I missed that for the
  examples WPA_SUPPLICANT_DISTDIR/HOSTAPD_DISTDIR is explicitly added to
  .PATH.

Added:
  stable/9/usr.sbin/wpa/Makefile.crypto
 - copied unchanged from r234759, head/usr.sbin/wpa/Makefile.crypto
Modified:
  stable/9/usr.sbin/wpa/Makefile.inc
  stable/9/usr.sbin/wpa/hostapd/Makefile
  stable/9/usr.sbin/wpa/wpa_supplicant/Makefile
Directory Properties:
  stable/9/usr.sbin/wpa/   (props changed)
  stable/9/usr.sbin/wpa/wpa_supplicant/   (props changed)

Copied: stable/9/usr.sbin/wpa/Makefile.crypto (from r234759, 
head/usr.sbin/wpa/Makefile.crypto)
==
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ stable/9/usr.sbin/wpa/Makefile.crypto   Sat May 12 08:22:41 2012
(r235328, copy of r234759, head/usr.sbin/wpa/Makefile.crypto)
@@ -0,0 +1,121 @@
+# $FreeBSD$
+
+.if ${MK_OPENSSL} != no  !defined(RELEASE_CRUNCH)
+SRCS+= crypto_openssl.c
+DPADD+=${LIBSSL} ${LIBCRYPTO}
+LDADD+=-lssl -lcrypto
+.else
+CFLAGS+=-DCONFIG_CRYPTO_INTERNAL
+SRCS+= crypto_internal.c
+CONFIG_INTERNAL_AES=y
+CONFIG_INTERNAL_DES=y
+CONFIG_INTERNAL_MD4=y
+CONFIG_INTERNAL_MD5=y
+CONFIG_INTERNAL_RC4=y
+CONFIG_INTERNAL_SHA1=y
+CONFIG_INTERNAL_SHA256=y
+CONFIG_INTERNAL_TLS=y
+NEED_AES_ENC=true
+.endif
+
+.if defined(TLS_FUNCS)
+NEED_TLS_PRF=y
+.if defined(CONFIG_INTERNAL_TLS)
+CFLAGS+=-DCONFIG_INTERNAL_LIBTOMMATH \
+   -DCONFIG_TLS_INTERNAL_CLIENT
+SRCS+= asn1.c \
+   bignum.c \
+   crypto_internal-cipher.c \
+   crypto_internal-modexp.c \
+   crypto_internal-rsa.c \
+   pkcs1.c \
+   pkcs5.c \
+   pkcs8.c \
+   rsa.c \
+   tls_internal.c \
+   tlsv1_common.c \
+   tlsv1_record.c \
+   tlsv1_cred.c \
+   tlsv1_client.c \
+   tlsv1_client_write.c \
+   tlsv1_client_read.c \
+   x509v3.c
+NEED_DES=y
+NEED_MD4=y
+NEED_RC4=y
+.else
+CFLAGS+=-DEAP_TLS_OPENSSL
+SRCS+= tls_openssl.c
+.endif
+.endif
+
+.if defined(CONFIG_INTERNAL_AES)
+SRCS+= aes-internal.c \
+   aes-internal-dec.c \
+   aes-internal-enc.c
+.endif
+
+.if defined(NEED_AES_CBC)
+SRCS+= aes-cbc.c
+.endif
+
+.if defined(NEED_AES_EAX)
+SRCS+= aes-eax.c
+NEED_AES_CTR=y
+.endif
+
+.if defined(NEED_AES_CTR)
+SRCS+= aes-ctr.c
+.endif
+
+.if defined(NEED_AES_ENCBLOCK)
+SRCS+= aes-encblock.c
+.endif
+
+.if defined(NEED_AES_OMAC1)
+SRCS+= aes-omac1.c
+.endif
+
+.if defined(NEED_DES)
+.if defined(CONFIG_INTERNAL_DES)
+SRCS+= des-internal.c
+.endif
+.endif
+
+.if defined(NEED_MD4)
+.if defined(CONFIG_INTERNAL_MD4)
+SRCS+= md4-internal.c
+.endif
+.endif
+
+.if defined(CONFIG_INTERNAL_MD5)
+SRCS+= md5-internal.c
+.endif
+
+.if defined(NEED_FIPS186_2_PRF)
+.if defined(CONFIG_INTERNAL_SHA1)
+SRCS+= fips_prf_internal.c
+.else
+SRCS+= fips_prf_openssl.c
+.endif
+.endif
+
+.if defined(CONFIG_INTERNAL_RC4)
+SRCS+= rc4.c
+.endif
+
+.if defined(CONFIG_INTERNAL_SHA1)
+SRCS+= sha1-internal.c
+.endif
+
+.if defined(NEED_SHA256)
+CFLAGS+=-DCONFIG_SHA256
+SRCS+= sha256.c
+.if defined(CONFIG_INTERNAL_SHA256)
+SRCS+= sha256-internal.c
+.endif
+.endif
+
+.if defined(NEED_TLS_PRF)
+SRCS+= sha1-tlsprf.c
+.endif

Modified: stable/9/usr.sbin/wpa/Makefile.inc
==
--- stable/9/usr.sbin/wpa/Makefile.inc  Sat May 12 07:52:45 2012
(r235327)
+++ stable/9/usr.sbin/wpa/Makefile.inc  Sat May 12 08:22:41 2012
(r235328)
@@ -7,17 +7,26 @@ WPA_SUPPLICANT_DISTDIR?=${WPA_DISTDIR}/w
 HOSTAPD_DISTDIR?=  ${WPA_DISTDIR}/hostapd
 
 .PATH.c:${.CURDIR}/.. \
+   ${WPA_DISTDIR}/src/ap \
${WPA_DISTDIR}/src/common \

svn commit: r235233 - in head/sys: conf dev/ral modules/ral

2012-05-10 Thread Bernhard Schmidt
 Damien Bergamini damien.bergam...@free.fr
+ * Copyright (c) 2012 Bernhard Schmidt bschm...@freebsd.org
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * $OpenBSD: rt2860.c,v 1.65 2010/10/23 14:24:54 damien Exp $
+ */
+
+#include sys/cdefs.h
+__FBSDID($FreeBSD$);
+
+/*-
+ * Ralink Technology RT2860/RT3090/RT3390/RT3562 chipset driver
+ * http://www.ralinktech.com/
+ */
+
+#include sys/param.h
+#include sys/sysctl.h
+#include sys/sockio.h
+#include sys/mbuf.h
+#include sys/kernel.h
+#include sys/socket.h
+#include sys/systm.h
+#include sys/malloc.h
+#include sys/lock.h
+#include sys/mutex.h
+#include sys/module.h
+#include sys/bus.h
+#include sys/endian.h
+#include sys/firmware.h
+
+#include machine/bus.h
+#include machine/resource.h
+#include sys/rman.h
+
+#include net/bpf.h
+#include net/if.h
+#include net/if_arp.h
+#include net/ethernet.h
+#include net/if_dl.h
+#include net/if_media.h
+#include net/if_types.h
+
+#include net80211/ieee80211_var.h
+#include net80211/ieee80211_radiotap.h
+#include net80211/ieee80211_regdomain.h
+#include net80211/ieee80211_ratectl.h
+
+#include netinet/in.h
+#include netinet/in_systm.h
+#include netinet/in_var.h
+#include netinet/ip.h
+#include netinet/if_ether.h
+
+#include dev/ral/rt2860reg.h
+#include dev/ral/rt2860var.h
+
+#define RAL_DEBUG
+#ifdef RAL_DEBUG
+#define DPRINTF(x) do { if (sc-sc_debug  0) printf x; } while (0)
+#define DPRINTFN(n, x) do { if (sc-sc_debug = (n)) printf x; } while (0)
+#else
+#define DPRINTF(x)
+#define DPRINTFN(n, x)
+#endif
+
+static struct ieee80211vap *rt2860_vap_create(struct ieee80211com *,
+   const char [IFNAMSIZ], int, enum ieee80211_opmode,
+   int, const uint8_t [IEEE80211_ADDR_LEN],
+   const uint8_t [IEEE80211_ADDR_LEN]);
+static voidrt2860_vap_delete(struct ieee80211vap *);
+static voidrt2860_dma_map_addr(void *, bus_dma_segment_t *, int, int);
+static int rt2860_alloc_tx_ring(struct rt2860_softc *,
+   struct rt2860_tx_ring *);
+static voidrt2860_reset_tx_ring(struct rt2860_softc *,
+   struct rt2860_tx_ring *);
+static voidrt2860_free_tx_ring(struct rt2860_softc *,
+   struct rt2860_tx_ring *);
+static int rt2860_alloc_tx_pool(struct rt2860_softc *);
+static voidrt2860_free_tx_pool(struct rt2860_softc *);
+static int rt2860_alloc_rx_ring(struct rt2860_softc *,
+   struct rt2860_rx_ring *);
+static voidrt2860_reset_rx_ring(struct rt2860_softc *,
+   struct rt2860_rx_ring *);
+static voidrt2860_free_rx_ring(struct rt2860_softc *,
+   struct rt2860_rx_ring *);
+static voidrt2860_updatestats(struct rt2860_softc *);
+static voidrt2860_newassoc(struct ieee80211_node *, int);
+static voidrt2860_node_free(struct ieee80211_node *);
+#ifdef IEEE80211_HT
+static int rt2860_ampdu_rx_start(struct ieee80211com *,
+   struct ieee80211_node *, uint8_t);
+static voidrt2860_ampdu_rx_stop(struct ieee80211com *,
+   struct ieee80211_node *, uint8_t);
+#endif
+static int rt2860_newstate(struct ieee80211vap *, enum ieee80211_state,
+   int);
+static uint16_trt3090_efuse_read_2(struct rt2860_softc *, uint16_t);
+static uint16_trt2860_eeprom_read_2(struct rt2860_softc *, uint16_t);
+static voidrt2860_intr_coherent(struct rt2860_softc *);
+static voidrt2860_drain_stats_fifo(struct rt2860_softc *);
+static voidrt2860_tx_intr(struct rt2860_softc *, int);
+static voidrt2860_rx_intr(struct rt2860_softc *);
+static voidrt2860_tbtt_intr(struct rt2860_softc *);
+static voidrt2860_gp_intr(struct rt2860_softc *);
+static int rt2860_tx(struct rt2860_softc *, struct mbuf *,
+   struct ieee80211_node *);
+static int rt2860_raw_xmit(struct ieee80211_node *, struct mbuf *,
+   const struct ieee80211_bpf_params *);
+static int rt2860_tx_raw(struct rt2860_softc *, struct mbuf *,
+   struct ieee80211_node *,
+   const struct ieee80211_bpf_params *params);
+static voidrt2860_start(struct ifnet *);
+static voidrt2860_start_locked(struct ifnet *);
+static voidrt2860_watchdog(void

svn commit: r235235 - head/share/man/man4

2012-05-10 Thread Bernhard Schmidt
Author: bschmidt
Date: Thu May 10 18:10:20 2012
New Revision: 235235
URL: http://svn.freebsd.org/changeset/base/235235

Log:
  Update man page due import of RT2800/RT3000 support.
  
  Obtained from:OpenBSD
  MFC after:3 weeks

Modified:
  head/share/man/man4/ral.4

Modified: head/share/man/man4/ral.4
==
--- head/share/man/man4/ral.4   Thu May 10 18:06:00 2012(r235234)
+++ head/share/man/man4/ral.4   Thu May 10 18:10:20 2012(r235235)
@@ -1,5 +1,4 @@
-.\ Copyright (c) 2005, 2006
-.\ Damien Bergamini damien.bergam...@free.fr
+.\ Copyright (c) 2005-2010 Damien Bergamini damien.bergam...@free.fr
 .\
 .\ Permission to use, copy, modify, and distribute this software for any
 .\ purpose with or without fee is hereby granted, provided that the above
@@ -15,12 +14,12 @@
 .\
 .\ $FreeBSD$
 .\
-.Dd July 8, 2009
+.Dd May 10, 2012
 .Dt RAL 4
 .Os
 .Sh NAME
 .Nm ral
-.Nd Ralink Technology IEEE 802.11 wireless network driver
+.Nd Ralink Technology IEEE 802.11a/g/n wireless network device
 .Sh SYNOPSIS
 To compile this driver into the kernel,
 place the following lines in your
@@ -42,31 +41,43 @@ if_ral_load=YES
 .Sh DESCRIPTION
 The
 .Nm
-driver supports PCI/CardBus wireless adapters based on the Ralink Technology
-RT2500, RT2501, and RT2600 chipsets.
+driver supports PCI/PCIe/CardBus wireless adapters based on the Ralink RT2500,
+RT2501, RT2600, RT2700, RT2800 and RT3090 chipsets.
 .Pp
 The RT2500 chipset is the first generation of 802.11b/g adapters from Ralink.
-It consists of two integrated chips, a RT2560 MAC/BBP and a RT2525 radio
+It consists of two integrated chips, an RT2560 MAC/BBP and an RT2525 radio
 transceiver.
 .Pp
-The RT2501 chipset is the second generation of 802.11b/g adapters from Ralink.
-It consists of two integrated chips, a RT2561 MAC/BBP and a RT2527 radio
+The RT2501 chipset is the second generation of 802.11a/b/g adapters from
+Ralink.
+It consists of two integrated chips, an RT2561 MAC/BBP and an RT2527 radio
 transceiver.
 This chipset provides support for the IEEE 802.11e standard with multiple
 hardware transmission queues and allows scatter/gather for efficient DMA
 operations.
 .Pp
-The RT2600 chipset consists of two integrated chips, a RT2661 MAC/BBP and a
+The RT2600 chipset consists of two integrated chips, an RT2661 MAC/BBP and an
 RT2529 radio transceiver.
 This chipset uses the MIMO (multiple-input multiple-output) technology with
-multiple antennas to extend the operating range of the adapter and to achieve
-higher throughput.
-MIMO is the basis of the forthcoming IEEE 802.11n standard.
-.Pp
-The transmit speed is user-selectable or can be adapted automatically by the
-driver depending on the received signal strength and on the number of hardware
-transmission retries.
+multiple radio transceivers to extend the operating range of the adapter and
+to achieve higher throughput.
+However, the RT2600 chipset does not support any of the 802.11n features.
+.Pp
+The RT2700 chipset is a low-cost version of the RT2800 chipset.
+It supports a single transmit path and two receiver paths (1T2R).
+It consists of two integrated chips, an RT2760 or RT2790 (PCIe) MAC/BBP and
+an RT2720 (2.4GHz) or RT2750 (2.4GHz/5GHz) radio transceiver.
+.Pp
+The RT2800 chipset is the first generation of 802.11n adapters from Ralink.
+It consists of two integrated chips, an RT2860 or RT2890 (PCIe) MAC/BBP and
+an RT2820 (2.4GHz) or RT2850 (2.4GHz/5GHz) radio transceiver.
+The RT2800 chipset supports two transmit paths and up to three receiver
+paths (2T2R/2T3R).
+It can achieve speeds up to 144Mbps (20MHz bandwidth) and 300Mbps (40MHz
+bandwidth.)
 .Pp
+The RT3090 chipset is the first generation of single-chip 802.11n adapters
+from Ralink.
 .Nm
 supports
 .Cm station ,
@@ -92,13 +103,16 @@ Multiple
 interfaces may be operated together with a
 .Cm hostap
 interface to construct a wireless repeater device.
+.Pp
+The transmit speed is user-selectable or can be adapted automatically by the
+driver depending on the number of hardware transmission retries.
 For more information on configuring this device, see
 .Xr ifconfig 8 .
 .Sh HARDWARE
 The
 .Nm
-driver supports PCI/CardBus wireless adapters based on the Ralink Technology
-RT2500, RT2501, and RT2600 chipsets, including:
+driver supports PCI/PCIe/CardBus wireless adapters based on Ralink Technology
+chipsets, including:
 .Pp
 .Bl -column -compact .Li Atlantis Land A02-PCM-W54 RT2561S CardBus
 .It Em Card Ta Em MAC/BBP Ta Em Bus
@@ -188,9 +202,6 @@ RT2500, RT2501, and RT2600 chipsets, inc
 .It Zonet ZEW1500 Ta RT2560 Ta CardBus
 .It Zonet ZEW1600 Ta RT2560 Ta PCI
 .El
-.Pp
-An up to date list can be found at
-.Pa http://damien.bergamini.free.fr/ral/list.html .
 .Sh EXAMPLES
 Join an existing BSS network (i.e., connect to an access point):
 .Pp
@@ -239,6 +250,7 @@ This should not happen.
 .Xr hostapd 8 ,
 .Xr ifconfig 8 ,
 .Xr wpa_supplicant 8 .
+.Xr ifconfig 

svn commit: r235236 - head/share/man/man4

2012-05-10 Thread Bernhard Schmidt
Author: bschmidt
Date: Thu May 10 18:14:25 2012
New Revision: 235236
URL: http://svn.freebsd.org/changeset/base/235236

Log:
  ifconfig(8) is important, but no need to mention it twice.
  
  MFC after:3 weeks

Modified:
  head/share/man/man4/ral.4

Modified: head/share/man/man4/ral.4
==
--- head/share/man/man4/ral.4   Thu May 10 18:10:20 2012(r235235)
+++ head/share/man/man4/ral.4   Thu May 10 18:14:25 2012(r235236)
@@ -250,7 +250,6 @@ This should not happen.
 .Xr hostapd 8 ,
 .Xr ifconfig 8 ,
 .Xr wpa_supplicant 8 .
-.Xr ifconfig 8
 .Rs
 .%T Ralink Technology
 .%U http://www.ralinktech.com/
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r235237 - head/share/man/man4

2012-05-10 Thread Bernhard Schmidt
Author: bschmidt
Date: Thu May 10 18:25:59 2012
New Revision: 235237
URL: http://svn.freebsd.org/changeset/base/235237

Log:
  remove trailing '.'
  
  Poked by: gjb
  MFC after:3 weeks

Modified:
  head/share/man/man4/ral.4

Modified: head/share/man/man4/ral.4
==
--- head/share/man/man4/ral.4   Thu May 10 18:14:25 2012(r235236)
+++ head/share/man/man4/ral.4   Thu May 10 18:25:59 2012(r235237)
@@ -249,7 +249,7 @@ This should not happen.
 .Xr wlan_xauth 4 ,
 .Xr hostapd 8 ,
 .Xr ifconfig 8 ,
-.Xr wpa_supplicant 8 .
+.Xr wpa_supplicant 8
 .Rs
 .%T Ralink Technology
 .%U http://www.ralinktech.com/
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r234786 - in head/usr.sbin/wpa: hostapd wpa_supplicant

2012-04-29 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun Apr 29 12:48:52 2012
New Revision: 234786
URL: http://svn.freebsd.org/changeset/base/234786

Log:
  Fix WITHOUT_EXAMPLES build:
  While removing unnecessary entries from .PATH.c I missed that for the
  examples WPA_SUPPLICANT_DISTDIR/HOSTAPD_DISTDIR is explicitly added to
  .PATH.
  
  Tested by:lev
  MFC after:2 weeks

Modified:
  head/usr.sbin/wpa/hostapd/Makefile
  head/usr.sbin/wpa/wpa_supplicant/Makefile

Modified: head/usr.sbin/wpa/hostapd/Makefile
==
--- head/usr.sbin/wpa/hostapd/Makefile  Sun Apr 29 11:04:31 2012
(r234785)
+++ head/usr.sbin/wpa/hostapd/Makefile  Sun Apr 29 12:48:52 2012
(r234786)
@@ -2,7 +2,8 @@
 
 .include ${.CURDIR}/../Makefile.inc
 
-.PATH.c:${WPA_DISTDIR}/src/drivers
+.PATH.c:${HOSTAPD_DISTDIR} \
+   ${WPA_DISTDIR}/src/drivers
 
 PROG=  hostapd
 SRCS=  accounting.c \

Modified: head/usr.sbin/wpa/wpa_supplicant/Makefile
==
--- head/usr.sbin/wpa/wpa_supplicant/Makefile   Sun Apr 29 11:04:31 2012
(r234785)
+++ head/usr.sbin/wpa/wpa_supplicant/Makefile   Sun Apr 29 12:48:52 2012
(r234786)
@@ -2,7 +2,8 @@
 
 .include ${.CURDIR}/../Makefile.inc
 
-.PATH.c:${WPA_DISTDIR}/src/drivers
+.PATH.c:${WPA_SUPPLICANT_DISTDIR} \
+   ${WPA_DISTDIR}/src/drivers
 
 PROG=  wpa_supplicant
 SRCS=  aes-unwrap.c \
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r234756 - in head/usr.sbin/wpa: . wpa_supplicant

2012-04-28 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Apr 28 10:59:29 2012
New Revision: 234756
URL: http://svn.freebsd.org/changeset/base/234756

Log:
  Follow up r234711 and do same for the supplicant, one file/option per
  line. While here merge the options which are always enabled.
  
  MFC after:2 weeks

Modified:
  head/usr.sbin/wpa/Makefile.inc
  head/usr.sbin/wpa/wpa_supplicant/Makefile

Modified: head/usr.sbin/wpa/Makefile.inc
==
--- head/usr.sbin/wpa/Makefile.inc  Sat Apr 28 09:21:43 2012
(r234755)
+++ head/usr.sbin/wpa/Makefile.inc  Sat Apr 28 10:59:29 2012
(r234756)
@@ -12,10 +12,13 @@ HOSTAPD_DISTDIR?=   ${WPA_DISTDIR}/hostapd
${WPA_DISTDIR}/src/crypto \
${WPA_DISTDIR}/src/eapol_auth \
${WPA_DISTDIR}/src/eap_common \
+   ${WPA_DISTDIR}/src/eap_peer \
${WPA_DISTDIR}/src/eap_server \
${WPA_DISTDIR}/src/eapol_supp \
${WPA_DISTDIR}/src/l2_packet \
${WPA_DISTDIR}/src/radius \
+   ${WPA_DISTDIR}/src/rsn_supp \
+   ${WPA_DISTDIR}/src/tls \
${WPA_DISTDIR}/src/utils
 
 CFLAGS+=-I${.CURDIR}

Modified: head/usr.sbin/wpa/wpa_supplicant/Makefile
==
--- head/usr.sbin/wpa/wpa_supplicant/Makefile   Sat Apr 28 09:21:43 2012
(r234755)
+++ head/usr.sbin/wpa/wpa_supplicant/Makefile   Sat Apr 28 10:59:29 2012
(r234756)
@@ -2,24 +2,53 @@
 
 .include ${.CURDIR}/../Makefile.inc
 
-.PATH.c:${WPA_SUPPLICANT_DISTDIR} \
-   ${WPA_DISTDIR}/src/drivers \
-   ${WPA_DISTDIR}/src/eap_peer \
-   ${WPA_DISTDIR}/src/rsn_supp \
-   ${WPA_DISTDIR}/src/crypto
+.PATH.c:${WPA_DISTDIR}/src/drivers
 
 PROG=  wpa_supplicant
-SRCS=  aes-cbc.c aes-ctr.c aes-eax.c aes-encblock.c \
-   aes-internal.c aes-omac1.c aes-unwrap.c \
-   aes-wrap.c bss.c blacklist.c common.c config.c ctrl_iface.c \
-   ctrl_iface_unix.c drivers.c eloop.c events.c l2_packet_freebsd.c main.c\
-   md5.c notify.c preauth.c pmksa_cache.c scan.c \
-   sha1-pbkdf2.c sha1-tlsprf.c sha1-tprf.c sha1.c \
-   wpa.c wpa_common.c wpa_debug.c wpa_ie.c wpa_supplicant.c \
-   wpabuf.c wpas_glue.c \
-   driver_ndis.c Packet32.c \
+SRCS=  aes-cbc.c \
+   aes-ctr.c \
+   aes-eax.c \
+   aes-encblock.c \
+   aes-internal.c \
+   aes-omac1.c \
+   aes-unwrap.c \
+   aes-wrap.c \
+   base64.c \
+   blacklist.c \
+   bss.c \
+   common.c \
+   config.c \
+   config_file.c \
+   ctrl_iface.c \
+   ctrl_iface_unix.c \
+   driver_ndis.c \
driver_wired.c \
-   driver_freebsd.c os_unix.c
+   drivers.c \
+   eap_register.c \
+   eloop.c \
+   events.c \
+   main.c \
+   md5.c \
+   notify.c \
+   os_unix.c \
+   peerkey.c \
+   pmksa_cache.c \
+   preauth.c \
+   scan.c \
+   sha1-pbkdf2.c \
+   sha1-tlsprf.c \
+   sha1-tprf.c \
+   sha1.c \
+   wpa.c \
+   wpa_common.c \
+   wpa_debug.c \
+   wpa_ie.c \
+   wpa_supplicant.c \
+   wpabuf.c \
+   wpas_glue.c
+SRCS+= driver_freebsd.c \
+   l2_packet_freebsd.c \
+   Packet32.c
 
 MAN=   wpa_supplicant.8 wpa_supplicant.conf.5
 
@@ -29,23 +58,19 @@ FILESDIR= ${SHAREDIR}/examples/etc
 FILES= wpa_supplicant.conf
 .endif
 
-CFLAGS+=-I${WPA_SUPPLICANT_DISTDIR}
-CFLAGS+=-I${WPA_DISTDIR}/src/drivers
-CFLAGS+=-I${WPA_DISTDIR}/src/rsn_supp
-
-CFLAGS+= -DCONFIG_DRIVER_BSD
-CFLAGS+= -DCONFIG_DRIVER_NDIS
-CFLAGS+= -DCONFIG_DRIVER_WIRED
-CFLAGS+= -DCONFIG_TERMINATE_ONLASTIF
-CFLAGS+= -DCONFIG_DEBUG_SYSLOG
+CFLAGS+=-DCONFIG_BACKEND_FILE \
+   -DCONFIG_DEBUG_SYSLOG \
+   -DCONFIG_DRIVER_BSD \
+   -DCONFIG_DRIVER_NDIS \
+   -DCONFIG_DRIVER_WIRED \
+   -DCONFIG_PEERKEY \
+   -DCONFIG_SMARTCARD \
+   -DCONFIG_TERMINATE_ONLASTIF \
+   -DPKCS12_FUNCS
 #CFLAGS+= -g
 DPADD+=${LIBPCAP}
 LDADD+=-lpcap
 
-# NB: we only support wpa_supplicant.conf file
-SRCS+= config_file.c base64.c
-CFLAGS+=-DCONFIG_BACKEND_FILE
-
 # User customizations to the wpa_supplicant build environment
 CFLAGS+=${WPA_SUPPLICANT_CFLAGS}
 #DPADD+=${WPA_SUPPLICANT_DPADD}
@@ -53,22 +78,39 @@ LDADD+=${WPA_SUPPLICANT_LDADD}
 #LDFLAGS+=${WPA_SUPPLICANT_LDFLAGS}
 
 .if ${MK_WPA_SUPPLICANT_EAPOL} != no
-SRCS+= eapol_supp_sm.c eap.c eap_common.c eap_methods.c eap_register.c
-CFLAGS+= -DIEEE8021X_EAPOL
 
 .if ${MK_OPENSSL} != no  !defined(RELEASE_CRUNCH)
-CFLAGS+=-DEAP_TLS -DEAP_PEAP -DEAP_MSCHAPv2 -DEAP_LEAP -DEAP_PSK \
-   -DEAP_TLV -DEAP_TLS_FUNCS -DEAP_TLS_OPENSSL
-SRCS+= chap.c crypto_openssl.c \
+
+CFLAGS+=-DEAP_LEAP \
+   -DEAP_MD5 \
+   -DEAP_MSCHAPv2 \
+   -DEAP_PEAP \
+   -DEAP_PSK \
+   -DEAP_TLS \
+   -DEAP_TLV \
+   -DEAP_TLS_FUNCS \
+   -DEAP_TLS_OPENSSL \
+   -DEAP_TTLS \
+   -DIEEE8021X_EAPOL
+SRCS+= chap.c \
+   crypto_openssl.c \
+  

svn commit: r234757 - head/usr.sbin/wpa/wpa_supplicant

2012-04-28 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Apr 28 11:01:12 2012
New Revision: 234757
URL: http://svn.freebsd.org/changeset/base/234757

Log:
  enable EAP_GTC and EAP_OTP to match upstream's default configuration
  
  MFC after:2 weeks

Modified:
  head/usr.sbin/wpa/wpa_supplicant/Makefile

Modified: head/usr.sbin/wpa/wpa_supplicant/Makefile
==
--- head/usr.sbin/wpa/wpa_supplicant/Makefile   Sat Apr 28 10:59:29 2012
(r234756)
+++ head/usr.sbin/wpa/wpa_supplicant/Makefile   Sat Apr 28 11:01:12 2012
(r234757)
@@ -81,9 +81,11 @@ LDADD+=${WPA_SUPPLICANT_LDADD}
 
 .if ${MK_OPENSSL} != no  !defined(RELEASE_CRUNCH)
 
-CFLAGS+=-DEAP_LEAP \
+CFLAGS+=-DEAP_GTC \
+   -DEAP_LEAP \
-DEAP_MD5 \
-DEAP_MSCHAPv2 \
+   -DEAP_OTP \
-DEAP_PEAP \
-DEAP_PSK \
-DEAP_TLS \
@@ -96,10 +98,12 @@ SRCS+=  chap.c \
crypto_openssl.c \
eap.c \
eap_common.c \
+   eap_gtc.c \
eap_leap.c \
eap_md5.c \
eap_methods.c \
eap_mschapv2.c \
+   eap_otp.c \
eap_peap.c \
eap_peap_common.c \
eap_psk.c \
@@ -112,14 +116,6 @@ SRCS+= chap.c \
mschapv2.c \
tls_openssl.c
 
-.if !empty(CFLAGS:M*-DEAP_GTC)
-SRCS+= eap_gtc.c
-.endif
-
-.if !empty(CFLAGS:M*-DEAP_OTP)
-SRCS+= eap_otp.c
-.endif
-
 .if !empty(CFLAGS:M*-DEAP_AKA)
 NEED_SIM_COMMON=   true
 SRCS+= eap_aka.c
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r234758 - head/usr.sbin/wpa/hostapd

2012-04-28 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Apr 28 11:02:32 2012
New Revision: 234758
URL: http://svn.freebsd.org/changeset/base/234758

Log:
  not only the file names have changed from eap_xxx.c to eap_server_xxx.c,
  the defines too
  
  MFC after:2 weeks

Modified:
  head/usr.sbin/wpa/hostapd/Makefile

Modified: head/usr.sbin/wpa/hostapd/Makefile
==
--- head/usr.sbin/wpa/hostapd/Makefile  Sat Apr 28 11:01:12 2012
(r234757)
+++ head/usr.sbin/wpa/hostapd/Makefile  Sat Apr 28 11:02:32 2012
(r234758)
@@ -106,13 +106,13 @@ SRCS+=dump_state.c \
eap_server_ttls.c \
tls_openssl.c
 
-.if !empty(CFLAGS:M*-DEAP_AKA)
+.if !empty(CFLAGS:M*-DEAP_SERVER_AKA)
 NEED_SIM_COMMON=   true
 NEED_SHA256=   true
 SRCS+= eap_server_aka.c
 .endif
 
-.if !empty(CFLAGS:M*-DEAP_SIM)
+.if !empty(CFLAGS:M*-DEAP_SERVER_SIM)
 NEED_SIM_COMMON=   true
 SRCS+= eap_server_sim.c
 .endif
@@ -124,7 +124,7 @@ NEED_AES_CBC=   true
 NEED_FIPS186_2_PRF=true
 .endif
 
-.if !empty(CFLAGS:M*-DEAP_GPSK)
+.if !empty(CFLAGS:M*-DEAP_SERVER_GPSK)
 CFLAGS+=-DEAP_GPSK_SHA256
 SRCS+= eap_server_gpsk.c \
eap_gpsk_common.c
@@ -132,12 +132,12 @@ NEED_SHA256=  true
 NEED_AES_OMAC1=true
 .endif
 
-.if !empty(CFLAGS:M*-DEAP_PAX)
+.if !empty(CFLAGS:M*-DEAP_SERVER_PAX)
 SRCS+= eap_server_pax.c \
eap_pax_common.c
 .endif
 
-.if !empty(CFLAGS:M*-DEAP_SAKE)
+.if !empty(CFLAGS:M*-DEAP_SERVER_SAKE)
 SRCS+= eap_server_sake.c \
eap_sake_common.c
 .endif
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r234759 - in head/usr.sbin/wpa: . hostapd wpa_supplicant

2012-04-28 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Apr 28 11:11:53 2012
New Revision: 234759
URL: http://svn.freebsd.org/changeset/base/234759

Log:
  Move crypto stuff into a common Makefile.  While here fix the
  WITHOUT_OPENSSL build by using the wpa's internal crypto support if
  openssl is not available, this allows us to unconditionally enable
  EAP support.
  
  MFC after:2 weeks

Added:
  head/usr.sbin/wpa/Makefile.crypto   (contents, props changed)
Modified:
  head/usr.sbin/wpa/hostapd/Makefile
  head/usr.sbin/wpa/wpa_supplicant/Makefile

Added: head/usr.sbin/wpa/Makefile.crypto
==
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/usr.sbin/wpa/Makefile.crypto   Sat Apr 28 11:11:53 2012
(r234759)
@@ -0,0 +1,121 @@
+# $FreeBSD$
+
+.if ${MK_OPENSSL} != no  !defined(RELEASE_CRUNCH)
+SRCS+= crypto_openssl.c
+DPADD+=${LIBSSL} ${LIBCRYPTO}
+LDADD+=-lssl -lcrypto
+.else
+CFLAGS+=-DCONFIG_CRYPTO_INTERNAL
+SRCS+= crypto_internal.c
+CONFIG_INTERNAL_AES=y
+CONFIG_INTERNAL_DES=y
+CONFIG_INTERNAL_MD4=y
+CONFIG_INTERNAL_MD5=y
+CONFIG_INTERNAL_RC4=y
+CONFIG_INTERNAL_SHA1=y
+CONFIG_INTERNAL_SHA256=y
+CONFIG_INTERNAL_TLS=y
+NEED_AES_ENC=true
+.endif
+
+.if defined(TLS_FUNCS)
+NEED_TLS_PRF=y
+.if defined(CONFIG_INTERNAL_TLS)
+CFLAGS+=-DCONFIG_INTERNAL_LIBTOMMATH \
+   -DCONFIG_TLS_INTERNAL_CLIENT
+SRCS+= asn1.c \
+   bignum.c \
+   crypto_internal-cipher.c \
+   crypto_internal-modexp.c \
+   crypto_internal-rsa.c \
+   pkcs1.c \
+   pkcs5.c \
+   pkcs8.c \
+   rsa.c \
+   tls_internal.c \
+   tlsv1_common.c \
+   tlsv1_record.c \
+   tlsv1_cred.c \
+   tlsv1_client.c \
+   tlsv1_client_write.c \
+   tlsv1_client_read.c \
+   x509v3.c
+NEED_DES=y
+NEED_MD4=y
+NEED_RC4=y
+.else
+CFLAGS+=-DEAP_TLS_OPENSSL
+SRCS+= tls_openssl.c
+.endif
+.endif
+
+.if defined(CONFIG_INTERNAL_AES)
+SRCS+= aes-internal.c \
+   aes-internal-dec.c \
+   aes-internal-enc.c
+.endif
+
+.if defined(NEED_AES_CBC)
+SRCS+= aes-cbc.c
+.endif
+
+.if defined(NEED_AES_EAX)
+SRCS+= aes-eax.c
+NEED_AES_CTR=y
+.endif
+
+.if defined(NEED_AES_CTR)
+SRCS+= aes-ctr.c
+.endif
+
+.if defined(NEED_AES_ENCBLOCK)
+SRCS+= aes-encblock.c
+.endif
+
+.if defined(NEED_AES_OMAC1)
+SRCS+= aes-omac1.c
+.endif
+
+.if defined(NEED_DES)
+.if defined(CONFIG_INTERNAL_DES)
+SRCS+= des-internal.c
+.endif
+.endif
+
+.if defined(NEED_MD4)
+.if defined(CONFIG_INTERNAL_MD4)
+SRCS+= md4-internal.c
+.endif
+.endif
+
+.if defined(CONFIG_INTERNAL_MD5)
+SRCS+= md5-internal.c
+.endif
+
+.if defined(NEED_FIPS186_2_PRF)
+.if defined(CONFIG_INTERNAL_SHA1)
+SRCS+= fips_prf_internal.c
+.else
+SRCS+= fips_prf_openssl.c
+.endif
+.endif
+
+.if defined(CONFIG_INTERNAL_RC4)
+SRCS+= rc4.c
+.endif
+
+.if defined(CONFIG_INTERNAL_SHA1)
+SRCS+= sha1-internal.c
+.endif
+
+.if defined(NEED_SHA256)
+CFLAGS+=-DCONFIG_SHA256
+SRCS+= sha256.c
+.if defined(CONFIG_INTERNAL_SHA256)
+SRCS+= sha256-internal.c
+.endif
+.endif
+
+.if defined(NEED_TLS_PRF)
+SRCS+= sha1-tlsprf.c
+.endif

Modified: head/usr.sbin/wpa/hostapd/Makefile
==
--- head/usr.sbin/wpa/hostapd/Makefile  Sat Apr 28 11:02:32 2012
(r234758)
+++ head/usr.sbin/wpa/hostapd/Makefile  Sat Apr 28 11:11:53 2012
(r234759)
@@ -11,10 +11,10 @@ SRCS=   accounting.c \
ap_drv_ops.c \
ap_mlme.c \
authsrv.c \
+   base64.c \
chap.c \
common.c \
config_file.c \
-   crypto_openssl.c \
ctrl_iface.c \
ctrl_iface_ap.c \
drivers.c \
@@ -42,7 +42,6 @@ SRCS= accounting.c \
radius.c \
radius_client.c \
sha1-pbkdf2.c \
-   sha1-tlsprf.c \
sha1.c \
sta_info.c \
tkip_countermeasures.c \
@@ -73,8 +72,8 @@ CFLAGS+=-DCONFIG_DRIVER_BSD \
 CFLAGS+= -DCONFIG_IPV6
 .endif
 #CFLAGS+= -g
-DPADD+=${LIBPCAP} ${LIBSSL}
-LDADD+=-lpcap -lssl
+DPADD+=${LIBPCAP}
+LDADD+=-lpcap
 
 # User customizations for wpa_supplicant/hostapd build environment
 CFLAGS+=${HOSTAPD_CFLAGS}
@@ -82,8 +81,6 @@ CFLAGS+=${HOSTAPD_CFLAGS}
 LDADD+=${HOSTAPD_LDADD}
 #LDFLAGS+=${HOSTAPD_LDFLAGS}
 
-.if ${MK_OPENSSL} != no  !defined(RELEASE_CRUNCH)
-
 CFLAGS+=-DDPKCS12_FUNCS \
-DEAP_SERVER \
-DEAP_SERVER_GTC \
@@ -103,33 +100,32 @@ SRCS+=dump_state.c \
eap_server_peap.c \
eap_server_tls.c \
eap_server_tls_common.c \
-   eap_server_ttls.c \
-   tls_openssl.c
+   eap_server_ttls.c
+TLS_FUNCS=y
+NEED_SHA256=y
 
 .if !empty(CFLAGS:M*-DEAP_SERVER_AKA)
-NEED_SIM_COMMON=   true
-NEED_SHA256=   true
 SRCS+= eap_server_aka.c
+NEED_SIM_COMMON=y
 .endif
 
 .if !empty(CFLAGS:M*-DEAP_SERVER_SIM)
-NEED_SIM_COMMON=   true
 SRCS+= eap_server_sim.c
+NEED_SIM_COMMON=y
 .endif
 
 .if defined(NEED_SIM_COMMON)
 SRCS+= eap_sim_common.c \
 

svn commit: r234711 - in head/usr.sbin/wpa: . hostapd

2012-04-26 Thread Bernhard Schmidt
Author: bschmidt
Date: Thu Apr 26 17:35:11 2012
New Revision: 234711
URL: http://svn.freebsd.org/changeset/base/234711

Log:
  fix EAP server support after the 0.7.3 import:
  - eap_xxx.c files have been renamed to eap_server_xxx.c
  - additional crypto files are required for some options
  - EAP_MD5 and EAP_GTC is now enabled by default to match vendor config
  - move each file on its own line to hopefully make further diffs easier
to read
  
  EAP_SERVER is now enabled by default. Fiddling with HOSTAPD_CFLAGS in
  src.conf is no longer required to get a basic WPA-EAP/radius setup
  running.
  
  Tested by:Johann Hugo jhugo at meraka.csir.co.za
  MFC after:2 weeks

Modified:
  head/usr.sbin/wpa/Makefile.inc
  head/usr.sbin/wpa/hostapd/Makefile

Modified: head/usr.sbin/wpa/Makefile.inc
==
--- head/usr.sbin/wpa/Makefile.inc  Thu Apr 26 14:51:12 2012
(r234710)
+++ head/usr.sbin/wpa/Makefile.inc  Thu Apr 26 17:35:11 2012
(r234711)
@@ -7,17 +7,23 @@ WPA_SUPPLICANT_DISTDIR?=${WPA_DISTDIR}/w
 HOSTAPD_DISTDIR?=  ${WPA_DISTDIR}/hostapd
 
 .PATH.c:${.CURDIR}/.. \
+   ${WPA_DISTDIR}/src/ap \
${WPA_DISTDIR}/src/common \
${WPA_DISTDIR}/src/crypto \
+   ${WPA_DISTDIR}/src/eapol_auth \
${WPA_DISTDIR}/src/eap_common \
+   ${WPA_DISTDIR}/src/eap_server \
${WPA_DISTDIR}/src/eapol_supp \
${WPA_DISTDIR}/src/l2_packet \
+   ${WPA_DISTDIR}/src/radius \
${WPA_DISTDIR}/src/utils
 
 CFLAGS+=-I${.CURDIR}
+CFLAGS+=-I${HOSTAPD_DISTDIR}
 CFLAGS+=-I${WPA_DISTDIR}/src
 CFLAGS+=-I${WPA_DISTDIR}/src/common
 CFLAGS+=-I${WPA_DISTDIR}/src/crypto
+CFLAGS+=-I${WPA_DISTDIR}/src/drivers
 CFLAGS+=-I${WPA_DISTDIR}/src/l2_packet
 CFLAGS+=-I${WPA_DISTDIR}/src/utils
 

Modified: head/usr.sbin/wpa/hostapd/Makefile
==
--- head/usr.sbin/wpa/hostapd/Makefile  Thu Apr 26 14:51:12 2012
(r234710)
+++ head/usr.sbin/wpa/hostapd/Makefile  Thu Apr 26 17:35:11 2012
(r234711)
@@ -2,33 +2,59 @@
 
 .include ${.CURDIR}/../Makefile.inc
 
-.PATH.c:${HOSTAPD_DISTDIR} \
-   ${WPA_DISTDIR}/src/ap \
-   ${WPA_DISTDIR}/src/eap_server \
-   ${WPA_DISTDIR}/src/eap_common \
-   ${WPA_DISTDIR}/src/eapol_auth \
-   ${WPA_DISTDIR}/src/drivers \
-   ${WPA_DISTDIR}/src/radius \
-   ${WPA_DISTDIR}
+.PATH.c:${WPA_DISTDIR}/src/drivers
 
 PROG=  hostapd
-SRCS=  accounting.c aes-wrap.c ap_config.c \
-   ap_drv_ops.c ap_mlme.c authsrv.c \
-   chap.c common.c config_file.c ctrl_iface.c crypto_openssl.c \
-   ctrl_iface_ap.c drivers.c drv_callbacks.c dump_state.c \
-   eap_common.c eap_peap_common.c eap_register.c eap_server.c \
-   eap_server_gtc.c eap_server_identity.c eap_server_md5.c \
-   eap_server_methods.c eap_server_mschapv2.c eap_server_peap.c \
-   eap_server_tls.c eap_server_tls_common.c eap_server_ttls.c \
-   eapol_auth_dump.c eapol_auth_sm.c eloop.c hostapd.c ieee802_11_auth.c \
-   ieee802_11_common.c ieee802_11_ht.c ieee802_1x.c ip_addr.c \
-   md5.c main.c ms_funcs.c peerkey_auth.c pmksa_cache_auth.c \
-   preauth_auth.c radius.c radius_client.c sta_info.c \
-   sha1-pbkdf2.c sha1-tlsprf.c sha1-tprf.c sha1.c \
-   tkip_countermeasures.c utils.c \
-   vlan_init.c wpa_auth.c wpa_auth_glue.c wpa_auth_ie.c wpa_common.c \
-   wpa_debug.c wpabuf.c
-SRCS+= l2_packet_freebsd.c driver_freebsd.c os_unix.c
+SRCS=  accounting.c \
+   aes-wrap.c \
+   ap_config.c \
+   ap_drv_ops.c \
+   ap_mlme.c \
+   authsrv.c \
+   chap.c \
+   common.c \
+   config_file.c \
+   crypto_openssl.c \
+   ctrl_iface.c \
+   ctrl_iface_ap.c \
+   drivers.c \
+   drv_callbacks.c \
+   eap_common.c \
+   eap_peap_common.c \
+   eap_register.c \
+   eapol_auth_dump.c \
+   eapol_auth_sm.c \
+   eap_server.c \
+   eap_server_methods.c \
+   eloop.c \
+   hostapd.c \
+   ieee802_11_auth.c \
+   ieee802_11_common.c \
+   ieee802_1x.c \
+   ip_addr.c \
+   main.c \
+   md5.c \
+   ms_funcs.c \
+   os_unix.c \
+   peerkey_auth.c \
+   pmksa_cache_auth.c \
+   preauth_auth.c \
+   radius.c \
+   radius_client.c \
+   sha1-pbkdf2.c \
+   sha1-tlsprf.c \
+   sha1.c \
+   sta_info.c \
+   tkip_countermeasures.c \
+   utils.c \
+   vlan_init.c \
+   wpa_auth.c \
+   wpa_auth_glue.c \
+   wpa_auth_ie.c \
+   wpa_common.c \
+   wpa_debug.c \
+   wpabuf.c
+SRCS+= l2_packet_freebsd.c driver_freebsd.c
 
 MAN=   hostapd.8 hostapd.conf.5
 
@@ -38,10 +64,11 @@ FILESDIR= ${SHAREDIR}/examples/hostapd
 FILES= hostapd.conf hostapd.eap_user hostapd.wpa_psk
 .endif
 
-CFLAGS+= -I${HOSTAPD_DISTDIR} -I${WPA_DISTDIR}/src/drivers
-
-CFLAGS+= -DCONFIG_DRIVER_BSD -DHOSTAPD
-CFLAGS+= 

svn commit: r234570 - in stable/9/sys/dev: ipw iwi iwn wpi

2012-04-22 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun Apr 22 09:19:10 2012
New Revision: 234570
URL: http://svn.freebsd.org/changeset/base/234570

Log:
  MFC r233387:
  Use suspend/resume methods provided by net80211. This ensures that the
  appropriate state handling takes place, not doing so results in the
  device doing nothing until manual intervention.

Modified:
  stable/9/sys/dev/ipw/if_ipw.c
  stable/9/sys/dev/iwi/if_iwi.c
  stable/9/sys/dev/iwn/if_iwn.c
  stable/9/sys/dev/wpi/if_wpi.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/dev/ipw/if_ipw.c
==
--- stable/9/sys/dev/ipw/if_ipw.c   Sun Apr 22 08:49:13 2012
(r234569)
+++ stable/9/sys/dev/ipw/if_ipw.c   Sun Apr 22 09:19:10 2012
(r234570)
@@ -835,9 +835,9 @@ static int
 ipw_suspend(device_t dev)
 {
struct ipw_softc *sc = device_get_softc(dev);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   ipw_stop(sc);
-
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -845,13 +845,11 @@ static int
 ipw_resume(device_t dev)
 {
struct ipw_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP)
-   ipw_init(sc);
-
+   ieee80211_resume_all(ic);
return 0;
 }
 

Modified: stable/9/sys/dev/iwi/if_iwi.c
==
--- stable/9/sys/dev/iwi/if_iwi.c   Sun Apr 22 08:49:13 2012
(r234569)
+++ stable/9/sys/dev/iwi/if_iwi.c   Sun Apr 22 09:19:10 2012
(r234570)
@@ -863,9 +863,9 @@ static int
 iwi_suspend(device_t dev)
 {
struct iwi_softc *sc = device_get_softc(dev);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   iwi_stop(sc);
-
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -873,13 +873,11 @@ static int
 iwi_resume(device_t dev)
 {
struct iwi_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP)
-   iwi_init(sc);
-
+   ieee80211_resume_all(ic);
return 0;
 }
 

Modified: stable/9/sys/dev/iwn/if_iwn.c
==
--- stable/9/sys/dev/iwn/if_iwn.c   Sun Apr 22 08:49:13 2012
(r234569)
+++ stable/9/sys/dev/iwn/if_iwn.c   Sun Apr 22 09:19:10 2012
(r234570)
@@ -947,13 +947,9 @@ static int
 iwn_suspend(device_t dev)
 {
struct iwn_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
-   struct ieee80211com *ic = ifp-if_l2com;
-   struct ieee80211vap *vap = TAILQ_FIRST(ic-ic_vaps);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   iwn_stop(sc);
-   if (vap != NULL)
-   ieee80211_stop(vap);
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -961,20 +957,12 @@ static int
 iwn_resume(device_t dev)
 {
struct iwn_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
-   struct ieee80211com *ic = ifp-if_l2com;
-   struct ieee80211vap *vap = TAILQ_FIRST(ic-ic_vaps);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
/* Clear device-specific PCI retry timeout register (41h). */
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP) {
-   iwn_init(sc);
-   if (vap != NULL)
-   ieee80211_init(vap);
-   if (ifp-if_drv_flags  IFF_DRV_RUNNING)
-   iwn_start(ifp);
-   }
+   ieee80211_resume_all(ic);
return 0;
 }
 

Modified: stable/9/sys/dev/wpi/if_wpi.c
==
--- stable/9/sys/dev/wpi/if_wpi.c   Sun Apr 22 08:49:13 2012
(r234569)
+++ stable/9/sys/dev/wpi/if_wpi.c   Sun Apr 22 09:19:10 2012
(r234570)
@@ -1218,8 +1218,9 @@ static int
 wpi_suspend(device_t dev)
 {
struct wpi_softc *sc = device_get_softc(dev);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   wpi_stop(sc);
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -1227,15 +1228,11 @@ static int
 wpi_resume(device_t dev)
 {
struct wpi_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP) {
-   wpi_init(ifp-if_softc);
-   if (ifp-if_drv_flags  IFF_DRV_RUNNING)
-   wpi_start(ifp);
-   }
+   ieee80211_resume_all(ic);
return 0;
 }
 
___
svn-src-all@freebsd.org mailing list

svn commit: r234571 - in stable/8/sys/dev: ipw iwi iwn wpi

2012-04-22 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun Apr 22 09:19:19 2012
New Revision: 234571
URL: http://svn.freebsd.org/changeset/base/234571

Log:
  MFC r233387:
  Use suspend/resume methods provided by net80211. This ensures that the
  appropriate state handling takes place, not doing so results in the
  device doing nothing until manual intervention.

Modified:
  stable/8/sys/dev/ipw/if_ipw.c
  stable/8/sys/dev/iwi/if_iwi.c
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/wpi/if_wpi.c
Directory Properties:
  stable/8/sys/   (props changed)

Modified: stable/8/sys/dev/ipw/if_ipw.c
==
--- stable/8/sys/dev/ipw/if_ipw.c   Sun Apr 22 09:19:10 2012
(r234570)
+++ stable/8/sys/dev/ipw/if_ipw.c   Sun Apr 22 09:19:19 2012
(r234571)
@@ -833,9 +833,9 @@ static int
 ipw_suspend(device_t dev)
 {
struct ipw_softc *sc = device_get_softc(dev);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   ipw_stop(sc);
-
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -843,13 +843,11 @@ static int
 ipw_resume(device_t dev)
 {
struct ipw_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP)
-   ipw_init(sc);
-
+   ieee80211_resume_all(ic);
return 0;
 }
 

Modified: stable/8/sys/dev/iwi/if_iwi.c
==
--- stable/8/sys/dev/iwi/if_iwi.c   Sun Apr 22 09:19:10 2012
(r234570)
+++ stable/8/sys/dev/iwi/if_iwi.c   Sun Apr 22 09:19:19 2012
(r234571)
@@ -861,9 +861,9 @@ static int
 iwi_suspend(device_t dev)
 {
struct iwi_softc *sc = device_get_softc(dev);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   iwi_stop(sc);
-
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -871,13 +871,11 @@ static int
 iwi_resume(device_t dev)
 {
struct iwi_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP)
-   iwi_init(sc);
-
+   ieee80211_resume_all(ic);
return 0;
 }
 

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sun Apr 22 09:19:10 2012
(r234570)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sun Apr 22 09:19:19 2012
(r234571)
@@ -958,13 +958,9 @@ static int
 iwn_suspend(device_t dev)
 {
struct iwn_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
-   struct ieee80211com *ic = ifp-if_l2com;
-   struct ieee80211vap *vap = TAILQ_FIRST(ic-ic_vaps);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   iwn_stop(sc);
-   if (vap != NULL)
-   ieee80211_stop(vap);
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -972,20 +968,12 @@ static int
 iwn_resume(device_t dev)
 {
struct iwn_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
-   struct ieee80211com *ic = ifp-if_l2com;
-   struct ieee80211vap *vap = TAILQ_FIRST(ic-ic_vaps);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
/* Clear device-specific PCI retry timeout register (41h). */
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP) {
-   iwn_init(sc);
-   if (vap != NULL)
-   ieee80211_init(vap);
-   if (ifp-if_drv_flags  IFF_DRV_RUNNING)
-   iwn_start(ifp);
-   }
+   ieee80211_resume_all(ic);
return 0;
 }
 

Modified: stable/8/sys/dev/wpi/if_wpi.c
==
--- stable/8/sys/dev/wpi/if_wpi.c   Sun Apr 22 09:19:10 2012
(r234570)
+++ stable/8/sys/dev/wpi/if_wpi.c   Sun Apr 22 09:19:19 2012
(r234571)
@@ -1216,8 +1216,9 @@ static int
 wpi_suspend(device_t dev)
 {
struct wpi_softc *sc = device_get_softc(dev);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   wpi_stop(sc);
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -1225,15 +1226,11 @@ static int
 wpi_resume(device_t dev)
 {
struct wpi_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP) {
-   wpi_init(ifp-if_softc);
-   if (ifp-if_drv_flags  IFF_DRV_RUNNING)
-   wpi_start(ifp);
-   }
+   ieee80211_resume_all(ic);
return 0;
 }
 
___
svn-src-all@freebsd.org mailing list

svn commit: r234321 - head/sys/dev/iwn

2012-04-15 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun Apr 15 18:25:17 2012
New Revision: 234321
URL: http://svn.freebsd.org/changeset/base/234321

Log:
  Use the M_AMPDU_MPDU flag to determine when to manually set the seqno and
  use a BA queue.

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Sun Apr 15 17:28:47 2012(r234320)
+++ head/sys/dev/iwn/if_iwn.c   Sun Apr 15 18:25:17 2012(r234321)
@@ -3308,18 +3308,15 @@ iwn_tx_data(struct iwn_softc *sc, struct
tid = 0;
}
ac = M_WME_GETAC(m);
-
-   if (IEEE80211_QOS_HAS_SEQ(wh) 
-   IEEE80211_AMPDU_RUNNING(ni-ni_tx_ampdu[ac])) {
+   if (m-m_flags  M_AMPDU_MPDU) {
struct ieee80211_tx_ampdu *tap = ni-ni_tx_ampdu[ac];
 
-   ring = sc-txq[*(int *)tap-txa_private];
+   ac = *(int *)tap-txa_private;
*(uint16_t *)wh-i_seq =
htole16(ni-ni_txseqs[tid]  IEEE80211_SEQ_SEQ_SHIFT);
ni-ni_txseqs[tid]++;
-   } else {
-   ring = sc-txq[ac];
}
+   ring = sc-txq[ac];
desc = ring-desc[ring-cur];
data = ring-data[ring-cur];
 
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r234028 - stable/9/sys/contrib/dev/run

2012-04-08 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun Apr  8 09:33:22 2012
New Revision: 234028
URL: http://svn.freebsd.org/changeset/base/234028

Log:
  MFC r233284:
  Update the firmware to version 0.236
  
  Submitted by: PseudoCylon

Modified:
  stable/9/sys/contrib/dev/run/rt2870.fw.uu
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/contrib/dev/run/rt2870.fw.uu
==
--- stable/9/sys/contrib/dev/run/rt2870.fw.uu   Sun Apr  8 08:19:17 2012
(r234027)
+++ stable/9/sys/contrib/dev/run/rt2870.fw.uu   Sun Apr  8 09:33:22 2012
(r234028)
@@ -39,70 +39,77 @@
 # DAMAGE.
 #
 # This file contains two 4KB firmware, first half is RT2870 and last half
-# is RT3071. On each 4KB firmware, 3rd last byte is major version number and
-# 2nd last byte is minor version number.
+# is RT3071. On each 4KB firmware, the last 2 bytes are CRC, 3rd last byte
+# is minor version number and 4th last byte is major version number.
 # This file comes with
-#  RT2870 v. 0.17
-#  RT3071 v. 0.17
+#  RT2870 v. 0.236
+#  RT3071 v. 0.236
 begin 644 rt2870.fw.uu
-M`A`H`A`R`A!X`A,J`A,K`A-*`A-/$A-+(@(7N0(8\`(42`(3@S`%!B`-
-M`Q(9R*0`8S@,.,;Y4PPX`1_0(`?P0$_O\)`!C'0(\.20`:?PD`,X##@
-M')`!@.T`A6CX+0!$)`!A.T@0F0`8QT`?`2#@BD`04X#G`P(3*9!P$N#U
-M5I`$!.`2IT0V3$0O381`E`1.5$10E(10E,10E01@U41TE82,'`26W$2B7(2
-MX',3`8```!,ID'`1X/4\Y)!P$_0!!1T@/#E5O1P`P(3*0(3(B``S`#'7T
-MKU82Y0!!1T@/#DD'`3\.56]'`#`A,I`A,BA59!T@(BD'`0X%1__[\*#9!P
-M$T`9U3@%U3X20!#@5'__OP(2D'`1X0(8`3@M`=4X#=4\@Y/4G(I!P
-M$`D_Y)'(I`$!.`EX1=]50!#@_W1')5?XQN_D'`1X/]T257^,;OQN3]
-MKU82Y0!!1T@/#DD'`3\.56]'`#`A,I`A,BY4=D!V`=Y4=D`7Y4=D6`1
-MY4=DF`+Y4=DV`%Y4T#`B0!'@5`_U.N5'M`D(Y3JT`P/D]4;E1[0*.4Z
-MM`$#Y/5Y/VO5A(+D=($(I!P$#T_Y!P$.!?_Y!P$!5)T^0!CPD'`1X)!P
-M?#D_:]6$@N1,!4$TA2`)I!P.#U)Y`*#_D'`9X/[O7I`*?`P1P2O)X`$
-MY2?T_Y`*._PY5;T`,$RD$R*0!#@_I!P$#][?CF]5?]KU82Y0!!1T
-M@/#DD'`3\.56]'`#`A,I`A,BD'`0X/Z0!'@_WU@HZ#X/57_:]6$@N1D`04
-M=(#PY)!P$_#E5O1P`P(3*0(3(I`0`.#U5Y`0`N#U6*/@]5GE6+1P'N59M#`9
-MD`4(X$0!\/V0!07@5/OP1`3P[53^D`4(\.3U3O5/=3K_=3S_K5O5A(+D9`$
-M%'2`\.20!/PY5;T8$N`0I!P$.`D_Y*3Y/VO5A(+D9`$%'2`\.20!/PY5;T
-M8J`(9!P$.`D_Y)*T@6M5Z]6$@N1D`04=(#PY)!P$_#E5O1@!Y!P)!$`?`B
-M(N53!HP8`FR33!-!`5P@3E3T5.8`CE3Q5/`(53B(BPD+3(C`4,)!P!5
-M)_^0!C@3_4GD`(IX/^0!G@_N]D`(I\#!'!*\G@`3E)_3_D`(H[_#%+
-M2\),Y402IT3I0`4,P04+P@4#Q`3N2`3V6`3ZJ```!0UA4A#A4IA4QY4=D
-M!F`#`A0U@!OE2,14#_5#Y4K$5`_U0N5,Q%0/]5[E1V0%30P^`7(5)0X5+
-M0H5-7N5'9`9P38`;Y4G$5`_U0^5+Q%0/]4+E314#_5Y4=D!G`PY4-4#T00
-M]4.`)N5'9`1@!5'M`40UX$=4()Y4T!A#E0U0/1##U0X`TDN``M),Y/4E
-MY4+$5/#_Y4-4#T_U7])@(M(5Y4D]6`+),M@!R1``;%2(2%X02%K%*O
-MP@32KR+KY`$%.!4#F`$TAB`.5.14\D_Y(8TJ^0!!3@HN2270\.5?5`_U
-M+4E!,P`7E7R#ES`95?5##_OS`1Y25P!74E#(`%272;-)M@`_E7S#F
-M!L)LTFV`!-)LPFWE1V0#$P2P;;-)M@!CE)7`#,$P1PDSE)7`%=24'@`(5
-M)=)LTFWE1[0)%.5$(.,+Y3ID`F`%Y3JT`P3;-)MY4TA/E.K0!!L)LTFV`
-M.4Z`32;,)M(D'Y5X@X`*R:!K!^5(.$LFH@;0?E7B#B`K)L=2Y`(D$
-MHFB`)C!H!N5HN*`'5(.($?P``G\`Y494\/Z^\`1^`8`?@#N;R3_DG.2
-MB!K!*)J@8P:@;E1J+B@!WE7B#@!'\!@`)_`.55/#^OO`$?@``GX`[F\D
-M_Y)UDG0@;02B;(`FY4=DG`B,PY4:BXX`7Y3JT`0;E1J+C@#3E1B#D`S#E
-M`].``.`)C!L!N5HN*`'5(.$$?P``G\`Y494\/Z^\`1^`8`?@#N;R3_
-MDG2)`0`.0$SPD!`#X,.4,$`4HG2=Z)PDG;E+A,35#_U+L)WTG:0$_E
-M+O#E1V0#F0`BG@5/[PY4/$5`\48`PD_F`,)`-P$\(X@`_2.(`+Y48PX@/3
-M@`'#DC@P1P6O)P(7?N4G]/\%W[E1V0'8`_E1V0(8`GE1V0)8`,%OV0`BG@
-M5/SPY3H48(48448TD_!))/E@%0.%#E1A,35#]U\`.$Y?`D_X`ZTCG
-M.(`^Y48PX@/3@!W#@!KE1C#B#50XPY0P4`9^`'\!@`1^`'\`[D\D_Y(XPCF`
-M$^5,.(#TX`!PY(YPCB`!,(XPCDP1P2O)X`$Y2?T_P(7?N5'9`Q@!N5'9`MP
-MI`*!4_?#E.A1@(!1@(11@*R3\8$4D^6`2)`YP2N5$Q-4/W7P`X3E\(`I
-MTCF`.N5,.(#TX`!PY(Y@WE1C#B#50XPY0P4`9^`'\!@`1^`'\`[D\D_Y(Y
-M@`_E1C#B`].``.2.8`PCDP1P2O)X`$Y2?T_Y`*._P(N5'M`L0D`(IX%3K
-M\.4G5.M%1?4G(N20`BGP,$$KT6`!.5%]/^0`BCO\*/4-)9(H]4TE@BY/5B
-MPJ_E411@2!1@9B08`,-326755`9`HN!4?_CX#G(Y`$-.T`ARCX+0
-M%Z/@M`(2?R`2%Z^0$`3@5//P=5$!`AC4Y5!P!G5B`P(8U)`2`.!4`W`2?R`2
-M%Z^0`J+@5+_P=5$`AC4Y5!P`P(8SY`H^`PY@,,N0!#?@9)@`P(8RY`!
-MBG1^\)`!EO0$@1TO#E6+1R%59M#40Y)`%`/C=`CPHW0!\'0#\'\!$@TJ
-MD!,HX)!PO0$RG@D'`;\)`3*.!4\/CX%3P\.59M#44Y3ST8`:CX%3S@!20
-M$RK@5/OP@!3E//20$RI@.!4\D4\\(`$X%3Z\)`$`!4_?!U8@%U50+D]5`
-M50`5U8@/U45B8!7`3U4)9K6*O0!(9E.5BM`,T@/2KR+KS`!$N20
-M`9;P]5'6(!?0*O0!(9E.52%`,!`#`AF1=5(!=54#D`0!X$0.\)!PN0
-M$RCPD'`;X)`3*?#E//1@.4\1`C\(`D!,J=`7PD!($=`/PY5BTA;E6;0U
-M$9`%`'3B\*-T/C=`'P=`/P?P$2#2J0`J+@1,#PD!`$X$0,\.3U4O55,`()
-MP@)]`:]!$AF4,`,P@/DD`6\-*O(N_T8WD_G04+O6Y#1P]8/@M/\9=!0N
-M]8+D-'#U@^_P=!PN]8+D-'#U@^WP(@Z^!-4B(B*0K@,.%-PJ^0C@D!`
-M\)!P*0$!WPD'`JX)`0'O0$!S@]6*0$![@(.'SD!`X)!P*/0$!W@D'`I
-M\)`0'N0KP,$H'D'`DX$0!\,(%TJ\B(B(`
+M`A`H`A`R`A!]`A.[`A.\`A/;`A/@$A/(@(8V@(:@(5/`(4=S`%!B`-
+M`Q(:_R*0`8S@,.,@Y5@PX!#E3##@!']`@`)_`)`0+^_PD`,=`CPY)`!I_0
+M`8S@,.`D``X+0%:/@M`$0D`$X+2!9`!C'0!\!(-R*0!!3@(.#`A.Z
+MD'`2X/56D`0$X!(*G1#A,1#%-A$*4!%!41%*4A%*4Q%*5!+51':5A(X!)C
+M1*1A,\Q-=@!.`D```$[J0!'@]3SDD'`3\)`$%'2`\.56]'`#`A.Z`A.S
+M(`(#,`,=?0*O5A(+D9`$%'2`\.20!/PY5;T`,$[H$[.%5D'2`B*0!#@
+M5'__OPH-D'`1X+0(!G5.`75/A)!P$.!4?_^_`A*0!'@9`A@!.T(`9U3@-U

svn commit: r234029 - stable/8/sys/contrib/dev/run

2012-04-08 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun Apr  8 09:33:50 2012
New Revision: 234029
URL: http://svn.freebsd.org/changeset/base/234029

Log:
  MFC r233284:
  Update the firmware to version 0.236
  
  Submitted by: PseudoCylon

Modified:
  stable/8/sys/contrib/dev/run/rt2870.fw.uu
Directory Properties:
  stable/8/sys/   (props changed)

Modified: stable/8/sys/contrib/dev/run/rt2870.fw.uu
==
--- stable/8/sys/contrib/dev/run/rt2870.fw.uu   Sun Apr  8 09:33:22 2012
(r234028)
+++ stable/8/sys/contrib/dev/run/rt2870.fw.uu   Sun Apr  8 09:33:50 2012
(r234029)
@@ -39,70 +39,77 @@
 # DAMAGE.
 #
 # This file contains two 4KB firmware, first half is RT2870 and last half
-# is RT3071. On each 4KB firmware, 3rd last byte is major version number and
-# 2nd last byte is minor version number.
+# is RT3071. On each 4KB firmware, the last 2 bytes are CRC, 3rd last byte
+# is minor version number and 4th last byte is major version number.
 # This file comes with
-#  RT2870 v. 0.17
-#  RT3071 v. 0.17
+#  RT2870 v. 0.236
+#  RT3071 v. 0.236
 begin 644 rt2870.fw.uu
-M`A`H`A`R`A!X`A,J`A,K`A-*`A-/$A-+(@(7N0(8\`(42`(3@S`%!B`-
-M`Q(9R*0`8S@,.,;Y4PPX`1_0(`?P0$_O\)`!C'0(\.20`:?PD`,X##@
-M')`!@.T`A6CX+0!$)`!A.T@0F0`8QT`?`2#@BD`04X#G`P(3*9!P$N#U
-M5I`$!.`2IT0V3$0O381`E`1.5$10E(10E,10E01@U41TE82,'`26W$2B7(2
-MX',3`8```!,ID'`1X/4\Y)!P$_0!!1T@/#E5O1P`P(3*0(3(B``S`#'7T
-MKU82Y0!!1T@/#DD'`3\.56]'`#`A,I`A,BA59!T@(BD'`0X%1__[\*#9!P
-M$T`9U3@%U3X20!#@5'__OP(2D'`1X0(8`3@M`=4X#=4\@Y/4G(I!P
-M$`D_Y)'(I`$!.`EX1=]50!#@_W1')5?XQN_D'`1X/]T257^,;OQN3]
-MKU82Y0!!1T@/#DD'`3\.56]'`#`A,I`A,BY4=D!V`=Y4=D`7Y4=D6`1
-MY4=DF`+Y4=DV`%Y4T#`B0!'@5`_U.N5'M`D(Y3JT`P/D]4;E1[0*.4Z
-MM`$#Y/5Y/VO5A(+D=($(I!P$#T_Y!P$.!?_Y!P$!5)T^0!CPD'`1X)!P
-M?#D_:]6$@N1,!4$TA2`)I!P.#U)Y`*#_D'`9X/[O7I`*?`P1P2O)X`$
-MY2?T_Y`*._PY5;T`,$RD$R*0!#@_I!P$#][?CF]5?]KU82Y0!!1T
-M@/#DD'`3\.56]'`#`A,I`A,BD'`0X/Z0!'@_WU@HZ#X/57_:]6$@N1D`04
-M=(#PY)!P$_#E5O1P`P(3*0(3(I`0`.#U5Y`0`N#U6*/@]5GE6+1P'N59M#`9
-MD`4(X$0!\/V0!07@5/OP1`3P[53^D`4(\.3U3O5/=3K_=3S_K5O5A(+D9`$
-M%'2`\.20!/PY5;T8$N`0I!P$.`D_Y*3Y/VO5A(+D9`$%'2`\.20!/PY5;T
-M8J`(9!P$.`D_Y)*T@6M5Z]6$@N1D`04=(#PY)!P$_#E5O1@!Y!P)!$`?`B
-M(N53!HP8`FR33!-!`5P@3E3T5.8`CE3Q5/`(53B(BPD+3(C`4,)!P!5
-M)_^0!C@3_4GD`(IX/^0!G@_N]D`(I\#!'!*\G@`3E)_3_D`(H[_#%+
-M2\),Y402IT3I0`4,P04+P@4#Q`3N2`3V6`3ZJ```!0UA4A#A4IA4QY4=D
-M!F`#`A0U@!OE2,14#_5#Y4K$5`_U0N5,Q%0/]5[E1V0%30P^`7(5)0X5+
-M0H5-7N5'9`9P38`;Y4G$5`_U0^5+Q%0/]4+E314#_5Y4=D!G`PY4-4#T00
-M]4.`)N5'9`1@!5'M`40UX$=4()Y4T!A#E0U0/1##U0X`TDN``M),Y/4E
-MY4+$5/#_Y4-4#T_U7])@(M(5Y4D]6`+),M@!R1``;%2(2%X02%K%*O
-MP@32KR+KY`$%.!4#F`$TAB`.5.14\D_Y(8TJ^0!!3@HN2270\.5?5`_U
-M+4E!,P`7E7R#ES`95?5##_OS`1Y25P!74E#(`%272;-)M@`_E7S#F
-M!L)LTFV`!-)LPFWE1V0#$P2P;;-)M@!CE)7`#,$P1PDSE)7`%=24'@`(5
-M)=)LTFWE1[0)%.5$(.,+Y3ID`F`%Y3JT`P3;-)MY4TA/E.K0!!L)LTFV`
-M.4Z`32;,)M(D'Y5X@X`*R:!K!^5(.$LFH@;0?E7B#B`K)L=2Y`(D$
-MHFB`)C!H!N5HN*`'5(.($?P``G\`Y494\/Z^\`1^`8`?@#N;R3_DG.2
-MB!K!*)J@8P:@;E1J+B@!WE7B#@!'\!@`)_`.55/#^OO`$?@``GX`[F\D
-M_Y)UDG0@;02B;(`FY4=DG`B,PY4:BXX`7Y3JT`0;E1J+C@#3E1B#D`S#E
-M`].``.`)C!L!N5HN*`'5(.$$?P``G\`Y494\/Z^\`1^`8`?@#N;R3_
-MDG2)`0`.0$SPD!`#X,.4,$`4HG2=Z)PDG;E+A,35#_U+L)WTG:0$_E
-M+O#E1V0#F0`BG@5/[PY4/$5`\48`PD_F`,)`-P$\(X@`_2.(`+Y48PX@/3
-M@`'#DC@P1P6O)P(7?N4G]/\%W[E1V0'8`_E1V0(8`GE1V0)8`,%OV0`BG@
-M5/SPY3H48(48448TD_!))/E@%0.%#E1A,35#]U\`.$Y?`D_X`ZTCG
-M.(`^Y48PX@/3@!W#@!KE1C#B#50XPY0P4`9^`'\!@`1^`'\`[D\D_Y(XPCF`
-M$^5,.(#TX`!PY(YPCB`!,(XPCDP1P2O)X`$Y2?T_P(7?N5'9`Q@!N5'9`MP
-MI`*!4_?#E.A1@(!1@(11@*R3\8$4D^6`2)`YP2N5$Q-4/W7P`X3E\(`I
-MTCF`.N5,.(#TX`!PY(Y@WE1C#B#50XPY0P4`9^`'\!@`1^`'\`[D\D_Y(Y
-M@`_E1C#B`].``.2.8`PCDP1P2O)X`$Y2?T_Y`*._P(N5'M`L0D`(IX%3K
-M\.4G5.M%1?4G(N20`BGP,$$KT6`!.5%]/^0`BCO\*/4-)9(H]4TE@BY/5B
-MPJ_E411@2!1@9B08`,-326755`9`HN!4?_CX#G(Y`$-.T`ARCX+0
-M%Z/@M`(2?R`2%Z^0$`3@5//P=5$!`AC4Y5!P!G5B`P(8U)`2`.!4`W`2?R`2
-M%Z^0`J+@5+_P=5$`AC4Y5!P`P(8SY`H^`PY@,,N0!#?@9)@`P(8RY`!
-MBG1^\)`!EO0$@1TO#E6+1R%59M#40Y)`%`/C=`CPHW0!\'0#\'\!$@TJ
-MD!,HX)!PO0$RG@D'`;\)`3*.!4\/CX%3P\.59M#44Y3ST8`:CX%3S@!20
-M$RK@5/OP@!3E//20$RI@.!4\D4\\(`$X%3Z\)`$`!4_?!U8@%U50+D]5`
-M50`5U8@/U45B8!7`3U4)9K6*O0!(9E.5BM`,T@/2KR+KS`!$N20
-M`9;P]5'6(!?0*O0!(9E.52%`,!`#`AF1=5(!=54#D`0!X$0.\)!PN0
-M$RCPD'`;X)`3*?#E//1@.4\1`C\(`D!,J=`7PD!($=`/PY5BTA;E6;0U
-M$9`%`'3B\*-T/C=`'P=`/P?P$2#2J0`J+@1,#PD!`$X$0,\.3U4O55,`()
-MP@)]`:]!$AF4,`,P@/DD`6\-*O(N_T8WD_G04+O6Y#1P]8/@M/\9=!0N
-M]8+D-'#U@^_P=!PN]8+D-'#U@^WP(@Z^!-4B(B*0K@,.%-PJ^0C@D!`
-M\)!P*0$!WPD'`JX)`0'O0$!S@]6*0$![@(.'SD!`X)!P*/0$!W@D'`I
-M\)`0'N0KP,$H'D'`DX$0!\,(%TJ\B(B(`
+M`A`H`A`R`A!]`A.[`A.\`A/;`A/@$A/(@(8V@(:@(5/`(4=S`%!B`-
+M`Q(:_R*0`8S@,.,@Y5@PX!#E3##@!']`@`)_`)`0+^_PD`,=`CPY)`!I_0
+M`8S@,.`D``X+0%:/@M`$0D`$X+2!9`!C'0!\!(-R*0!!3@(.#`A.Z
+MD'`2X/56D`0$X!(*G1#A,1#%-A$*4!%!41%*4A%*4Q%*5!+51':5A(X!)C
+M1*1A,\Q-=@!.`D```$[J0!'@]3SDD'`3\)`$%'2`\.56]'`#`A.Z`A.S
+M(`(#,`,=?0*O5A(+D9`$%'2`\.20!/PY5;T`,$[H$[.%5D'2`B*0!#@
+M5'__OPH-D'`1X+0(!G5.`75/A)!P$.!4?_^_`A*0!'@9`A@!.T(`9U3@-U

svn commit: r233838 - stable/9/sys/dev/iwn

2012-04-03 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Apr  3 17:01:37 2012
New Revision: 233838
URL: http://svn.freebsd.org/changeset/base/233838

Log:
  MFC r233567:
  Add support for 6150 series devices.
  
  Tested by:Shane Riddle sh4neriddle at yahoo dot com

Modified:
  stable/9/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/dev/iwn/if_iwn.c
==
--- stable/9/sys/dev/iwn/if_iwn.c   Tue Apr  3 15:42:08 2012
(r233837)
+++ stable/9/sys/dev/iwn/if_iwn.c   Tue Apr  3 17:01:37 2012
(r233838)
@@ -89,6 +89,8 @@ static const struct iwn_ident iwn_ident_
{ 0x8086, 0x008b, Intel(R) Centrino(R) Wireless-N 1030 },
{ 0x8086, 0x0090, Intel(R) Centrino(R) Advanced-N 6230 },
{ 0x8086, 0x0091, Intel(R) Centrino(R) Advanced-N 6230 },
+   { 0x8086, 0x0885, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
+   { 0x8086, 0x0886, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
{ 0x8086, 0x0896, Intel(R) Centrino(R) Wireless-N 130  },
{ 0x8086, 0x4229, Intel(R) Wireless WiFi Link 4965 },
{ 0x8086, 0x422b, Intel(R) Centrino(R) Ultimate-N 6300 },
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233839 - stable/8/sys/dev/iwn

2012-04-03 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Apr  3 17:03:33 2012
New Revision: 233839
URL: http://svn.freebsd.org/changeset/base/233839

Log:
  MFC r233567:
  Add support for 6150 series devices.
  
  Tested by:Shane Riddle sh4neriddle at yahoo dot com

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Tue Apr  3 17:01:37 2012
(r233838)
+++ stable/8/sys/dev/iwn/if_iwn.c   Tue Apr  3 17:03:33 2012
(r233839)
@@ -89,6 +89,8 @@ static const struct iwn_ident iwn_ident_
{ 0x8086, 0x008b, Intel(R) Centrino(R) Wireless-N 1030 },
{ 0x8086, 0x0090, Intel(R) Centrino(R) Advanced-N 6230 },
{ 0x8086, 0x0091, Intel(R) Centrino(R) Advanced-N 6230 },
+   { 0x8086, 0x0885, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
+   { 0x8086, 0x0886, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
{ 0x8086, 0x0896, Intel(R) Centrino(R) Wireless-N 130  },
{ 0x8086, 0x4229, Intel(R) Wireless WiFi Link 4965 },
{ 0x8086, 0x422b, Intel(R) Centrino(R) Ultimate-N 6300 },
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233840 - stable/9/share/man/man4

2012-04-03 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Apr  3 17:04:48 2012
New Revision: 233840
URL: http://svn.freebsd.org/changeset/base/233840

Log:
  MFC r233568:
  Add a list of available devices which matches the names shown by pciconf.
  While here add 2 missing firmware modules.

Modified:
  stable/9/share/man/man4/iwn.4
Directory Properties:
  stable/9/share/man/man4/   (props changed)

Modified: stable/9/share/man/man4/iwn.4
==
--- stable/9/share/man/man4/iwn.4   Tue Apr  3 17:03:33 2012
(r233839)
+++ stable/9/share/man/man4/iwn.4   Tue Apr  3 17:04:48 2012
(r233840)
@@ -25,13 +25,12 @@
 .\
 .\ $FreeBSD$
 .\
-.Dd July 20, 2010
+.Dd March 27, 2012
 .Dt IWN 4
 .Os
 .Sh NAME
 .Nm iwn
-.Nd Intel Wireless WiFi Link 4965/1000/5000/5150/5300/6000/6050 
-IEEE 802.11n driver
+.Nd Intel IEEE 802.11n wireless network driver
 .Sh SYNOPSIS
 To compile this driver into the kernel,
 include the following lines in your
@@ -51,6 +50,8 @@ Choose one from:
 .Cd device iwn5000fw
 .Cd device iwn5150fw
 .Cd device iwn6000fw
+.Cd device iwn6000g2afw
+.Cd device iwn6000g2bfw
 .Cd device iwn6050fw
 .Ed
 .Pp
@@ -71,15 +72,32 @@ iwn1000fw_load=YES
 iwn5000fw_load=YES
 iwn5150fw_load=YES
 iwn6000fw_load=YES
+iwn6000g2afw_load=YES
+iwn6000g2bfw_load=YES
 iwn6050fw_load=YES
 .Ed
 .Sh DESCRIPTION
 The
 .Nm
-driver provides support for
-.Tn Intel
-Wireless WiFi Link 4965, 1000, 5000 and 6000 series of 
-PCI-Express network adapters.
+driver provides support for:
+.Pp
+.Bl -tag -width Ds -offset indent -compact
+.It Intel Centrino Advanced-N 6200
+.It Intel Centrino Advanced-N 6205
+.It Intel Centrino Advanced-N 6230
+.It Intel Centrino Advanced-N + WiMAX 6250
+.It Intel Centrino Ultimate-N 6300
+.It Intel Centrino Wireless-N 130
+.It Intel Centrino Wireless-N 1000
+.It Intel Centrino Wireless-N 1030
+.It Intel Centrino Wireless-N + WiMAX 6150
+.It Intel Ultimate N WiFi Link 5300
+.It Intel Wireless WiFi Link 4965
+.It Intel WiFi Link 5100
+.It Intel WiMAX/WiFi Link 5150
+.It Intel WiMAX/WiFi Link 5350
+.El
+.Pp
 .Nm
 supports
 .Cm station ,
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233841 - stable/8/share/man/man4

2012-04-03 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Apr  3 17:05:26 2012
New Revision: 233841
URL: http://svn.freebsd.org/changeset/base/233841

Log:
  MFC r233568:
  Add a list of available devices which matches the names shown by pciconf.
  While here add 2 missing firmware modules.

Modified:
  stable/8/share/man/man4/iwn.4
Directory Properties:
  stable/8/share/man/man4/   (props changed)

Modified: stable/8/share/man/man4/iwn.4
==
--- stable/8/share/man/man4/iwn.4   Tue Apr  3 17:04:48 2012
(r233840)
+++ stable/8/share/man/man4/iwn.4   Tue Apr  3 17:05:26 2012
(r233841)
@@ -25,13 +25,12 @@
 .\
 .\ $FreeBSD$
 .\
-.Dd July 20, 2010
+.Dd March 27, 2012
 .Dt IWN 4
 .Os
 .Sh NAME
 .Nm iwn
-.Nd Intel Wireless WiFi Link 4965/1000/5000/5150/5300/6000/6050 
-IEEE 802.11n driver
+.Nd Intel IEEE 802.11n wireless network driver
 .Sh SYNOPSIS
 To compile this driver into the kernel,
 include the following lines in your
@@ -51,6 +50,8 @@ Choose one from:
 .Cd device iwn5000fw
 .Cd device iwn5150fw
 .Cd device iwn6000fw
+.Cd device iwn6000g2afw
+.Cd device iwn6000g2bfw
 .Cd device iwn6050fw
 .Ed
 .Pp
@@ -71,15 +72,32 @@ iwn1000fw_load=YES
 iwn5000fw_load=YES
 iwn5150fw_load=YES
 iwn6000fw_load=YES
+iwn6000g2afw_load=YES
+iwn6000g2bfw_load=YES
 iwn6050fw_load=YES
 .Ed
 .Sh DESCRIPTION
 The
 .Nm
-driver provides support for
-.Tn Intel
-Wireless WiFi Link 4965, 1000, 5000 and 6000 series of 
-PCI-Express network adapters.
+driver provides support for:
+.Pp
+.Bl -tag -width Ds -offset indent -compact
+.It Intel Centrino Advanced-N 6200
+.It Intel Centrino Advanced-N 6205
+.It Intel Centrino Advanced-N 6230
+.It Intel Centrino Advanced-N + WiMAX 6250
+.It Intel Centrino Ultimate-N 6300
+.It Intel Centrino Wireless-N 130
+.It Intel Centrino Wireless-N 1000
+.It Intel Centrino Wireless-N 1030
+.It Intel Centrino Wireless-N + WiMAX 6150
+.It Intel Ultimate N WiFi Link 5300
+.It Intel Wireless WiFi Link 4965
+.It Intel WiFi Link 5100
+.It Intel WiMAX/WiFi Link 5150
+.It Intel WiMAX/WiFi Link 5350
+.El
+.Pp
 .Nm
 supports
 .Cm station ,
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233842 - stable/9/sys/dev/iwn

2012-04-03 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Apr  3 17:08:17 2012
New Revision: 233842
URL: http://svn.freebsd.org/changeset/base/233842

Log:
  MFC r233571:
  strip (R) to match manpage and pci_vendors

Modified:
  stable/9/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/dev/iwn/if_iwn.c
==
--- stable/9/sys/dev/iwn/if_iwn.c   Tue Apr  3 17:05:26 2012
(r233841)
+++ stable/9/sys/dev/iwn/if_iwn.c   Tue Apr  3 17:08:17 2012
(r233842)
@@ -79,35 +79,35 @@ struct iwn_ident {
 };
 
 static const struct iwn_ident iwn_ident_table[] = {
-   { 0x8086, 0x0082, Intel(R) Centrino(R) Advanced-N 6205 },
-   { 0x8086, 0x0083, Intel(R) Centrino(R) Wireless-N 1000 },
-   { 0x8086, 0x0084, Intel(R) Centrino(R) Wireless-N 1000 },
-   { 0x8086, 0x0085, Intel(R) Centrino(R) Advanced-N 6205 },
-   { 0x8086, 0x0087, Intel(R) Centrino(R) Advanced-N + WiMAX 6250 },
-   { 0x8086, 0x0089, Intel(R) Centrino(R) Advanced-N + WiMAX 6250 },
-   { 0x8086, 0x008a, Intel(R) Centrino(R) Wireless-N 1030 },
-   { 0x8086, 0x008b, Intel(R) Centrino(R) Wireless-N 1030 },
-   { 0x8086, 0x0090, Intel(R) Centrino(R) Advanced-N 6230 },
-   { 0x8086, 0x0091, Intel(R) Centrino(R) Advanced-N 6230 },
-   { 0x8086, 0x0885, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
-   { 0x8086, 0x0886, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
-   { 0x8086, 0x0896, Intel(R) Centrino(R) Wireless-N 130  },
-   { 0x8086, 0x4229, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x422b, Intel(R) Centrino(R) Ultimate-N 6300 },
-   { 0x8086, 0x422c, Intel(R) Centrino(R) Advanced-N 6200 },
-   { 0x8086, 0x422d, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x4230, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x4232, Intel(R) WiFi Link 5100  },
-   { 0x8086, 0x4233, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x4235, Intel(R) Ultimate N WiFi Link 5300   },
-   { 0x8086, 0x4236, Intel(R) Ultimate N WiFi Link 5300   },
-   { 0x8086, 0x4237, Intel(R) WiFi Link 5100  },
-   { 0x8086, 0x4238, Intel(R) Centrino(R) Ultimate-N 6300 },
-   { 0x8086, 0x4239, Intel(R) Centrino(R) Advanced-N 6200 },
-   { 0x8086, 0x423a, Intel(R) WiMAX/WiFi Link 5350},
-   { 0x8086, 0x423b, Intel(R) WiMAX/WiFi Link 5350},
-   { 0x8086, 0x423c, Intel(R) WiMAX/WiFi Link 5150},
-   { 0x8086, 0x423d, Intel(R) WiMAX/WiFi Link 5150},
+   { 0x8086, 0x0082, Intel Centrino Advanced-N 6205  },
+   { 0x8086, 0x0083, Intel Centrino Wireless-N 1000  },
+   { 0x8086, 0x0084, Intel Centrino Wireless-N 1000  },
+   { 0x8086, 0x0085, Intel Centrino Advanced-N 6205  },
+   { 0x8086, 0x0087, Intel Centrino Advanced-N + WiMAX 6250  },
+   { 0x8086, 0x0089, Intel Centrino Advanced-N + WiMAX 6250  },
+   { 0x8086, 0x008a, Intel Centrino Wireless-N 1030  },
+   { 0x8086, 0x008b, Intel Centrino Wireless-N 1030  },
+   { 0x8086, 0x0090, Intel Centrino Advanced-N 6230  },
+   { 0x8086, 0x0091, Intel Centrino Advanced-N 6230  },
+   { 0x8086, 0x0885, Intel Centrino Wireless-N + WiMAX 6150  },
+   { 0x8086, 0x0886, Intel Centrino Wireless-N + WiMAX 6150  },
+   { 0x8086, 0x0896, Intel Centrino Wireless-N 130   },
+   { 0x8086, 0x4229, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x422b, Intel Centrino Ultimate-N 6300  },
+   { 0x8086, 0x422c, Intel Centrino Advanced-N 6200  },
+   { 0x8086, 0x422d, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x4230, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x4232, Intel WiFi Link 5100},
+   { 0x8086, 0x4233, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x4235, Intel Ultimate N WiFi Link 5300 },
+   { 0x8086, 0x4236, Intel Ultimate N WiFi Link 5300 },
+   { 0x8086, 0x4237, Intel WiFi Link 5100},
+   { 0x8086, 0x4238, Intel Centrino Ultimate-N 6300  },
+   { 0x8086, 0x4239, Intel Centrino Advanced-N 6200  },
+   { 0x8086, 0x423a, Intel WiMAX/WiFi Link 5350  },
+   { 0x8086, 0x423b, Intel WiMAX/WiFi Link 5350  },
+   { 0x8086, 0x423c, Intel WiMAX/WiFi Link 5150  },
+   { 0x8086, 0x423d, Intel WiMAX/WiFi Link 5150  },
{ 0, 0, NULL }
 };
 

svn commit: r233843 - stable/8/sys/dev/iwn

2012-04-03 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Apr  3 17:08:34 2012
New Revision: 233843
URL: http://svn.freebsd.org/changeset/base/233843

Log:
  MFC r233571:
  strip (R) to match manpage and pci_vendors

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Tue Apr  3 17:08:17 2012
(r233842)
+++ stable/8/sys/dev/iwn/if_iwn.c   Tue Apr  3 17:08:34 2012
(r233843)
@@ -79,35 +79,35 @@ struct iwn_ident {
 };
 
 static const struct iwn_ident iwn_ident_table[] = {
-   { 0x8086, 0x0082, Intel(R) Centrino(R) Advanced-N 6205 },
-   { 0x8086, 0x0083, Intel(R) Centrino(R) Wireless-N 1000 },
-   { 0x8086, 0x0084, Intel(R) Centrino(R) Wireless-N 1000 },
-   { 0x8086, 0x0085, Intel(R) Centrino(R) Advanced-N 6205 },
-   { 0x8086, 0x0087, Intel(R) Centrino(R) Advanced-N + WiMAX 6250 },
-   { 0x8086, 0x0089, Intel(R) Centrino(R) Advanced-N + WiMAX 6250 },
-   { 0x8086, 0x008a, Intel(R) Centrino(R) Wireless-N 1030 },
-   { 0x8086, 0x008b, Intel(R) Centrino(R) Wireless-N 1030 },
-   { 0x8086, 0x0090, Intel(R) Centrino(R) Advanced-N 6230 },
-   { 0x8086, 0x0091, Intel(R) Centrino(R) Advanced-N 6230 },
-   { 0x8086, 0x0885, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
-   { 0x8086, 0x0886, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
-   { 0x8086, 0x0896, Intel(R) Centrino(R) Wireless-N 130  },
-   { 0x8086, 0x4229, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x422b, Intel(R) Centrino(R) Ultimate-N 6300 },
-   { 0x8086, 0x422c, Intel(R) Centrino(R) Advanced-N 6200 },
-   { 0x8086, 0x422d, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x4230, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x4232, Intel(R) WiFi Link 5100  },
-   { 0x8086, 0x4233, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x4235, Intel(R) Ultimate N WiFi Link 5300   },
-   { 0x8086, 0x4236, Intel(R) Ultimate N WiFi Link 5300   },
-   { 0x8086, 0x4237, Intel(R) WiFi Link 5100  },
-   { 0x8086, 0x4238, Intel(R) Centrino(R) Ultimate-N 6300 },
-   { 0x8086, 0x4239, Intel(R) Centrino(R) Advanced-N 6200 },
-   { 0x8086, 0x423a, Intel(R) WiMAX/WiFi Link 5350},
-   { 0x8086, 0x423b, Intel(R) WiMAX/WiFi Link 5350},
-   { 0x8086, 0x423c, Intel(R) WiMAX/WiFi Link 5150},
-   { 0x8086, 0x423d, Intel(R) WiMAX/WiFi Link 5150},
+   { 0x8086, 0x0082, Intel Centrino Advanced-N 6205  },
+   { 0x8086, 0x0083, Intel Centrino Wireless-N 1000  },
+   { 0x8086, 0x0084, Intel Centrino Wireless-N 1000  },
+   { 0x8086, 0x0085, Intel Centrino Advanced-N 6205  },
+   { 0x8086, 0x0087, Intel Centrino Advanced-N + WiMAX 6250  },
+   { 0x8086, 0x0089, Intel Centrino Advanced-N + WiMAX 6250  },
+   { 0x8086, 0x008a, Intel Centrino Wireless-N 1030  },
+   { 0x8086, 0x008b, Intel Centrino Wireless-N 1030  },
+   { 0x8086, 0x0090, Intel Centrino Advanced-N 6230  },
+   { 0x8086, 0x0091, Intel Centrino Advanced-N 6230  },
+   { 0x8086, 0x0885, Intel Centrino Wireless-N + WiMAX 6150  },
+   { 0x8086, 0x0886, Intel Centrino Wireless-N + WiMAX 6150  },
+   { 0x8086, 0x0896, Intel Centrino Wireless-N 130   },
+   { 0x8086, 0x4229, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x422b, Intel Centrino Ultimate-N 6300  },
+   { 0x8086, 0x422c, Intel Centrino Advanced-N 6200  },
+   { 0x8086, 0x422d, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x4230, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x4232, Intel WiFi Link 5100},
+   { 0x8086, 0x4233, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x4235, Intel Ultimate N WiFi Link 5300 },
+   { 0x8086, 0x4236, Intel Ultimate N WiFi Link 5300 },
+   { 0x8086, 0x4237, Intel WiFi Link 5100},
+   { 0x8086, 0x4238, Intel Centrino Ultimate-N 6300  },
+   { 0x8086, 0x4239, Intel Centrino Advanced-N 6200  },
+   { 0x8086, 0x423a, Intel WiMAX/WiFi Link 5350  },
+   { 0x8086, 0x423b, Intel WiMAX/WiFi Link 5350  },
+   { 0x8086, 0x423c, Intel WiMAX/WiFi Link 5150  },
+   { 0x8086, 0x423d, Intel WiMAX/WiFi Link 5150  },
{ 0, 0, NULL }
 };
 

svn commit: r233845 - head/sys/net80211

2012-04-03 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Apr  3 17:48:42 2012
New Revision: 233845
URL: http://svn.freebsd.org/changeset/base/233845

Log:
  Add basic HT channel setup to ieee80211_init_channels(), this will be
  used by at least ral(4).
  
  Reviewed by:  ray

Modified:
  head/sys/net80211/ieee80211_regdomain.c

Modified: head/sys/net80211/ieee80211_regdomain.c
==
--- head/sys/net80211/ieee80211_regdomain.c Tue Apr  3 17:10:19 2012
(r233844)
+++ head/sys/net80211/ieee80211_regdomain.c Tue Apr  3 17:48:42 2012
(r233845)
@@ -105,7 +105,12 @@ addchan(struct ieee80211com *ic, int iee
c-ic_freq = ieee80211_ieee2mhz(ieee, flags);
c-ic_ieee = ieee;
c-ic_flags = flags;
-   c-ic_extieee = 0;
+   if (flags  IEEE80211_CHAN_HT40U)
+   c-ic_extieee = ieee + 4;
+   else if (flags  IEEE80211_CHAN_HT40D)
+   c-ic_extieee = ieee - 4;
+   else
+   c-ic_extieee = 0;
 }
 
 /*
@@ -123,7 +128,8 @@ ieee80211_init_channels(struct ieee80211
/* XXX just do something for now */
ic-ic_nchans = 0;
if (isset(bands, IEEE80211_MODE_11B) ||
-   isset(bands, IEEE80211_MODE_11G)) {
+   isset(bands, IEEE80211_MODE_11G) ||
+   isset(bands, IEEE80211_MODE_11NG)) {
int maxchan = 11;
if (rd != NULL  rd-ecm)
maxchan = 14;
@@ -132,15 +138,67 @@ ieee80211_init_channels(struct ieee80211
addchan(ic, i, IEEE80211_CHAN_B);
if (isset(bands, IEEE80211_MODE_11G))
addchan(ic, i, IEEE80211_CHAN_G);
+   if (isset(bands, IEEE80211_MODE_11NG)) {
+   addchan(ic, i,
+   IEEE80211_CHAN_G | IEEE80211_CHAN_HT20);
+   }
+   if ((ic-ic_htcaps  IEEE80211_HTCAP_CHWIDTH40) == 0)
+   continue;
+   if (i = 7) {
+   addchan(ic, i,
+   IEEE80211_CHAN_G | IEEE80211_CHAN_HT40U);
+   addchan(ic, i + 4,
+   IEEE80211_CHAN_G | IEEE80211_CHAN_HT40D);
+   }
}
}
-   if (isset(bands, IEEE80211_MODE_11A)) {
-   for (i = 36; i = 64; i += 4)
+   if (isset(bands, IEEE80211_MODE_11A) ||
+   isset(bands, IEEE80211_MODE_11NA)) {
+   for (i = 36; i = 64; i += 4) {
addchan(ic, i, IEEE80211_CHAN_A);
-   for (i = 100; i = 140; i += 4)
+   if (isset(bands, IEEE80211_MODE_11NA)) {
+   addchan(ic, i,
+   IEEE80211_CHAN_A | IEEE80211_CHAN_HT20);
+   }
+   if ((ic-ic_htcaps  IEEE80211_HTCAP_CHWIDTH40) == 0)
+   continue;
+   if ((i % 8) == 4) {
+   addchan(ic, i,
+   IEEE80211_CHAN_A | IEEE80211_CHAN_HT40U);
+   addchan(ic, i + 4,
+   IEEE80211_CHAN_A | IEEE80211_CHAN_HT40D);
+   }
+   }
+   for (i = 100; i = 140; i += 4) {
addchan(ic, i, IEEE80211_CHAN_A);
-   for (i = 149; i = 161; i += 4)
+   if (isset(bands, IEEE80211_MODE_11NA)) {
+   addchan(ic, i,
+   IEEE80211_CHAN_A | IEEE80211_CHAN_HT20);
+   }
+   if ((ic-ic_htcaps  IEEE80211_HTCAP_CHWIDTH40) == 0)
+   continue;
+   if ((i % 8) == 4  i != 140) {
+   addchan(ic, i,
+   IEEE80211_CHAN_A | IEEE80211_CHAN_HT40U);
+   addchan(ic, i + 4,
+   IEEE80211_CHAN_A | IEEE80211_CHAN_HT40D);
+   }
+   }
+   for (i = 149; i = 161; i += 4) {
addchan(ic, i, IEEE80211_CHAN_A);
+   if (isset(bands, IEEE80211_MODE_11NA)) {
+   addchan(ic, i,
+   IEEE80211_CHAN_A | IEEE80211_CHAN_HT20);
+   }
+   if ((ic-ic_htcaps  IEEE80211_HTCAP_CHWIDTH40) == 0)
+   continue;
+   if ((i % 8) == 5) {
+   addchan(ic, i,
+   IEEE80211_CHAN_A | IEEE80211_CHAN_HT40U);
+   addchan(ic, i + 4,
+   IEEE80211_CHAN_A | IEEE80211_CHAN_HT40D);
+ 

svn commit: r233735 - stable/9/sbin/ifconfig

2012-03-31 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Mar 31 08:44:27 2012
New Revision: 233735
URL: http://svn.freebsd.org/changeset/base/233735

Log:
  MFC r233328,r233382:
  Fix incorrect parameter usage.
  
  Submitted by: Monthadar Al Jaberi

Modified:
  stable/9/sbin/ifconfig/ifieee80211.c
Directory Properties:
  stable/9/sbin/ifconfig/   (props changed)

Modified: stable/9/sbin/ifconfig/ifieee80211.c
==
--- stable/9/sbin/ifconfig/ifieee80211.cSat Mar 31 07:10:16 2012
(r233734)
+++ stable/9/sbin/ifconfig/ifieee80211.cSat Mar 31 08:44:27 2012
(r233735)
@@ -1849,13 +1849,13 @@ DECL_CMD_FUNC(set80211meshttl, val, d)
 static
 DECL_CMD_FUNC(set80211meshforward, val, d)
 {
-   set80211(s, IEEE80211_IOC_MESH_FWRD, atoi(val), 0, NULL);
+   set80211(s, IEEE80211_IOC_MESH_FWRD, d, 0, NULL);
 }
 
 static
 DECL_CMD_FUNC(set80211meshpeering, val, d)
 {
-   set80211(s, IEEE80211_IOC_MESH_AP, atoi(val), 0, NULL);
+   set80211(s, IEEE80211_IOC_MESH_AP, d, 0, NULL);
 }
 
 static
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233736 - stable/8/sbin/ifconfig

2012-03-31 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Mar 31 08:46:11 2012
New Revision: 233736
URL: http://svn.freebsd.org/changeset/base/233736

Log:
  MFC r233328,r233382:
  Fix incorrect parameter usage.
  
  Submitted by: Monthadar Al Jaberi

Modified:
  stable/8/sbin/ifconfig/ifieee80211.c
Directory Properties:
  stable/8/sbin/ifconfig/   (props changed)

Modified: stable/8/sbin/ifconfig/ifieee80211.c
==
--- stable/8/sbin/ifconfig/ifieee80211.cSat Mar 31 08:44:27 2012
(r233735)
+++ stable/8/sbin/ifconfig/ifieee80211.cSat Mar 31 08:46:11 2012
(r233736)
@@ -1856,13 +1856,13 @@ DECL_CMD_FUNC(set80211meshttl, val, d)
 static
 DECL_CMD_FUNC(set80211meshforward, val, d)
 {
-   set80211(s, IEEE80211_IOC_MESH_FWRD, atoi(val), 0, NULL);
+   set80211(s, IEEE80211_IOC_MESH_FWRD, d, 0, NULL);
 }
 
 static
 DECL_CMD_FUNC(set80211meshpeering, val, d)
 {
-   set80211(s, IEEE80211_IOC_MESH_AP, atoi(val), 0, NULL);
+   set80211(s, IEEE80211_IOC_MESH_AP, d, 0, NULL);
 }
 
 static
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233567 - head/sys/dev/iwn

2012-03-27 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Mar 27 17:45:50 2012
New Revision: 233567
URL: http://svn.freebsd.org/changeset/base/233567

Log:
  Add support for 6150 series devices.
  
  Tested by:Shane Riddle sh4neriddle at yahoo dot com
  MFC after:1 week

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Tue Mar 27 17:24:51 2012(r233566)
+++ head/sys/dev/iwn/if_iwn.c   Tue Mar 27 17:45:50 2012(r233567)
@@ -89,6 +89,8 @@ static const struct iwn_ident iwn_ident_
{ 0x8086, 0x008b, Intel(R) Centrino(R) Wireless-N 1030 },
{ 0x8086, 0x0090, Intel(R) Centrino(R) Advanced-N 6230 },
{ 0x8086, 0x0091, Intel(R) Centrino(R) Advanced-N 6230 },
+   { 0x8086, 0x0885, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
+   { 0x8086, 0x0886, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
{ 0x8086, 0x0896, Intel(R) Centrino(R) Wireless-N 130  },
{ 0x8086, 0x4229, Intel(R) Wireless WiFi Link 4965 },
{ 0x8086, 0x422b, Intel(R) Centrino(R) Ultimate-N 6300 },
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233568 - head/share/man/man4

2012-03-27 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Mar 27 18:17:22 2012
New Revision: 233568
URL: http://svn.freebsd.org/changeset/base/233568

Log:
  Add a list of available devices which matches the names shown by pciconf.
  While here add 2 missing firmware modules.
  
  MFC after:1 week

Modified:
  head/share/man/man4/iwn.4

Modified: head/share/man/man4/iwn.4
==
--- head/share/man/man4/iwn.4   Tue Mar 27 17:45:50 2012(r233567)
+++ head/share/man/man4/iwn.4   Tue Mar 27 18:17:22 2012(r233568)
@@ -25,13 +25,12 @@
 .\
 .\ $FreeBSD$
 .\
-.Dd July 20, 2010
+.Dd March 27, 2012
 .Dt IWN 4
 .Os
 .Sh NAME
 .Nm iwn
-.Nd Intel Wireless WiFi Link 4965/1000/5000/5150/5300/6000/6050 
-IEEE 802.11n driver
+.Nd Intel IEEE 802.11n wireless network driver
 .Sh SYNOPSIS
 To compile this driver into the kernel,
 include the following lines in your
@@ -51,6 +50,8 @@ Choose one from:
 .Cd device iwn5000fw
 .Cd device iwn5150fw
 .Cd device iwn6000fw
+.Cd device iwn6000g2afw
+.Cd device iwn6000g2bfw
 .Cd device iwn6050fw
 .Ed
 .Pp
@@ -71,15 +72,32 @@ iwn1000fw_load=YES
 iwn5000fw_load=YES
 iwn5150fw_load=YES
 iwn6000fw_load=YES
+iwn6000g2afw_load=YES
+iwn6000g2bfw_load=YES
 iwn6050fw_load=YES
 .Ed
 .Sh DESCRIPTION
 The
 .Nm
-driver provides support for
-.Tn Intel
-Wireless WiFi Link 4965, 1000, 5000 and 6000 series of 
-PCI-Express network adapters.
+driver provides support for:
+.Pp
+.Bl -tag -width Ds -offset indent -compact
+.It Intel Centrino Advanced-N 6200
+.It Intel Centrino Advanced-N 6205
+.It Intel Centrino Advanced-N 6230
+.It Intel Centrino Advanced-N + WiMAX 6250
+.It Intel Centrino Ultimate-N 6300
+.It Intel Centrino Wireless-N 130
+.It Intel Centrino Wireless-N 1000
+.It Intel Centrino Wireless-N 1030
+.It Intel Centrino Wireless-N + WiMAX 6150
+.It Intel Ultimate N WiFi Link 5300
+.It Intel Wireless WiFi Link 4965
+.It Intel WiFi Link 5100
+.It Intel WiMAX/WiFi Link 5150
+.It Intel WiMAX/WiFi Link 5350
+.El
+.Pp
 .Nm
 supports
 .Cm station ,
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233571 - head/sys/dev/iwn

2012-03-27 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Mar 27 18:27:45 2012
New Revision: 233571
URL: http://svn.freebsd.org/changeset/base/233571

Log:
  strip (R) to match manpage and pci_vendors
  
  MFC after:1 week

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Tue Mar 27 18:26:35 2012(r233570)
+++ head/sys/dev/iwn/if_iwn.c   Tue Mar 27 18:27:45 2012(r233571)
@@ -79,35 +79,35 @@ struct iwn_ident {
 };
 
 static const struct iwn_ident iwn_ident_table[] = {
-   { 0x8086, 0x0082, Intel(R) Centrino(R) Advanced-N 6205 },
-   { 0x8086, 0x0083, Intel(R) Centrino(R) Wireless-N 1000 },
-   { 0x8086, 0x0084, Intel(R) Centrino(R) Wireless-N 1000 },
-   { 0x8086, 0x0085, Intel(R) Centrino(R) Advanced-N 6205 },
-   { 0x8086, 0x0087, Intel(R) Centrino(R) Advanced-N + WiMAX 6250 },
-   { 0x8086, 0x0089, Intel(R) Centrino(R) Advanced-N + WiMAX 6250 },
-   { 0x8086, 0x008a, Intel(R) Centrino(R) Wireless-N 1030 },
-   { 0x8086, 0x008b, Intel(R) Centrino(R) Wireless-N 1030 },
-   { 0x8086, 0x0090, Intel(R) Centrino(R) Advanced-N 6230 },
-   { 0x8086, 0x0091, Intel(R) Centrino(R) Advanced-N 6230 },
-   { 0x8086, 0x0885, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
-   { 0x8086, 0x0886, Intel(R) Centrino(R) Wireless-N + WiMAX 6150 },
-   { 0x8086, 0x0896, Intel(R) Centrino(R) Wireless-N 130  },
-   { 0x8086, 0x4229, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x422b, Intel(R) Centrino(R) Ultimate-N 6300 },
-   { 0x8086, 0x422c, Intel(R) Centrino(R) Advanced-N 6200 },
-   { 0x8086, 0x422d, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x4230, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x4232, Intel(R) WiFi Link 5100  },
-   { 0x8086, 0x4233, Intel(R) Wireless WiFi Link 4965 },
-   { 0x8086, 0x4235, Intel(R) Ultimate N WiFi Link 5300   },
-   { 0x8086, 0x4236, Intel(R) Ultimate N WiFi Link 5300   },
-   { 0x8086, 0x4237, Intel(R) WiFi Link 5100  },
-   { 0x8086, 0x4238, Intel(R) Centrino(R) Ultimate-N 6300 },
-   { 0x8086, 0x4239, Intel(R) Centrino(R) Advanced-N 6200 },
-   { 0x8086, 0x423a, Intel(R) WiMAX/WiFi Link 5350},
-   { 0x8086, 0x423b, Intel(R) WiMAX/WiFi Link 5350},
-   { 0x8086, 0x423c, Intel(R) WiMAX/WiFi Link 5150},
-   { 0x8086, 0x423d, Intel(R) WiMAX/WiFi Link 5150},
+   { 0x8086, 0x0082, Intel Centrino Advanced-N 6205  },
+   { 0x8086, 0x0083, Intel Centrino Wireless-N 1000  },
+   { 0x8086, 0x0084, Intel Centrino Wireless-N 1000  },
+   { 0x8086, 0x0085, Intel Centrino Advanced-N 6205  },
+   { 0x8086, 0x0087, Intel Centrino Advanced-N + WiMAX 6250  },
+   { 0x8086, 0x0089, Intel Centrino Advanced-N + WiMAX 6250  },
+   { 0x8086, 0x008a, Intel Centrino Wireless-N 1030  },
+   { 0x8086, 0x008b, Intel Centrino Wireless-N 1030  },
+   { 0x8086, 0x0090, Intel Centrino Advanced-N 6230  },
+   { 0x8086, 0x0091, Intel Centrino Advanced-N 6230  },
+   { 0x8086, 0x0885, Intel Centrino Wireless-N + WiMAX 6150  },
+   { 0x8086, 0x0886, Intel Centrino Wireless-N + WiMAX 6150  },
+   { 0x8086, 0x0896, Intel Centrino Wireless-N 130   },
+   { 0x8086, 0x4229, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x422b, Intel Centrino Ultimate-N 6300  },
+   { 0x8086, 0x422c, Intel Centrino Advanced-N 6200  },
+   { 0x8086, 0x422d, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x4230, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x4232, Intel WiFi Link 5100},
+   { 0x8086, 0x4233, Intel Wireless WiFi Link 4965   },
+   { 0x8086, 0x4235, Intel Ultimate N WiFi Link 5300 },
+   { 0x8086, 0x4236, Intel Ultimate N WiFi Link 5300 },
+   { 0x8086, 0x4237, Intel WiFi Link 5100},
+   { 0x8086, 0x4238, Intel Centrino Ultimate-N 6300  },
+   { 0x8086, 0x4239, Intel Centrino Advanced-N 6200  },
+   { 0x8086, 0x423a, Intel WiMAX/WiFi Link 5350  },
+   { 0x8086, 0x423b, Intel WiMAX/WiFi Link 5350  },
+   { 0x8086, 0x423c, Intel WiMAX/WiFi Link 5150  },
+   { 0x8086, 0x423d, Intel WiMAX/WiFi Link 5150  },
{ 0, 0, NULL }
 };
 
___
svn-src-all@freebsd.org mailing list

svn commit: r233460 - stable/9/sys/dev/usb/wlan

2012-03-25 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun Mar 25 10:59:40 2012
New Revision: 233460
URL: http://svn.freebsd.org/changeset/base/233460

Log:
  MFC r233283:
  Load the firmware during init not attach, as a root filesystem might
  not yet be available. While here, also print the firmware version.
  
  Submitted by: PseudoCylon

Modified:
  stable/9/sys/dev/usb/wlan/if_run.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/dev/usb/wlan/if_run.c
==
--- stable/9/sys/dev/usb/wlan/if_run.c  Sun Mar 25 09:23:10 2012
(r233459)
+++ stable/9/sys/dev/usb/wlan/if_run.c  Sun Mar 25 10:59:40 2012
(r233460)
@@ -600,12 +600,6 @@ run_attach(device_t self)
sc-mac_ver, sc-mac_rev, run_get_rf(sc-rf_rev),
sc-ntxchains, sc-nrxchains, ether_sprintf(sc-sc_bssid));
 
-   if ((error = run_load_microcode(sc)) != 0) {
-   device_printf(sc-sc_dev, could not load 8051 microcode\n);
-   RUN_UNLOCK(sc);
-   goto detach;
-   }
-
RUN_UNLOCK(sc);
 
ifp = sc-sc_ifp = if_alloc(IFT_IEEE80211);
@@ -1050,8 +1044,9 @@ run_load_microcode(struct run_softc *sc)
error = ETIMEDOUT;
goto fail;
}
-   device_printf(sc-sc_dev, firmware %s loaded\n,
-   (base == fw-data) ? RT2870 : RT3071);
+   device_printf(sc-sc_dev, firmware %s ver. %u.%u loaded\n,
+   (base == fw-data) ? RT2870 : RT3071,
+   *(base + 4092), *(base + 4093));
 
 fail:
firmware_put(fw, FIRMWARE_UNLOAD);
@@ -4677,6 +4672,11 @@ run_init_locked(struct run_softc *sc)
 
run_stop(sc);
 
+   if (run_load_microcode(sc) != 0) {
+   device_printf(sc-sc_dev, could not load 8051 microcode\n);
+   goto fail;
+   }
+
for (ntries = 0; ntries  100; ntries++) {
if (run_read(sc, RT2860_ASIC_VER_ID, tmp) != 0)
goto fail;
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233461 - stable/8/sys/dev/usb/wlan

2012-03-25 Thread Bernhard Schmidt
Author: bschmidt
Date: Sun Mar 25 11:42:59 2012
New Revision: 233461
URL: http://svn.freebsd.org/changeset/base/233461

Log:
  MFC r233283:
  Load the firmware during init not attach, as a root filesystem might
  not yet be available. While here, also print the firmware version.
  
  Submitted by: PseudoCylon

Modified:
  stable/8/sys/dev/usb/wlan/if_run.c
Directory Properties:
  stable/8/sys/   (props changed)

Modified: stable/8/sys/dev/usb/wlan/if_run.c
==
--- stable/8/sys/dev/usb/wlan/if_run.c  Sun Mar 25 10:59:40 2012
(r233460)
+++ stable/8/sys/dev/usb/wlan/if_run.c  Sun Mar 25 11:42:59 2012
(r233461)
@@ -598,12 +598,6 @@ run_attach(device_t self)
sc-mac_ver, sc-mac_rev, run_get_rf(sc-rf_rev),
sc-ntxchains, sc-nrxchains, ether_sprintf(sc-sc_bssid));
 
-   if ((error = run_load_microcode(sc)) != 0) {
-   device_printf(sc-sc_dev, could not load 8051 microcode\n);
-   RUN_UNLOCK(sc);
-   goto detach;
-   }
-
RUN_UNLOCK(sc);
 
ifp = sc-sc_ifp = if_alloc(IFT_IEEE80211);
@@ -1044,8 +1038,9 @@ run_load_microcode(struct run_softc *sc)
error = ETIMEDOUT;
goto fail;
}
-   device_printf(sc-sc_dev, firmware %s loaded\n,
-   (base == fw-data) ? RT2870 : RT3071);
+   device_printf(sc-sc_dev, firmware %s ver. %u.%u loaded\n,
+   (base == fw-data) ? RT2870 : RT3071,
+   *(base + 4092), *(base + 4093));
 
 fail:
firmware_put(fw, FIRMWARE_UNLOAD);
@@ -4598,6 +4593,11 @@ run_init_locked(struct run_softc *sc)
 
run_stop(sc);
 
+   if (run_load_microcode(sc) != 0) {
+   device_printf(sc-sc_dev, could not load 8051 microcode\n);
+   goto fail;
+   }
+
for (ntries = 0; ntries  100; ntries++) {
if (run_read(sc, RT2860_ASIC_VER_ID, tmp) != 0)
goto fail;
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233382 - head/sbin/ifconfig

2012-03-23 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Mar 23 18:12:25 2012
New Revision: 233382
URL: http://svn.freebsd.org/changeset/base/233382

Log:
  Also fix the parameter usage in set80211meshpeering().
  
  Submitted by: Monthadar Al Jaberi
  MFC after:1 week
  X-MFC after:  r233328

Modified:
  head/sbin/ifconfig/ifieee80211.c

Modified: head/sbin/ifconfig/ifieee80211.c
==
--- head/sbin/ifconfig/ifieee80211.cFri Mar 23 18:07:12 2012
(r233381)
+++ head/sbin/ifconfig/ifieee80211.cFri Mar 23 18:12:25 2012
(r233382)
@@ -1885,7 +1885,7 @@ DECL_CMD_FUNC(set80211meshforward, val, 
 static
 DECL_CMD_FUNC(set80211meshpeering, val, d)
 {
-   set80211(s, IEEE80211_IOC_MESH_AP, atoi(val), 0, NULL);
+   set80211(s, IEEE80211_IOC_MESH_AP, d, 0, NULL);
 }
 
 static
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233387 - in head/sys/dev: ipw iwi iwn wpi

2012-03-23 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Mar 23 19:32:30 2012
New Revision: 233387
URL: http://svn.freebsd.org/changeset/base/233387

Log:
  Use suspend/resume methods provided by net80211. This ensures that the
  appropriate state handling takes place, not doing so results in the
  device doing nothing until manual intervention.
  
  Reviewed by:  iwasaki
  Tested by:iwasaki (iwi)
  MFC after:4 weeks

Modified:
  head/sys/dev/ipw/if_ipw.c
  head/sys/dev/iwi/if_iwi.c
  head/sys/dev/iwn/if_iwn.c
  head/sys/dev/wpi/if_wpi.c

Modified: head/sys/dev/ipw/if_ipw.c
==
--- head/sys/dev/ipw/if_ipw.c   Fri Mar 23 18:29:28 2012(r233386)
+++ head/sys/dev/ipw/if_ipw.c   Fri Mar 23 19:32:30 2012(r233387)
@@ -835,9 +835,9 @@ static int
 ipw_suspend(device_t dev)
 {
struct ipw_softc *sc = device_get_softc(dev);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   ipw_stop(sc);
-
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -845,13 +845,11 @@ static int
 ipw_resume(device_t dev)
 {
struct ipw_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP)
-   ipw_init(sc);
-
+   ieee80211_resume_all(ic);
return 0;
 }
 

Modified: head/sys/dev/iwi/if_iwi.c
==
--- head/sys/dev/iwi/if_iwi.c   Fri Mar 23 18:29:28 2012(r233386)
+++ head/sys/dev/iwi/if_iwi.c   Fri Mar 23 19:32:30 2012(r233387)
@@ -863,9 +863,9 @@ static int
 iwi_suspend(device_t dev)
 {
struct iwi_softc *sc = device_get_softc(dev);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   iwi_stop(sc);
-
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -873,13 +873,11 @@ static int
 iwi_resume(device_t dev)
 {
struct iwi_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP)
-   iwi_init(sc);
-
+   ieee80211_resume_all(ic);
return 0;
 }
 

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Fri Mar 23 18:29:28 2012(r233386)
+++ head/sys/dev/iwn/if_iwn.c   Fri Mar 23 19:32:30 2012(r233387)
@@ -945,13 +945,9 @@ static int
 iwn_suspend(device_t dev)
 {
struct iwn_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
-   struct ieee80211com *ic = ifp-if_l2com;
-   struct ieee80211vap *vap = TAILQ_FIRST(ic-ic_vaps);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   iwn_stop(sc);
-   if (vap != NULL)
-   ieee80211_stop(vap);
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -959,20 +955,12 @@ static int
 iwn_resume(device_t dev)
 {
struct iwn_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
-   struct ieee80211com *ic = ifp-if_l2com;
-   struct ieee80211vap *vap = TAILQ_FIRST(ic-ic_vaps);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
/* Clear device-specific PCI retry timeout register (41h). */
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP) {
-   iwn_init(sc);
-   if (vap != NULL)
-   ieee80211_init(vap);
-   if (ifp-if_drv_flags  IFF_DRV_RUNNING)
-   iwn_start(ifp);
-   }
+   ieee80211_resume_all(ic);
return 0;
 }
 

Modified: head/sys/dev/wpi/if_wpi.c
==
--- head/sys/dev/wpi/if_wpi.c   Fri Mar 23 18:29:28 2012(r233386)
+++ head/sys/dev/wpi/if_wpi.c   Fri Mar 23 19:32:30 2012(r233387)
@@ -1218,8 +1218,9 @@ static int
 wpi_suspend(device_t dev)
 {
struct wpi_softc *sc = device_get_softc(dev);
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
-   wpi_stop(sc);
+   ieee80211_suspend_all(ic);
return 0;
 }
 
@@ -1227,15 +1228,11 @@ static int
 wpi_resume(device_t dev)
 {
struct wpi_softc *sc = device_get_softc(dev);
-   struct ifnet *ifp = sc-sc_ifp;
+   struct ieee80211com *ic = sc-sc_ifp-if_l2com;
 
pci_write_config(dev, 0x41, 0, 1);
 
-   if (ifp-if_flags  IFF_UP) {
-   wpi_init(ifp-if_softc);
-   if (ifp-if_drv_flags  IFF_DRV_RUNNING)
-   wpi_start(ifp);
-   }
+   ieee80211_resume_all(ic);
return 0;
 }
 
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to 

svn commit: r233283 - head/sys/dev/usb/wlan

2012-03-21 Thread Bernhard Schmidt
Author: bschmidt
Date: Wed Mar 21 19:08:44 2012
New Revision: 233283
URL: http://svn.freebsd.org/changeset/base/233283

Log:
  Load the firmware during init not attach, as a root filesystem might
  not yet be available. While here, also print the firmware version.
  
  Submitted by: PseudoCylon
  MFC after:3 days

Modified:
  head/sys/dev/usb/wlan/if_run.c

Modified: head/sys/dev/usb/wlan/if_run.c
==
--- head/sys/dev/usb/wlan/if_run.c  Wed Mar 21 16:59:39 2012
(r233282)
+++ head/sys/dev/usb/wlan/if_run.c  Wed Mar 21 19:08:44 2012
(r233283)
@@ -600,12 +600,6 @@ run_attach(device_t self)
sc-mac_ver, sc-mac_rev, run_get_rf(sc-rf_rev),
sc-ntxchains, sc-nrxchains, ether_sprintf(sc-sc_bssid));
 
-   if ((error = run_load_microcode(sc)) != 0) {
-   device_printf(sc-sc_dev, could not load 8051 microcode\n);
-   RUN_UNLOCK(sc);
-   goto detach;
-   }
-
RUN_UNLOCK(sc);
 
ifp = sc-sc_ifp = if_alloc(IFT_IEEE80211);
@@ -1050,8 +1044,9 @@ run_load_microcode(struct run_softc *sc)
error = ETIMEDOUT;
goto fail;
}
-   device_printf(sc-sc_dev, firmware %s loaded\n,
-   (base == fw-data) ? RT2870 : RT3071);
+   device_printf(sc-sc_dev, firmware %s ver. %u.%u loaded\n,
+   (base == fw-data) ? RT2870 : RT3071,
+   *(base + 4092), *(base + 4093));
 
 fail:
firmware_put(fw, FIRMWARE_UNLOAD);
@@ -4677,6 +4672,11 @@ run_init_locked(struct run_softc *sc)
 
run_stop(sc);
 
+   if (run_load_microcode(sc) != 0) {
+   device_printf(sc-sc_dev, could not load 8051 microcode\n);
+   goto fail;
+   }
+
for (ntries = 0; ntries  100; ntries++) {
if (run_read(sc, RT2860_ASIC_VER_ID, tmp) != 0)
goto fail;
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r233284 - head/sys/contrib/dev/run

2012-03-21 Thread Bernhard Schmidt
Author: bschmidt
Date: Wed Mar 21 19:09:52 2012
New Revision: 233284
URL: http://svn.freebsd.org/changeset/base/233284

Log:
  Update the firmware to version 0.236
  
  Submitted by: PseudoCylon
  MFC after:2 weeks

Modified:
  head/sys/contrib/dev/run/rt2870.fw.uu

Modified: head/sys/contrib/dev/run/rt2870.fw.uu
==
--- head/sys/contrib/dev/run/rt2870.fw.uu   Wed Mar 21 19:08:44 2012
(r233283)
+++ head/sys/contrib/dev/run/rt2870.fw.uu   Wed Mar 21 19:09:52 2012
(r233284)
@@ -39,70 +39,77 @@
 # DAMAGE.
 #
 # This file contains two 4KB firmware, first half is RT2870 and last half
-# is RT3071. On each 4KB firmware, 3rd last byte is major version number and
-# 2nd last byte is minor version number.
+# is RT3071. On each 4KB firmware, the last 2 bytes are CRC, 3rd last byte
+# is minor version number and 4th last byte is major version number.
 # This file comes with
-#  RT2870 v. 0.17
-#  RT3071 v. 0.17
+#  RT2870 v. 0.236
+#  RT3071 v. 0.236
 begin 644 rt2870.fw.uu
-M`A`H`A`R`A!X`A,J`A,K`A-*`A-/$A-+(@(7N0(8\`(42`(3@S`%!B`-
-M`Q(9R*0`8S@,.,;Y4PPX`1_0(`?P0$_O\)`!C'0(\.20`:?PD`,X##@
-M')`!@.T`A6CX+0!$)`!A.T@0F0`8QT`?`2#@BD`04X#G`P(3*9!P$N#U
-M5I`$!.`2IT0V3$0O381`E`1.5$10E(10E,10E01@U41TE82,'`26W$2B7(2
-MX',3`8```!,ID'`1X/4\Y)!P$_0!!1T@/#E5O1P`P(3*0(3(B``S`#'7T
-MKU82Y0!!1T@/#DD'`3\.56]'`#`A,I`A,BA59!T@(BD'`0X%1__[\*#9!P
-M$T`9U3@%U3X20!#@5'__OP(2D'`1X0(8`3@M`=4X#=4\@Y/4G(I!P
-M$`D_Y)'(I`$!.`EX1=]50!#@_W1')5?XQN_D'`1X/]T257^,;OQN3]
-MKU82Y0!!1T@/#DD'`3\.56]'`#`A,I`A,BY4=D!V`=Y4=D`7Y4=D6`1
-MY4=DF`+Y4=DV`%Y4T#`B0!'@5`_U.N5'M`D(Y3JT`P/D]4;E1[0*.4Z
-MM`$#Y/5Y/VO5A(+D=($(I!P$#T_Y!P$.!?_Y!P$!5)T^0!CPD'`1X)!P
-M?#D_:]6$@N1,!4$TA2`)I!P.#U)Y`*#_D'`9X/[O7I`*?`P1P2O)X`$
-MY2?T_Y`*._PY5;T`,$RD$R*0!#@_I!P$#][?CF]5?]KU82Y0!!1T
-M@/#DD'`3\.56]'`#`A,I`A,BD'`0X/Z0!'@_WU@HZ#X/57_:]6$@N1D`04
-M=(#PY)!P$_#E5O1P`P(3*0(3(I`0`.#U5Y`0`N#U6*/@]5GE6+1P'N59M#`9
-MD`4(X$0!\/V0!07@5/OP1`3P[53^D`4(\.3U3O5/=3K_=3S_K5O5A(+D9`$
-M%'2`\.20!/PY5;T8$N`0I!P$.`D_Y*3Y/VO5A(+D9`$%'2`\.20!/PY5;T
-M8J`(9!P$.`D_Y)*T@6M5Z]6$@N1D`04=(#PY)!P$_#E5O1@!Y!P)!$`?`B
-M(N53!HP8`FR33!-!`5P@3E3T5.8`CE3Q5/`(53B(BPD+3(C`4,)!P!5
-M)_^0!C@3_4GD`(IX/^0!G@_N]D`(I\#!'!*\G@`3E)_3_D`(H[_#%+
-M2\),Y402IT3I0`4,P04+P@4#Q`3N2`3V6`3ZJ```!0UA4A#A4IA4QY4=D
-M!F`#`A0U@!OE2,14#_5#Y4K$5`_U0N5,Q%0/]5[E1V0%30P^`7(5)0X5+
-M0H5-7N5'9`9P38`;Y4G$5`_U0^5+Q%0/]4+E314#_5Y4=D!G`PY4-4#T00
-M]4.`)N5'9`1@!5'M`40UX$=4()Y4T!A#E0U0/1##U0X`TDN``M),Y/4E
-MY4+$5/#_Y4-4#T_U7])@(M(5Y4D]6`+),M@!R1``;%2(2%X02%K%*O
-MP@32KR+KY`$%.!4#F`$TAB`.5.14\D_Y(8TJ^0!!3@HN2270\.5?5`_U
-M+4E!,P`7E7R#ES`95?5##_OS`1Y25P!74E#(`%272;-)M@`_E7S#F
-M!L)LTFV`!-)LPFWE1V0#$P2P;;-)M@!CE)7`#,$P1PDSE)7`%=24'@`(5
-M)=)LTFWE1[0)%.5$(.,+Y3ID`F`%Y3JT`P3;-)MY4TA/E.K0!!L)LTFV`
-M.4Z`32;,)M(D'Y5X@X`*R:!K!^5(.$LFH@;0?E7B#B`K)L=2Y`(D$
-MHFB`)C!H!N5HN*`'5(.($?P``G\`Y494\/Z^\`1^`8`?@#N;R3_DG.2
-MB!K!*)J@8P:@;E1J+B@!WE7B#@!'\!@`)_`.55/#^OO`$?@``GX`[F\D
-M_Y)UDG0@;02B;(`FY4=DG`B,PY4:BXX`7Y3JT`0;E1J+C@#3E1B#D`S#E
-M`].``.`)C!L!N5HN*`'5(.$$?P``G\`Y494\/Z^\`1^`8`?@#N;R3_
-MDG2)`0`.0$SPD!`#X,.4,$`4HG2=Z)PDG;E+A,35#_U+L)WTG:0$_E
-M+O#E1V0#F0`BG@5/[PY4/$5`\48`PD_F`,)`-P$\(X@`_2.(`+Y48PX@/3
-M@`'#DC@P1P6O)P(7?N4G]/\%W[E1V0'8`_E1V0(8`GE1V0)8`,%OV0`BG@
-M5/SPY3H48(48448TD_!))/E@%0.%#E1A,35#]U\`.$Y?`D_X`ZTCG
-M.(`^Y48PX@/3@!W#@!KE1C#B#50XPY0P4`9^`'\!@`1^`'\`[D\D_Y(XPCF`
-M$^5,.(#TX`!PY(YPCB`!,(XPCDP1P2O)X`$Y2?T_P(7?N5'9`Q@!N5'9`MP
-MI`*!4_?#E.A1@(!1@(11@*R3\8$4D^6`2)`YP2N5$Q-4/W7P`X3E\(`I
-MTCF`.N5,.(#TX`!PY(Y@WE1C#B#50XPY0P4`9^`'\!@`1^`'\`[D\D_Y(Y
-M@`_E1C#B`].``.2.8`PCDP1P2O)X`$Y2?T_Y`*._P(N5'M`L0D`(IX%3K
-M\.4G5.M%1?4G(N20`BGP,$$KT6`!.5%]/^0`BCO\*/4-)9(H]4TE@BY/5B
-MPJ_E411@2!1@9B08`,-326755`9`HN!4?_CX#G(Y`$-.T`ARCX+0
-M%Z/@M`(2?R`2%Z^0$`3@5//P=5$!`AC4Y5!P!G5B`P(8U)`2`.!4`W`2?R`2
-M%Z^0`J+@5+_P=5$`AC4Y5!P`P(8SY`H^`PY@,,N0!#?@9)@`P(8RY`!
-MBG1^\)`!EO0$@1TO#E6+1R%59M#40Y)`%`/C=`CPHW0!\'0#\'\!$@TJ
-MD!,HX)!PO0$RG@D'`;\)`3*.!4\/CX%3P\.59M#44Y3ST8`:CX%3S@!20
-M$RK@5/OP@!3E//20$RI@.!4\D4\\(`$X%3Z\)`$`!4_?!U8@%U50+D]5`
-M50`5U8@/U45B8!7`3U4)9K6*O0!(9E.5BM`,T@/2KR+KS`!$N20
-M`9;P]5'6(!?0*O0!(9E.52%`,!`#`AF1=5(!=54#D`0!X$0.\)!PN0
-M$RCPD'`;X)`3*?#E//1@.4\1`C\(`D!,J=`7PD!($=`/PY5BTA;E6;0U
-M$9`%`'3B\*-T/C=`'P=`/P?P$2#2J0`J+@1,#PD!`$X$0,\.3U4O55,`()
-MP@)]`:]!$AF4,`,P@/DD`6\-*O(N_T8WD_G04+O6Y#1P]8/@M/\9=!0N
-M]8+D-'#U@^_P=!PN]8+D-'#U@^WP(@Z^!-4B(B*0K@,.%-PJ^0C@D!`
-M\)!P*0$!WPD'`JX)`0'O0$!S@]6*0$![@(.'SD!`X)!P*/0$!W@D'`I
-M\)`0'N0KP,$H'D'`DX$0!\,(%TJ\B(B(`
+M`A`H`A`R`A!]`A.[`A.\`A/;`A/@$A/(@(8V@(:@(5/`(4=S`%!B`-
+M`Q(:_R*0`8S@,.,@Y5@PX!#E3##@!']`@`)_`)`0+^_PD`,=`CPY)`!I_0
+M`8S@,.`D``X+0%:/@M`$0D`$X+2!9`!C'0!\!(-R*0!!3@(.#`A.Z
+MD'`2X/56D`0$X!(*G1#A,1#%-A$*4!%!41%*4A%*4Q%*5!+51':5A(X!)C
+M1*1A,\Q-=@!.`D```$[J0!'@]3SDD'`3\)`$%'2`\.56]'`#`A.Z`A.S
+M(`(#,`,=?0*O5A(+D9`$%'2`\.20!/PY5;T`,$[H$[.%5D'2`B*0!#@
+M5'__OPH-D'`1X+0(!G5.`75/A)!P$.!4?_^_`A*0!'@9`A@!.T(`9U3@-U
+M3R#D]2BD'`1X3_DDBD`0$X7@)%WU5Y!P$.#_=$E5_C[\:0!'@_W1(

svn commit: r232946 - in head/sys: contrib/dev/ral modules/ralfw modules/ralfw/rt2860

2012-03-13 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Mar 13 21:25:25 2012
New Revision: 232946
URL: http://svn.freebsd.org/changeset/base/232946

Log:
  Update the rt2860's firmware and add a Makefile for the module. While
  here remove the ucode header file which was used to generate the fw files
  but by now is outdated.
  
  Reviewed by:  ray
  Obtained from:OpenBSD

Added:
  head/sys/modules/ralfw/rt2860/
  head/sys/modules/ralfw/rt2860/Makefile   (contents, props changed)
Deleted:
  head/sys/contrib/dev/ral/rt2661_ucode.h
Modified:
  head/sys/contrib/dev/ral/rt2860.fw.uu
  head/sys/modules/ralfw/Makefile

Modified: head/sys/contrib/dev/ral/rt2860.fw.uu
==
--- head/sys/contrib/dev/ral/rt2860.fw.uu   Tue Mar 13 20:37:57 2012
(r232945)
+++ head/sys/contrib/dev/ral/rt2860.fw.uu   Tue Mar 13 21:25:25 2012
(r232946)
@@ -15,30 +15,27 @@
 # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 begin 644 rt2860.fw
-M`@#B`@+L(B+___\`;W__P(`'O__`@%NP.#`\,#P(+`T'70,*O
-M,$4#$A`)D`06X##C#70(\.558`9D`V`T@.0!!3@(.#`@#5=(#PD'`2X/4V
-MD`0$X3/8#`48$(DXF!'%!5)%P8.55)/Y@!Q1@0`A]`8`H?0*`))!P
-M$.#U4(4V0-(!@#[E560#8`3E57`$?0*`84V0=(@FM5:\V$@+(@0!#@
-M]40!'@]402$6`!I!P$.#U13]KS82`LC2!)!P$^3PTJ_0T-T(/0\-#@
-M,GA_Y/;8_76!?0(!*0(^23H_CDDZ-``_:``?((W_2`*23H_A4!R0,R,,S
-MQ%0/1#(@T`$]%:``4;VW^2`P$!`@0($`D`.:Y'X!DV\H_]4/S#E50?
-M_N23HV`!#L]4P7@8*A`N.23H_KDDZ/XY).CR,6R,K%@\KPH\C%@LC*Q8/*
-MW^GYX^P.#`\,#P(+`T.C`X.G`X.K`X.O`X.S`X.W`X.[`X._`X,*O,$4#
-M$A`2TJ_0X/_0X/[0X/W0X/S0X/O0X/K0X/G0X/C0T-T(/0\-#@,L#@P/#`
-M@\P-!UT!#KS!%`Q(0##!8N548`055(`PE@P60KE4`$%5``L)9U5,'
-M,`$%4;2!#!%`Q(0#\*-TJ_0T-T(/0\-#@,A(##C!%`Q(0`S`!!B`)`Q(0
-M'#`!B`*`Q(0'S`#!B`+`Q(0'S`$!B`,`Q(0(B`32`1!N4K12Q@`].``.2
-MJ1(#/H_T(/0@OCDDW`2=`3`VCHY/X=`3]8*(@^1S=`*3:#OHZ.C@-^*
-M@XFY'/([\CF^@CF2F`,R._(.86'`!%L,B[23__PT_\COR/8(QNWTR+
-M0])%Y/4@]2'U4_5]2OU+,)]5'U4O55D`08=(#PD`0:=`CP(N_T8!_D_A(#
-M?T_Q(2`WWO\'0+O6Y#1P]8/M\(.O@3C(L#@P/#`@\P-!UT`CKS!%
-M`Q(0!M*OT-#0@M#T/#0X#+KQ(`!A(HA(#)^3U(O5'D`0`=(#PTJ\B=8D
-MY/6,]8KUB/6X]AUD!C2C'6H!2(P10,2$!7E('`#(!`#,!$#0X!(L[OSNY@
-M'__$@.3'H#U(LCOR.9@`Q;#(NT4]M,BR._(YF`%N8D_[,BPR)T%[U@N0T
-M/6#(N^0`Y3D`0`PH8[V`#'X#Z(@$[`,N`/__
+M`@-;`@*F(B+___\`2S__P(`'O__`@#=P.#`\,#P(+`T'70,*O
+M,$4#$A`)D`06X##C`W0(\)`$%.`@YP,`,MT@/0!+@]3:0!`3@),]@,!1@
+M0B3B8$48%4D(7!@Y54D_F`'%`()`)P'T!@A]`H`DD'`0X/50A39`T@`
+M/N559`-@!.55`1]`H`)A39!T@*`*:U5KS82`H*`()!P$.#U1Y!P$#U1!(0
+M)8`D'`0X/5%Y/VO-A(@M($D'`3Y/0!/D\-*OT-#0@M#T/#0X#+`X,#P
+MP(/`@L#0Z,#@Z#@ZL#@Z\#@[,#@[#@[L#@[\#@PJ\P10,2$!+2K]#@_]#@
+M_M#@_=#@_-#@^]#@^M#@^=#@^-#0T(+0@]#PT.`RP.#`\,#P(+`T'70$,*O
+M,$4#$A`,,%@*Y51@!!54@`+6#!9N508`054(`PEG54PP8`051M($,$4#
+M$A`/PHW2K]#0T(+0@]#PT.`RD'`JX##A0\*OD'`HX)`0'/0G@D!`=\)!P
+M*N0$![PD!`X/4WD!`X#A\Y`0'.0CPD!`=X)!P*?0$![@D'`J\,(%
+MTJ\B$@+(,$4#$A`#,`$(`D#$A`,`((`H#$A`?,`,(`L#$A`?,`0(`P#
+M$A`B(!,)(!$Y2M%+`#TX`!PY*I$@,@+_0])%Y/4@]2'U4_5]2OU+,)
+M]5'U4O55D`08=(#PD`0:=`CPPAK,(;(LCOR.;Z.9*8`S([\@(YA88`$6
+MPR+M)/_][#3_R._(]@C[;3(M#T(+XY)-P$G0!DW`-HZ.3^'0!D_6B(/D
+MW0DVA@[Z.CHX#?[_1@'^3^$@-GX+3_$A(#9^_P=!PN]8+D-'#U@^WP(@Z^
+M!.,BP.#`\,#P(+`T'70,*O,$4#$A`TJ_0T-T(/0\-#@,L*O$@`$@()
+M$@+AY/4B]40!`!T@/#2KR)UB0+D]8SUBO6(];CUZ'60-*,=:@%(N]@`Q^`
+M^B+_P9T`\#@P(+`@W4FB+`)G0#P.#`@L#=288(C!%`Q(0%4@`,@$`,P
+M$0-#AP$BSN_.[F`(?_\2`O@@/4BR._(YF`#%L,B[13VTR+([\CF8`86YB3_
+MLR+#(GA_Y/;8_76!7P(!Q704+O6Y#1P]8,B[Y`#Y.0`P!SAC_
 M
-M_\`F=`3`X,P(-U
-M)@HBP9T!,#@P(+`@W4F+_
 M
 M
 M
@@ -106,81 +103,84 @@ M___
 M
 M
 M
-M_P(0*`(01`(010(2J0(2J@(310(31L,B__\%4@%AX$_T$TP!08@
-M#0,2%ILP!@8@#@,2+TP!P8@#P,2/XB(I`$%.`@YP,$IR0!+@]5:0!`3@
-M$@)/$(Q$+)1$+U2$+U3$+U4$7%@$/YA$;]B$/YC$AP$A)Q$CQR$FZ2
-MG``S`#'7TKU82`LB0!!1T@/#DD'`3\.56]'`#`A*`A*/A59!T@($IR0
-M!'@)/^21P(2G)`$!.`EX1=]50!#@_W1')5?XQN_D'`1X/]T257^,;O
-MQN3]KU82`LB0!!1T@/#DD'`3\.56]'`#`A*`A*/D'`1X%0?]6+@5(#U9)!P
-M$.#_?@0!`3@M$$?0``GT'[\CMR`B`!,SSC/.V/GU88Y@D'`1X%1@)/^2
-M+!48,035`4]6-U98!U9B-U9P9U:!AU:16M5Z]6$@+(D`04=(#PY)!P$_#E
-M5O1P`P(2G`(2CY!P$!4'_5ND'`0X/5KD'`1X%1@)/^2+.!48,035`4]6]U
-M4!UB1UP5U=!=U=M5Z]6$@+(D`04=(#PY)!P$_#E5O1P`P(2G`(2CY!P
-M$.!@!-(:@`+2(JU7KU82`LB0!!1T@/#DD'`3\.56]'`#`A*`A*/D'`0X/Z0
-M!'@_WXYO57_:]6$@+(D`04=(#PY)!P$_#E5O1P`P(2G(!]D'`0X/Z0!'@
-M_WU@HZ#X/57_:]6$@+(D`04=(#PY)!P$_#E5O1@8H!3Y/5Z=7L!]6K+?4C
-M]3O2+O5WPBSU)'5V*U7KU82`LB0!!1T@/#DD'`3\.56]`P@0!#@)/^2

svn commit: r231143 - stable/9/sys/dev/iwn

2012-02-07 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Feb  7 18:05:10 2012
New Revision: 231143
URL: http://svn.freebsd.org/changeset/base/231143

Log:
  MFC r230620:
  On state changes from RUN to anything else the AGGR sessions are
  cleared/dropped leading to qid2tap[n] being NULL as there no longer
  is a tap. Now, if there have been lots of frames queued the firmware
  processes and returns those after the tap is gone.

Modified:
  stable/9/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/dev/iwn/if_iwn.c
==
--- stable/9/sys/dev/iwn/if_iwn.c   Tue Feb  7 17:57:59 2012
(r231142)
+++ stable/9/sys/dev/iwn/if_iwn.c   Tue Feb  7 18:05:10 2012
(r231143)
@@ -2813,11 +2813,13 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, 
bitmap |= 1ULL  bit;
}
tap = sc-qid2tap[qid];
-   tid = WME_AC_TO_TID(tap-txa_ac);
-   wn = (void *)tap-txa_ni;
-   wn-agg[tid].bitmap = bitmap;
-   wn-agg[tid].startidx = start;
-   wn-agg[tid].nframes = nframes;
+   if (tap != NULL) {
+   tid = WME_AC_TO_TID(tap-txa_ac);
+   wn = (void *)tap-txa_ni;
+   wn-agg[tid].bitmap = bitmap;
+   wn-agg[tid].startidx = start;
+   wn-agg[tid].nframes = nframes;
+   }
 
seqno = le32toh(*(status + nframes))  0xfff;
for (lastidx = (seqno  0xff); ring-read != lastidx;) {
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r230618 - stable/9/sys/dev/iwn

2012-01-27 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Jan 27 17:29:59 2012
New Revision: 230618
URL: http://svn.freebsd.org/changeset/base/230618

Log:
  MFC r229375:
  Don't rely on MCS7 being at index 7 while determining the amount
  of antennas to use. Not all APs enable all MCS rates.

Modified:
  stable/9/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/dev/iwn/if_iwn.c
==
--- stable/9/sys/dev/iwn/if_iwn.c   Fri Jan 27 17:16:44 2012
(r230617)
+++ stable/9/sys/dev/iwn/if_iwn.c   Fri Jan 27 17:29:59 2012
(r230618)
@@ -2128,7 +2128,7 @@ iwn_newassoc(struct ieee80211_node *ni, 
plcp |= IWN_RFLAG_SGI;
} else if (ni-ni_htcap  IEEE80211_HTCAP_SHORTGI20)
plcp |= IWN_RFLAG_SGI;
-   if (i  7)
+   if (RV(ni-ni_htrates.rs_rates[i])  7)
plcp |= IWN_RFLAG_ANT(txant1 | txant2);
else
plcp |= IWN_RFLAG_ANT(txant1);
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r230619 - stable/9/sys/net80211

2012-01-27 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Jan 27 17:32:50 2012
New Revision: 230619
URL: http://svn.freebsd.org/changeset/base/230619

Log:
  MFC r229284:
  MCS32 equals 32, not 8*ic_txstream.

Modified:
  stable/9/sys/net80211/ieee80211_ht.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/net80211/ieee80211_ht.c
==
--- stable/9/sys/net80211/ieee80211_ht.cFri Jan 27 17:29:59 2012
(r230618)
+++ stable/9/sys/net80211/ieee80211_ht.cFri Jan 27 17:32:50 2012
(r230619)
@@ -432,7 +432,7 @@ ieee80211_get_suphtrates(struct ieee8021
ADDRATE(i);
if ((ic-ic_htcaps  IEEE80211_HTCAP_CHWIDTH40) 
(ic-ic_htcaps  IEEE80211_HTC_TXMCS32))
-   ADDRATE(i);
+   ADDRATE(32);
if (ic-ic_htcaps  IEEE80211_HTC_TXUNEQUAL) {
if (ic-ic_txstream = 2) {
 for (i = 33; i = 38; i++)
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r229375 - head/sys/dev/iwn

2012-01-03 Thread Bernhard Schmidt
Author: bschmidt
Date: Tue Jan  3 09:42:31 2012
New Revision: 229375
URL: http://svn.freebsd.org/changeset/base/229375

Log:
  Don't rely on MCS7 being at index 7 while determining the amount
  of antennas to use. Not all APs enable all MCS rates.
  
  Poked by: Lucius Windschuh lwindschuh at googlemail dot com
  MFC after:1 week

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Tue Jan  3 09:42:08 2012(r229374)
+++ head/sys/dev/iwn/if_iwn.c   Tue Jan  3 09:42:31 2012(r229375)
@@ -2128,7 +2128,7 @@ iwn_newassoc(struct ieee80211_node *ni, 
plcp |= IWN_RFLAG_SGI;
} else if (ni-ni_htcap  IEEE80211_HTCAP_SHORTGI20)
plcp |= IWN_RFLAG_SGI;
-   if (i  7)
+   if (RV(ni-ni_htrates.rs_rates[i])  7)
plcp |= IWN_RFLAG_ANT(txant1 | txant2);
else
plcp |= IWN_RFLAG_ANT(txant1);
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r229284 - head/sys/net80211

2012-01-02 Thread Bernhard Schmidt
Author: bschmidt
Date: Mon Jan  2 16:02:30 2012
New Revision: 229284
URL: http://svn.freebsd.org/changeset/base/229284

Log:
  MCS32 equals 32, not 8*ic_txstream.

Modified:
  head/sys/net80211/ieee80211_ht.c

Modified: head/sys/net80211/ieee80211_ht.c
==
--- head/sys/net80211/ieee80211_ht.cMon Jan  2 14:45:30 2012
(r229283)
+++ head/sys/net80211/ieee80211_ht.cMon Jan  2 16:02:30 2012
(r229284)
@@ -433,7 +433,7 @@ ieee80211_get_suphtrates(struct ieee8021
ADDRATE(i);
if ((ic-ic_htcaps  IEEE80211_HTCAP_CHWIDTH40) 
(ic-ic_htcaps  IEEE80211_HTC_TXMCS32))
-   ADDRATE(i);
+   ADDRATE(32);
if (ic-ic_htcaps  IEEE80211_HTC_TXUNEQUAL) {
if (ic-ic_txstream = 2) {
 for (i = 33; i = 38; i++)
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


Re: svn commit: r229284 - head/sys/net80211

2012-01-02 Thread Bernhard Schmidt
On Tuesday 03 January 2012 01:41:32 Adrian Chadd wrote:
 On 2 January 2012 08:02, Bernhard Schmidt bschm...@freebsd.org wrote:
  Author: bschmidt
  Date: Mon Jan  2 16:02:30 2012
  New Revision: 229284
  URL: http://svn.freebsd.org/changeset/base/229284
 
  Log:
   MCS32 equals 32, not 8*ic_txstream.
 
 Good catch! Can you MFC it to 9/8 ?

Sure, after the usual MFC period.

-- 
Bernhard
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r228621 - in head/sys: dev/an dev/ath dev/bwi dev/bwn dev/if_ndis dev/ipw dev/iwi dev/iwn dev/malo dev/mwl dev/ral dev/usb/wlan dev/wi dev/wpi net80211

2011-12-17 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Dec 17 10:23:17 2011
New Revision: 228621
URL: http://svn.freebsd.org/changeset/base/228621

Log:
  Fix some net80211 enum nits:
  - ic_vap_create() uses an ieee80211_opmode argument
  - ieee80211_rate2media() takes an ieee80211_phymode argument
  - ieee80211_plcp2rate() takes an ieee80211_phytype argument
  - cast to enum ieee80211_protmode and ieee80211_roamingmode to silence
compiler warnings
  
  Submitted by: arundel@

Modified:
  head/sys/dev/an/if_an.c
  head/sys/dev/ath/if_ath.c
  head/sys/dev/bwi/if_bwi.c
  head/sys/dev/bwn/if_bwn.c
  head/sys/dev/if_ndis/if_ndis.c
  head/sys/dev/ipw/if_ipw.c
  head/sys/dev/iwi/if_iwi.c
  head/sys/dev/iwn/if_iwn.c
  head/sys/dev/malo/if_malo.c
  head/sys/dev/mwl/if_mwl.c
  head/sys/dev/ral/rt2560.c
  head/sys/dev/ral/rt2661.c
  head/sys/dev/usb/wlan/if_rum.c
  head/sys/dev/usb/wlan/if_run.c
  head/sys/dev/usb/wlan/if_uath.c
  head/sys/dev/usb/wlan/if_upgt.c
  head/sys/dev/usb/wlan/if_ural.c
  head/sys/dev/usb/wlan/if_urtw.c
  head/sys/dev/usb/wlan/if_zyd.c
  head/sys/dev/wi/if_wi.c
  head/sys/dev/wpi/if_wpi.c
  head/sys/net80211/ieee80211.c
  head/sys/net80211/ieee80211_ht.c
  head/sys/net80211/ieee80211_ioctl.c
  head/sys/net80211/ieee80211_var.h

Modified: head/sys/dev/an/if_an.c
==
--- head/sys/dev/an/if_an.c Sat Dec 17 06:57:35 2011(r228620)
+++ head/sys/dev/an/if_an.c Sat Dec 17 10:23:17 2011(r228621)
@@ -797,7 +797,7 @@ an_attach(struct an_softc *sc, int flags
ADD(IFM_AUTO, IFM_IEEE80211_ADHOC);
for (i = 0; i  nrate; i++) {
r = sc-an_caps.an_rates[i];
-   mword = ieee80211_rate2media(NULL, r, IEEE80211_T_DS);
+   mword = ieee80211_rate2media(NULL, r, IEEE80211_MODE_AUTO);
if (mword == 0)
continue;
printf(%s%d%sMbps, (i != 0 ?   : ),
@@ -3299,7 +3299,7 @@ an_media_status(struct ifnet *ifp, struc
if (sc-an_config.an_opmode == AN_OPMODE_IBSS_ADHOC)
imr-ifm_active |= IFM_IEEE80211_ADHOC;
imr-ifm_active |= ieee80211_rate2media(NULL,
-   status.an_current_tx_rate, IEEE80211_T_DS);
+   status.an_current_tx_rate, IEEE80211_MODE_AUTO);
imr-ifm_status = IFM_AVALID;
if (status.an_opmode  AN_STATUS_OPMODE_ASSOCIATED)
imr-ifm_status |= IFM_ACTIVE;

Modified: head/sys/dev/ath/if_ath.c
==
--- head/sys/dev/ath/if_ath.c   Sat Dec 17 06:57:35 2011(r228620)
+++ head/sys/dev/ath/if_ath.c   Sat Dec 17 10:23:17 2011(r228621)
@@ -128,9 +128,9 @@ __FBSDID($FreeBSD$);
 CTASSERT(ATH_BCBUF = 8);
 
 static struct ieee80211vap *ath_vap_create(struct ieee80211com *,
-   const char name[IFNAMSIZ], int unit, int opmode,
-   int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
-   const uint8_t mac[IEEE80211_ADDR_LEN]);
+   const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+   const uint8_t [IEEE80211_ADDR_LEN],
+   const uint8_t [IEEE80211_ADDR_LEN]);
 static voidath_vap_delete(struct ieee80211vap *);
 static voidath_init(void *);
 static voidath_stop_locked(struct ifnet *);
@@ -885,16 +885,17 @@ assign_bslot(struct ath_softc *sc)
 }
 
 static struct ieee80211vap *
-ath_vap_create(struct ieee80211com *ic,
-   const char name[IFNAMSIZ], int unit, int opmode, int flags,
-   const uint8_t bssid[IEEE80211_ADDR_LEN],
-   const uint8_t mac0[IEEE80211_ADDR_LEN])
+ath_vap_create(struct ieee80211com *ic, const char name[IFNAMSIZ], int unit,
+enum ieee80211_opmode opmode, int flags,
+const uint8_t bssid[IEEE80211_ADDR_LEN],
+const uint8_t mac0[IEEE80211_ADDR_LEN])
 {
struct ath_softc *sc = ic-ic_ifp-if_softc;
struct ath_vap *avp;
struct ieee80211vap *vap;
uint8_t mac[IEEE80211_ADDR_LEN];
-   int ic_opmode, needbeacon, error;
+   int needbeacon, error;
+   enum ieee80211_opmode ic_opmode;
 
avp = (struct ath_vap *) malloc(sizeof(struct ath_vap),
M_80211_VAP, M_WAITOK | M_ZERO);

Modified: head/sys/dev/bwi/if_bwi.c
==
--- head/sys/dev/bwi/if_bwi.c   Sat Dec 17 06:57:35 2011(r228620)
+++ head/sys/dev/bwi/if_bwi.c   Sat Dec 17 10:23:17 2011(r228621)
@@ -96,9 +96,9 @@ struct bwi_myaddr_bssid {
 } __packed;
 
 static struct ieee80211vap *bwi_vap_create(struct ieee80211com *,
-  const char [IFNAMSIZ], int, int, int,
-  const uint8_t [IEEE80211_ADDR_LEN],
-  const uint8_t [IEEE80211_ADDR_LEN]);
+   const char [IFNAMSIZ], int, enum ieee80211_opmode, int,
+   const uint8_t [IEEE80211_ADDR_LEN],
+   const uint8_t 

svn commit: r228622 - head/sys/net80211

2011-12-17 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Dec 17 10:32:31 2011
New Revision: 228622
URL: http://svn.freebsd.org/changeset/base/228622

Log:
  Remove now redundant mac argument.
  
  Discussed with:   adrian@

Modified:
  head/sys/net80211/ieee80211_acl.c
  head/sys/net80211/ieee80211_hostap.c
  head/sys/net80211/ieee80211_mesh.c
  head/sys/net80211/ieee80211_proto.h

Modified: head/sys/net80211/ieee80211_acl.c
==
--- head/sys/net80211/ieee80211_acl.c   Sat Dec 17 10:23:17 2011
(r228621)
+++ head/sys/net80211/ieee80211_acl.c   Sat Dec 17 10:32:31 2011
(r228622)
@@ -152,8 +152,7 @@ _acl_free(struct aclstate *as, struct ac
 }
 
 static int
-acl_check(struct ieee80211vap *vap, const struct ieee80211_frame *wh,
-const uint8_t mac[IEEE80211_ADDR_LEN])
+acl_check(struct ieee80211vap *vap, const struct ieee80211_frame *wh)
 {
struct aclstate *as = vap-iv_as;
 
@@ -162,9 +161,9 @@ acl_check(struct ieee80211vap *vap, cons
case ACL_POLICY_RADIUS:
return 1;
case ACL_POLICY_ALLOW:
-   return _find_acl(as, mac) != NULL;
+   return _find_acl(as, wh-i_addr2) != NULL;
case ACL_POLICY_DENY:
-   return _find_acl(as, mac) == NULL;
+   return _find_acl(as, wh-i_addr2) == NULL;
}
return 0;   /* should not happen */
 }

Modified: head/sys/net80211/ieee80211_hostap.c
==
--- head/sys/net80211/ieee80211_hostap.cSat Dec 17 10:23:17 2011
(r228621)
+++ head/sys/net80211/ieee80211_hostap.cSat Dec 17 10:32:31 2011
(r228622)
@@ -1797,8 +1797,7 @@ hostap_recv_mgmt(struct ieee80211_node *
/*
 * Consult the ACL policy module if setup.
 */
-   if (vap-iv_acl != NULL 
-   !vap-iv_acl-iac_check(vap, wh, wh-i_addr2)) {
+   if (vap-iv_acl != NULL  !vap-iv_acl-iac_check(vap, wh)) {
IEEE80211_DISCARD(vap, IEEE80211_MSG_ACL,
wh, NULL, %s, disallowed by ACL);
vap-iv_stats.is_rx_acl++;
@@ -1883,8 +1882,7 @@ hostap_recv_mgmt(struct ieee80211_node *
/*
 * Consult the ACL policy module if setup.
 */
-   if (vap-iv_acl != NULL 
-   !vap-iv_acl-iac_check(vap, wh, wh-i_addr2)) {
+   if (vap-iv_acl != NULL  !vap-iv_acl-iac_check(vap, wh)) {
IEEE80211_DISCARD(vap, IEEE80211_MSG_ACL,
wh, NULL, %s, disallowed by ACL);
vap-iv_stats.is_rx_acl++;

Modified: head/sys/net80211/ieee80211_mesh.c
==
--- head/sys/net80211/ieee80211_mesh.c  Sat Dec 17 10:23:17 2011
(r228621)
+++ head/sys/net80211/ieee80211_mesh.c  Sat Dec 17 10:32:31 2011
(r228622)
@@ -1120,8 +1120,7 @@ mesh_input(struct ieee80211_node *ni, st
 *
 * NB: this check is also done upon peering link initiation.
 */
-   if (vap-iv_acl != NULL 
-   !vap-iv_acl-iac_check(vap, wh, wh-i_addr2)) {
+   if (vap-iv_acl != NULL  !vap-iv_acl-iac_check(vap, wh)) {
IEEE80211_DISCARD(vap, IEEE80211_MSG_ACL,
wh, NULL, %s, disallowed by ACL);
vap-iv_stats.is_rx_acl++;
@@ -1379,8 +1378,7 @@ mesh_recv_mgmt(struct ieee80211_node *ni
/*
 * Peer only based on the current ACL policy.
 */
-   if (vap-iv_acl != NULL 
-   !vap-iv_acl-iac_check(vap, wh, wh-i_addr2)) {
+   if (vap-iv_acl != NULL  !vap-iv_acl-iac_check(vap, wh)) {
IEEE80211_DISCARD(vap, IEEE80211_MSG_ACL,
wh, NULL, %s, disallowed by ACL);
vap-iv_stats.is_rx_acl++;

Modified: head/sys/net80211/ieee80211_proto.h
==
--- head/sys/net80211/ieee80211_proto.h Sat Dec 17 10:23:17 2011
(r228621)
+++ head/sys/net80211/ieee80211_proto.h Sat Dec 17 10:32:31 2011
(r228622)
@@ -215,8 +215,7 @@ struct ieee80211_aclator {
int (*iac_attach)(struct ieee80211vap *);
void(*iac_detach)(struct ieee80211vap *);
int (*iac_check)(struct ieee80211vap *,
-   const struct ieee80211_frame *wh,
-   const uint8_t mac[IEEE80211_ADDR_LEN]);
+   const struct ieee80211_frame *wh);
int (*iac_add)(struct ieee80211vap *,
const uint8_t mac[IEEE80211_ADDR_LEN]);
int (*iac_remove)(struct ieee80211vap *,
___
svn-src-all@freebsd.org mailing list

Re: svn commit: r228514 - head/sys/net80211

2011-12-15 Thread Bernhard Schmidt
On Thu, Dec 15, 2011 at 01:52, Adrian Chadd adr...@freebsd.org wrote:
 Author: adrian
 Date: Thu Dec 15 00:52:30 2011
 New Revision: 228514
 URL: http://svn.freebsd.org/changeset/base/228514

 Log:
  Modify the ACL code slightly to support a few nifty things:

  * Call it before sending probe responses, so the ACL code has the
    chance to reject sending them.

  * Pass the whole frame to the ACL code now, rather than just the
    destination MAC - that way the ACL module can look at the frame
    contents to determine what the response should be.

  This is part of some uncommitted work to support band steering.

  Sponsored by: Hobnob, Inc.

 Modified:
  head/sys/net80211/ieee80211_acl.c
  head/sys/net80211/ieee80211_hostap.c
  head/sys/net80211/ieee80211_mesh.c
  head/sys/net80211/ieee80211_proto.h

 Modified: head/sys/net80211/ieee80211_acl.c
 ==
 --- head/sys/net80211/ieee80211_acl.c   Wed Dec 14 23:57:47 2011        
 (r228513)
 +++ head/sys/net80211/ieee80211_acl.c   Thu Dec 15 00:52:30 2011        
 (r228514)
 @@ -152,7 +152,8 @@ _acl_free(struct aclstate *as, struct ac
  }

  static int
 -acl_check(struct ieee80211vap *vap, const uint8_t mac[IEEE80211_ADDR_LEN])
 +acl_check(struct ieee80211vap *vap, const struct ieee80211_frame *wh,
 +    const uint8_t mac[IEEE80211_ADDR_LEN])
  {

Why didn't you remove the mac argument? It is assign from wh-i_addr2
anyways, seems rather too redundant to me.

-- 
Bernhard
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


Re: svn commit: r228514 - head/sys/net80211

2011-12-15 Thread Bernhard Schmidt
On Thu, Dec 15, 2011 at 10:35, Adrian Chadd adr...@freebsd.org wrote:
 On 15 December 2011 00:02, Bernhard Schmidt bschm...@freebsd.org wrote:

 Why didn't you remove the mac argument? It is assign from wh-i_addr2
 anyways, seems rather too redundant to me.

 Because the semantics for that right now are check that MAC, so it's
 the callers responsibility to determine which MAC in the header is the
 relevant one to check against.

 They're all addr2 though, and I haven't yet thought of a reason it
 could be addr1 or addr3 (or addr4, for that matter); I just decided to
 leave it this way so the semantics of the caller dictates which MAC
 in the frame is the relevant one to check against as-is.

And no one else has found a reason to do so in the last 7 years that
code exists :)

 If you think that's me being a bit overly anal about it, then sure,
 please go ahead and turf it. :)

 Personally, I'd like to add an enum field (and then remove the MAC) -
 the enum field would indicate to acl_check() _which_ ACL is being
 checked - ie, probe request, association request, and any other frame
 check request. That way it's precisely clear what the ACL check is
 for. But again, that's just me being overly picky. :)

Well, no. The ACL stuff was designed to have one module for each
usage and not one for everything. Following your example you would
have one for assoc frames/probe frames (whatever the desired behavior
is), .. and the already existing one for macs. Well, just this piece isn't
that optimal yet:

/* XXX just one for now */
static  const struct ieee80211_aclator *acl = NULL;

So, my point is, I'd like to keep the functionality of the wlan_acl(4) module
as it is, matching wh-i_addr2 with the list of given macs only. If you (or
someone) else have some different functionality in mind, add a new acl
module which replaces the current one using ieee80211_aclator_register()
and do whatever you want in there.

 So in short: if you're happy removing it, remove it. :)

I agree on passing the frame as an argument to iac_check() and obtain
the mac from there, that definitely is required for more advanced
ACLs. Passing both tough, is imho not required and redundant, so, yes
I think I'm going to remove it.

-- 
Bernhard
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r227967 - stable/9/sys/dev/iwn

2011-11-25 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Nov 25 12:19:13 2011
New Revision: 227967
URL: http://svn.freebsd.org/changeset/base/227967

Log:
  MFC r227805:
  The DC calibration result obtained during initialization can't be
  passed over to the runtime firmware on 6050 devices. Instead let
  the runtime firmware do the calibration itself. This fixes support
  for the 6050 series devices.
  
  Submitted by: kevlo
  Approved by:  re (kib)
  Obtained from:OpenBSD
  Tested by:lx, Tz-Huan Huang(earlier version)

Modified:
  stable/9/sys/dev/iwn/if_iwn.c
  stable/9/sys/dev/iwn/if_iwnreg.h
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/dev/iwn/if_iwn.c
==
--- stable/9/sys/dev/iwn/if_iwn.c   Fri Nov 25 10:30:29 2011
(r227966)
+++ stable/9/sys/dev/iwn/if_iwn.c   Fri Nov 25 12:19:13 2011
(r227967)
@@ -246,6 +246,7 @@ static int  iwn_send_sensitivity(struct i
 static int iwn_set_pslevel(struct iwn_softc *, int, int, int);
 static int iwn_send_btcoex(struct iwn_softc *);
 static int iwn_send_advanced_btcoex(struct iwn_softc *);
+static int iwn5000_runtime_calib(struct iwn_softc *);
 static int iwn_config(struct iwn_softc *);
 static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int);
 static int iwn_scan(struct iwn_softc *);
@@ -2505,7 +2506,8 @@ iwn5000_rx_calib_results(struct iwn_soft
case IWN5000_PHY_CALIB_DC:
if ((sc-sc_flags  IWN_FLAG_INTERNAL_PA) == 0 
(sc-hw_type == IWN_HW_REV_TYPE_5150 ||
-sc-hw_type = IWN_HW_REV_TYPE_6000))
+sc-hw_type = IWN_HW_REV_TYPE_6000) 
+sc-hw_type != IWN_HW_REV_TYPE_6050)
idx = 0;
break;
case IWN5000_PHY_CALIB_LO:
@@ -4996,6 +4998,19 @@ iwn_send_advanced_btcoex(struct iwn_soft
 }
 
 static int
+iwn5000_runtime_calib(struct iwn_softc *sc)
+{
+   struct iwn5000_calib_config cmd;
+
+   memset(cmd, 0, sizeof cmd);
+   cmd.ucode.once.enable = 0x;
+   cmd.ucode.once.start = IWN5000_CALIB_DC;
+   DPRINTF(sc, IWN_DEBUG_CALIBRATE,
+   %s: configuring runtime calibration\n, __func__);
+   return iwn_cmd(sc, IWN5000_CMD_CALIB_CONFIG, cmd, sizeof(cmd), 0);
+}
+
+static int
 iwn_config(struct iwn_softc *sc)
 {
struct iwn_ops *ops = sc-ops;
@@ -5015,6 +5030,17 @@ iwn_config(struct iwn_softc *sc)
}
}
 
+   if (sc-hw_type == IWN_HW_REV_TYPE_6050) {
+   /* Configure runtime DC calibration. */
+   error = iwn5000_runtime_calib(sc);
+   if (error != 0) {
+   device_printf(sc-sc_dev,
+   %s: could not configure runtime calibration\n,
+   __func__);
+   return error;
+   }
+   }
+
/* Configure valid TX chains for =5000 Series. */
if (sc-hw_type != IWN_HW_REV_TYPE_4965) {
txmask = htole32(sc-txchainmask);

Modified: stable/9/sys/dev/iwn/if_iwnreg.h
==
--- stable/9/sys/dev/iwn/if_iwnreg.hFri Nov 25 10:30:29 2011
(r227966)
+++ stable/9/sys/dev/iwn/if_iwnreg.hFri Nov 25 12:19:13 2011
(r227967)
@@ -739,6 +739,8 @@ struct iwn5000_wimax_coex {
 struct iwn5000_calib_elem {
uint32_tenable;
uint32_tstart;
+#defineIWN5000_CALIB_DC(1  1)
+
uint32_tsend;
uint32_tapply;
uint32_treserved;
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r227968 - releng/9.0/sys/dev/iwn

2011-11-25 Thread Bernhard Schmidt
Author: bschmidt
Date: Fri Nov 25 12:20:14 2011
New Revision: 227968
URL: http://svn.freebsd.org/changeset/base/227968

Log:
  MFC r227805:
  The DC calibration result obtained during initialization can't be
  passed over to the runtime firmware on 6050 devices. Instead let
  the runtime firmware do the calibration itself. This fixes support
  for the 6050 series devices.
  
  Submitted by: kevlo
  Approved by:  re (kib)
  Obtained from:OpenBSD
  Tested by:lx, Tz-Huan Huang(earlier version)

Modified:
  releng/9.0/sys/dev/iwn/if_iwn.c
  releng/9.0/sys/dev/iwn/if_iwnreg.h
Directory Properties:
  releng/9.0/sys/   (props changed)

Modified: releng/9.0/sys/dev/iwn/if_iwn.c
==
--- releng/9.0/sys/dev/iwn/if_iwn.c Fri Nov 25 12:19:13 2011
(r227967)
+++ releng/9.0/sys/dev/iwn/if_iwn.c Fri Nov 25 12:20:14 2011
(r227968)
@@ -246,6 +246,7 @@ static int  iwn_send_sensitivity(struct i
 static int iwn_set_pslevel(struct iwn_softc *, int, int, int);
 static int iwn_send_btcoex(struct iwn_softc *);
 static int iwn_send_advanced_btcoex(struct iwn_softc *);
+static int iwn5000_runtime_calib(struct iwn_softc *);
 static int iwn_config(struct iwn_softc *);
 static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int);
 static int iwn_scan(struct iwn_softc *);
@@ -2505,7 +2506,8 @@ iwn5000_rx_calib_results(struct iwn_soft
case IWN5000_PHY_CALIB_DC:
if ((sc-sc_flags  IWN_FLAG_INTERNAL_PA) == 0 
(sc-hw_type == IWN_HW_REV_TYPE_5150 ||
-sc-hw_type = IWN_HW_REV_TYPE_6000))
+sc-hw_type = IWN_HW_REV_TYPE_6000) 
+sc-hw_type != IWN_HW_REV_TYPE_6050)
idx = 0;
break;
case IWN5000_PHY_CALIB_LO:
@@ -4996,6 +4998,19 @@ iwn_send_advanced_btcoex(struct iwn_soft
 }
 
 static int
+iwn5000_runtime_calib(struct iwn_softc *sc)
+{
+   struct iwn5000_calib_config cmd;
+
+   memset(cmd, 0, sizeof cmd);
+   cmd.ucode.once.enable = 0x;
+   cmd.ucode.once.start = IWN5000_CALIB_DC;
+   DPRINTF(sc, IWN_DEBUG_CALIBRATE,
+   %s: configuring runtime calibration\n, __func__);
+   return iwn_cmd(sc, IWN5000_CMD_CALIB_CONFIG, cmd, sizeof(cmd), 0);
+}
+
+static int
 iwn_config(struct iwn_softc *sc)
 {
struct iwn_ops *ops = sc-ops;
@@ -5015,6 +5030,17 @@ iwn_config(struct iwn_softc *sc)
}
}
 
+   if (sc-hw_type == IWN_HW_REV_TYPE_6050) {
+   /* Configure runtime DC calibration. */
+   error = iwn5000_runtime_calib(sc);
+   if (error != 0) {
+   device_printf(sc-sc_dev,
+   %s: could not configure runtime calibration\n,
+   __func__);
+   return error;
+   }
+   }
+
/* Configure valid TX chains for =5000 Series. */
if (sc-hw_type != IWN_HW_REV_TYPE_4965) {
txmask = htole32(sc-txchainmask);

Modified: releng/9.0/sys/dev/iwn/if_iwnreg.h
==
--- releng/9.0/sys/dev/iwn/if_iwnreg.h  Fri Nov 25 12:19:13 2011
(r227967)
+++ releng/9.0/sys/dev/iwn/if_iwnreg.h  Fri Nov 25 12:20:14 2011
(r227968)
@@ -739,6 +739,8 @@ struct iwn5000_wimax_coex {
 struct iwn5000_calib_elem {
uint32_tenable;
uint32_tstart;
+#defineIWN5000_CALIB_DC(1  1)
+
uint32_tsend;
uint32_tapply;
uint32_treserved;
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r227805 - head/sys/dev/iwn

2011-11-21 Thread Bernhard Schmidt
Author: bschmidt
Date: Mon Nov 21 22:19:12 2011
New Revision: 227805
URL: http://svn.freebsd.org/changeset/base/227805

Log:
  The DC calibration result obtained during initialization can't be
  passed over to the runtime firmware on 6050 devices. Instead let
  the runtime firmware do the calibration itself. This fixes support
  for the 6050 series devices.
  
  Obtained from:OpenBSD
  Submitted by: kevlo
  Tested by:lx, Tz-Huan Huang(earlier version)

Modified:
  head/sys/dev/iwn/if_iwn.c
  head/sys/dev/iwn/if_iwnreg.h

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Mon Nov 21 21:59:01 2011(r227804)
+++ head/sys/dev/iwn/if_iwn.c   Mon Nov 21 22:19:12 2011(r227805)
@@ -246,6 +246,7 @@ static int  iwn_send_sensitivity(struct i
 static int iwn_set_pslevel(struct iwn_softc *, int, int, int);
 static int iwn_send_btcoex(struct iwn_softc *);
 static int iwn_send_advanced_btcoex(struct iwn_softc *);
+static int iwn5000_runtime_calib(struct iwn_softc *);
 static int iwn_config(struct iwn_softc *);
 static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int);
 static int iwn_scan(struct iwn_softc *);
@@ -2505,7 +2506,8 @@ iwn5000_rx_calib_results(struct iwn_soft
case IWN5000_PHY_CALIB_DC:
if ((sc-sc_flags  IWN_FLAG_INTERNAL_PA) == 0 
(sc-hw_type == IWN_HW_REV_TYPE_5150 ||
-sc-hw_type = IWN_HW_REV_TYPE_6000))
+sc-hw_type = IWN_HW_REV_TYPE_6000) 
+sc-hw_type != IWN_HW_REV_TYPE_6050)
idx = 0;
break;
case IWN5000_PHY_CALIB_LO:
@@ -4996,6 +4998,19 @@ iwn_send_advanced_btcoex(struct iwn_soft
 }
 
 static int
+iwn5000_runtime_calib(struct iwn_softc *sc)
+{
+   struct iwn5000_calib_config cmd;
+
+   memset(cmd, 0, sizeof cmd);
+   cmd.ucode.once.enable = 0x;
+   cmd.ucode.once.start = IWN5000_CALIB_DC;
+   DPRINTF(sc, IWN_DEBUG_CALIBRATE,
+   %s: configuring runtime calibration\n, __func__);
+   return iwn_cmd(sc, IWN5000_CMD_CALIB_CONFIG, cmd, sizeof(cmd), 0);
+}
+
+static int
 iwn_config(struct iwn_softc *sc)
 {
struct iwn_ops *ops = sc-ops;
@@ -5015,6 +5030,17 @@ iwn_config(struct iwn_softc *sc)
}
}
 
+   if (sc-hw_type == IWN_HW_REV_TYPE_6050) {
+   /* Configure runtime DC calibration. */
+   error = iwn5000_runtime_calib(sc);
+   if (error != 0) {
+   device_printf(sc-sc_dev,
+   %s: could not configure runtime calibration\n,
+   __func__);
+   return error;
+   }
+   }
+
/* Configure valid TX chains for =5000 Series. */
if (sc-hw_type != IWN_HW_REV_TYPE_4965) {
txmask = htole32(sc-txchainmask);

Modified: head/sys/dev/iwn/if_iwnreg.h
==
--- head/sys/dev/iwn/if_iwnreg.hMon Nov 21 21:59:01 2011
(r227804)
+++ head/sys/dev/iwn/if_iwnreg.hMon Nov 21 22:19:12 2011
(r227805)
@@ -739,6 +739,8 @@ struct iwn5000_wimax_coex {
 struct iwn5000_calib_elem {
uint32_tenable;
uint32_tstart;
+#defineIWN5000_CALIB_DC(1  1)
+
uint32_tsend;
uint32_tapply;
uint32_treserved;
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r227570 - stable/9/sys/dev/iwn

2011-11-16 Thread Bernhard Schmidt
Author: bschmidt
Date: Wed Nov 16 17:39:59 2011
New Revision: 227570
URL: http://svn.freebsd.org/changeset/base/227570

Log:
  MFC r226679:
  Let net80211 also know about stopped BA sessions. This fixes some issues
  where the driver assumed that BA resources are still available due to
  net80211 saying so.
  
  PR:   161407, 159768
  Tested by:cperciva, rene
  Approved by:  re (kib)

Modified:
  stable/9/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/dev/iwn/if_iwn.c
==
--- stable/9/sys/dev/iwn/if_iwn.c   Wed Nov 16 17:11:13 2011
(r227569)
+++ stable/9/sys/dev/iwn/if_iwn.c   Wed Nov 16 17:39:59 2011
(r227570)
@@ -5641,6 +5641,7 @@ iwn_ampdu_tx_stop(struct ieee80211_node 
sc-qid2tap[qid] = NULL;
free(tap-txa_private, M_DEVBUF);
tap-txa_private = NULL;
+   sc-sc_addba_stop(ni, tap);
 }
 
 static void
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r227571 - releng/9.0/sys/dev/iwn

2011-11-16 Thread Bernhard Schmidt
Author: bschmidt
Date: Wed Nov 16 17:41:31 2011
New Revision: 227571
URL: http://svn.freebsd.org/changeset/base/227571

Log:
  MFC r226679:
  Let net80211 also know about stopped BA sessions. This fixes some issues
  where the driver assumed that BA resources are still available due to
  net80211 saying so.
  
  PR:   161407, 159768
  Tested by:cperciva, rene
  Approved by:  re (kib)

Modified:
  releng/9.0/sys/dev/iwn/if_iwn.c
Directory Properties:
  releng/9.0/sys/   (props changed)

Modified: releng/9.0/sys/dev/iwn/if_iwn.c
==
--- releng/9.0/sys/dev/iwn/if_iwn.c Wed Nov 16 17:39:59 2011
(r227570)
+++ releng/9.0/sys/dev/iwn/if_iwn.c Wed Nov 16 17:41:31 2011
(r227571)
@@ -5641,6 +5641,7 @@ iwn_ampdu_tx_stop(struct ieee80211_node 
sc-qid2tap[qid] = NULL;
free(tap-txa_private, M_DEVBUF);
tap-txa_private = NULL;
+   sc-sc_addba_stop(ni, tap);
 }
 
 static void
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r226679 - head/sys/dev/iwn

2011-10-24 Thread Bernhard Schmidt
Author: bschmidt
Date: Mon Oct 24 07:37:01 2011
New Revision: 226679
URL: http://svn.freebsd.org/changeset/base/226679

Log:
  Let net80211 also know about stopped BA sessions. This fixes some issues
  where the driver assumed that BA resources are still available due to
  net80211 saying so.
  
  PR:   161407, 159768
  Tested by:cperciva, rene
  MFC after:3 days

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Mon Oct 24 05:26:40 2011(r226678)
+++ head/sys/dev/iwn/if_iwn.c   Mon Oct 24 07:37:01 2011(r226679)
@@ -5641,6 +5641,7 @@ iwn_ampdu_tx_stop(struct ieee80211_node 
sc-qid2tap[qid] = NULL;
free(tap-txa_private, M_DEVBUF);
tap-txa_private = NULL;
+   sc-sc_addba_stop(ni, tap);
 }
 
 static void
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r226626 - stable/9/sys/dev/iwn

2011-10-22 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Oct 22 09:29:44 2011
New Revision: 226626
URL: http://svn.freebsd.org/changeset/base/226626

Log:
  Fix bmiss notifications, events should be sent when NOT scanning.
  
  Approved by:  re (kib)

Modified:
  stable/9/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/dev/iwn/if_iwn.c
==
--- stable/9/sys/dev/iwn/if_iwn.c   Sat Oct 22 04:39:12 2011
(r226625)
+++ stable/9/sys/dev/iwn/if_iwn.c   Sat Oct 22 09:29:44 2011
(r226626)
@@ -2929,7 +2929,7 @@ iwn_notif_intr(struct iwn_softc *sc)
 * reinitialize the sensitivity state machine.
 */
if (vap-iv_state == IEEE80211_S_RUN 
-   (ic-ic_flags  IEEE80211_F_SCAN) != 0) {
+   (ic-ic_flags  IEEE80211_F_SCAN) == 0) {
if (misses  5)
(void)iwn_init_sensitivity(sc);
if (misses = vap-iv_bmissthreshold) {
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r226628 - stable/8/sys/dev/iwn

2011-10-22 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Oct 22 09:43:35 2011
New Revision: 226628
URL: http://svn.freebsd.org/changeset/base/226628

Log:
  Fix bmiss notifications, events should be sent when NOT scanning.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Oct 22 09:38:03 2011
(r226627)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Oct 22 09:43:35 2011
(r226628)
@@ -2709,7 +2709,7 @@ iwn_notif_intr(struct iwn_softc *sc)
 * reinitialize the sensitivity state machine.
 */
if (vap-iv_state == IEEE80211_S_RUN 
-   (ic-ic_flags  IEEE80211_F_SCAN) != 0) {
+   (ic-ic_flags  IEEE80211_F_SCAN) == 0) {
if (misses  5)
(void)iwn_init_sensitivity(sc);
if (misses = vap-iv_bmissthreshold) {
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r226346 - head/sys/dev/iwn

2011-10-13 Thread Bernhard Schmidt
Author: bschmidt
Date: Thu Oct 13 18:17:03 2011
New Revision: 226346
URL: http://svn.freebsd.org/changeset/base/226346

Log:
  Fix bmiss notifications, events should be sent when NOT scanning.
  
  MFC after:3 days

Modified:
  head/sys/dev/iwn/if_iwn.c

Modified: head/sys/dev/iwn/if_iwn.c
==
--- head/sys/dev/iwn/if_iwn.c   Thu Oct 13 17:20:45 2011(r226345)
+++ head/sys/dev/iwn/if_iwn.c   Thu Oct 13 18:17:03 2011(r226346)
@@ -2929,7 +2929,7 @@ iwn_notif_intr(struct iwn_softc *sc)
 * reinitialize the sensitivity state machine.
 */
if (vap-iv_state == IEEE80211_S_RUN 
-   (ic-ic_flags  IEEE80211_F_SCAN) != 0) {
+   (ic-ic_flags  IEEE80211_F_SCAN) == 0) {
if (misses  5)
(void)iwn_init_sensitivity(sc);
if (misses = vap-iv_bmissthreshold) {
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r224717 - head/sys/net80211

2011-08-08 Thread Bernhard Schmidt
Author: bschmidt
Date: Mon Aug  8 16:29:07 2011
New Revision: 224717
URL: http://svn.freebsd.org/changeset/base/224717

Log:
  When setting a fixed channel on adapters with 11n support the scan
  channel list ends up with 2 entries, the HT and the legacy channel.
  The scan itself is currently always done at legacy rates so we end
  up receiving scan results for legacy networks on the HT channel and
  erroneously assigning the BSS to the 11n channel. As the channel's
  capabilities are used to setup the adapter we might end up with
  non-working settings and/or firmware crashes.
  
  Fix this by ensuring that scan results received on a HT channel
  are only assigned to that channel if the htcap IE is available,
  else use the legacy channel equivalent.
  
  Tested by:Pawel Worach, Raoul Megelas, Maciej Milewski,
Andrei az at azsupport dot com
  Approved by:  re (kib)

Modified:
  head/sys/net80211/ieee80211_scan_sta.c

Modified: head/sys/net80211/ieee80211_scan_sta.c
==
--- head/sys/net80211/ieee80211_scan_sta.c  Mon Aug  8 16:22:42 2011
(r224716)
+++ head/sys/net80211/ieee80211_scan_sta.c  Mon Aug  8 16:29:07 2011
(r224717)
@@ -238,6 +238,7 @@ sta_add(struct ieee80211_scan_state *ss,
const uint8_t *macaddr = wh-i_addr2;
struct ieee80211vap *vap = ss-ss_vap;
struct ieee80211com *ic = vap-iv_ic;
+   struct ieee80211_channel *c;
struct sta_entry *se;
struct ieee80211_scan_entry *ise;
int hash;
@@ -300,7 +301,6 @@ found:
 * association on the wrong channel.
 */
if (sp-status  IEEE80211_BPARSE_OFFCHAN) {
-   struct ieee80211_channel *c;
/*
 * Off-channel, locate the home/bss channel for the sta
 * using the value broadcast in the DSPARMS ie.  We know
@@ -317,6 +317,14 @@ found:
}
} else
ise-se_chan = ic-ic_curchan;
+   if (IEEE80211_IS_CHAN_HT(ise-se_chan)  sp-htcap == NULL) {
+   /* Demote legacy networks to a non-HT channel. */
+   c = ieee80211_find_channel(ic, ise-se_chan-ic_freq,
+   ise-se_chan-ic_flags  ~IEEE80211_CHAN_HT);
+   KASSERT(c != NULL,
+   (no legacy channel %u, ise-se_chan-ic_ieee));
+   ise-se_chan = c;
+   }
ise-se_fhdwell = sp-fhdwell;
ise-se_fhindex = sp-fhindex;
ise-se_erp = sp-erp;
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


Re: svn commit: r223255 - in stable/8/sys: conf contrib/dev/iwn modules/iwnfw/iwn1000 modules/iwnfw/iwn5000 modules/iwnfw/iwn6050

2011-06-19 Thread Bernhard Schmidt
On Saturday 18 June 2011 14:27:49 Bernhard Schmidt wrote:
 Author: bschmidt
 Date: Sat Jun 18 12:27:49 2011
 New Revision: 223255
 URL: http://svn.freebsd.org/changeset/base/223255
 
 Log:
   MFC r220892:
   Update iwn(4) firmware blobs:
   - bump iwn1000fw to 39.31.5.1
   - bump iwn5000fw to 8.83.5.1
   - bump iwn6050fw to 41.28.5.1

Just a heads up, this seems to have broken the firmware modules if
-DNOCLEAN is used. Basically, the resulting .ko is linked with old
and new objects files with different version numbers (same on HEAD).

I'd appreciate if someone with more clue about Makefiles is willing
to help me on resolving this. I have a rough idea about how to do it,
but that's about it.

-- 
Bernhard
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223229 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:17:13 2011
New Revision: 223229
URL: http://svn.freebsd.org/changeset/base/223229

Log:
  MFC r220633:
  Remove IWN_FLAG_HAS_5GHZ and IWN_PCI_BAR0, both unused.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnreg.h
  stable/8/sys/dev/iwn/if_iwnvar.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:07:09 2011
(r223228)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:17:13 2011
(r223229)
@@ -1792,7 +1792,6 @@ iwn_read_eeprom_band(struct iwn_softc *s
c-ic_freq = ieee80211_ieee2mhz(chan,
IEEE80211_CHAN_A);
c-ic_flags = IEEE80211_CHAN_A | nflags;
-   sc-sc_flags |= IWN_FLAG_HAS_5GHZ;
}
 #if 0  /* HT */
/* XXX no constraints on using HT20 */

Modified: stable/8/sys/dev/iwn/if_iwnreg.h
==
--- stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 11:07:09 2011
(r223228)
+++ stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 11:17:13 2011
(r223229)
@@ -50,9 +50,6 @@
 #define IWN_HIADDR(paddr)  (0)
 #endif
 
-/* Base Address Register. */
-#define IWN_PCI_BAR0   PCI_MAPREG_START
-
 /*
  * Control and status registers.
  */

Modified: stable/8/sys/dev/iwn/if_iwnvar.h
==
--- stable/8/sys/dev/iwn/if_iwnvar.hSat Jun 18 11:07:09 2011
(r223228)
+++ stable/8/sys/dev/iwn/if_iwnvar.hSat Jun 18 11:17:13 2011
(r223229)
@@ -215,7 +215,6 @@ struct iwn_softc {
struct resource *irq;
 
u_int   sc_flags;
-#define IWN_FLAG_HAS_5GHZ  (1  0)
 #define IWN_FLAG_HAS_OTPROM(1  1)
 #define IWN_FLAG_CALIB_DONE(1  2)
 #define IWN_FLAG_USE_ICT   (1  3)
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223230 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:19:12 2011
New Revision: 223230
URL: http://svn.freebsd.org/changeset/base/223230

Log:
  MFC r220634:
  Reuse net80211 code:
  - IWN_TXOP_TO_US is equal to IEEE80211_TXOP_TO_US
  - use IEEE80211_DUR_TU
  - ieee80211_add_rates/ieee80211_add_xrates are public, use em
  - copied ieee80211_add_ssid it is not public

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:17:13 2011
(r223229)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:19:12 2011
(r223230)
@@ -198,6 +198,7 @@ static void iwn_tune_sensitivity(struct 
 static int iwn_send_sensitivity(struct iwn_softc *);
 static int iwn_set_pslevel(struct iwn_softc *, int, int, int);
 static int iwn_config(struct iwn_softc *);
+static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int);
 static int iwn_scan(struct iwn_softc *);
 static int iwn_auth(struct iwn_softc *, struct ieee80211vap *vap);
 static int iwn_run(struct iwn_softc *, struct ieee80211vap *vap);
@@ -3636,7 +3637,6 @@ static int
 iwn_wme_update(struct ieee80211com *ic)
 {
 #define IWN_EXP2(x)((1  (x)) - 1)/* CWmin = 2^ECWmin - 1 */
-#defineIWN_TXOP_TO_US(v)   (v5)
struct iwn_softc *sc = ic-ic_ifp-if_softc;
struct iwn_edca_params cmd;
int i;
@@ -3650,7 +3650,7 @@ iwn_wme_update(struct ieee80211com *ic)
cmd.ac[i].cwmin = htole16(IWN_EXP2(wmep-wmep_logcwmin));
cmd.ac[i].cwmax = htole16(IWN_EXP2(wmep-wmep_logcwmax));
cmd.ac[i].txoplimit =
-   htole16(IWN_TXOP_TO_US(wmep-wmep_txopLimit));
+   htole16(IEEE80211_TXOP_TO_US(wmep-wmep_txopLimit));
}
IEEE80211_UNLOCK(ic);
IWN_LOCK(sc);
@@ -3658,7 +3658,6 @@ iwn_wme_update(struct ieee80211com *ic)
IWN_UNLOCK(sc);
IEEE80211_LOCK(ic);
return 0;
-#undef IWN_TXOP_TO_US
 #undef IWN_EXP2
 }
 
@@ -3720,7 +3719,7 @@ iwn_set_timing(struct iwn_softc *sc, str
cmd.lintval = htole16(10);
 
/* Compute remaining time until next beacon. */
-   val = (uint64_t)ni-ni_intval * 1024;   /* msecs - usecs */
+   val = (uint64_t)ni-ni_intval * IEEE80211_DUR_TU;
mod = le64toh(cmd.tstamp) % val;
cmd.binitval = htole32((uint32_t)(val - mod));
 
@@ -4270,7 +4269,7 @@ iwn_tune_sensitivity(struct iwn_softc *s
/* Compute number of false alarms since last call for OFDM. */
fa  = le32toh(stats-ofdm.bad_plcp) - calib-bad_plcp_ofdm;
fa += le32toh(stats-ofdm.fa) - calib-fa_ofdm;
-   fa *= 200 * 1024;   /* 200TU */
+   fa *= 200 * IEEE80211_DUR_TU;   /* 200TU */
 
/* Save counters values for next call. */
calib-bad_plcp_ofdm = le32toh(stats-ofdm.bad_plcp);
@@ -4327,7 +4326,7 @@ iwn_tune_sensitivity(struct iwn_softc *s
/* Compute number of false alarms since last call for CCK. */
fa  = le32toh(stats-cck.bad_plcp) - calib-bad_plcp_cck;
fa += le32toh(stats-cck.fa) - calib-fa_cck;
-   fa *= 200 * 1024;   /* 200TU */
+   fa *= 200 * IEEE80211_DUR_TU;   /* 200TU */
 
/* Save counters values for next call. */
calib-bad_plcp_cck = le32toh(stats-cck.bad_plcp);
@@ -4586,6 +4585,18 @@ iwn_config(struct iwn_softc *sc)
return 0;
 }
 
+/*
+ * Add an ssid element to a frame.
+ */
+static uint8_t *
+ieee80211_add_ssid(uint8_t *frm, const uint8_t *ssid, u_int len)
+{
+   *frm++ = IEEE80211_ELEMID_SSID;
+   *frm++ = len;
+   memcpy(frm, ssid, len);
+   return frm + len;
+}
+
 static int
 iwn_scan(struct iwn_softc *sc)
 {
@@ -4599,7 +4610,7 @@ iwn_scan(struct iwn_softc *sc)
struct ieee80211_frame *wh;
struct ieee80211_rateset *rs;
struct ieee80211_channel *c;
-   int buflen, error, nrates;
+   int buflen, error;
uint16_t rxchain;
uint8_t *buf, *frm, txant;
 
@@ -4675,30 +4686,14 @@ iwn_scan(struct iwn_softc *sc)
*(uint16_t *)wh-i_seq[0] = 0; /* filled by HW */
 
frm = (uint8_t *)(wh + 1);
-
-   /* Add SSID IE. */
-   *frm++ = IEEE80211_ELEMID_SSID;
-   *frm++ = ss-ss_ssid[0].len;
-   memcpy(frm, ss-ss_ssid[0].ssid, ss-ss_ssid[0].len);
-   frm += ss-ss_ssid[0].len;
-
-   /* Add supported rates IE. */
-   *frm++ = IEEE80211_ELEMID_RATES;
-   nrates = rs-rs_nrates;
-   if (nrates  IEEE80211_RATE_SIZE)
-   nrates = IEEE80211_RATE_SIZE;
-   *frm++ = nrates;
-   memcpy(frm, rs-rs_rates, nrates);
-   frm += nrates;
-
-   /* Add 

svn commit: r223231 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:21:56 2011
New Revision: 223231
URL: http://svn.freebsd.org/changeset/base/223231

Log:
  MFC r220635:
  iwn_cleanup() is just a wrapper around iwn_detach(), call it directly
  instead.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:19:12 2011
(r223230)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:21:56 2011
(r223231)
@@ -81,7 +81,6 @@ static struct ieee80211vap *iwn_vap_crea
int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
const uint8_t mac[IEEE80211_ADDR_LEN]);
 static voidiwn_vap_delete(struct ieee80211vap *);
-static int iwn_cleanup(device_t);
 static int iwn_detach(device_t);
 static int iwn_nic_lock(struct iwn_softc *);
 static int iwn_eeprom_lock(struct iwn_softc *);
@@ -684,7 +683,7 @@ iwn_attach(device_t dev)
ieee80211_announce(ic);
return 0;
 fail:
-   iwn_cleanup(dev);
+   iwn_detach(dev);
return error;
 }
 
@@ -845,7 +844,7 @@ iwn_vap_delete(struct ieee80211vap *vap)
 }
 
 static int
-iwn_cleanup(device_t dev)
+iwn_detach(device_t dev)
 {
struct iwn_softc *sc = device_get_softc(dev);
struct ifnet *ifp = sc-sc_ifp;
@@ -895,13 +894,6 @@ iwn_cleanup(device_t dev)
 }
 
 static int
-iwn_detach(device_t dev)
-{
-   iwn_cleanup(dev);
-   return 0;
-}
-
-static int
 iwn_nic_lock(struct iwn_softc *sc)
 {
int ntries;
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223232 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:23:42 2011
New Revision: 223232
URL: http://svn.freebsd.org/changeset/base/223232

Log:
  MFC r220636:
  Instead of trying to figure out which rxon.flags to clear, restart
  from scratch. Remove htole16() calls, rxon.chan is an uint8_t,
  ieee80211_chan2ieee() does return an ic_ieee as an int, but I heavily
  doubt a htole16() will buy us anything here.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:21:56 2011
(r223231)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:23:42 2011
(r223232)
@@ -4757,7 +4757,7 @@ iwn_auth(struct iwn_softc *sc, struct ie
 
/* Update adapter configuration. */
IEEE80211_ADDR_COPY(sc-rxon.bssid, ni-ni_bssid);
-   sc-rxon.chan = htole16(ieee80211_chan2ieee(ic, ni-ni_chan));
+   sc-rxon.chan = ieee80211_chan2ieee(ic, ni-ni_chan);
sc-rxon.flags = htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF);
if (IEEE80211_IS_CHAN_2GHZ(ni-ni_chan))
sc-rxon.flags |= htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ);
@@ -4843,15 +4843,11 @@ iwn_run(struct iwn_softc *sc, struct iee
 
/* Update adapter configuration. */
IEEE80211_ADDR_COPY(sc-rxon.bssid, ni-ni_bssid);
-   sc-rxon.chan = htole16(ieee80211_chan2ieee(ic, ni-ni_chan));
sc-rxon.associd = htole16(IEEE80211_AID(ni-ni_associd));
-   /* Short preamble and slot time are negotiated when associating. */
-   sc-rxon.flags = ~htole32(IWN_RXON_SHPREAMBLE | IWN_RXON_SHSLOT);
-   sc-rxon.flags |= htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF);
+   sc-rxon.chan = ieee80211_chan2ieee(ic, ni-ni_chan);
+   sc-rxon.flags = htole32(IWN_RXON_TSF | IWN_RXON_CTS_TO_SELF);
if (IEEE80211_IS_CHAN_2GHZ(ni-ni_chan))
sc-rxon.flags |= htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ);
-   else
-   sc-rxon.flags = ~htole32(IWN_RXON_AUTO | IWN_RXON_24GHZ);
if (ic-ic_flags  IEEE80211_F_SHSLOT)
sc-rxon.flags |= htole32(IWN_RXON_SHSLOT);
if (ic-ic_flags  IEEE80211_F_SHPREAMBLE)
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223233 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:25:33 2011
New Revision: 223233
URL: http://svn.freebsd.org/changeset/base/223233

Log:
  MFC r220659:
  Don't timeout when stopping DMA channels.
  
  Obtained from:OpenBSD

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnreg.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:23:42 2011
(r223232)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:25:33 2011
(r223233)
@@ -4003,7 +4003,7 @@ iwn4965_get_temperature(struct iwn_softc
return 0;
 
/* Sign-extend 23-bit R4 value to 32-bit. */
-   r4 = (r4  8)  8;
+   r4 = ((r4  0xff) ^ 0x80) - 0x80;
/* Compute temperature in Kelvin. */
temp = (259 * (r4 - r2)) / (r3 - r1);
temp = (temp * 97) / 100 + 8;
@@ -6283,7 +6283,6 @@ static void
 iwn_hw_stop(struct iwn_softc *sc)
 {
const struct iwn_hal *hal = sc-sc_hal;
-   uint32_t tmp;
int chnl, qid, ntries;
 
IWN_WRITE(sc, IWN_RESET, IWN_RESET_NEVO);
@@ -6305,8 +6304,7 @@ iwn_hw_stop(struct iwn_softc *sc)
for (chnl = 0; chnl  hal-ndmachnls; chnl++) {
IWN_WRITE(sc, IWN_FH_TX_CONFIG(chnl), 0);
for (ntries = 0; ntries  200; ntries++) {
-   tmp = IWN_READ(sc, IWN_FH_TX_STATUS);
-   if ((tmp  IWN_FH_TX_STATUS_IDLE(chnl)) ==
+   if (IWN_READ(sc, IWN_FH_TX_STATUS) 
IWN_FH_TX_STATUS_IDLE(chnl))
break;
DELAY(10);

Modified: stable/8/sys/dev/iwn/if_iwnreg.h
==
--- stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 11:23:42 2011
(r223232)
+++ stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 11:25:33 2011
(r223233)
@@ -283,8 +283,7 @@
 #define IWN_FH_TX_CHICKEN_SCHED_RETRY  (1  1)
 
 /* Possible flags for register IWN_FH_TX_STATUS. */
-#define IWN_FH_TX_STATUS_IDLE(chnl)\
-   (1  ((chnl) + 24) | 1  ((chnl) + 16))
+#define IWN_FH_TX_STATUS_IDLE(chnl)(1  ((chnl) + 16))
 
 /* Possible flags for register IWN_FH_RX_CONFIG. */
 #define IWN_FH_RX_CONFIG_ENA   (1  31)
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223234 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:27:28 2011
New Revision: 223234
URL: http://svn.freebsd.org/changeset/base/223234

Log:
  MFC r220660:
  Only handle beacon misses while in RUN state and not scanning.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:25:33 2011
(r223233)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:27:28 2011
(r223234)
@@ -2463,23 +2463,22 @@ iwn_notif_intr(struct iwn_softc *sc)
BUS_DMASYNC_POSTREAD);
misses = le32toh(miss-consecutive);
 
-   /* XXX not sure why we're notified w/ zero */
-   if (misses == 0)
-   break;
DPRINTF(sc, IWN_DEBUG_STATE,
%s: beacons missed %d/%d\n, __func__,
misses, le32toh(miss-total));
-
/*
 * If more than 5 consecutive beacons are missed,
 * reinitialize the sensitivity state machine.
 */
-   if (vap-iv_state == IEEE80211_S_RUN  misses  5)
-   (void) iwn_init_sensitivity(sc);
-   if (misses = vap-iv_bmissthreshold) {
-   IWN_UNLOCK(sc);
-   ieee80211_beacon_miss(ic);
-   IWN_LOCK(sc);
+   if (vap-iv_state == IEEE80211_S_RUN 
+   (ic-ic_flags  IEEE80211_F_SCAN) != 0) {
+   if (misses  5)
+   (void)iwn_init_sensitivity(sc);
+   if (misses = vap-iv_bmissthreshold) {
+   IWN_UNLOCK(sc);
+   ieee80211_beacon_miss(ic);
+   IWN_LOCK(sc);
+   }
}
break;
}
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223236 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:29:44 2011
New Revision: 223236
URL: http://svn.freebsd.org/changeset/base/223236

Log:
  MFC r220661:
  Fixes for firmware handling:
  - there is a local variable for sc-fw_dma, use that instead
  - OpenBSD uses 5*hz to wait for firmware to be loaded
  - in case the firmware module contains invalid data, actually release it

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:27:44 2011
(r223235)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:29:44 2011
(r223236)
@@ -5629,10 +5629,10 @@ iwn4965_load_firmware(struct iwn_softc *
 
/* Copy initialization sections into pre-allocated DMA-safe memory. */
memcpy(dma-vaddr, fw-init.data, fw-init.datasz);
-   bus_dmamap_sync(sc-fw_dma.tag, dma-map, BUS_DMASYNC_PREWRITE);
+   bus_dmamap_sync(dma-tag, dma-map, BUS_DMASYNC_PREWRITE);
memcpy(dma-vaddr + IWN4965_FW_DATA_MAXSZ,
fw-init.text, fw-init.textsz);
-   bus_dmamap_sync(sc-fw_dma.tag, dma-map, BUS_DMASYNC_PREWRITE);
+   bus_dmamap_sync(dma-tag, dma-map, BUS_DMASYNC_PREWRITE);
 
/* Tell adapter where to find initialization sections. */
error = iwn_nic_lock(sc);
@@ -5670,10 +5670,10 @@ iwn4965_load_firmware(struct iwn_softc *
 
/* Copy runtime sections into pre-allocated DMA-safe memory. */
memcpy(dma-vaddr, fw-main.data, fw-main.datasz);
-   bus_dmamap_sync(sc-fw_dma.tag, dma-map, BUS_DMASYNC_PREWRITE);
+   bus_dmamap_sync(dma-tag, dma-map, BUS_DMASYNC_PREWRITE);
memcpy(dma-vaddr + IWN4965_FW_DATA_MAXSZ,
fw-main.text, fw-main.textsz);
-   bus_dmamap_sync(sc-fw_dma.tag, dma-map, BUS_DMASYNC_PREWRITE);
+   bus_dmamap_sync(dma-tag, dma-map, BUS_DMASYNC_PREWRITE);
 
/* Tell adapter where to find runtime sections. */
error = iwn_nic_lock(sc);
@@ -5700,7 +5700,7 @@ iwn5000_load_firmware_section(struct iwn
 
/* Copy firmware section into pre-allocated DMA-safe memory. */
memcpy(dma-vaddr, section, size);
-   bus_dmamap_sync(sc-fw_dma.tag, dma-map, BUS_DMASYNC_PREWRITE);
+   bus_dmamap_sync(dma-tag, dma-map, BUS_DMASYNC_PREWRITE);
 
error = iwn_nic_lock(sc);
if (error != 0)
@@ -5726,7 +5726,7 @@ iwn5000_load_firmware_section(struct iwn
iwn_nic_unlock(sc);
 
/* Wait at most five seconds for FH DMA transfer to complete. */
-   return msleep(sc, sc-sc_mtx, PCATCH, iwninit, hz);
+   return msleep(sc, sc-sc_mtx, PCATCH, iwninit, 5 * hz);
 }
 
 static int
@@ -5771,7 +5771,7 @@ iwn_read_firmware_leg(struct iwn_softc *
size_t hdrlen = 24;
uint32_t rev;
 
-   ptr = (const uint32_t *)sc-fw_fp-data;
+   ptr = (const uint32_t *)fw-data;
rev = le32toh(*ptr++);
 
/* Check firmware API version. */
@@ -5819,7 +5819,7 @@ iwn_read_firmware_leg(struct iwn_softc *
 /*
  * Extract text and data sections from a TLV firmware image.
  */
-int
+static int
 iwn_read_firmware_tlv(struct iwn_softc *sc, struct iwn_fw_info *fw,
 uint16_t alt)
 {
@@ -5931,6 +5931,8 @@ iwn_read_firmware(struct iwn_softc *sc)
device_printf(sc-sc_dev,
%s: firmware file too short: %zu bytes\n,
__func__, fw-size);
+   firmware_put(sc-fw_fp, FIRMWARE_UNLOAD);
+   sc-fw_fp = NULL;
return EINVAL;
}
 
@@ -5942,6 +5944,8 @@ iwn_read_firmware(struct iwn_softc *sc)
if (error != 0) {
device_printf(sc-sc_dev,
%s: could not read firmware sections\n, __func__);
+   firmware_put(sc-fw_fp, FIRMWARE_UNLOAD);
+   sc-fw_fp = NULL;
return error;
}
 
@@ -5954,6 +5958,8 @@ iwn_read_firmware(struct iwn_softc *sc)
(fw-boot.textsz  3) != 0) {
device_printf(sc-sc_dev,
%s: firmware sections too large\n, __func__);
+   firmware_put(sc-fw_fp, FIRMWARE_UNLOAD);
+   sc-fw_fp = NULL;
return EINVAL;
}
 
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223237 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:31:19 2011
New Revision: 223237
URL: http://svn.freebsd.org/changeset/base/223237

Log:
  MFC r220662:
  Split out bluetooth coexistence setup.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:29:44 2011
(r223236)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:31:19 2011
(r223237)
@@ -196,6 +196,7 @@ static void iwn_tune_sensitivity(struct 
const struct iwn_rx_stats *);
 static int iwn_send_sensitivity(struct iwn_softc *);
 static int iwn_set_pslevel(struct iwn_softc *, int, int, int);
+static int iwn_send_btcoex(struct iwn_softc *);
 static int iwn_config(struct iwn_softc *);
 static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int);
 static int iwn_scan(struct iwn_softc *);
@@ -4464,12 +4465,25 @@ iwn_set_pslevel(struct iwn_softc *sc, in
 }
 
 static int
+iwn_send_btcoex(struct iwn_softc *sc)
+{
+   struct iwn_bluetooth cmd;
+
+   memset(cmd, 0, sizeof cmd);
+   cmd.flags = IWN_BT_COEX_CHAN_ANN | IWN_BT_COEX_BT_PRIO;
+   cmd.lead_time = IWN_BT_LEAD_TIME_DEF;
+   cmd.max_kill = IWN_BT_MAX_KILL_DEF;
+   DPRINTF(sc, IWN_DEBUG_RESET, %s: configuring bluetooth coexistence\n,
+   __func__);
+   return iwn_cmd(sc, IWN_CMD_BT_COEX, cmd, sizeof(cmd), 0);
+}
+
+static int
 iwn_config(struct iwn_softc *sc)
 {
const struct iwn_hal *hal = sc-sc_hal;
struct ifnet *ifp = sc-sc_ifp;
struct ieee80211com *ic = ifp-if_l2com;
-   struct iwn_bluetooth bluetooth;
uint32_t txmask;
int error;
uint16_t rxchain;
@@ -4490,13 +4504,7 @@ iwn_config(struct iwn_softc *sc)
}
 
/* Configure bluetooth coexistence. */
-   memset(bluetooth, 0, sizeof bluetooth);
-   bluetooth.flags = IWN_BT_COEX_CHAN_ANN | IWN_BT_COEX_BT_PRIO;
-   bluetooth.lead_time = IWN_BT_LEAD_TIME_DEF;
-   bluetooth.max_kill = IWN_BT_MAX_KILL_DEF;
-   DPRINTF(sc, IWN_DEBUG_RESET, %s: config bluetooth coexistence\n,
-   __func__);
-   error = iwn_cmd(sc, IWN_CMD_BT_COEX, bluetooth, sizeof bluetooth, 0);
+   error = iwn_send_btcoex(sc);
if (error != 0) {
device_printf(sc-sc_dev,
%s: could not configure bluetooth coexistence, error %d\n,
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223238 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:33:55 2011
New Revision: 223238
URL: http://svn.freebsd.org/changeset/base/223238

Log:
  MFC r220667+220668:
  Split up watchdog and calibration callout. This allows us to use different
  timing on both and to remove some monitor mode specific hacks (which has
  no calibration).

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnvar.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:31:19 2011
(r223237)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:33:55 2011
(r223238)
@@ -123,10 +123,9 @@ static struct ieee80211_node *iwn_node_a
const uint8_t mac[IEEE80211_ADDR_LEN]);
 static int iwn_media_change(struct ifnet *);
 static int iwn_newstate(struct ieee80211vap *, enum ieee80211_state, int);
+static voidiwn_calib_timeout(void *);
 static voidiwn_rx_phy(struct iwn_softc *, struct iwn_rx_desc *,
struct iwn_rx_data *);
-static voidiwn_timer_timeout(void *);
-static voidiwn_calib_reset(struct iwn_softc *);
 static voidiwn_rx_done(struct iwn_softc *, struct iwn_rx_desc *,
struct iwn_rx_data *);
 #if 0  /* HT */
@@ -161,7 +160,7 @@ static int  iwn_raw_xmit(struct ieee80211
const struct ieee80211_bpf_params *);
 static voidiwn_start(struct ifnet *);
 static voidiwn_start_locked(struct ifnet *);
-static voidiwn_watchdog(struct iwn_softc *sc);
+static voidiwn_watchdog(void *);
 static int iwn_ioctl(struct ifnet *, u_long, caddr_t);
 static int iwn_cmd(struct iwn_softc *, int, const void *, int, int);
 static int iwn4965_add_node(struct iwn_softc *, struct iwn_node_info *,
@@ -475,7 +474,6 @@ iwn_attach(device_t dev)
}
 
IWN_LOCK_INIT(sc);
-   callout_init_mtx(sc-sc_timer_to, sc-sc_mtx, 0);
TASK_INIT(sc-sc_reinit_task, 0, iwn_hw_reset, sc );
TASK_INIT(sc-sc_radioon_task, 0, iwn_radio_on, sc );
TASK_INIT(sc-sc_radiooff_task, 0, iwn_radio_off, sc );
@@ -668,6 +666,10 @@ iwn_attach(device_t dev)
 #endif
 
iwn_radiotap_attach(sc);
+
+   callout_init_mtx(sc-calib_to, sc-sc_mtx, 0);
+   callout_init_mtx(sc-watchdog_to, sc-sc_mtx, 0);
+
iwn_sysctlattach(sc);
 
/*
@@ -860,7 +862,8 @@ iwn_detach(device_t dev)
ieee80211_draintask(ic, sc-sc_radiooff_task);
 
iwn_stop(sc);
-   callout_drain(sc-sc_timer_to);
+   callout_drain(sc-watchdog_to);
+   callout_drain(sc-calib_to);
ieee80211_ifdetach(ic);
}
 
@@ -1942,7 +1945,7 @@ iwn_newstate(struct ieee80211vap *vap, e
 
IEEE80211_UNLOCK(ic);
IWN_LOCK(sc);
-   callout_stop(sc-sc_timer_to);
+   callout_stop(sc-calib_to);
 
switch (nstate) {
case IEEE80211_S_ASSOC:
@@ -1959,7 +1962,8 @@ iwn_newstate(struct ieee80211vap *vap, e
 */
sc-rxon.associd = 0;
sc-rxon.filter = ~htole32(IWN_FILTER_BSS);
-   iwn_calib_reset(sc);
+   sc-calib.state = IWN_CALIB_STATE_INIT;
+
error = iwn_auth(sc, vap);
break;
 
@@ -1967,9 +1971,8 @@ iwn_newstate(struct ieee80211vap *vap, e
/*
 * RUN - RUN transition; Just restart the timers.
 */
-   if (vap-iv_state == IEEE80211_S_RUN 
-   vap-iv_opmode != IEEE80211_M_MONITOR) {
-   iwn_calib_reset(sc);
+   if (vap-iv_state == IEEE80211_S_RUN) {
+   sc-calib_cnt = 0;
break;
}
 
@@ -1981,6 +1984,10 @@ iwn_newstate(struct ieee80211vap *vap, e
error = iwn_run(sc, vap);
break;
 
+   case IEEE80211_S_INIT:
+   sc-calib.state = IWN_CALIB_STATE_INIT;
+   break;
+
default:
break;
}
@@ -1989,6 +1996,27 @@ iwn_newstate(struct ieee80211vap *vap, e
return ivp-iv_newstate(vap, nstate, arg);
 }
 
+static void
+iwn_calib_timeout(void *arg)
+{
+   struct iwn_softc *sc = arg;
+
+   IWN_LOCK_ASSERT(sc);
+
+   /* Force automatic TX power calibration every 60 secs. */
+   if (++sc-calib_cnt = 120) {
+   uint32_t flags = 0;
+
+   DPRINTF(sc, IWN_DEBUG_CALIBRATE, %s\n,
+   sending request for statistics);
+   (void)iwn_cmd(sc, IWN_CMD_GET_STATISTICS, flags,
+   sizeof flags, 1);
+   sc-calib_cnt = 0;
+   }
+   

svn commit: r223239 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:36:57 2011
New Revision: 223239
URL: http://svn.freebsd.org/changeset/base/223239

Log:
  MFC r220674:
  Revert some of local calibration changes in favour of the OpenBSD
  implementation. This includes the fix required for the 6050 series
  devices.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnvar.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:33:55 2011
(r223238)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:36:57 2011
(r223239)
@@ -132,6 +132,8 @@ static void iwn_rx_done(struct iwn_softc
 static voidiwn_rx_compressed_ba(struct iwn_softc *, struct iwn_rx_desc *,
struct iwn_rx_data *);
 #endif
+static voidiwn5000_rx_calib_results(struct iwn_softc *,
+   struct iwn_rx_desc *, struct iwn_rx_data *);
 static voidiwn_rx_statistics(struct iwn_softc *, struct iwn_rx_desc *,
struct iwn_rx_data *);
 static voidiwn4965_tx_done(struct iwn_softc *, struct iwn_rx_desc *,
@@ -217,15 +219,10 @@ static void   iwn5000_ampdu_tx_start(struc
struct ieee80211_node *, uint8_t, uint16_t);
 static voidiwn5000_ampdu_tx_stop(struct iwn_softc *, uint8_t, uint16_t);
 #endif
-static int iwn5000_send_calib_results(struct iwn_softc *);
-static int iwn5000_save_calib_result(struct iwn_softc *,
-   struct iwn_phy_calib *, int, int);
-static voidiwn5000_free_calib_results(struct iwn_softc *);
-static int iwn5000_chrystal_calib(struct iwn_softc *);
-static int iwn5000_send_calib_query(struct iwn_softc *, uint32_t);
-static int iwn5000_rx_calib_result(struct iwn_softc *,
-   struct iwn_rx_desc *, struct iwn_rx_data *);
+static int iwn5000_query_calibration(struct iwn_softc *);
+static int iwn5000_send_calibration(struct iwn_softc *);
 static int iwn5000_send_wimax_coex(struct iwn_softc *);
+static int iwn5000_crystal_calib(struct iwn_softc *);
 static int iwn4965_post_alive(struct iwn_softc *);
 static int iwn5000_post_alive(struct iwn_softc *);
 static int iwn4965_load_bootcode(struct iwn_softc *, const uint8_t *,
@@ -709,9 +706,6 @@ iwn_hal_attach(struct iwn_softc *sc)
sc-fwname = iwn5000fw;
sc-txchainmask = IWN_ANT_B;
sc-rxchainmask = IWN_ANT_AB;
-   sc-calib_init = IWN_CALIB_XTAL | IWN_CALIB_LO |
-   IWN_CALIB_TX_IQ | IWN_CALIB_TX_IQ_PERIODIC |
-   IWN_CALIB_BASE_BAND;
break;
case IWN_HW_REV_TYPE_5150:
sc-sc_hal = iwn5000_hal;
@@ -719,8 +713,6 @@ iwn_hal_attach(struct iwn_softc *sc)
sc-fwname = iwn5150fw;
sc-txchainmask = IWN_ANT_A;
sc-rxchainmask = IWN_ANT_AB;
-   sc-calib_init = IWN_CALIB_DC | IWN_CALIB_LO |
-   IWN_CALIB_TX_IQ | IWN_CALIB_BASE_BAND;
break;
case IWN_HW_REV_TYPE_5300:
case IWN_HW_REV_TYPE_5350:
@@ -729,9 +721,6 @@ iwn_hal_attach(struct iwn_softc *sc)
sc-fwname = iwn5000fw;
sc-txchainmask = IWN_ANT_ABC;
sc-rxchainmask = IWN_ANT_ABC;
-   sc-calib_init = IWN_CALIB_XTAL | IWN_CALIB_LO |
-   IWN_CALIB_TX_IQ | IWN_CALIB_TX_IQ_PERIODIC |
-   IWN_CALIB_BASE_BAND;
break;
case IWN_HW_REV_TYPE_1000:
sc-sc_hal = iwn5000_hal;
@@ -739,9 +728,6 @@ iwn_hal_attach(struct iwn_softc *sc)
sc-fwname = iwn1000fw;
sc-txchainmask = IWN_ANT_A;
sc-rxchainmask = IWN_ANT_AB;
-   sc-calib_init = IWN_CALIB_XTAL | IWN_CALIB_LO |
-   IWN_CALIB_TX_IQ | IWN_CALIB_TX_IQ_PERIODIC |
-   IWN_CALIB_BASE_BAND;
break;
case IWN_HW_REV_TYPE_6000:
sc-sc_hal = iwn5000_hal;
@@ -757,11 +743,8 @@ iwn_hal_attach(struct iwn_softc *sc)
default:
sc-txchainmask = IWN_ANT_ABC;
sc-rxchainmask = IWN_ANT_ABC;
-   sc-calib_runtime = IWN_CALIB_DC;
break;
}
-   sc-calib_init = IWN_CALIB_XTAL | IWN_CALIB_LO |
-   IWN_CALIB_TX_IQ | IWN_CALIB_BASE_BAND;
break;
case IWN_HW_REV_TYPE_6050:
sc-sc_hal = iwn5000_hal;
@@ -769,9 +752,6 @@ iwn_hal_attach(struct iwn_softc *sc)
sc-fwname = iwn6050fw;
sc-txchainmask = 

svn commit: r223240 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:39:09 2011
New Revision: 223240
URL: http://svn.freebsd.org/changeset/base/223240

Log:
  MFC r220676-220677:
  The 6005 series devices need additional temperature offset calibration
  as well as the IWN_GP_DRIVER_CALIB_VER6 bit set.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnreg.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:36:57 2011
(r223239)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:39:09 2011
(r223240)
@@ -223,6 +223,7 @@ static int  iwn5000_query_calibration(str
 static int iwn5000_send_calibration(struct iwn_softc *);
 static int iwn5000_send_wimax_coex(struct iwn_softc *);
 static int iwn5000_crystal_calib(struct iwn_softc *);
+static int iwn5000_temp_offset_calib(struct iwn_softc *);
 static int iwn4965_post_alive(struct iwn_softc *);
 static int iwn5000_post_alive(struct iwn_softc *);
 static int iwn4965_load_bootcode(struct iwn_softc *, const uint8_t *,
@@ -4539,6 +4540,16 @@ iwn_config(struct iwn_softc *sc)
int error;
uint16_t rxchain;
 
+   if (sc-hw_type == IWN_HW_REV_TYPE_6005) {
+   /* Set radio temperature sensor offset. */
+   error = iwn5000_temp_offset_calib(sc);
+   if (error != 0) {
+   device_printf(sc-sc_dev,
+   %s: could not set temperature offset\n, __func__);
+   return error;
+   }
+   }
+
/* Configure valid TX chains for 5000 Series. */
if (sc-hw_type != IWN_HW_REV_TYPE_4965) {
txmask = htole32(sc-txchainmask);
@@ -5326,6 +5337,24 @@ iwn5000_crystal_calib(struct iwn_softc *
return iwn_cmd(sc, IWN_CMD_PHY_CALIB, cmd, sizeof cmd, 0);
 }
 
+static int
+iwn5000_temp_offset_calib(struct iwn_softc *sc)
+{
+   struct iwn5000_phy_calib_temp_offset cmd;
+
+   memset(cmd, 0, sizeof cmd);
+   cmd.code = IWN5000_PHY_CALIB_TEMP_OFFSET;
+   cmd.ngroups = 1;
+   cmd.isvalid = 1;
+   if (sc-eeprom_temp != 0)
+   cmd.offset = htole16(sc-eeprom_temp);
+   else
+   cmd.offset = htole16(IWN_DEFAULT_TEMP_OFFSET);
+   DPRINTF(sc, IWN_DEBUG_CALIBRATE, setting radio sensor offset to %d\n,
+   le16toh(cmd.offset));
+   return iwn_cmd(sc, IWN_CMD_PHY_CALIB, cmd, sizeof cmd, 0);
+}
+
 /*
  * This function is called after the runtime firmware notifies us of its
  * readiness (called in a process context.)
@@ -6028,7 +6057,8 @@ iwn5000_nic_config(struct iwn_softc *sc)
/* Use internal power amplifier only. */
IWN_WRITE(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_RADIO_2X2_IPA);
}
-   if (sc-hw_type == IWN_HW_REV_TYPE_6050  sc-calib_ver = 6) {
+   if ((sc-hw_type == IWN_HW_REV_TYPE_6050 ||
+sc-hw_type == IWN_HW_REV_TYPE_6005)  sc-calib_ver = 6) {
/* Indicate that ROM calibration version is =6. */
IWN_SETBITS(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_CALIB_VER6);
}

Modified: stable/8/sys/dev/iwn/if_iwnreg.h
==
--- stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 11:36:57 2011
(r223239)
+++ stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 11:39:09 2011
(r223240)
@@ -885,6 +885,8 @@ struct iwn_phy_calib {
 #define IWN5000_PHY_CALIB_CRYSTAL  15
 #define IWN5000_PHY_CALIB_BASE_BAND16
 #define IWN5000_PHY_CALIB_TX_IQ_PERIODIC   17
+#define IWN5000_PHY_CALIB_TEMP_OFFSET  18
+
 #define IWN5000_PHY_CALIB_RESET_NOISE_GAIN 18
 #define IWN5000_PHY_CALIB_NOISE_GAIN   19
 
@@ -903,6 +905,17 @@ struct iwn5000_phy_calib_crystal {
uint8_t reserved[2];
 } __packed;
 
+struct iwn5000_phy_calib_temp_offset {
+   uint8_t code;
+   uint8_t group;
+   uint8_t ngroups;
+   uint8_t isvalid;
+   int16_t offset;
+#define IWN_DEFAULT_TEMP_OFFSET2700
+
+   uint16_treserved;
+} __packed;
+
 struct iwn_phy_calib_gain {
uint8_t code;
uint8_t group;
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223241 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:41:06 2011
New Revision: 223241
URL: http://svn.freebsd.org/changeset/base/223241

Log:
  MFC r220687:
  Obtain the channel number directly from the laster RXON command, also
  chan is an uint8_t.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:39:09 2011
(r223240)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:41:06 2011
(r223241)
@@ -1732,7 +1732,8 @@ iwn_read_eeprom_band(struct iwn_softc *s
struct iwn_eeprom_chan *channels = sc-eeprom_channels[n];
const struct iwn_chan_band *band = iwn_bands[n];
struct ieee80211_channel *c;
-   int i, chan, nflags;
+   uint8_t chan;
+   int i, nflags;
 
for (i = 0; i  band-nchan; i++) {
if (!(channels[i].flags  IWN_EEPROM_CHAN_VALID)) {
@@ -3806,8 +3807,6 @@ iwn4965_set_txpower(struct iwn_softc *sc
((y1) + fdivround(((int)(x) - (x1)) * ((y2) - (y1)), (x2) - (x1), n))
 
static const int tdiv[IWN_NATTEN_GROUPS] = { 9, 8, 8, 8, 6 };
-   struct ifnet *ifp = sc-sc_ifp;
-   struct ieee80211com *ic = ifp-if_l2com;
struct iwn_ucode_info *uc = sc-ucode_info;
struct iwn4965_cmd_txpower cmd;
struct iwn4965_eeprom_chan_samples *chans;
@@ -3816,8 +3815,8 @@ iwn4965_set_txpower(struct iwn_softc *sc
const uint8_t *rf_gain, *dsp_gain;
uint8_t chan;
 
-   /* Retrieve channel number. */
-   chan = ieee80211_chan2ieee(ic, ch);
+   /* Retrieve current channel from last RXON. */
+   chan = sc-rxon.chan;
DPRINTF(sc, IWN_DEBUG_RESET, setting TX power for channel %d\n,
chan);
 
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223242 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:43:06 2011
New Revision: 223242
URL: http://svn.freebsd.org/changeset/base/223242

Log:
  MFC r220688:
  Pass errors that might happen during state transitions up to net80211.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:41:06 2011
(r223241)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:43:06 2011
(r223242)
@@ -1920,7 +1920,7 @@ iwn_newstate(struct ieee80211vap *vap, e
struct iwn_vap *ivp = IWN_VAP(vap);
struct ieee80211com *ic = vap-iv_ic;
struct iwn_softc *sc = ic-ic_ifp-if_softc;
-   int error;
+   int error = 0;
 
DPRINTF(sc, IWN_DEBUG_STATE, %s: %s - %s\n, __func__,
ieee80211_state_name[vap-iv_state],
@@ -1947,7 +1947,10 @@ iwn_newstate(struct ieee80211vap *vap, e
sc-rxon.filter = ~htole32(IWN_FILTER_BSS);
sc-calib.state = IWN_CALIB_STATE_INIT;
 
-   error = iwn_auth(sc, vap);
+   if ((error = iwn_auth(sc, vap)) != 0) {
+   device_printf(sc-sc_dev,
+   %s: could not move to auth state\n, __func__);
+   }
break;
 
case IEEE80211_S_RUN:
@@ -1964,7 +1967,10 @@ iwn_newstate(struct ieee80211vap *vap, e
 * which is done with a firmware cmd.  We also defer
 * starting the timers until that work is done.
 */
-   error = iwn_run(sc, vap);
+   if ((error = iwn_run(sc, vap)) != 0) {
+   device_printf(sc-sc_dev,
+   %s: could not move to run state\n, __func__);
+   }
break;
 
case IEEE80211_S_INIT:
@@ -1976,6 +1982,8 @@ iwn_newstate(struct ieee80211vap *vap, e
}
IWN_UNLOCK(sc);
IEEE80211_LOCK(ic);
+   if (error != 0)
+   return error;
return ivp-iv_newstate(vap, nstate, arg);
 }
 
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223243 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:44:54 2011
New Revision: 223243
URL: http://svn.freebsd.org/changeset/base/223243

Log:
  MFC r220689:
  RSSI related syncs with the OpenBSD code:
  - read RSSI only for the active chains
  - cast RSSI/NF to int8_t before passing it up to radiotap
  - remove the htole64() for the timestamp
  
  Obtained from:OpenBSD

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:43:06 2011
(r223242)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:44:54 2011
(r223243)
@@ -2128,18 +2128,18 @@ iwn_rx_done(struct iwn_softc *sc, struct
m-m_data = head;
m-m_pkthdr.len = m-m_len = len;
 
-   rssi = hal-get_rssi(sc, stat);
-
/* Grab a reference to the source node. */
wh = mtod(m, struct ieee80211_frame *);
ni = ieee80211_find_rxnode(ic, (struct ieee80211_frame_min *)wh);
nf = (ni != NULL  ni-ni_vap-iv_state == IEEE80211_S_RUN 
(ic-ic_flags  IEEE80211_F_SCAN) == 0) ? sc-noise : -95;
 
+   rssi = hal-get_rssi(sc, stat);
+
if (ieee80211_radiotap_active(ic)) {
struct iwn_rx_radiotap_header *tap = sc-sc_rxtap;
 
-   tap-wr_tsft = htole64(stat-tstamp);
+   tap-wr_tsft = stat-tstamp;
tap-wr_flags = 0;
if (stat-flags  htole16(IWN_STAT_FLAG_SHPREAMBLE))
tap-wr_flags |= IEEE80211_RADIOTAP_F_SHORTPRE;
@@ -2161,8 +2161,8 @@ iwn_rx_done(struct iwn_softc *sc, struct
/* Unknown rate: should not happen. */
default:  tap-wr_rate =   0;
}
-   tap-wr_dbm_antsignal = rssi;
-   tap-wr_dbm_antnoise = nf;
+   tap-wr_dbm_antsignal = (int8_t)rssi;
+   tap-wr_dbm_antnoise = (int8_t)nf;
}
 
IWN_UNLOCK(sc);
@@ -3985,18 +3985,12 @@ iwn4965_get_rssi(struct iwn_softc *sc, s
agc  = (le16toh(phy-agc)  7)  0x7f;
 
rssi = 0;
-#if 0
-   if (mask  IWN_ANT_A)   /* Ant A */
-   rssi = max(rssi, phy-rssi[0]);
-   if (mask  IWN_ATH_B)   /* Ant B */
-   rssi = max(rssi, phy-rssi[2]);
-   if (mask  IWN_ANT_C)   /* Ant C */
-   rssi = max(rssi, phy-rssi[4]);
-#else
-   rssi = max(rssi, phy-rssi[0]);
-   rssi = max(rssi, phy-rssi[2]);
-   rssi = max(rssi, phy-rssi[4]);
-#endif
+   if (mask  IWN_ANT_A)
+   rssi = MAX(rssi, phy-rssi[0]);
+   if (mask  IWN_ANT_B)
+   rssi = MAX(rssi, phy-rssi[2]);
+   if (mask  IWN_ANT_C)
+   rssi = MAX(rssi, phy-rssi[4]);
 
DPRINTF(sc, IWN_DEBUG_RECV, %s: agc %d mask 0x%x rssi %d %d %d 
result %d\n, __func__, agc, mask,
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223244 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:51:17 2011
New Revision: 223244
URL: http://svn.freebsd.org/changeset/base/223244

Log:
  MFC r220691-220694,220700-220702,220704,220710-220711:
  - Remove the flags argument of iwn_dma_contig_alloc(), it is always set
as BUS_DMA_NOWAIT. While here also set BUS_DMA_COHERENT.
  - OpenBSD uses IWN_RBUF_SIZE not MJUMPAGESIZE for the RX path, also replace
caddr_t with void * to be in sync.
  - In case a new mbuf can't be loaded, reuse the old one.
  - scratch_paddr has the same address pre-assigned, use that instead.
  - Rewrite DMA segment handling to be more inline with the OpenBSD code.
Also change the m_len == 0 hack to have less code churn.
  - Make sure to destroy all DMA tags and maps.
  - Unify TX/RX ring allocation, finish the descriptior DMA stuff before
starting with data.
  - Add missing bus_dmamap_sync calls as well as remove two duplicate ones.
  - Prevent double-free, also use the same error codes as OpenBSD.
  - Replace RX/TX ring allocation error messages with something more sane
and remove those where the caller already prints one.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:44:54 2011
(r223243)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:51:17 2011
(r223244)
@@ -88,7 +88,7 @@ static intiwn_init_otprom(struct iwn_so
 static int iwn_read_prom_data(struct iwn_softc *, uint32_t, void *, int);
 static voidiwn_dma_map_addr(void *, bus_dma_segment_t *, int, int);
 static int iwn_dma_contig_alloc(struct iwn_softc *, struct iwn_dma_info *,
-   void **, bus_size_t, bus_size_t, int);
+   void **, bus_size_t, bus_size_t);
 static voidiwn_dma_contig_free(struct iwn_dma_info *);
 static int iwn_alloc_sched(struct iwn_softc *);
 static voidiwn_free_sched(struct iwn_softc *);
@@ -1117,7 +1117,7 @@ iwn_dma_map_addr(void *arg, bus_dma_segm
 
 static int
 iwn_dma_contig_alloc(struct iwn_softc *sc, struct iwn_dma_info *dma,
-   void **kvap, bus_size_t size, bus_size_t alignment, int flags)
+void **kvap, bus_size_t size, bus_size_t alignment)
 {
int error;
 
@@ -1126,27 +1126,21 @@ iwn_dma_contig_alloc(struct iwn_softc *s
 
error = bus_dma_tag_create(bus_get_dma_tag(sc-sc_dev), alignment,
0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, size,
-   1, size, flags, NULL, NULL, dma-tag);
-   if (error != 0) {
-   device_printf(sc-sc_dev,
-   %s: bus_dma_tag_create failed, error %d\n,
-   __func__, error);
+   1, size, BUS_DMA_NOWAIT, NULL, NULL, dma-tag);
+   if (error != 0)
goto fail;
-   }
+
error = bus_dmamem_alloc(dma-tag, (void **)dma-vaddr,
-   flags | BUS_DMA_ZERO, dma-map);
-   if (error != 0) {
-   device_printf(sc-sc_dev,
-   %s: bus_dmamem_alloc failed, error %d\n, __func__, error);
+   BUS_DMA_NOWAIT | BUS_DMA_ZERO | BUS_DMA_COHERENT, dma-map);
+   if (error != 0)
goto fail;
-   }
-   error = bus_dmamap_load(dma-tag, dma-map, dma-vaddr,
-   size, iwn_dma_map_addr, dma-paddr, flags);
-   if (error != 0) {
-   device_printf(sc-sc_dev,
-   %s: bus_dmamap_load failed, error %d\n, __func__, error);
+
+   error = bus_dmamap_load(dma-tag, dma-map, dma-vaddr, size,
+   iwn_dma_map_addr, dma-paddr, BUS_DMA_NOWAIT);
+   if (error != 0)
goto fail;
-   }
+
+   bus_dmamap_sync(dma-tag, dma-map, BUS_DMASYNC_PREWRITE);
 
if (kvap != NULL)
*kvap = dma-vaddr;
@@ -1159,16 +1153,20 @@ fail:
 static void
 iwn_dma_contig_free(struct iwn_dma_info *dma)
 {
-   if (dma-tag != NULL) {
-   if (dma-map != NULL) {
-   if (dma-paddr == 0) {
-   bus_dmamap_sync(dma-tag, dma-map,
-   BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE);
-   bus_dmamap_unload(dma-tag, dma-map);
-   }
+   if (dma-map != NULL) {
+   if (dma-vaddr != NULL) {
+   bus_dmamap_sync(dma-tag, dma-map,
+   BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE);
+   bus_dmamap_unload(dma-tag, dma-map);
bus_dmamem_free(dma-tag, dma-vaddr, dma-map);
+   dma-vaddr = NULL;
}
+   bus_dmamap_destroy(dma-tag, 

svn commit: r223245 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:52:58 2011
New Revision: 223245
URL: http://svn.freebsd.org/changeset/base/223245

Log:
  MFC r220715:
  Instead of hardcoding TX rates and using that to fill the retry table
  use the neogotiated ni_rates instead.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnreg.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:51:17 2011
(r223244)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:52:58 2011
(r223245)
@@ -121,6 +121,7 @@ static void iwn_read_eeprom_channels(str
 static voidiwn_read_eeprom_enhinfo(struct iwn_softc *);
 static struct ieee80211_node *iwn_node_alloc(struct ieee80211vap *,
const uint8_t mac[IEEE80211_ADDR_LEN]);
+static voidiwn_newassoc(struct ieee80211_node *, int);
 static int iwn_media_change(struct ifnet *);
 static int iwn_newstate(struct ieee80211vap *, enum ieee80211_state, int);
 static voidiwn_calib_timeout(void *);
@@ -169,7 +170,8 @@ static int  iwn4965_add_node(struct iwn_s
int);
 static int iwn5000_add_node(struct iwn_softc *, struct iwn_node_info *,
int);
-static int iwn_set_link_quality(struct iwn_softc *, uint8_t, int);
+static int iwn_set_link_quality(struct iwn_softc *,
+   struct ieee80211_node *);
 static int iwn_add_broadcast_node(struct iwn_softc *, int);
 static int iwn_wme_update(struct ieee80211com *);
 static voidiwn_update_mcast(struct ifnet *);
@@ -648,6 +650,7 @@ iwn_attach(device_t dev)
ic-ic_vap_delete = iwn_vap_delete;
ic-ic_raw_xmit = iwn_raw_xmit;
ic-ic_node_alloc = iwn_node_alloc;
+   ic-ic_newassoc = iwn_newassoc;
ic-ic_wme.wme_update = iwn_wme_update;
ic-ic_update_mcast = iwn_update_mcast;
ic-ic_scan_start = iwn_scan_start;
@@ -1908,6 +1911,18 @@ iwn_node_alloc(struct ieee80211vap *vap,
return malloc(sizeof (struct iwn_node), M_80211_NODE,M_NOWAIT | M_ZERO);
 }
 
+static void
+iwn_newassoc(struct ieee80211_node *ni, int isnew)
+{
+   struct iwn_node *wn = (void *)ni;
+   int ridx, i;
+
+   for (i = 0; i  ni-ni_rates.rs_nrates; i++) {
+   ridx = iwn_plcp_signal(ni-ni_rates.rs_rates[i]);
+   wn-ridx[i] = ridx;
+   }
+}
+
 static int
 iwn_media_change(struct ifnet *ifp)
 {
@@ -2891,7 +2906,7 @@ iwn_plcp_signal(int rate) {
int i;
 
for (i = 0; i  IWN_RIDX_MAX + 1; i++) {
-   if (rate == iwn_rates[i].rate)
+   if ((rate  IEEE80211_RATE_VAL) == iwn_rates[i].rate)
return i;
}
 
@@ -3055,7 +3070,7 @@ iwn_tx_data(struct iwn_softc *sc, struct
txant = IWN_LSB(sc-txchainmask);
tx-rflags |= IWN_RFLAG_ANT(txant);
} else {
-   tx-linkq = IWN_RIDX_OFDM54 - ridx;
+   tx-linkq = ni-ni_rates.rs_nrates - ridx - 1;
flags |= IWN_TX_LINKQ;  /* enable MRR */
}
 
@@ -3599,98 +3614,39 @@ iwn5000_add_node(struct iwn_softc *sc, s
return iwn_cmd(sc, IWN_CMD_ADD_NODE, node, sizeof (*node), async);
 }
 
-#if 0  /* HT */
-static const uint8_t iwn_ridx_to_plcp[] = {
-   10, 20, 55, 110, /* CCK */
-   0xd, 0xf, 0x5, 0x7, 0x9, 0xb, 0x1, 0x3, 0x3 /* OFDM R1-R4 */
-};
-static const uint8_t iwn_siso_mcs_to_plcp[] = {
-   0, 0, 0, 0, /* CCK */
-   0, 0, 1, 2, 3, 4, 5, 6, 7   /* HT */
-};
-static const uint8_t iwn_mimo_mcs_to_plcp[] = {
-   0, 0, 0, 0, /* CCK */
-   8, 8, 9, 10, 11, 12, 13, 14, 15 /* HT */
-};
-#endif
-static const uint8_t iwn_prev_ridx[] = {
-   /* NB: allow fallback from CCK11 to OFDM9 and from OFDM6 to CCK5 */
-   0, 0, 1, 5, /* CCK */
-   2, 4, 3, 6, 7, 8, 9, 10, 10 /* OFDM */
-};
-
-/*
- * Configure hardware link parameters for the specified
- * node operating on the specified channel.
- */
 static int
-iwn_set_link_quality(struct iwn_softc *sc, uint8_t id, int async)
+iwn_set_link_quality(struct iwn_softc *sc, struct ieee80211_node *ni)
 {
-   struct ifnet *ifp = sc-sc_ifp;
-   struct ieee80211com *ic = ifp-if_l2com;
+   struct iwn_node *wn = (void *)ni;
+   struct ieee80211_rateset *rs = ni-ni_rates;
struct iwn_cmd_link_quality linkq;
const struct iwn_rate *rinfo;
-   int i;
-   uint8_t txant, ridx;
+   uint8_t txant;
+   int i, txrate;
 
/* Use the first valid TX antenna. */
txant = IWN_LSB(sc-txchainmask);
 
memset(linkq, 0, sizeof linkq);
-   

svn commit: r223246 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:54:44 2011
New Revision: 223246
URL: http://svn.freebsd.org/changeset/base/223246

Log:
  MFC r220719:
  Remove if_ierrors which do not necessarily indicate a RX error, also
  do account send packets. While here use the IWN_TX_FAIL constant.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:52:58 2011
(r223245)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:54:44 2011
(r223246)
@@ -2069,7 +2069,6 @@ iwn_rx_done(struct iwn_softc *sc, struct
if (!sc-last_rx_valid) {
DPRINTF(sc, IWN_DEBUG_ANY,
%s: missing RX_PHY\n, __func__);
-   ifp-if_ierrors++;
return;
}
sc-last_rx_valid = 0;
@@ -2083,7 +2082,6 @@ iwn_rx_done(struct iwn_softc *sc, struct
device_printf(sc-sc_dev,
%s: invalid rx statistic header, len %d\n,
__func__, stat-cfg_phy_len);
-   ifp-if_ierrors++;
return;
}
if (desc-type == IWN_MPDU_RX_DONE) {
@@ -2427,11 +2425,12 @@ iwn_tx_done(struct iwn_softc *sc, struct
/*
 * Update rate control statistics for the node.
 */
-   if (status  0x80) {
+   if (status  IWN_TX_FAIL) {
ifp-if_oerrors++;
ieee80211_ratectl_tx_complete(vap, ni,
IEEE80211_RATECTL_TX_FAILURE, ackfailcnt, NULL);
} else {
+   ifp-if_opackets++;
ieee80211_ratectl_tx_complete(vap, ni,
IEEE80211_RATECTL_TX_SUCCESS, ackfailcnt, NULL);
}
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


svn commit: r223247 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 11:56:40 2011
New Revision: 223247
URL: http://svn.freebsd.org/changeset/base/223247

Log:
  MFC r220720:
  Fix WME/QoS handling:
  - move the TX queue selection into iwn_tx_data/iwn_tx_data_raw
  - extract traffic identifier and use it
  - do not expect ACKs for frames marked as such

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:54:44 2011
(r223246)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:56:40 2011
(r223247)
@@ -158,7 +158,10 @@ static voidiwn5000_reset_sched(struct i
 #endif
 static uint8_t iwn_plcp_signal(int);
 static int iwn_tx_data(struct iwn_softc *, struct mbuf *,
-   struct ieee80211_node *, struct iwn_tx_ring *);
+   struct ieee80211_node *);
+static int iwn_tx_data_raw(struct iwn_softc *, struct mbuf *,
+   struct ieee80211_node *,
+   const struct ieee80211_bpf_params *params);
 static int iwn_raw_xmit(struct ieee80211_node *, struct mbuf *,
const struct ieee80211_bpf_params *);
 static voidiwn_start(struct ifnet *);
@@ -2913,8 +2916,7 @@ iwn_plcp_signal(int rate) {
 }
 
 static int
-iwn_tx_data(struct iwn_softc *sc, struct mbuf *m, struct ieee80211_node *ni,
-struct iwn_tx_ring *ring)
+iwn_tx_data(struct iwn_softc *sc, struct mbuf *m, struct ieee80211_node *ni)
 {
const struct iwn_hal *hal = sc-sc_hal;
const struct ieee80211_txparam *tp;
@@ -2922,6 +2924,7 @@ iwn_tx_data(struct iwn_softc *sc, struct
struct ieee80211vap *vap = ni-ni_vap;
struct ieee80211com *ic = ni-ni_ic;
struct iwn_node *wn = (void *)ni;
+   struct iwn_tx_ring *ring;
struct iwn_tx_desc *desc;
struct iwn_tx_data *data;
struct iwn_tx_cmd *cmd;
@@ -2931,9 +2934,10 @@ iwn_tx_data(struct iwn_softc *sc, struct
struct mbuf *m1;
bus_dma_segment_t *seg, segs[IWN_MAX_SCATTER];
uint32_t flags;
+   uint16_t qos;
u_int hdrlen;
-   int totlen, error, pad, nsegs = 0, i, rate;
-   uint8_t ridx, type, txant;
+   uint8_t tid, ridx, type, txant;
+   int ac, i, totlen, error, pad, nsegs = 0, rate;
 
IWN_LOCK_ASSERT(sc);
 
@@ -2941,6 +2945,17 @@ iwn_tx_data(struct iwn_softc *sc, struct
hdrlen = ieee80211_anyhdrsize(wh);
type = wh-i_fc[0]  IEEE80211_FC0_TYPE_MASK;
 
+   /* Select EDCA Access Category and TX ring for this frame. */
+   if (IEEE80211_QOS_HAS_SEQ(wh)) {
+   qos = ((const struct ieee80211_qosframe *)wh)-i_qos[0];
+   tid = qos  IEEE80211_QOS_TID;
+   } else {
+   qos = 0;
+   tid = 0;
+   }
+   ac = M_WME_GETAC(m);
+
+   ring = sc-txq[ac];
desc = ring-desc[ring-cur];
data = ring-data[ring-cur];
 
@@ -2995,8 +3010,12 @@ iwn_tx_data(struct iwn_softc *sc, struct
tx-scratch = 0;/* clear scratch area */
 
flags = 0;
-   if (!IEEE80211_IS_MULTICAST(wh-i_addr1))
-   flags |= IWN_TX_NEED_ACK;
+   if (!IEEE80211_IS_MULTICAST(wh-i_addr1)) {
+   /* Unicast frame, check if an ACK is expected. */
+   if (!qos || (qos  IEEE80211_QOS_ACKPOLICY) !=
+   IEEE80211_QOS_ACKPOLICY_NOACK)
+   flags |= IWN_TX_NEED_ACK;
+   }
if ((wh-i_fc[0] 
(IEEE80211_FC0_TYPE_MASK | IEEE80211_FC0_SUBTYPE_MASK)) ==
(IEEE80211_FC0_TYPE_CTL | IEEE80211_FC0_SUBTYPE_BAR))
@@ -3056,7 +3075,7 @@ iwn_tx_data(struct iwn_softc *sc, struct
pad = 0;
 
tx-len = htole16(totlen);
-   tx-tid = 0;
+   tx-tid = tid;
tx-rts_ntries = 60;
tx-data_ntries = 15;
tx-lifetime = htole32(IWN_LIFETIME_INFINITE);
@@ -3161,8 +3180,7 @@ iwn_tx_data(struct iwn_softc *sc, struct
 
 static int
 iwn_tx_data_raw(struct iwn_softc *sc, struct mbuf *m,
-struct ieee80211_node *ni, struct iwn_tx_ring *ring,
-const struct ieee80211_bpf_params *params)
+struct ieee80211_node *ni, const struct ieee80211_bpf_params *params)
 {
const struct iwn_hal *hal = sc-sc_hal;
const struct iwn_rate *rinfo;
@@ -3172,13 +3190,14 @@ iwn_tx_data_raw(struct iwn_softc *sc, st
struct iwn_tx_cmd *cmd;
struct iwn_cmd_data *tx;
struct ieee80211_frame *wh;
+   struct iwn_tx_ring *ring;
struct iwn_tx_desc *desc;
struct iwn_tx_data *data;
struct mbuf *m1;
bus_dma_segment_t *seg, segs[IWN_MAX_SCATTER];
uint32_t flags;

svn commit: r223248 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 12:00:49 2011
New Revision: 223248
URL: http://svn.freebsd.org/changeset/base/223248

Log:
  MFC r220721,220723-220726:
  - Rename some stuff in favour of the OpenBSD names:
- prefer EDCA over WME
- qid for a TXQ ID
- reg for register values
  - Shuffle code around a bit. Mostly to group functional connected things,
others to get the same order as the OpenBSD code.
  - Sync debug and error messages with OpenBSD. The device capability
announcements are now hidden behind bootverbose.
  - Sync comments with OpenBSD.
  - Whitespace sync, some more style(9) conform then others.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnreg.h
  stable/8/sys/dev/iwn/if_iwnvar.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 11:56:40 2011
(r223247)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:00:49 2011
(r223248)
@@ -72,16 +72,61 @@ __FBSDID($FreeBSD$);
 #include dev/iwn/if_iwnreg.h
 #include dev/iwn/if_iwnvar.h
 
+struct iwn_ident {
+   uint16_tvendor;
+   uint16_tdevice;
+   const char  *name;
+};
+
+static const struct iwn_ident iwn_ident_table [] = {
+   { 0x8086, 0x4229, Intel(R) PRO/Wireless 4965BGN },
+   { 0x8086, 0x422D, Intel(R) PRO/Wireless 4965BGN },
+   { 0x8086, 0x4230, Intel(R) PRO/Wireless 4965BGN },
+   { 0x8086, 0x4233, Intel(R) PRO/Wireless 4965BGN },
+   { 0x8086, 0x4232, Intel(R) PRO/Wireless 5100 },
+   { 0x8086, 0x4237, Intel(R) PRO/Wireless 5100 },
+   { 0x8086, 0x423C, Intel(R) PRO/Wireless 5150 },
+   { 0x8086, 0x423D, Intel(R) PRO/Wireless 5150 },
+   { 0x8086, 0x4235, Intel(R) PRO/Wireless 5300 },
+   { 0x8086, 0x4236, Intel(R) PRO/Wireless 5300 },
+   { 0x8086, 0x423A, Intel(R) PRO/Wireless 5350 },
+   { 0x8086, 0x423B, Intel(R) PRO/Wireless 5350 },
+   { 0x8086, 0x0083, Intel(R) PRO/Wireless 1000 },
+   { 0x8086, 0x0084, Intel(R) PRO/Wireless 1000 },
+   { 0x8086, 0x008D, Intel(R) PRO/Wireless 6000 },
+   { 0x8086, 0x008E, Intel(R) PRO/Wireless 6000 },
+   { 0x8086, 0x4238, Intel(R) PRO/Wireless 6000 },
+   { 0x8086, 0x4239, Intel(R) PRO/Wireless 6000 },
+   { 0x8086, 0x422B, Intel(R) PRO/Wireless 6000 },
+   { 0x8086, 0x422C, Intel(R) PRO/Wireless 6000 },
+   { 0x8086, 0x0087, Intel(R) PRO/Wireless 6250 },
+   { 0x8086, 0x0089, Intel(R) PRO/Wireless 6250 },
+   { 0x8086, 0x0082, Intel(R) PRO/Wireless 6205a },
+   { 0x8086, 0x0085, Intel(R) PRO/Wireless 6205a },
+#ifdef notyet
+   { 0x8086, 0x008a, Intel(R) PRO/Wireless 6205b },
+   { 0x8086, 0x008b, Intel(R) PRO/Wireless 6205b },
+   { 0x8086, 0x008f, Intel(R) PRO/Wireless 6205b },
+   { 0x8086, 0x0090, Intel(R) PRO/Wireless 6205b },
+   { 0x8086, 0x0091, Intel(R) PRO/Wireless 6205b },
+#endif
+   { 0, 0, NULL }
+};
+
 static int iwn_probe(device_t);
 static int iwn_attach(device_t);
 static const struct iwn_hal *iwn_hal_attach(struct iwn_softc *);
 static voidiwn_radiotap_attach(struct iwn_softc *);
+static voidiwn_sysctlattach(struct iwn_softc *);
 static struct ieee80211vap *iwn_vap_create(struct ieee80211com *,
const char name[IFNAMSIZ], int unit, int opmode,
int flags, const uint8_t bssid[IEEE80211_ADDR_LEN],
const uint8_t mac[IEEE80211_ADDR_LEN]);
 static voidiwn_vap_delete(struct ieee80211vap *);
 static int iwn_detach(device_t);
+static int iwn_shutdown(device_t);
+static int iwn_suspend(device_t);
+static int iwn_resume(device_t);
 static int iwn_nic_lock(struct iwn_softc *);
 static int iwn_eeprom_lock(struct iwn_softc *);
 static int iwn_init_otprom(struct iwn_softc *);
@@ -116,8 +161,12 @@ static voidiwn_read_eeprom_band(struct 
 #if 0  /* HT */
 static voidiwn_read_eeprom_ht40(struct iwn_softc *, int);
 #endif
-static voidiwn_read_eeprom_channels(struct iwn_softc *, int,
-   uint32_t);
+static voidiwn_read_eeprom_channels(struct iwn_softc *, int, uint32_t);
+static struct iwn_eeprom_chan *iwn_find_eeprom_channel(struct iwn_softc *,
+   struct ieee80211_channel *);
+static int iwn_setregdomain(struct ieee80211com *,
+   struct ieee80211_regdomain *, int,
+   struct ieee80211_channel[]);
 static voidiwn_read_eeprom_enhinfo(struct iwn_softc *);
 static struct ieee80211_node *iwn_node_alloc(struct ieee80211vap *,
const uint8_t mac[IEEE80211_ADDR_LEN]);
@@ -176,7 +225,7 @@ static int  

svn commit: r223249 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 12:03:30 2011
New Revision: 223249
URL: http://svn.freebsd.org/changeset/base/223249

Log:
  MFC r220727-220728:
  - Read RX/TX chainmasks directly of the EEPROM. Some chips are known to
have the wrong/broken information stored, keep the hardcoded values for
those.
  - Bring over the HAL/OPS changes, instead of two const structs it is now
slightly more dynamic.
  
  Obtained from:OpenBSD

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnvar.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:00:49 2011
(r223248)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:03:30 2011
(r223249)
@@ -115,7 +115,8 @@ static const struct iwn_ident iwn_ident_
 
 static int iwn_probe(device_t);
 static int iwn_attach(device_t);
-static const struct iwn_hal *iwn_hal_attach(struct iwn_softc *);
+static int iwn4965_attach(struct iwn_softc *, uint16_t);
+static int iwn5000_attach(struct iwn_softc *, uint16_t);
 static voidiwn_radiotap_attach(struct iwn_softc *);
 static voidiwn_sysctlattach(struct iwn_softc *);
 static struct ieee80211vap *iwn_vap_create(struct ieee80211com *,
@@ -410,62 +411,6 @@ MODULE_DEPEND(iwn, firmware, 1, 1, 1);
 MODULE_DEPEND(iwn, pci, 1, 1, 1);
 MODULE_DEPEND(iwn, wlan, 1, 1, 1);
 
-static const struct iwn_hal iwn4965_hal = {
-   iwn4965_load_firmware,
-   iwn4965_read_eeprom,
-   iwn4965_post_alive,
-   iwn4965_nic_config,
-   iwn4965_update_sched,
-   iwn4965_get_temperature,
-   iwn4965_get_rssi,
-   iwn4965_set_txpower,
-   iwn4965_init_gains,
-   iwn4965_set_gains,
-   iwn4965_add_node,
-   iwn4965_tx_done,
-#if 0  /* HT */
-   iwn4965_ampdu_tx_start,
-   iwn4965_ampdu_tx_stop,
-#endif
-   IWN4965_NTXQUEUES,
-   IWN4965_NDMACHNLS,
-   IWN4965_ID_BROADCAST,
-   IWN4965_RXONSZ,
-   IWN4965_SCHEDSZ,
-   IWN4965_FW_TEXT_MAXSZ,
-   IWN4965_FW_DATA_MAXSZ,
-   IWN4965_FWSZ,
-   IWN4965_SCHED_TXFACT
-};
-
-static const struct iwn_hal iwn5000_hal = {
-   iwn5000_load_firmware,
-   iwn5000_read_eeprom,
-   iwn5000_post_alive,
-   iwn5000_nic_config,
-   iwn5000_update_sched,
-   iwn5000_get_temperature,
-   iwn5000_get_rssi,
-   iwn5000_set_txpower,
-   iwn5000_init_gains,
-   iwn5000_set_gains,
-   iwn5000_add_node,
-   iwn5000_tx_done,
-#if 0  /* HT */
-   iwn5000_ampdu_tx_start,
-   iwn5000_ampdu_tx_stop,
-#endif
-   IWN5000_NTXQUEUES,
-   IWN5000_NDMACHNLS,
-   IWN5000_ID_BROADCAST,
-   IWN5000_RXONSZ,
-   IWN5000_SCHEDSZ,
-   IWN5000_FW_TEXT_MAXSZ,
-   IWN5000_FW_DATA_MAXSZ,
-   IWN5000_FWSZ,
-   IWN5000_SCHED_TXFACT
-};
-
 static int
 iwn_probe(device_t dev)
 {
@@ -487,7 +432,6 @@ iwn_attach(device_t dev)
struct iwn_softc *sc = (struct iwn_softc *)device_get_softc(dev);
struct ieee80211com *ic;
struct ifnet *ifp;
-   const struct iwn_hal *hal;
uint32_t reg;
int i, error, result;
uint8_t macaddr[IEEE80211_ADDR_LEN];
@@ -545,10 +489,15 @@ iwn_attach(device_t dev)
 
IWN_LOCK_INIT(sc);
 
-   /* Attach Hardware Abstraction Layer. */
-   hal = iwn_hal_attach(sc);
-   if (hal == NULL) {
-   error = ENXIO;  /* XXX: Wrong error code? */
+   /* Read hardware revision and attach. */
+   sc-hw_type = (IWN_READ(sc, IWN_HW_REV)  4)  0xf;
+   if (sc-hw_type == IWN_HW_REV_TYPE_4965)
+   error = iwn4965_attach(sc, pci_get_device(dev));
+   else
+   error = iwn5000_attach(sc, pci_get_device(dev));
+   if (error != 0) {
+   device_printf(dev, could not attach device, error %d\n,
+   error);
goto fail;
}
 
@@ -588,7 +537,7 @@ iwn_attach(device_t dev)
}
 
/* Allocate TX rings (16 on 4965AGN, 20 on =5000). */
-   for (i = 0; i  hal-ntxqs; i++) {
+   for (i = 0; i  sc-ntxqs; i++) {
if ((error = iwn_alloc_tx_ring(sc, sc-txq[i], i)) != 0) {
device_printf(dev,
could not allocate TX ring %d, error %d\n, i,
@@ -754,85 +703,121 @@ fail:
return error;
 }
 
-static const struct iwn_hal *
-iwn_hal_attach(struct iwn_softc *sc)
+static int
+iwn4965_attach(struct iwn_softc *sc, uint16_t pid)
 {
-   sc-hw_type = (IWN_READ(sc, IWN_HW_REV)  4)  0xf;
+   struct iwn_ops *ops = sc-ops;
+
+   ops-load_firmware = iwn4965_load_firmware;
+   ops-read_eeprom = 

svn commit: r223250 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 12:07:06 2011
New Revision: 223250
URL: http://svn.freebsd.org/changeset/base/223250

Log:
  MFC r220729:
  Add some new features:
  - 6000 series devices need enhanced sensitivity calibration.
  - 6000 series devices need a different setting for the shadow reg.
  - set the IWN_FLAG_HAS_11N bit if the EEPROM says the device has 11n
support.
  
  Obtained from:OpenBSD

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnreg.h
  stable/8/sys/dev/iwn/if_iwnvar.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:03:30 2011
(r223249)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:07:06 2011
(r223250)
@@ -1653,6 +1653,12 @@ iwn_read_eeprom(struct iwn_softc *sc, ui
}
}
 
+   iwn_read_prom_data(sc, IWN_EEPROM_SKU_CAP, val, 2);
+   DPRINTF(sc, IWN_DEBUG_RESET, SKU capabilities=0x%04x\n, le16toh(val));
+   /* Check if HT support is bonded out. */
+   if (val  htole16(IWN_EEPROM_SKU_CAP_11N))
+   sc-sc_flags |= IWN_FLAG_HAS_11N;
+
iwn_read_prom_data(sc, IWN_EEPROM_RFCFG, val, 2);
sc-rfcfg = le16toh(val);
DPRINTF(sc, IWN_DEBUG_RESET, radio config=0x%04x\n, sc-rfcfg);
@@ -4595,9 +4601,11 @@ static int
 iwn_send_sensitivity(struct iwn_softc *sc)
 {
struct iwn_calib_state *calib = sc-calib;
-   struct iwn_sensitivity_cmd cmd;
+   struct iwn_enhanced_sensitivity_cmd cmd;
+   int len;
 
memset(cmd, 0, sizeof cmd);
+   len = sizeof (struct iwn_sensitivity_cmd);
cmd.which = IWN_SENSITIVITY_WORKTBL;
/* OFDM modulation. */
cmd.corr_ofdm_x1   = htole16(calib-ofdm_x1);
@@ -4619,7 +4627,21 @@ iwn_send_sensitivity(struct iwn_softc *s
calib-ofdm_x1, calib-ofdm_mrc_x1, calib-ofdm_x4,
calib-ofdm_mrc_x4, calib-cck_x4,
calib-cck_mrc_x4, calib-energy_cck);
-   return iwn_cmd(sc, IWN_CMD_SET_SENSITIVITY, cmd, sizeof cmd, 1);
+
+   if (!(sc-sc_flags  IWN_FLAG_ENH_SENS))
+   goto send;
+   /* Enhanced sensitivity settings. */
+   len = sizeof (struct iwn_enhanced_sensitivity_cmd);
+   cmd.ofdm_det_slope_mrc = htole16(668);
+   cmd.ofdm_det_icept_mrc = htole16(4);
+   cmd.ofdm_det_slope = htole16(486);
+   cmd.ofdm_det_icept = htole16(37);
+   cmd.cck_det_slope_mrc  = htole16(853);
+   cmd.cck_det_icept_mrc  = htole16(4);
+   cmd.cck_det_slope  = htole16(476);
+   cmd.cck_det_icept  = htole16(99);
+send:
+   return iwn_cmd(sc, IWN_CMD_SET_SENSITIVITY, cmd, len, 1);
 }
 
 /*
@@ -6175,6 +6197,8 @@ iwn5000_nic_config(struct iwn_softc *sc)
/* Indicate that ROM calibration version is =6. */
IWN_SETBITS(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_CALIB_VER6);
}
+   if (sc-hw_type == IWN_HW_REV_TYPE_6005)
+   IWN_SETBITS(sc, IWN_GP_DRIVER, IWN_GP_DRIVER_6050_1X2);
return 0;
 }
 
@@ -6304,6 +6328,10 @@ iwn_hw_init(struct iwn_softc *sc)
IWN_WRITE(sc, IWN_UCODE_GP1_CLR, IWN_UCODE_GP1_RFKILL);
IWN_WRITE(sc, IWN_UCODE_GP1_CLR, IWN_UCODE_GP1_RFKILL);
 
+   /* Enable shadow registers. */
+   if (sc-hw_type = IWN_HW_REV_TYPE_6000)
+   IWN_SETBITS(sc, IWN_SHADOW_REG_CTRL, 0x800f);
+
if ((error = ops-load_firmware(sc)) != 0) {
device_printf(sc-sc_dev,
%s: could not load firmware, error %d\n, __func__,

Modified: stable/8/sys/dev/iwn/if_iwnreg.h
==
--- stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 12:03:30 2011
(r223249)
+++ stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 12:07:06 2011
(r223250)
@@ -70,6 +70,7 @@
 #define IWN_UCODE_GP1_CLR  0x05c
 #define IWN_LED0x094
 #define IWN_DRAM_INT_TBL   0x0a0
+#define IWN_SHADOW_REG_CTRL0x0a8
 #define IWN_GIO_CHICKEN0x100
 #define IWN_ANA_PLL0x20c
 #define IWN_HW_REV_WA  0x22c
@@ -215,6 +216,7 @@
 #define IWN_GP_DRIVER_RADIO_2X2_HYB(1  0)
 #define IWN_GP_DRIVER_RADIO_2X2_IPA(2  0)
 #define IWN_GP_DRIVER_CALIB_VER6   (1  2)
+#define IWN_GP_DRIVER_6050_1X2 (1  3)
 
 /* Possible flags for register IWN_UCODE_GP1_CLR. */
 #define IWN_UCODE_GP1_RFKILL   (1  1)
@@ -856,7 +858,7 @@ struct iwn_critical_temp {
 #define IWN_CTOMUK(c)  (((c) * 100) + 27315)
 } __packed;
 
-/* Structure for command IWN_CMD_SET_SENSITIVITY. */
+/* Structures for command IWN_CMD_SET_SENSITIVITY. */
 

svn commit: r223251 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 12:10:06 2011
New Revision: 223251
URL: http://svn.freebsd.org/changeset/base/223251

Log:
  MFC r220866-220867:
  - Pull some features out of the firmware:
- If a ENH_SENS TLV section exit the firmware is capable of doing
  enhanced sensitivity calibration.
- Newer devices/firmwares have more calibration commands therefore
  hardcoding the noise gain/reset commands no longer works. It is
  supposed to use the next index after the newest calibration type
  support. Read the command index of the TLV section if available.
  - Enable DC calibration for all 6000 series devices, except those
with an internal PA.
  - Override the chainmask also for the 6050.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnreg.h
  stable/8/sys/dev/iwn/if_iwnvar.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:07:06 2011
(r223250)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:10:06 2011
(r223251)
@@ -772,6 +772,8 @@ iwn5000_attach(struct iwn_softc *sc, uin
sc-fw_data_maxsz = IWN5000_FW_DATA_MAXSZ;
sc-fwsz = IWN5000_FWSZ;
sc-sched_txfact_addr = IWN5000_SCHED_TXFACT;
+   sc-reset_noise_gain = IWN5000_PHY_CALIB_RESET_NOISE_GAIN;
+   sc-noise_gain = IWN5000_PHY_CALIB_NOISE_GAIN;
 
switch (sc-hw_type) {
case IWN_HW_REV_TYPE_5100:
@@ -807,6 +809,9 @@ iwn5000_attach(struct iwn_softc *sc, uin
case IWN_HW_REV_TYPE_6050:
sc-limits = iwn6000_sensitivity_limits;
sc-fwname = iwn6050fw;
+   /* Override chains masks, ROM is known to be broken. */
+   sc-txchainmask = IWN_ANT_AB;
+   sc-rxchainmask = IWN_ANT_AB;
break;
case IWN_HW_REV_TYPE_6005:
sc-limits = iwn6000_sensitivity_limits;
@@ -2385,7 +2390,9 @@ iwn5000_rx_calib_results(struct iwn_soft
 
switch (calib-code) {
case IWN5000_PHY_CALIB_DC:
-   if (sc-hw_type == IWN_HW_REV_TYPE_5150)
+   if ((sc-sc_flags  IWN_FLAG_INTERNAL_PA) == 0 
+   (sc-hw_type == IWN_HW_REV_TYPE_5150 ||
+sc-hw_type = IWN_HW_REV_TYPE_6000))
idx = 0;
break;
case IWN5000_PHY_CALIB_LO:
@@ -4367,7 +4374,7 @@ iwn5000_init_gains(struct iwn_softc *sc)
struct iwn_phy_calib cmd;
 
memset(cmd, 0, sizeof cmd);
-   cmd.code = IWN5000_PHY_CALIB_RESET_NOISE_GAIN;
+   cmd.code = sc-reset_noise_gain;
cmd.ngroups = 1;
cmd.isvalid = 1;
DPRINTF(sc, IWN_DEBUG_CALIBRATE,
@@ -4419,7 +4426,7 @@ iwn5000_set_gains(struct iwn_softc *sc)
div = (sc-hw_type == IWN_HW_REV_TYPE_6050) ? 20 : 30;
 
memset(cmd, 0, sizeof cmd);
-   cmd.code = IWN5000_PHY_CALIB_NOISE_GAIN;
+   cmd.code = sc-noise_gain;
cmd.ngroups = 1;
cmd.isvalid = 1;
/* Get first available RX antenna as referential. */
@@ -5900,7 +5907,7 @@ iwn_read_firmware_tlv(struct iwn_softc *
const struct iwn_fw_tlv *tlv;
const uint8_t *ptr, *end;
uint64_t altmask;
-   uint32_t len;
+   uint32_t len, tmp;
 
if (fw-size  sizeof (*hdr)) {
device_printf(sc-sc_dev, %s: firmware too short: %zu bytes\n,
@@ -5965,6 +5972,17 @@ iwn_read_firmware_tlv(struct iwn_softc *
fw-boot.text = ptr;
fw-boot.textsz = len;
break;
+   case IWN_FW_TLV_ENH_SENS:
+   if (!len)
+   sc-sc_flags |= IWN_FLAG_ENH_SENS;
+   break;
+   case IWN_FW_TLV_PHY_CALIB:
+   tmp = htole32(*ptr);
+   if (tmp  253) {
+   sc-reset_noise_gain = tmp;
+   sc-noise_gain = tmp + 1;
+   }
+   break;
default:
DPRINTF(sc, IWN_DEBUG_RESET,
TLV type %d not handled\n, le16toh(tlv-type));

Modified: stable/8/sys/dev/iwn/if_iwnreg.h
==
--- stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 12:07:06 2011
(r223250)
+++ stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 12:10:06 2011
(r223251)
@@ -1322,6 +1322,8 @@ struct iwn_fw_tlv {
 #define IWN_FW_TLV_INIT_DATA   4
 #define IWN_FW_TLV_BOOT_TEXT   5
 #define IWN_FW_TLV_PBREQ_MAXLEN6
+#define 

svn commit: r223252 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 12:11:48 2011
New Revision: 223252
URL: http://svn.freebsd.org/changeset/base/223252

Log:
  MFC r220891:
  Add basic support for advanced bluetooth coexistence required
  for 6005 gen2b (1030/6030) adapters.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
  stable/8/sys/dev/iwn/if_iwnreg.h
  stable/8/sys/dev/iwn/if_iwnvar.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:10:06 2011
(r223251)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:11:48 2011
(r223252)
@@ -253,6 +253,7 @@ static void iwn_tune_sensitivity(struct 
 static int iwn_send_sensitivity(struct iwn_softc *);
 static int iwn_set_pslevel(struct iwn_softc *, int, int, int);
 static int iwn_send_btcoex(struct iwn_softc *);
+static int iwn_send_advanced_btcoex(struct iwn_softc *);
 static int iwn_config(struct iwn_softc *);
 static uint8_t *ieee80211_add_ssid(uint8_t *, const uint8_t *, u_int);
 static int iwn_scan(struct iwn_softc *);
@@ -816,6 +817,8 @@ iwn5000_attach(struct iwn_softc *sc, uin
case IWN_HW_REV_TYPE_6005:
sc-limits = iwn6000_sensitivity_limits;
sc-fwname = iwn6005fw;
+   if (pid != 0x0082  pid != 0x0085)
+   sc-sc_flags |= IWN_FLAG_ADV_BTCOEX;
break;
default:
device_printf(sc-sc_dev, adapter type %d not supported\n,
@@ -4721,6 +4724,63 @@ iwn_send_btcoex(struct iwn_softc *sc)
 }
 
 static int
+iwn_send_advanced_btcoex(struct iwn_softc *sc)
+{
+   static const uint32_t btcoex_3wire[12] = {
+   0x, 0x, 0xaeaa, 0x,
+   0xcc00ff28, 0x, 0xcc00, 0x,
+   0xc0004000, 0x4000, 0xf0005000, 0xf0005000,
+   };
+   struct iwn6000_btcoex_config btconfig;
+   struct iwn_btcoex_priotable btprio;
+   struct iwn_btcoex_prot btprot;
+   int error, i;
+
+   memset(btconfig, 0, sizeof btconfig);
+   btconfig.flags = 145;
+   btconfig.max_kill = 5;
+   btconfig.bt3_t7_timer = 1;
+   btconfig.kill_ack = htole32(0x);
+   btconfig.kill_cts = htole32(0x);
+   btconfig.sample_time = 2;
+   btconfig.bt3_t2_timer = 0xc;
+   for (i = 0; i  12; i++)
+   btconfig.lookup_table[i] = htole32(btcoex_3wire[i]);
+   btconfig.valid = htole16(0xff);
+   btconfig.prio_boost = 0xf0;
+   DPRINTF(sc, IWN_DEBUG_RESET,
+   %s: configuring advanced bluetooth coexistence\n, __func__);
+   error = iwn_cmd(sc, IWN_CMD_BT_COEX, btconfig, sizeof(btconfig), 1);
+   if (error != 0)
+   return error;
+
+   memset(btprio, 0, sizeof btprio);
+   btprio.calib_init1 = 0x6;
+   btprio.calib_init2 = 0x7;
+   btprio.calib_periodic_low1 = 0x2;
+   btprio.calib_periodic_low2 = 0x3;
+   btprio.calib_periodic_high1 = 0x4;
+   btprio.calib_periodic_high2 = 0x5;
+   btprio.dtim = 0x6;
+   btprio.scan52 = 0x8;
+   btprio.scan24 = 0xa;
+   error = iwn_cmd(sc, IWN_CMD_BT_COEX_PRIOTABLE, btprio, sizeof(btprio),
+   1);
+   if (error != 0)
+   return error;
+
+   /* Force BT state machine change. */
+   memset(btprot, 0, sizeof btprio);
+   btprot.open = 1;
+   btprot.type = 1;
+   error = iwn_cmd(sc, IWN_CMD_BT_COEX_PROT, btprot, sizeof(btprot), 1);
+   if (error != 0)
+   return error;
+   btprot.open = 0;
+   return iwn_cmd(sc, IWN_CMD_BT_COEX_PROT, btprot, sizeof(btprot), 1);
+}
+
+static int
 iwn_config(struct iwn_softc *sc)
 {
struct iwn_ops *ops = sc-ops;
@@ -4756,7 +4816,10 @@ iwn_config(struct iwn_softc *sc)
}
 
/* Configure bluetooth coexistence. */
-   error = iwn_send_btcoex(sc);
+   if (sc-sc_flags  IWN_FLAG_ADV_BTCOEX)
+   error = iwn_send_advanced_btcoex(sc);
+   else
+   error = iwn_send_btcoex(sc);
if (error != 0) {
device_printf(sc-sc_dev,
%s: could not configure bluetooth coexistence, error %d\n,

Modified: stable/8/sys/dev/iwn/if_iwnreg.h
==
--- stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 12:10:06 2011
(r223251)
+++ stable/8/sys/dev/iwn/if_iwnreg.hSat Jun 18 12:11:48 2011
(r223252)
@@ -434,6 +434,8 @@ struct iwn_tx_cmd {
 #define IWN_CMD_SET_CRITICAL_TEMP  164
 #define IWN_CMD_SET_SENSITIVITY168
 #define IWN_CMD_PHY_CALIB  176
+#define IWN_CMD_BT_COEX_PRIOTABLE   

svn commit: r223253 - stable/8/sys/dev/iwn

2011-06-18 Thread Bernhard Schmidt
Author: bschmidt
Date: Sat Jun 18 12:13:27 2011
New Revision: 223253
URL: http://svn.freebsd.org/changeset/base/223253

Log:
  MFC r220894:
  The 6000 series gen2 adapters have 2 firmware images, one with
  advanced btcoex support and one without.

Modified:
  stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/iwn/if_iwn.c
==
--- stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:11:48 2011
(r223252)
+++ stable/8/sys/dev/iwn/if_iwn.c   Sat Jun 18 12:13:27 2011
(r223253)
@@ -816,9 +816,11 @@ iwn5000_attach(struct iwn_softc *sc, uin
break;
case IWN_HW_REV_TYPE_6005:
sc-limits = iwn6000_sensitivity_limits;
-   sc-fwname = iwn6005fw;
-   if (pid != 0x0082  pid != 0x0085)
+   if (pid != 0x0082  pid != 0x0085) {
+   sc-fwname = iwn6000g2bfw;
sc-sc_flags |= IWN_FLAG_ADV_BTCOEX;
+   } else
+   sc-fwname = iwn6000g2afw;
break;
default:
device_printf(sc-sc_dev, adapter type %d not supported\n,
___
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to svn-src-all-unsubscr...@freebsd.org


  1   2   3   4   >