diff options
Diffstat (limited to 'target/linux/realtek/files/net/rtl/fastpath/96E/fast_l2tp_core.S')
-rw-r--r-- | target/linux/realtek/files/net/rtl/fastpath/96E/fast_l2tp_core.S | 1440 |
1 files changed, 1440 insertions, 0 deletions
diff --git a/target/linux/realtek/files/net/rtl/fastpath/96E/fast_l2tp_core.S b/target/linux/realtek/files/net/rtl/fastpath/96E/fast_l2tp_core.S new file mode 100644 index 000000000..21c80624d --- /dev/null +++ b/target/linux/realtek/files/net/rtl/fastpath/96E/fast_l2tp_core.S @@ -0,0 +1,1440 @@ + .file 1 "fast_l2tp_core.c" + .section .mdebug.abi32 + .previous +#APP + .macro _ssnop; sll $0, $0, 1; .endm + .macro _ehb; sll $0, $0, 3; .endm + .macro mtc0_tlbw_hazard; nop; nop; .endm + .macro tlbw_use_hazard; nop; nop; nop; .endm + .macro tlb_probe_hazard; nop; nop; nop; .endm + .macro irq_enable_hazard; _ssnop; _ssnop; _ssnop;; .endm + .macro irq_disable_hazard; nop; nop; nop; .endm + .macro back_to_back_c0_hazard; _ssnop; _ssnop; _ssnop;; .endm + .macro raw_local_irq_enable + .set push + .set reorder + .set noat + mfc0 $1,$12 + ori $1,0x1f + xori $1,0x1e + mtc0 $1,$12 + irq_enable_hazard + .set pop + .endm + .macro raw_local_irq_disable + .set push + .set noat + mfc0 $1,$12 + ori $1,0x1f + xori $1,0x1f + .set noreorder + mtc0 $1,$12 + irq_disable_hazard + .set pop + .endm + + .macro raw_local_save_flags flags + .set push + .set reorder + mfc0 \flags, $12 + .set pop + .endm + + .macro raw_local_irq_save result + .set push + .set reorder + .set noat + mfc0 \result, $12 + ori $1, \result, 0x1f + xori $1, 0x1f + .set noreorder + mtc0 $1, $12 + irq_disable_hazard + .set pop + .endm + + .macro raw_local_irq_restore flags + .set push + .set noreorder + .set noat + mfc0 $1, $12 + andi \flags, 1 + ori $1, 0x1f + xori $1, 0x1f + or \flags, $1 + mtc0 \flags, $12 + irq_disable_hazard + .set pop + .endm + +#NO_APP + .data + .align 2 + .type res1, @object + .size res1, 4 +res1: + .word 0 + .align 2 + .type l2tpInfo, @object + .size l2tpInfo, 40 +l2tpInfo: + .word 0 + .space 36 + .section .text.is_l2tp_device,"ax",@progbits + .align 2 + .globl is_l2tp_device + .ent is_l2tp_device + .type is_l2tp_device, @function +is_l2tp_device: + .set nomips16 + .frame $sp,24,$31 # vars= 0, regs= 2/0, args= 16, gp= 0 + .mask 0x80010000,-4 + .fmask 0x00000000,0 + addiu $sp,$sp,-24 + sw $16,16($sp) + sw $31,20($sp) + lui $2,%hi(l2tpInfo+4) + lw $2,%lo(l2tpInfo+4)($2) + move $16,$4 + .set noreorder + .set nomacro + beq $2,$0,$L2 + move $4,$2 + .set macro + .set reorder + + jal rtl_get_ppp_dev_name +#APP + .set noreorder + .set noat + lbu $3,($2) +1: lbu $1,($16) + addiu $2,1 + bne $1,$3,2f + addiu $16,1 + bnez $3,1b + lbu $3,($2) + nop + move $3,$1 +2: subu $3,$1 +3: .set at + .set reorder +#NO_APP + .set noreorder + .set nomacro + beq $3,$0,$L1 + li $2,1 # 0x1 + .set macro + .set reorder + +$L2: + move $2,$0 +$L1: + lw $31,20($sp) + lw $16,16($sp) + .set noreorder + .set nomacro + j $31 + addiu $sp,$sp,24 + .set macro + .set reorder + + .end is_l2tp_device + .section .text.set_l2tp_device,"ax",@progbits + .align 2 + .globl set_l2tp_device + .ent set_l2tp_device + .type set_l2tp_device, @function +set_l2tp_device: + .set nomips16 + .frame $sp,24,$31 # vars= 0, regs= 1/0, args= 16, gp= 0 + .mask 0x80000000,-8 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + + addiu $sp,$sp,-24 + sw $31,16($sp) + lui $2,%hi(fast_l2tp_fw) + lw $2,%lo(fast_l2tp_fw)($2) + nop + beq $2,$0,$L4 + nop + + jal rtl_get_dev_by_name + nop + + lui $3,%hi(l2tpInfo) + addiu $3,$3,%lo(l2tpInfo) + sw $2,4($3) +$L4: + lw $31,16($sp) + nop + j $31 + addiu $sp,$sp,24 + + .set macro + .set reorder + .end set_l2tp_device + .section .text.event_ppp_dev_down,"ax",@progbits + .align 2 + .globl event_ppp_dev_down + .ent event_ppp_dev_down + .type event_ppp_dev_down, @function +event_ppp_dev_down: + .set nomips16 + .frame $sp,32,$31 # vars= 0, regs= 3/0, args= 16, gp= 0 + .mask 0x80030000,-8 + .fmask 0x00000000,0 + addiu $sp,$sp,-32 + lui $2,%hi(l2tpInfo) + sw $17,20($sp) + addiu $17,$2,%lo(l2tpInfo) + lhu $2,38($17) + sw $16,16($sp) + sw $31,24($sp) + .set noreorder + .set nomacro + beq $2,$0,$L6 + move $16,$4 + .set macro + .set reorder + + lw $2,4($17) + #nop + .set noreorder + .set nomacro + beq $2,$0,$L6 + move $4,$2 + .set macro + .set reorder + + jal rtl_get_ppp_dev_name +#APP + .set noreorder + .set noat + lbu $3,($2) +1: lbu $1,($16) + addiu $2,1 + bne $1,$3,2f + addiu $16,1 + bnez $3,1b + lbu $3,($2) + nop + move $3,$1 +2: subu $3,$1 +3: .set at + .set reorder +#NO_APP + move $5,$0 + move $4,$17 + .set noreorder + .set nomacro + bne $3,$0,$L6 + li $6,40 # 0x28 + .set macro + .set reorder + + jal memset + lui $2,%hi(state) + sw $0,%lo(state)($2) +$L6: + lw $31,24($sp) + lw $17,20($sp) + lw $16,16($sp) + .set noreorder + .set nomacro + j $31 + addiu $sp,$sp,32 + .set macro + .set reorder + + .end event_ppp_dev_down + .rdata + .align 2 +$LC0: + .ascii "ppp0\000" + .align 2 +$LC1: + .ascii "eth1\000" + .section .text.l2tp_tx_id,"ax",@progbits + .align 2 + .globl l2tp_tx_id + .ent l2tp_tx_id + .type l2tp_tx_id, @function +l2tp_tx_id: + .set nomips16 + .frame $sp,48,$31 # vars= 0, regs= 7/0, args= 16, gp= 0 + .mask 0x803f0000,-8 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + + addiu $sp,$sp,-48 + sw $20,32($sp) + move $20,$4 + sw $31,40($sp) + sw $19,28($sp) + sw $18,24($sp) + sw $21,36($sp) + sw $17,20($sp) + jal rtl_get_skb_data + sw $16,16($sp) + + move $4,$20 + jal rtl_ip_hdr + move $18,$2 + + move $19,$2 + lbu $2,0($2) + nop + andi $2,$2,0xf + sll $2,$2,2 + addu $4,$19,$2 + lhu $6,0($4) + li $2,1701 # 0x6a5 + andi $3,$6,0xffff + bne $3,$2,$L26 + addiu $5,$4,8 + + lhu $2,2($4) + nop + bne $2,$3,$L26 + li $2,1701 # 0x6a5 + + lhu $3,8($4) + nop + sll $2,$3,16 + sra $2,$2,16 + bgez $2,$L11 + addiu $2,$4,12 + + andi $3,$3,0x4000 + addiu $17,$4,10 + movn $17,$2,$3 #RLX4181/RLX4281:conditional move + lhu $16,14($17) + li $2,4 # 0x4 + bne $16,$2,$L27 + li $2,11 # 0xb + + lui $2,%hi(l2tpInfo) + addiu $4,$2,%lo(l2tpInfo) + lhu $3,20($4) + lhu $2,0($17) + nop + bne $3,$2,$L27 + li $2,11 # 0xb + + move $5,$0 + jal memset + li $6,40 # 0x28 + + lui $4,%hi($LC0) + addiu $4,$4,%lo($LC0) + jal rtl865x_setNetifType + li $5,2 # 0x2 + + lui $2,%hi(state) + sw $0,%lo(state)($2) + li $2,11 # 0xb +$L27: + bne $16,$2,$L28 + li $2,12 # 0xc + + lui $21,%hi(state) + lw $2,%lo(state)($21) + nop + bne $2,$0,$L28 + li $2,12 # 0xc + + jal rtl_get_skb_dev_name + move $4,$20 + + lui $5,%hi($LC1) + move $4,$2 + addiu $5,$5,%lo($LC1) + jal memcmp + li $6,4 # 0x4 + + bne $2,$0,$L28 + li $2,12 # 0xc + + jal rtl_get_skb_dev + move $4,$20 + + lui $4,%hi(l2tpInfo+24) + lui $3,%hi(l2tpInfo) + addiu $4,$4,%lo(l2tpInfo+24) + addiu $5,$18,-8 + li $6,6 # 0x6 + jal memcpy + sw $2,%lo(l2tpInfo)($3) + + lui $4,%hi(l2tpInfo+30) + addiu $4,$4,%lo(l2tpInfo+30) + addiu $5,$18,-14 + jal memcpy + li $6,6 # 0x6 + + lui $4,%hi(l2tpInfo+36) + addiu $4,$4,%lo(l2tpInfo+36) + addiu $5,$18,-2 + jal memcpy + li $6,2 # 0x2 + + li $2,1 # 0x1 + sw $2,%lo(state)($21) + li $2,12 # 0xc +$L28: + bne $16,$2,$L10 + nop + + lhu $2,2($17) + nop + beq $2,$0,$L10 + lui $18,%hi(state) + + lw $2,%lo(state)($18) + nop + sltu $2,$2,2 + beq $2,$0,$L10 + lui $16,%hi(l2tpInfo) + + lhu $2,0($17) + addiu $16,$16,%lo(l2tpInfo) + sh $2,20($16) + lhu $2,2($17) + nop + sh $2,22($16) + lw $2,12($19) + nop + sw $2,16($16) + lw $2,16($19) + nop + move $4,$2 + jal filter_addconnect + sw $2,12($16) + + li $2,1 + lui $4,%hi($LC0) + addiu $4,$4,%lo($LC0) + li $5,4 # 0x4 + jal rtl865x_setNetifType + sh $2,38($16) + + li $2,2 # 0x2 + j $L10 + sw $2,%lo(state)($18) + +$L11: + andi $3,$6,0xffff + li $2,1701 # 0x6a5 +$L26: + bne $3,$2,$L10 + nop + + lhu $2,2($4) + nop + bne $2,$3,$L10 + addiu $3,$5,4 + + lhu $2,0($5) + addiu $17,$5,2 + andi $2,$2,0x4000 + movn $17,$3,$2 #RLX4181/RLX4281:conditional move + lhu $3,6($17) + li $2,49185 # 0xc021 + bne $3,$2,$L10 + addiu $4,$17,6 + + lbu $3,2($4) + li $2,6 # 0x6 + bne $3,$2,$L10 + lui $2,%hi(l2tpInfo) + + addiu $4,$2,%lo(l2tpInfo) + lhu $3,20($4) + lhu $2,0($17) + nop + bne $3,$2,$L10 + nop + + lhu $3,2($17) + lhu $2,22($4) + nop + bne $2,$3,$L10 + move $5,$0 + + jal memset + li $6,40 # 0x28 + + lui $2,%hi(state) + sw $0,%lo(state)($2) +$L10: + lw $31,40($sp) + lw $21,36($sp) + lw $20,32($sp) + lw $19,28($sp) + lw $18,24($sp) + lw $17,20($sp) + lw $16,16($sp) + j $31 + addiu $sp,$sp,48 + + .set macro + .set reorder + .end l2tp_tx_id + .section .text.fast_l2tp_rx,"ax",@progbits + .align 2 + .globl fast_l2tp_rx + .ent fast_l2tp_rx + .type fast_l2tp_rx, @function +fast_l2tp_rx: + .set nomips16 + .frame $sp,48,$31 # vars= 0, regs= 8/0, args= 16, gp= 0 + .mask 0x807f0000,-4 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + + addiu $sp,$sp,-48 + sw $31,44($sp) + sw $22,40($sp) + sw $20,32($sp) + sw $17,20($sp) + sw $16,16($sp) + move $17,$4 + sw $21,36($sp) + sw $19,28($sp) + jal rtl_ip_hdr + sw $18,24($sp) + + move $20,$2 + lbu $2,0($2) + move $4,$17 + andi $2,$2,0xf + sll $2,$2,2 + jal rtl_get_skb_data + addu $16,$20,$2 + + move $4,$17 + jal rtl_get_skb_len + move $22,$2 + + sltu $2,$2,40 + bne $2,$0,$L30 + li $2,1701 # 0x6a5 + + lhu $3,0($16) + nop + bne $3,$2,$L30 + nop + + lhu $2,2($16) + nop + bne $2,$3,$L30 + lui $21,%hi(l2tpInfo) + + lw $2,%lo(l2tpInfo)($21) + nop + bne $2,$0,$L33 + nop + + jal l2tp_tx_id + move $4,$17 + +$L33: + lbu $2,28($22) + addiu $19,$21,%lo(l2tpInfo) + lhu $4,20($19) + srl $3,$2,5 + andi $18,$3,0x2 + andi $2,$2,0x2 + beq $4,$0,$L30 + addu $18,$18,$2 + + lhu $2,22($19) + nop + beq $2,$0,$L30 + addu $16,$22,$18 + + lbu $2,36($16) + nop + bne $2,$0,$L30 + li $2,33 # 0x21 + + lbu $3,37($16) + nop + bne $3,$2,$L30 + nop + + lw $2,%lo(l2tpInfo)($21) + nop + beq $2,$0,$L30 + nop + + lw $3,16($20) + lw $2,16($19) + nop + bne $2,$3,$L30 + nop + + lw $2,4($19) + nop + bne $2,$0,$L37 + nop + + lui $4,%hi($LC0) + jal rtl_get_dev_by_name + addiu $4,$4,%lo($LC0) + + sw $2,4($19) +$L37: + lw $5,4($19) + nop + beq $5,$0,$L30 + li $2,6 # 0x6 + + lbu $3,47($16) + nop + beq $3,$2,$L40 + li $2,17 # 0x11 + + bne $3,$2,$L30 + nop + +$L40: + jal rtl_set_skb_dev + move $4,$17 + + addiu $5,$18,38 + jal skb_pull + move $4,$17 + + jal rtl_skb_reset_network_header + move $4,$17 + + jal rtl_skb_reset_transport_header + move $4,$17 + + lw $4,4($19) + nop + beq $4,$0,$L30 + nop + + jal rtl_get_ppp_dev_priv + nop + + beq $2,$0,$L30 + nop + + lw $4,4($19) + jal rtl_get_ppp_dev_priv + nop + + move $4,$17 + jal rtl_get_skb_len + move $16,$2 + + move $6,$2 + move $4,$16 + lw $31,44($sp) + lw $22,40($sp) + lw $21,36($sp) + lw $20,32($sp) + lw $19,28($sp) + lw $18,24($sp) + lw $17,20($sp) + lw $16,16($sp) + move $5,$0 + j rtl_inc_ppp_stats + addiu $sp,$sp,48 + +$L30: + lw $31,44($sp) + lw $22,40($sp) + lw $21,36($sp) + lw $20,32($sp) + lw $19,28($sp) + lw $18,24($sp) + lw $17,20($sp) + lw $16,16($sp) + j $31 + addiu $sp,$sp,48 + + .set macro + .set reorder + .end fast_l2tp_rx + .section .text.get_fast_l2tp_lastxmit,"ax",@progbits + .align 2 + .globl get_fast_l2tp_lastxmit + .ent get_fast_l2tp_lastxmit + .type get_fast_l2tp_lastxmit, @function +get_fast_l2tp_lastxmit: + .set nomips16 + .frame $sp,0,$31 # vars= 0, regs= 0/0, args= 0, gp= 0 + .mask 0x00000000,0 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + + lui $2,%hi(l2tpInfo) + addiu $5,$2,%lo(l2tpInfo) + lhu $3,38($5) + li $2,1 # 0x1 + bne $3,$2,$L42 + move $4,$0 + + lw $4,8($5) +$L42: + j $31 + move $2,$4 + + .set macro + .set reorder + .end get_fast_l2tp_lastxmit + .section .text.check_for_fast_l2tp_to_wan,"ax",@progbits + .align 2 + .globl check_for_fast_l2tp_to_wan + .ent check_for_fast_l2tp_to_wan + .type check_for_fast_l2tp_to_wan, @function +check_for_fast_l2tp_to_wan: + .set nomips16 + .frame $sp,24,$31 # vars= 0, regs= 2/0, args= 16, gp= 0 + .mask 0x80010000,-4 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + + addiu $sp,$sp,-24 + sw $16,16($sp) + sw $31,20($sp) + jal rtl_ip_hdr + move $16,$4 + + lbu $3,9($2) + li $2,1 # 0x1 + move $4,$16 + beq $3,$2,$L44 + move $5,$0 + + jal rtl_ip_hdr + nop + + lw $2,12($2) + li $3,-256 # 0xffffffffffffff00 + and $2,$2,$3 + li $3,171966464 # 0xa400000 + ori $3,$3,0x4000 + xor $2,$2,$3 + sltu $5,$0,$2 +$L44: + lw $31,20($sp) + lw $16,16($sp) + move $2,$5 + j $31 + addiu $sp,$sp,24 + + .set macro + .set reorder + .end check_for_fast_l2tp_to_wan + .rdata + .align 2 + .type __func__.0, @object + .size __func__.0, 17 +__func__.0: + .ascii "fast_l2tp_to_wan\000" + .section .text.fast_l2tp_to_wan,"ax",@progbits + .align 2 + .globl fast_l2tp_to_wan + .ent fast_l2tp_to_wan + .type fast_l2tp_to_wan, @function +fast_l2tp_to_wan: + .set nomips16 + .frame $sp,88,$31 # vars= 48, regs= 6/0, args= 16, gp= 0 + .mask 0x801f0000,-4 + .fmask 0x00000000,0 + addiu $sp,$sp,-88 + sw $17,68($sp) + sw $31,84($sp) + sw $20,80($sp) + sw $19,76($sp) + sw $18,72($sp) + sw $16,64($sp) + lui $2,%hi(fast_l2tp_fw) + lw $2,%lo(fast_l2tp_fw)($2) + #nop + .set noreorder + .set nomacro + beq $2,$0,$L49 + move $17,$4 + .set macro + .set reorder + + lui $19,%hi(l2tpInfo) + addiu $3,$19,%lo(l2tpInfo) + lhu $2,20($3) + #nop + .set noreorder + .set nomacro + beq $2,$0,$L47 + move $5,$0 + .set macro + .set reorder + + lhu $2,22($3) + #nop + beq $2,$0,$L47 + lw $2,%lo(l2tpInfo)($19) + #nop + .set noreorder + .set nomacro + bne $2,$0,$L48 + li $2,1 # 0x1 + .set macro + .set reorder + +$L49: + .set noreorder + .set nomacro + j $L47 + move $5,$0 + .set macro + .set reorder + +$L48: + lhu $3,38($3) + #nop + .set noreorder + .set nomacro + bne $3,$2,$L47 + move $5,$0 + .set macro + .set reorder + + jal rtl_ip_hdr + move $4,$17 + lhu $20,2($2) + .set noreorder + .set nomacro + jal rtl_skb_headroom + move $18,$2 + .set macro + .set reorder + + sltu $2,$2,52 + .set noreorder + .set nomacro + bne $2,$0,$L65 + li $5,52 # 0x34 + .set macro + .set reorder + + .set noreorder + .set nomacro + jal rtl_skb_cloned + move $4,$17 + .set macro + .set reorder + + .set noreorder + .set nomacro + bne $2,$0,$L65 + li $5,52 # 0x34 + .set macro + .set reorder + + .set noreorder + .set nomacro + jal rtl_skb_shared + move $4,$17 + .set macro + .set reorder + + .set noreorder + .set nomacro + beq $2,$0,$L66 + move $4,$17 + .set macro + .set reorder + + li $5,52 # 0x34 +$L65: + .set noreorder + .set nomacro + jal skb_realloc_headroom + move $4,$17 + .set macro + .set reorder + + move $16,$2 + .set noreorder + .set nomacro + beq $2,$0,$L47 + move $5,$0 + .set macro + .set reorder + + .set noreorder + .set nomacro + jal consume_skb + move $4,$17 + .set macro + .set reorder + + move $17,$16 + move $4,$17 +$L66: + lbu $16,1($18) + .set noreorder + .set nomacro + jal skb_push + li $5,52 # 0x34 + .set macro + .set reorder + + lui $5,%hi(l2tpInfo+24) + move $4,$2 + addiu $5,$5,%lo(l2tpInfo+24) + .set noreorder + .set nomacro + jal memcpy + li $6,14 # 0xe + .set macro + .set reorder + + lw $3,16($sp) + li $2,268369920 # 0xfff0000 + ori $2,$2,0xffff + and $3,$3,$2 + li $2,1073741824 # 0x40000000 + or $3,$3,$2 + li $2,-251723776 # 0xfffffffff0ff0000 + ori $2,$2,0xffff + addiu $4,$19,%lo(l2tpInfo) + and $3,$3,$2 + li $2,83886080 # 0x5000000 + lw $7,16($4) + lw $6,12($4) + or $3,$3,$2 + li $2,16384 + sh $2,22($sp) + li $2,17 + move $5,$0 + move $4,$17 + sb $2,25($sp) + li $2,64 + sw $3,16($sp) + sw $6,32($sp) + sw $7,28($sp) + sb $2,24($sp) + .set noreorder + .set nomacro + jal rtl_set_skb_ip_summed + sb $16,17($sp) + .set macro + .set reorder + + .set noreorder + .set nomacro + jal rtl_get_skb_len + move $4,$17 + .set macro + .set reorder + + addiu $2,$2,-14 + sh $2,18($sp) + sh $0,20($sp) + lw $3,20($sp) + lw $2,16($sp) + sh $0,26($sp) + lw $4,24($sp) + addu $5,$2,$3 + sltu $6,$5,$3 + addu $5,$5,$6 + addu $5,$5,$4 + lw $3,28($sp) + sltu $6,$5,$4 + addu $5,$5,$6 + addu $5,$5,$3 + srl $2,$2,22 + sltu $6,$5,$3 + andi $2,$2,0x3c + addiu $7,$sp,16 + addu $5,$5,$6 + addu $4,$7,$2 + addiu $3,$sp,32 +$L55: + lw $2,0($3) + addiu $3,$3,4 + addu $5,$5,$2 + sltu $6,$5,$2 + .set noreorder + .set nomacro + bne $3,$4,$L55 + addu $5,$5,$6 + .set macro + .set reorder + +#APP + .set push # csum_fold + .set noat + sll $1, $5, 16 + addu $5, $1 + sltu $1, $5, $1 + srl $5, $5, 16 + addu $5, $1 + xori $5, 0xffff + .set pop +#NO_APP + move $4,$17 + .set noreorder + .set nomacro + jal rtl_get_skb_data + sh $5,10($7) + .set macro + .set reorder + + addiu $4,$2,14 + addiu $5,$sp,16 + .set noreorder + .set nomacro + jal memcpy + li $6,20 # 0x14 + .set macro + .set reorder + + addiu $16,$19,%lo(l2tpInfo) + addiu $2,$20,18 + lhu $5,20($16) + lhu $6,22($16) + sh $2,44($sp) + li $2,2 + sh $2,48($sp) + li $2,-253 + li $3,1701 + move $4,$17 + sh $2,54($sp) + li $2,33 + sh $3,42($sp) + sh $3,40($sp) + sh $5,50($sp) + sh $6,52($sp) + sh $2,56($sp) + .set noreorder + .set nomacro + jal rtl_get_skb_data + sh $0,46($sp) + .set macro + .set reorder + + addiu $4,$2,34 + li $6,18 # 0x12 + .set noreorder + .set nomacro + jal memcpy + addiu $5,$sp,40 + .set macro + .set reorder + + lw $5,%lo(l2tpInfo)($19) + .set noreorder + .set nomacro + jal rtl_set_skb_dev + move $4,$17 + .set macro + .set reorder + + .set noreorder + .set nomacro + jal rtl_get_skb_data + move $4,$17 + .set macro + .set reorder + + .set noreorder + .set nomacro + jal timeoutCheck_skipp_pkt + addiu $4,$2,52 + .set macro + .set reorder + + li $3,1 # 0x1 + .set noreorder + .set nomacro + beq $2,$3,$L60 + lui $2,%hi(jiffies) + .set macro + .set reorder + + lw $2,%lo(jiffies)($2) + #nop + sw $2,8($16) +$L60: + lw $4,4($16) + #nop + .set noreorder + .set nomacro + beq $4,$0,$L67 + lui $2,%hi(gQosEnabled) + .set macro + .set reorder + + jal rtl_get_ppp_dev_priv + .set noreorder + .set nomacro + beq $2,$0,$L67 + lui $2,%hi(gQosEnabled) + .set macro + .set reorder + + lw $4,4($16) + jal rtl_get_ppp_dev_priv + move $4,$17 + .set noreorder + .set nomacro + jal rtl_get_skb_len + move $16,$2 + .set macro + .set reorder + + move $6,$2 + move $4,$16 + .set noreorder + .set nomacro + jal rtl_inc_ppp_stats + li $5,1 # 0x1 + .set macro + .set reorder + + lui $2,%hi(gQosEnabled) +$L67: + lw $2,%lo(gQosEnabled)($2) + #nop + beq $2,$0,$L62 + .set noreorder + .set nomacro + jal dev_queue_xmit + move $4,$17 + .set macro + .set reorder + + .set noreorder + .set nomacro + j $L47 + li $5,1 # 0x1 + .set macro + .set reorder + +$L62: + .set noreorder + .set nomacro + jal rtl_call_skb_ndo_start_xmit + move $4,$17 + .set macro + .set reorder + + li $5,1 # 0x1 +$L47: + lw $31,84($sp) + lw $20,80($sp) + lw $19,76($sp) + lw $18,72($sp) + lw $17,68($sp) + lw $16,64($sp) + move $2,$5 + .set noreorder + .set nomacro + j $31 + addiu $sp,$sp,88 + .set macro + .set reorder + + .end fast_l2tp_to_wan + .rdata + .align 2 +$LC3: + .ascii "%c\n\000" + .section .text.l2tp_read_proc,"ax",@progbits + .align 2 + .ent l2tp_read_proc + .type l2tp_read_proc, @function +l2tp_read_proc: + .set nomips16 + .frame $sp,40,$31 # vars= 0, regs= 5/0, args= 16, gp= 0 + .mask 0x800f0000,-8 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + + addiu $sp,$sp,-40 + sw $19,28($sp) + sw $18,24($sp) + sw $17,20($sp) + sw $16,16($sp) + sw $31,32($sp) + lui $2,%hi(fast_l2tp_fw) + lw $2,%lo(fast_l2tp_fw)($2) + move $19,$5 + lui $5,%hi($LC3) + move $17,$6 + addiu $5,$5,%lo($LC3) + addiu $6,$2,48 + move $16,$7 + jal sprintf + move $18,$4 + + subu $4,$2,$17 + addu $3,$17,$16 + slt $3,$3,$2 + slt $2,$16,$4 + movn $4,$16,$2 #RLX4181/RLX4281:conditional move + addu $18,$18,$17 + bne $3,$0,$L69 + slt $5,$4,0 + + lw $2,56($sp) + li $3,1 # 0x1 + sw $3,0($2) +$L69: + sw $18,0($19) + lw $31,32($sp) + lw $19,28($sp) + lw $18,24($sp) + lw $17,20($sp) + lw $16,16($sp) + move $2,$0 + movz $2,$4,$5 #RLX4181/RLX4281:conditional move + j $31 + addiu $sp,$sp,40 + + .set macro + .set reorder + .end l2tp_read_proc + .section .text.l2tp_write_proc,"ax",@progbits + .align 2 + .ent l2tp_write_proc + .type l2tp_write_proc, @function +l2tp_write_proc: + .set nomips16 + .frame $sp,32,$31 # vars= 8, regs= 2/0, args= 16, gp= 0 + .mask 0x80010000,-4 + .fmask 0x00000000,0 + addiu $sp,$sp,-32 + sltu $2,$6,2 + sw $16,24($sp) + sw $31,28($sp) + move $16,$6 + .set noreorder + .set nomacro + bne $2,$0,$L72 + li $4,-14 # 0xfffffffffffffff2 + .set macro + .set reorder + + addiu $2,$5,1 + .set noreorder + .set nomacro + beq $5,$0,$L72 + or $7,$5,$2 + .set macro + .set reorder + + lw $2,24($28) + addiu $4,$sp,16 + and $2,$2,$7 + .set noreorder + .set nomacro + bne $2,$0,$L74 + li $6,1 # 0x1 + .set macro + .set reorder + +#APP + .set noreorder + jal __copy_user + .set noat + addu $1, $5, $6 + .set at + .set reorder +#NO_APP + .set noreorder + .set nomacro + bne $6,$0,$L72 + li $4,-14 # 0xfffffffffffffff2 + .set macro + .set reorder + + lb $2,16($sp) + lui $3,%hi(fast_l2tp_fw) + addiu $2,$2,-48 + sw $2,%lo(fast_l2tp_fw)($3) + li $3,1 # 0x1 + .set noreorder + .set nomacro + bne $2,$3,$L82 + lui $4,%hi(l2tp_tx_id_hook) + .set macro + .set reorder + + lui $2,%hi(l2tp_tx_id) + addiu $2,$2,%lo(l2tp_tx_id) + .set noreorder + .set nomacro + j $L83 + sw $2,%lo(l2tp_tx_id_hook)($4) + .set macro + .set reorder + +$L82: + lui $2,%hi(l2tpInfo+20) + sw $0,%lo(l2tp_tx_id_hook)($4) + sh $0,%lo(l2tpInfo+20)($2) +$L83: + lui $4,%hi(l2tpInfo) + addiu $4,$4,%lo(l2tpInfo) + move $5,$0 + .set noreorder + .set nomacro + jal memset + li $6,40 # 0x28 + .set macro + .set reorder + + lui $2,%hi(state) + move $4,$16 + .set noreorder + .set nomacro + j $L72 + sw $0,%lo(state)($2) + .set macro + .set reorder + +$L74: + li $4,-14 # 0xfffffffffffffff2 +$L72: + lw $31,28($sp) + lw $16,24($sp) + move $2,$4 + .set noreorder + .set nomacro + j $31 + addiu $sp,$sp,32 + .set macro + .set reorder + + .end l2tp_write_proc + .rdata + .align 2 +$LC4: + .ascii "fast_l2tp\000" + .section .init.text,"ax",@progbits + .align 2 + .globl fast_l2tp_init + .ent fast_l2tp_init + .type fast_l2tp_init, @function +fast_l2tp_init: + .set nomips16 + .frame $sp,24,$31 # vars= 0, regs= 1/0, args= 16, gp= 0 + .mask 0x80000000,-8 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + + lui $4,%hi($LC4) + addiu $sp,$sp,-24 + addiu $4,$4,%lo($LC4) + move $5,$0 + sw $31,16($sp) + jal create_proc_entry + move $6,$0 + + lui $4,%hi(l2tpInfo) + lui $7,%hi(res1) + move $3,$2 + addiu $4,$4,%lo(l2tpInfo) + move $5,$0 + li $6,40 # 0x28 + beq $2,$0,$L85 + sw $2,%lo(res1)($7) + + lui $2,%hi(l2tp_read_proc) + addiu $2,$2,%lo(l2tp_read_proc) + sw $2,64($3) + lw $3,%lo(res1)($7) + lui $2,%hi(l2tp_write_proc) + addiu $2,$2,%lo(l2tp_write_proc) + sw $2,68($3) +$L85: + lui $2,%hi(l2tp_tx_id_hook) + sw $0,%lo(l2tp_tx_id_hook)($2) + lui $2,%hi(fast_l2tp_fw) + sw $0,%lo(fast_l2tp_fw)($2) + lui $2,%hi(state) + jal memset + sw $0,%lo(state)($2) + + lw $31,16($sp) + move $2,$0 + j $31 + addiu $sp,$sp,24 + + .set macro + .set reorder + .end fast_l2tp_init + .section .exit.text,"ax",@progbits + .align 2 + .globl fast_l2tp_exit + .ent fast_l2tp_exit + .type fast_l2tp_exit, @function +fast_l2tp_exit: + .set nomips16 + .frame $sp,24,$31 # vars= 0, regs= 2/0, args= 16, gp= 0 + .mask 0x80010000,-4 + .fmask 0x00000000,0 + .set noreorder + .set nomacro + + addiu $sp,$sp,-24 + sw $16,16($sp) + lui $16,%hi(res1) + lw $2,%lo(res1)($16) + lui $4,%hi($LC4) + sw $31,20($sp) + addiu $4,$4,%lo($LC4) + beq $2,$0,$L86 + move $5,$2 + + jal remove_proc_entry + nop + + sw $0,%lo(res1)($16) +$L86: + lw $31,20($sp) + lw $16,16($sp) + j $31 + addiu $sp,$sp,24 + + .set macro + .set reorder + .end fast_l2tp_exit + .globl l2tp_tx_id_hook + .section .bss + .align 2 + .type l2tp_tx_id_hook, @object + .size l2tp_tx_id_hook, 4 +l2tp_tx_id_hook: + .space 4 + .globl fast_l2tp_fw + .align 2 + .type fast_l2tp_fw, @object + .size fast_l2tp_fw, 4 +fast_l2tp_fw: + .space 4 + .globl state + .align 2 + .type state, @object + .size state, 4 +state: + .space 4 + .ident "GCC: (GNU) 3.4.6-1.3.6" |