Sync run(4) driver from author's site.

Submitted by:	Akinori Furukoshi
Obtained from:	git://gitorious.org/run/run.git
This commit is contained in:
thompsa 2010-05-13 00:19:03 +00:00
parent d57aea6369
commit c260948bc7
4 changed files with 966 additions and 615 deletions

View File

@ -37,54 +37,72 @@
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE # TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE. # DAMAGE.
begin 644 rt2870.fw #
M____`A`H`A`R`A!X`A)G`A)H`A*'`A*,$A*((@(620(7'P(3=P(2C3`%!B`- # This file contains two 4KB firmware, first half is RT2870 and last half
M`Q(7P2*0`8S@,.,;Y4PPX`1_0(`"?P"0$"_O\)`!C'0(\.20`:?PD`&,X##@ # is RT3071. On each 4KB firmware, 3rd last byte is major version number and
M')`!@."T`A6CX+0!$)`!A."T@0F0`8QT`?`2#<@BD`04X"#G`P(29I!P$N#U # 2nd last byte is minor version number.
M5I`$!.`2"IT0MS$0X%`1!%$1#5(1#5,1#5013E41?G`1J7$1UW(2'7,2/H`` # This file comes with
M`!)F(`(#,`,=?0*O5A(+D9`$%'2`\.20<!/PY5;T<`,"$F8"$E^%5D'2`B*0 # RT2870 v. 0.17
M<!#@5']D`F`#`A)FD'`1X&0(8`C@9"!@`P(29G5.`W5/("*0<!'@)/^21R*0 # RT3071 v. 0.17
M!`3@)>`D7?57D'`0X/]T1R57^,;OQI!P$>#_=$@E5_C&[\;D_:]6$@N1D`04 begin 644 rt2870.fw.uu
M=(#PY)!P$_#E5O1P`P(29@(27^5'9`=@"^5'9`A@!>5'M`D(D'`1X%0/]3KE M____`A`H`A`R`A!X`A,J`A,K`A-*`A-/$A-+(@(7N0(8\`(42`(3@S`%!B`-
M1[0)".4ZM`,#Y/5&Y/VO5A(+D=($(I!P$.#^D'`1X/WM^.;U5_VO5A(+D9`$ M`Q(9R"*0`8S@,.,;Y4PPX`1_0(`"?P"0$"_O\)`!C'0(\.20`:?PD`&,X##@
M%'2`\.20<!/PY5;T<`,"$F8"$E^0<!#@_I!P$>#][?6"CH/@]5?]KU82"Y&0 M')`!@."T`A6CX+0!$)`!A."T@0F0`8QT`?`2#<@BD`04X"#G`P(3*9!P$N#U
M!!1T@/#DD'`3\.56]'`#`A)F`A)?D!`"X+1P'J/@M#`9D`4(X$0!\/V0!07@ M5I`$!.`2"IT0V3$0O381`E`1.5$10E(10E,10E01@U41TE82,'`26W$2B7(2
M5/OP1`3P[53^D`4(\.3U3O5/=3K_K5>O5A(+D9`$%'2`\.20<!/PY5;T8$N` MX',3`8```!,ID'`1X/4\Y)!P$_"0!!1T@/#E5O1P`P(3*0(3(B`"`S`#'7T"
M0I!P$.`D_Y*3Y/VO5A(+D9`$%'2`\.20<!/PY5;T8"J`(9!P$.`D_Y)*T@6M MKU82"Y&0!!1T@/#DD'`3\.56]'`#`A,I`A,BA59!T@(BD'`0X%1__[\*#9!P
M5Z]6$@N1D`04=(#PY)!P$_#E5O1@!Y!P)>!$`?`B(N53<!HP8`FR33!-!`5& M$>"T"`9U3@%U3X20<!#@5'__OP(2D'`1X&0(8`3@M"`&=4X#=4\@Y/4G(I!P
MP@3E3T5.8`CE3Q5/<`(53B(BPD+3(B+"2\),Y402"IT2KP`30@03/@@3&1`2 M$>`D_Y)'(I`$!.`EX"1=]5>0<!#@_W1')5?XQN_&D'`1X/]T2"57^,;OQN3]
MPR`2XV`2]*```!-$A4A#A4I"A4Q>Y4=D!F`#`A-$@!OE2,14#_5#Y4K$5`_U MKU82"Y&0!!1T@/#DD'`3\.56]'`#`A,I`A,BY4=D!V`=Y4=D"&`7Y4=D"6`1
M0N5,Q%0/]5[E1V0&<&930P^`885)0X5+0H5-7N5'9`9P4H`;Y4G$5`_U0^5+ MY4=D"F`+Y4=D"V`%Y4>T#`B0<!'@5`_U.N5'M`D(Y3JT`P/D]4;E1[0*".4Z
MQ%0/]4+E3<14#_5>Y4=D!G`UY4-4#T00]4.`*^5'M`0&4U[[=4()Y4>T!09# MM`$#Y/5&Y/VO5A(+D=($(I!P$>#T_Y!P$.!?_Y!P$>!5)T^0<!CPD'`1X)!P
M7@1U0@GE1[0&$.5#5`]$,/5#@`;22X`"TDSD]27E0L14\/_E0U0/3_5?D'!$ M&?#D_:]6$@N1,!4$TA2`)I!P&.#U)Y`"*>#_D'`9X/[O7I`"*?`P1P2O)X`$
M\*/E7O"CY4KPH^5(\*/E3/"CY43PH^5"\*/E0_#28"+E1V`0),!P`Q(6*1(3 MY2?T_Y`"*._PY5;T<`,"$RD"$R*0<!#@_I!P$>#][?CF]5?]KU82"Y&0!!1T
MC,*OP@32KR+"KY`$%.!4#F`$TAB`".5.14\D_Y(8TJ^0!!3@HN22&70>\.5? M@/#DD'`3\.56]'`#`A,I`A,BD'`0X/Z0<!'@_>WU@HZ#X/57_:]6$@N1D`04
M5`_U+>4E<!,P&`7E7R#E"S`9&>5?5##_OS`1Y25P!74E#(`"%272;-)M@`_E M=(#PY)!P$_#E5O1P`P(3*0(3(I`0`.#U5Y`0`N#U6*/@]5GE6+1P'N59M#`9
M7S#F!L)LTFV`!-)LPFWE1V0#<"$P2P;";-)M@!CE)7`#,$P1PDSE)7`%=24' MD`4(X$0!\/V0!07@5/OP1`3P[53^D`4(\.3U3O5/=3K_=3S_K5>O5A(+D9`$
M@`(5)=)LTFWE1[0)%.5$(.,+Y3ID`F`%Y3JT`P3";-)MD'!&Y2WP(&D'Y5X@ M%'2`\.20<!/PY5;T8$N`0I!P$.`D_Y*3Y/VO5A(+D9`$%'2`\.20<!/PY5;T
MX`*R:"!K!^5>(.$"LFH@;0?E7B#B`K)LD'!'Y2WP=2Y`(&D$HFB`)C!H!N5& M8"J`(9!P$.`D_Y)*T@6M5Z]6$@N1D`04=(#PY)!P$_#E5O1@!Y!P)>!$`?`B
MHN*`'>5>(.($?P&``G\`Y494\/Z^\`1^`8`"?@#N;R3_DG.2<B!K!*)J@"8P M(N53<!HP8`FR33!-!`5&P@3E3T5.8`CE3Q5/<`(53B(BPD+3(C`4,)!P&>!5
M:@;E1J+B@!WE7B#@!'\!@`)_`.5&5/#^OO`$?@&``GX`[F\D_Y)UDG0@;02B M)_^0<!C@3_4GD`(IX/^0<!G@_N]>D`(I\#!'!*\G@`3E)_3_D`(H[_#"%"+"
M;(`F,&P&Y4:BXH`=Y5X@X01_`8`"?P#E1E3P_K[P!'X!@`)^`.YO)/^2<9)P M2\),Y402"IT3I0`4,P04+P@4#Q`3N2`3V6`3ZJ```!0UA4A#A4I"A4Q>Y4=D
MD!``X)`0+_"0$`/@PY0P0!2B<9)WHG"2=N4N$Q-4/_4NPG?2=I`0+^4N\.5' M!F`#`A0U@!OE2,14#_5#Y4K$5`_U0N5,Q%0/]5[E1V0&<&%30P^`7(5)0X5+
M9`9P3)`"*>!4_O#E0\14#Q1@%"3^8",D`V`#`A88D`(HX#!'#X`'D`(HX"!' M0H5-7N5'9`9P38`;Y4G$5`_U0^5+Q%0/]4+E3<14#_5>Y4=D!G`PY4-4#T00
M!E3^\`(6&$0!\`(6&.5&,.($?P&``G\`D`(HX%3^3_`"%ACE1V0'8`_E1V0( M]4.`)N5'9`1@!>5'M`4&0UX$=4()Y4>T!A#E0U0/1##U0X`&TDN``M),Y/4E
M8`GE1V0)8`,"%ACD]2>0`BG@5/SPY3H48"T48"X48#8D_&!?)/E@'R0.<&GE MY4+$5/#_Y4-4#T_U7])@(M(5Y4<D]6`+),M@!R1`<`;"%2(2%X02%&K"%<*O
M1A,35#]U\`.$K_`@1P1^`8`"?@#O;B3_@$6B1X!!Y48PX@/3@"?#@"3E1C#B MP@32KR+"KY`$%.!4#F`$TAB`".5.14\D_Y(8TJ^0!!3@HN22&70>\.5?5`_U
M#50XPY0P4`9^`'\!@`1^`'\`($<$?0&``GT`[VU.)/^2.*)'LY(Y@!GE1C#B M+>4E<!,P&`7E7R#E"S`9&>5?5##_OS`1Y25P!74E#(`"%272;-)M@`_E7S#F
M`].``<.2.:)'LY(X@`>B1[.2.)(YD`(HX%3\12?PD'"<Y3KPH^5'\)!P0>4Z M!L)LTFV`!-)LPFWE1V0#<"$P2P;";-)M@!CE)7`#,$P1PDSE)7`%=24'@`(5
M\"+DD`(I\#!'!*]%@`3E1?3_D`(H[_`BCU#262*/5-)8(N3U8L*OY5$48$84 M)=)LTFWE1[0)%.5$(.,+Y3ID`F`%Y3JT`P3";-)MY4>T"A/E.K0!!L)LTFV`
M8&(D`F`#`A<#TEEU50&0`J+@5'_PH^`@YR*0!#3@M`(;H^"T`A:CX+0"$7\@ M".4Z<`32;,)M(&D'Y5X@X`*R:"!K!^5>(.$"LFH@;0?E7B#B`K)L=2Y`(&D$
M$A8_D!`$X%3S\'51`8!SY5!P!75B`X!JD!(`X%0#<!%_(!(6/Y`"HN!4O_!U MHFB`)C!H!N5&HN*`'>5>(.($?P&``G\`Y494\/Z^\`1^`8`"?@#N;R3_DG.2
M40*`4>50<`*`1I`"H^`@YCN0!#?@9")P,Y`!BG1^\)`!EO"0$@1T"O"0$RC@ M<B!K!*)J@"8P:@;E1J+B@!WE7B#@!'\!@`)_`.5&5/#^OO`$?@&``GX`[F\D
M5/#PH^!4\/"CX%3Z\)`$`>!4^?!U8@%U50+D]5&`">50<`5U8@/U4>5B8!7" M_Y)UDG0@;02B;(`FY4=D"G`B,&P&Y4:BXX`7Y3JT`0;E1J+C@#3E1B#D`S#E
M`>3U4<)9K6*O0!(7C>5BM`,"T@/2KR+"KS`!$N20`9;P]5'"6<(!?0*O0!(7 M`].``<.`)C!L!N5&HN*`'>5>(.$$?P&``G\`Y494\/Z^\`1^`8`"?@#N;R3_
MC>52%&`)!'!,=5(!=54#D`0!X$0.\)`3*.!$#_"CX$0/\*/@1`7PD!($=`/P MDG&2<)`0`."0$"SPD!`#X,.4,$`4HG&2=Z)PDG;E+A,35#_U+L)WTG:0$"_E
MD`*BX$3`\)`0!.!$#/#D]5+U53`""\("?0&O01(7C8`"P@/DD`&6\-*O(N_T M+O#E1V0&<#F0`BG@5/[PY4/$5`\48`PD_F`,)`-P$\(X@`_2.(`+Y48PX@/3
M8"WD_G04+O6"Y#1P]8/@M/\9=!0N]8+D-'#U@^_P=!PN]8+D-'#U@^WP(@Z^ M@`'#DC@P1P6O)P(7?N4G]/\"%W[E1V0'8`_E1V0(8`GE1V0)8`,"%OV0`BG@
M!-4B(B*0<"K@,.%-PJ^0<"C@D!`<\)!P*>"0$!WPD'`JX)`0'O"0$!S@]6*0 M5/SPY3H48"(48"448"TD_&!))/E@%"0.<%#E1A,35#]U\`.$Y?`D_X`ZTCG"
M$![@(.'SD!`<X)!P*/"0$!W@D'`I\)`0'N"0<"KP,$H'D'`DX$0!\,(%TJ\B M.(`^Y48PX@/3@!W#@!KE1C#B#50XPY0P4`9^`'\!@`1^`'\`[D\D_Y(XPCF`
M(B(````````````````````````````````````````````````````````` M$^5&,.(#TX`!PY(YPCB`!,(XPCDP1P2O)X`$Y2?T_P(7?N5'9`Q@!N5'9`MP
M>I`"*>!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@9B0"8`,"&-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^\)`!EO"0$@1T"O#E6+1R%>59M#40Y)`%`/"C=`CPHW0!\'0#\'\!$@TJ
MD!,HX)!P&O"0$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&`
M">50<`5U8@/U4>5B8!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.\)!P&N"0
M$RCPD'`;X)`3*?#E//1@".4\1`&C\(`&D!,J=`7PD!($=`/PY5BT<A;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_T8"WD_G04+O6"Y#1P]8/@M/\9=!0N
M]8+D-'#U@^_P=!PN]8+D-'#U@^WP(@Z^!-4B(B*0<"K@,.%-PJ^0<"C@D!`<
M\)!P*>"0$!WPD'`JX)`0'O"0$!S@]6*0$![@(.'SD!`<X)!P*/"0$!W@D'`I
M\)`0'N"0<"KP,$H'D'`DX$0!\,(%TJ\B(B(`````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
@ -117,6 +135,65 @@ M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````````````!'"
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
M*?"0$![@D'`J\#!*!Y!P).!$`?#"!=*O(B(B````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
@ -128,54 +205,6 @@ M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M``````````````````````````````````````````````````````````R4
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
M(B(B````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
@ -197,29 +226,7 @@ M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````1
M```````````````````````````````````````````````````````````` "=X$`
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````````````"
"F\``
` `
end end

File diff suppressed because it is too large Load Diff

View File

@ -517,8 +517,10 @@
#define RT2860_LNA_PE_A0_POL (1 << 12) #define RT2860_LNA_PE_A0_POL (1 << 12)
#define RT2860_LNA_PE_G1_EN (1 << 11) #define RT2860_LNA_PE_G1_EN (1 << 11)
#define RT2860_LNA_PE_A1_EN (1 << 10) #define RT2860_LNA_PE_A1_EN (1 << 10)
#define RT2860_LNA_PE1_EN (RT2860_LNA_PE_A1_EN | RT2860_LNA_PE_G1_EN)
#define RT2860_LNA_PE_G0_EN (1 << 9) #define RT2860_LNA_PE_G0_EN (1 << 9)
#define RT2860_LNA_PE_A0_EN (1 << 8) #define RT2860_LNA_PE_A0_EN (1 << 8)
#define RT2860_LNA_PE0_EN (RT2860_LNA_PE_A0_EN | RT2860_LNA_PE_G0_EN)
#define RT2860_PA_PE_G1_POL (1 << 7) #define RT2860_PA_PE_G1_POL (1 << 7)
#define RT2860_PA_PE_A1_POL (1 << 6) #define RT2860_PA_PE_A1_POL (1 << 6)
#define RT2860_PA_PE_G0_POL (1 << 5) #define RT2860_PA_PE_G0_POL (1 << 5)
@ -896,7 +898,7 @@ struct rt2860_rxwi {
#define RT2860_RIDX_CCK1 0 #define RT2860_RIDX_CCK1 0
#define RT2860_RIDX_CCK11 3 #define RT2860_RIDX_CCK11 3
#define RT2860_RIDX_OFDM6 4 #define RT2860_RIDX_OFDM6 4
#define RT2860_RIDX_MAX 11 #define RT2860_RIDX_MAX 12
static const struct rt2860_rate { static const struct rt2860_rate {
uint8_t rate; uint8_t rate;
uint8_t mcs; uint8_t mcs;
@ -1097,24 +1099,6 @@ static const struct rt2860_rate {
{ 171, 0x100bb1, 0x1300f5, 0x05e014, 0x001401 }, \ { 171, 0x100bb1, 0x1300f5, 0x05e014, 0x001401 }, \
{ 173, 0x100bb1, 0x1300f5, 0x05e014, 0x001403 } { 173, 0x100bb1, 0x1300f5, 0x05e014, 0x001403 }
#if 0
#define RT3070_RF3020 \
{ 241, 2, 2 }, \
{ 241, 2, 7 }, \
{ 242, 2, 2 }, \
{ 242, 2, 7 }, \
{ 243, 2, 2 }, \
{ 243, 2, 7 }, \
{ 244, 2, 2 }, \
{ 244, 2, 7 }, \
{ 245, 2, 2 }, \
{ 245, 2, 7 }, \
{ 246, 2, 2 }, \
{ 246, 2, 7 }, \
{ 247, 2, 2 }, \
{ 248, 2, 4 }
#endif
#define RT3070_RF3052 \ #define RT3070_RF3052 \
{ 0xf1, 2, 2 }, \ { 0xf1, 2, 2 }, \
{ 0xf1, 2, 7 }, \ { 0xf1, 2, 7 }, \

View File

@ -44,16 +44,18 @@
#define RUN_TX_RING_COUNT 32 #define RUN_TX_RING_COUNT 32
#define RUN_RX_RING_COUNT 1 #define RUN_RX_RING_COUNT 1
#define RT2870_WCID_MAX 253 #define RT2870_WCID_MAX 64
#define RUN_AID2WCID(aid) ((aid) & 0xff) #define RUN_AID2WCID(aid) ((aid) & 0xff)
#define RUN_VAP_MAX 8
struct run_rx_radiotap_header { struct run_rx_radiotap_header {
struct ieee80211_radiotap_header wr_ihdr; struct ieee80211_radiotap_header wr_ihdr;
uint8_t wr_flags; uint8_t wr_flags;
uint8_t wr_rate; uint8_t wr_rate;
uint16_t wr_chan_freq; uint16_t wr_chan_freq;
uint16_t wr_chan_flags; uint16_t wr_chan_flags;
uint8_t wr_dbm_antsignal; int8_t wr_dbm_antsignal;
uint8_t wr_antenna; uint8_t wr_antenna;
uint8_t wr_antsignal; uint8_t wr_antsignal;
} __packed; } __packed;
@ -93,8 +95,7 @@ struct run_tx_data {
uint32_t align[0]; /* dummy field */ uint32_t align[0]; /* dummy field */
uint8_t desc[sizeof(struct rt2870_txd) + uint8_t desc[sizeof(struct rt2870_txd) +
sizeof(struct rt2860_txwi)]; sizeof(struct rt2860_txwi)];
int ridx; uint8_t ridx;
uint8_t mcs;
}; };
STAILQ_HEAD(run_tx_data_head, run_tx_data); STAILQ_HEAD(run_tx_data_head, run_tx_data);
@ -102,19 +103,29 @@ struct run_node {
struct ieee80211_node ni; struct ieee80211_node ni;
uint8_t ridx[IEEE80211_RATE_MAXSIZE]; uint8_t ridx[IEEE80211_RATE_MAXSIZE];
uint8_t ctl_ridx[IEEE80211_RATE_MAXSIZE]; uint8_t ctl_ridx[IEEE80211_RATE_MAXSIZE];
uint8_t amrr_ridx;
uint8_t mgt_ridx;
uint8_t fix_ridx;
};
struct run_cmdq {
void *arg0;
void *arg1;
void (*func)(void *);
struct ieee80211_key *k;
struct ieee80211_key key;
uint8_t mac[IEEE80211_ADDR_LEN];
uint8_t wcid;
}; };
struct run_vap { struct run_vap {
struct ieee80211vap vap; struct ieee80211vap vap;
struct ieee80211_beacon_offsets bo; struct ieee80211_beacon_offsets bo;
struct usb_callout ratectl_ch;
struct task ratectl_task;
uint8_t ratectl_run;
#define RUN_RATECTL_ON 1
#define RUN_RATECTL_OFF 0
int (*newstate)(struct ieee80211vap *, int (*newstate)(struct ieee80211vap *,
enum ieee80211_state, int); enum ieee80211_state, int);
uint8_t rvp_id;
}; };
#define RUN_VAP(vap) ((struct run_vap *)(vap)) #define RUN_VAP(vap) ((struct run_vap *)(vap))
@ -148,7 +159,7 @@ struct run_softc {
device_t sc_dev; device_t sc_dev;
struct usb_device *sc_udev; struct usb_device *sc_udev;
struct ifnet *sc_ifp; struct ifnet *sc_ifp;
struct run_vap *sc_rvp; struct ieee80211_node *sc_ni[RT2870_WCID_MAX + 1];
int (*sc_srom_read)(struct run_softc *, int (*sc_srom_read)(struct run_softc *,
uint16_t, uint16_t *); uint16_t, uint16_t *);
@ -159,7 +170,6 @@ struct run_softc {
uint8_t freq; uint8_t freq;
uint8_t ntxchains; uint8_t ntxchains;
uint8_t nrxchains; uint8_t nrxchains;
int fixed_ridx;
uint8_t bbp25; uint8_t bbp25;
uint8_t bbp26; uint8_t bbp26;
@ -182,7 +192,7 @@ struct run_softc {
struct { struct {
uint8_t reg; uint8_t reg;
uint8_t val; uint8_t val;
} bbp[8], rf[10]; } bbp[10], rf[10];
uint8_t leds; uint8_t leds;
uint16_t led[3]; uint16_t led[3];
uint32_t txpow20mhz[5]; uint32_t txpow20mhz[5];
@ -195,13 +205,36 @@ struct run_softc {
struct run_endpoint_queue sc_epq[RUN_EP_QUEUES]; struct run_endpoint_queue sc_epq[RUN_EP_QUEUES];
struct task wme_task; struct task ratectl_task;
struct task usb_timeout_task; struct usb_callout ratectl_ch;
uint8_t ratectl_run;
#define RUN_RATECTL_OFF 0
/* need to be power of 2, otherwise RUN_CMDQ_GET fails */
#define RUN_CMDQ_MAX 16
#define RUN_CMDQ_MASQ (RUN_CMDQ_MAX - 1)
struct run_cmdq cmdq[RUN_CMDQ_MAX];
struct task cmdq_task;
uint32_t cmdq_store;
uint8_t cmdq_exec;
uint8_t cmdq_run;
#define RUN_CMDQ_ABORT 0
#define RUN_CMDQ_GO 1
struct usb_xfer *sc_xfer[RUN_N_XFER]; struct usb_xfer *sc_xfer[RUN_N_XFER];
struct mbuf *rx_m; struct mbuf *rx_m;
uint8_t fifo_cnt;
uint8_t running;
uint8_t runbmap;
uint8_t ap_running;
uint8_t adhoc_running;
uint8_t sta_running;
uint8_t rvp_cnt;
uint8_t rvp_bmap;
union { union {
struct run_rx_radiotap_header th; struct run_rx_radiotap_header th;
uint8_t pad[64]; uint8_t pad[64];