	.file	"extr_igb_ethtool.c_igb_get_link_ksettings.c"
	.intel_syntax noprefix
	.text
	.p2align 4
	.type	igb_get_link_ksettings, @function
igb_get_link_ksettings:
.LFB0:
	.cfi_startproc
	endbr64
	push	r12
	.cfi_def_cfa_offset 16
	.cfi_offset 12, -16
	push	rbp
	.cfi_def_cfa_offset 24
	.cfi_offset 6, -24
	push	rbx
	.cfi_def_cfa_offset 32
	.cfi_offset 3, -32
	mov	rbx, rsi
	call	netdev_priv@PLT
	mov	edi, DWORD PTR E1000_STATUS[rip]
	mov	r12, rax
	call	rd32@PLT
	mov	rcx, QWORD PTR 8[r12]
	mov	rdi, QWORD PTR e1000_media_type_copper[rip]
	cmp	rcx, rdi
	je	.L44
	mov	r9d, DWORD PTR SUPPORTED_1000baseKX_Full[rip]
	mov	esi, DWORD PTR SUPPORTED_FIBRE[rip]
	mov	r8d, DWORD PTR ADVERTISED_1000baseKX_Full[rip]
	mov	edx, DWORD PTR ADVERTISED_FIBRE[rip]
	or	esi, r9d
	mov	r10, QWORD PTR e1000_i354[rip]
	or	esi, DWORD PTR SUPPORTED_Autoneg[rip]
	or	edx, r8d
	or	esi, DWORD PTR SUPPORTED_Pause[rip]
	cmp	QWORD PTR 56[r12], r10
	je	.L45
.L5:
	cmp	QWORD PTR 72[r12], 0
	je	.L6
	or	esi, DWORD PTR SUPPORTED_100baseT_Full[rip]
	or	edx, DWORD PTR ADVERTISED_100baseT_Full[rip]
.L6:
	mov	r9d, DWORD PTR 48[r12]
	cmp	r9d, 1
	je	.L46
.L7:
	mov	r8d, DWORD PTR PORT_FIBRE[rip]
	mov	DWORD PTR 36[rbx], r8d
.L4:
	cmp	r9d, 1
	je	.L8
	mov	r8d, DWORD PTR ADVERTISED_Pause[rip]
	or	r8d, DWORD PTR ADVERTISED_Asym_Pause[rip]
	not	r8d
	and	edx, r8d
.L8:
	mov	r8d, DWORD PTR 64[r12]
	cmp	r8d, 129
	je	.L9
	cmp	r8d, 130
	je	.L10
	cmp	r8d, 128
	je	.L47
	mov	ebp, DWORD PTR ADVERTISED_Pause[rip]
	or	ebp, DWORD PTR ADVERTISED_Asym_Pause[rip]
	not	ebp
	and	ebp, edx
.L13:
	test	DWORD PTR E1000_STATUS_LU[rip], eax
	je	.L14
	test	DWORD PTR E1000_STATUS_2P5_SKU[rip], eax
	je	.L15
	mov	edx, DWORD PTR SPEED_2500[rip]
	test	DWORD PTR E1000_STATUS_2P5_SKU_OVER[rip], eax
	jne	.L15
.L16:
	test	DWORD PTR E1000_STATUS_FD[rip], eax
	jne	.L30
	cmp	rcx, rdi
	je	.L19
.L30:
	mov	eax, DWORD PTR DUPLEX_FULL[rip]
	cmp	QWORD PTR e1000_media_type_fiber[rip], rcx
	mov	DWORD PTR 8[rbx], edx
	mov	DWORD PTR 32[rbx], eax
	jne	.L48
.L31:
	mov	eax, DWORD PTR AUTONEG_ENABLE[rip]
	mov	DWORD PTR 28[rbx], eax
	mov	eax, DWORD PTR ETH_TP_MDI_INVALID[rip]
	cmp	rcx, rdi
	je	.L49
.L41:
	mov	DWORD PTR 24[rbx], eax
	mov	rax, QWORD PTR 24[r12]
	cmp	rax, QWORD PTR AUTO_ALL_MODES[rip]
	jne	.L29
	mov	rax, QWORD PTR ETH_TP_MDI_AUTO[rip]
.L29:
	mov	QWORD PTR 16[rbx], rax
	mov	edi, DWORD PTR 4[rbx]
	call	ethtool_convert_legacy_u32_to_link_mode@PLT
	mov	edi, DWORD PTR [rbx]
	mov	esi, ebp
	call	ethtool_convert_legacy_u32_to_link_mode@PLT
	pop	rbx
	.cfi_remember_state
	.cfi_def_cfa_offset 24
	xor	eax, eax
	pop	rbp
	.cfi_def_cfa_offset 16
	pop	r12
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L14:
	.cfi_restore_state
	mov	eax, DWORD PTR DUPLEX_UNKNOWN[rip]
	mov	edx, DWORD PTR SPEED_UNKNOWN[rip]
	mov	DWORD PTR 32[rbx], eax
.L21:
	cmp	QWORD PTR e1000_media_type_fiber[rip], rcx
	mov	DWORD PTR 8[rbx], edx
	je	.L31
.L48:
	mov	eax, DWORD PTR AUTONEG_DISABLE[rip]
	test	r9d, r9d
	jne	.L31
	mov	DWORD PTR 28[rbx], eax
	mov	eax, DWORD PTR ETH_TP_MDI_INVALID[rip]
	cmp	rcx, rdi
	jne	.L41
.L49:
	cmp	QWORD PTR 32[r12], 0
	mov	eax, DWORD PTR ETH_TP_MDI[rip]
	je	.L41
	mov	eax, DWORD PTR ETH_TP_MDI_X[rip]
	jmp	.L41
	.p2align 4,,10
	.p2align 3
.L15:
	mov	edx, DWORD PTR SPEED_1000[rip]
	test	DWORD PTR E1000_STATUS_SPEED_1000[rip], eax
	jne	.L16
	mov	edx, DWORD PTR SPEED_100[rip]
	test	DWORD PTR E1000_STATUS_SPEED_100[rip], eax
	cmove	edx, DWORD PTR SPEED_10[rip]
	jmp	.L16
	.p2align 4,,10
	.p2align 3
.L46:
	or	edx, DWORD PTR ADVERTISED_Autoneg[rip]
	jmp	.L7
	.p2align 4,,10
	.p2align 3
.L45:
	mov	r11, QWORD PTR E1000_DEV_ID_I354_BACKPLANE_2_5GBPS[rip]
	cmp	QWORD PTR [r12], r11
	jne	.L5
	test	DWORD PTR E1000_STATUS_2P5_SKU_OVER[rip], eax
	jne	.L5
	or	esi, DWORD PTR SUPPORTED_2500baseX_Full[rip]
	not	r9d
	or	edx, DWORD PTR ADVERTISED_2500baseX_Full[rip]
	not	r8d
	and	esi, r9d
	and	edx, r8d
	jmp	.L5
	.p2align 4,,10
	.p2align 3
.L44:
	mov	r9d, DWORD PTR 48[r12]
	mov	esi, DWORD PTR SUPPORTED_10baseT_Half[rip]
	mov	edx, DWORD PTR ADVERTISED_TP[rip]
	or	esi, DWORD PTR SUPPORTED_10baseT_Full[rip]
	or	esi, DWORD PTR SUPPORTED_100baseT_Half[rip]
	or	esi, DWORD PTR SUPPORTED_100baseT_Full[rip]
	or	esi, DWORD PTR SUPPORTED_1000baseT_Full[rip]
	or	esi, DWORD PTR SUPPORTED_Autoneg[rip]
	or	esi, DWORD PTR SUPPORTED_TP[rip]
	or	esi, DWORD PTR SUPPORTED_Pause[rip]
	cmp	r9d, 1
	jne	.L3
	or	edx, DWORD PTR ADVERTISED_Autoneg[rip]
	or	edx, DWORD PTR 16[r12]
.L3:
	mov	r8d, DWORD PTR PORT_TP[rip]
	mov	DWORD PTR 36[rbx], r8d
	mov	r8d, DWORD PTR 40[r12]
	mov	DWORD PTR 40[rbx], r8d
	jmp	.L4
	.p2align 4,,10
	.p2align 3
.L47:
	or	edx, DWORD PTR ADVERTISED_Asym_Pause[rip]
	mov	ebp, edx
	jmp	.L13
	.p2align 4,,10
	.p2align 3
.L10:
	or	edx, DWORD PTR ADVERTISED_Pause[rip]
	mov	ebp, edx
	jmp	.L13
	.p2align 4,,10
	.p2align 3
.L9:
	mov	ebp, DWORD PTR ADVERTISED_Pause[rip]
	or	ebp, DWORD PTR ADVERTISED_Asym_Pause[rip]
	or	ebp, edx
	jmp	.L13
	.p2align 4,,10
	.p2align 3
.L19:
	mov	eax, DWORD PTR DUPLEX_HALF[rip]
	mov	DWORD PTR 32[rbx], eax
	jmp	.L21
	.cfi_endproc
.LFE0:
	.size	igb_get_link_ksettings, .-igb_get_link_ksettings
	.comm	e1000_media_type_fiber,8,8
	.comm	e1000_media_type_copper,8,8
	.comm	e1000_i354,8,8
	.comm	SUPPORTED_TP,4,4
	.comm	SUPPORTED_Pause,4,4
	.comm	SUPPORTED_FIBRE,4,4
	.comm	SUPPORTED_Autoneg,4,4
	.comm	SUPPORTED_2500baseX_Full,4,4
	.comm	SUPPORTED_10baseT_Half,4,4
	.comm	SUPPORTED_10baseT_Full,4,4
	.comm	SUPPORTED_100baseT_Half,4,4
	.comm	SUPPORTED_100baseT_Full,4,4
	.comm	SUPPORTED_1000baseT_Full,4,4
	.comm	SUPPORTED_1000baseKX_Full,4,4
	.comm	SPEED_UNKNOWN,4,4
	.comm	SPEED_2500,4,4
	.comm	SPEED_1000,4,4
	.comm	SPEED_100,4,4
	.comm	SPEED_10,4,4
	.comm	PORT_TP,4,4
	.comm	PORT_FIBRE,4,4
	.comm	ETH_TP_MDI_X,4,4
	.comm	ETH_TP_MDI_INVALID,4,4
	.comm	ETH_TP_MDI_AUTO,8,8
	.comm	ETH_TP_MDI,4,4
	.comm	E1000_STATUS_SPEED_1000,4,4
	.comm	E1000_STATUS_SPEED_100,4,4
	.comm	E1000_STATUS_LU,4,4
	.comm	E1000_STATUS_FD,4,4
	.comm	E1000_STATUS_2P5_SKU_OVER,4,4
	.comm	E1000_STATUS_2P5_SKU,4,4
	.comm	E1000_STATUS,4,4
	.comm	E1000_DEV_ID_I354_BACKPLANE_2_5GBPS,8,8
	.comm	DUPLEX_UNKNOWN,4,4
	.comm	DUPLEX_HALF,4,4
	.comm	DUPLEX_FULL,4,4
	.comm	AUTO_ALL_MODES,8,8
	.comm	AUTONEG_ENABLE,4,4
	.comm	AUTONEG_DISABLE,4,4
	.comm	ADVERTISED_TP,4,4
	.comm	ADVERTISED_Pause,4,4
	.comm	ADVERTISED_FIBRE,4,4
	.comm	ADVERTISED_Autoneg,4,4
	.comm	ADVERTISED_Asym_Pause,4,4
	.comm	ADVERTISED_2500baseX_Full,4,4
	.comm	ADVERTISED_100baseT_Full,4,4
	.comm	ADVERTISED_1000baseKX_Full,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

	.arch armv5t
	.eabi_attribute 20, 1
	.eabi_attribute 21, 1
	.eabi_attribute 23, 3
	.eabi_attribute 24, 1
	.eabi_attribute 25, 1
	.eabi_attribute 26, 2
	.eabi_attribute 30, 2
	.eabi_attribute 34, 0
	.eabi_attribute 18, 4
	.file	"extr_igb_ethtool.c_igb_get_link_ksettings.c"
	.text
	.align	2
	.syntax unified
	.arm
	.fpu softvfp
	.type	igb_get_link_ksettings, %function
igb_get_link_ksettings:
	@ args = 0, pretend = 0, frame = 0
	@ frame_needed = 0, uses_anonymous_args = 0
	push	{r4, r5, r6, r7, r8, lr}
	mov	r4, r1
	bl	netdev_priv
	mov	r5, r0
	ldr	r3, .L47
	ldr	r0, [r3]
	bl	rd32
	ldr	r3, .L47+4
	ldr	lr, [r5, #4]
	ldr	r6, [r3]
	cmp	lr, r6
	beq	.L41
	ldr	ip, .L47+8
	ldr	r1, .L47+12
	ldr	r2, .L47+16
	ldr	ip, [ip]
	ldr	r1, [r1]
	ldr	r8, .L47+20
	ldr	r3, .L47+24
	ldr	r2, [r2]
	ldr	r8, [r8]
	orr	r1, ip, r1
	ldr	r7, [r3]
	orr	r1, r1, r2
	ldr	r3, .L47+28
	ldr	r2, .L47+32
	orr	r1, r1, r8
	ldr	r8, [r5, #28]
	ldr	r3, [r3]
	ldr	r2, [r2]
	cmp	r8, r7
	orr	r2, r3, r2
	beq	.L42
.L5:
	ldr	r3, [r5, #36]
	cmp	r3, #0
	bne	.L43
.L6:
	ldr	r3, [r5, #24]
	cmp	r3, #1
	ldreq	ip, .L47+36
	ldreq	ip, [ip]
	orreq	r2, r2, ip
	ldr	ip, .L47+40
	ldr	ip, [ip]
	str	ip, [r4, #28]
.L4:
	cmp	r3, #1
	beq	.L8
	ldr	ip, .L47+44
	ldr	r7, .L47+48
	ldr	ip, [ip]
	ldr	r7, [r7]
	orr	ip, ip, r7
	bic	r2, r2, ip
.L8:
	ldr	ip, [r5, #32]
	cmp	ip, #129
	beq	.L9
	cmp	ip, #130
	beq	.L10
	cmp	ip, #128
	beq	.L44
	ldr	r7, .L47+44
	ldr	ip, .L47+48
	ldr	r7, [r7]
	ldr	ip, [ip]
	orr	r7, r7, ip
	bic	r7, r2, r7
.L13:
	ldr	r2, .L47+52
	ldr	r2, [r2]
	tst	r0, r2
	beq	.L14
	ldr	r2, .L47+56
	ldr	r2, [r2]
	tst	r0, r2
	beq	.L15
	ldr	r2, .L47+60
	ldr	r2, [r2]
	tst	r0, r2
	bne	.L15
	ldr	r2, .L47+64
	ldr	r8, [r2]
	b	.L16
.L14:
	ldr	r2, .L47+68
	ldr	r0, .L47+72
	ldr	r2, [r2]
	ldr	r8, [r0]
	str	r2, [r4, #24]
.L20:
	subs	r3, r3, #0
	movne	r3, #1
	ldr	r2, .L47+76
	str	r8, [r4, #8]
	ldr	r2, [r2]
	cmp	r2, lr
	orreq	r3, r3, #1
	cmp	r3, #0
	ldrne	r3, .L47+80
	ldreq	r3, .L47+84
	cmp	lr, r6
	ldr	r3, [r3]
	str	r3, [r4, #20]
	beq	.L45
	ldr	r3, .L47+88
	ldr	r3, [r3]
.L39:
	ldr	r2, .L47+92
	str	r3, [r4, #16]
	ldr	r2, [r2]
	ldr	r3, [r5, #12]
	ldr	r0, [r4, #4]
	cmp	r3, r2
	ldreq	r3, .L47+96
	ldreq	r3, [r3]
	str	r3, [r4, #12]
	bl	ethtool_convert_legacy_u32_to_link_mode
	mov	r1, r7
	ldr	r0, [r4]
	bl	ethtool_convert_legacy_u32_to_link_mode
	mov	r0, #0
	pop	{r4, r5, r6, r7, r8, pc}
.L43:
	ldr	ip, .L47+100
	ldr	r3, .L47+104
	ldr	ip, [ip]
	ldr	r3, [r3]
	orr	r1, r1, ip
	orr	r2, r2, r3
	b	.L6
.L15:
	ldr	r2, .L47+108
	ldr	r2, [r2]
	tst	r0, r2
	bne	.L46
	ldr	r2, .L47+112
	ldr	r2, [r2]
	tst	r0, r2
	ldrne	r2, .L47+116
	ldreq	r2, .L47+120
	ldr	r8, [r2]
.L16:
	ldr	r2, .L47+124
	ldr	ip, [r2]
	and	ip, ip, r0
	cmp	ip, #0
	cmpeq	lr, r6
	ldrne	r2, .L47+128
	ldreq	r2, .L47+132
	ldr	r2, [r2]
	str	r2, [r4, #24]
	b	.L20
.L42:
	ldr	r7, .L47+136
	ldr	r8, [r5]
	ldr	r7, [r7]
	cmp	r8, r7
	bne	.L5
	ldr	r7, .L47+60
	ldr	r7, [r7]
	tst	r0, r7
	bne	.L5
	ldr	r8, .L47+140
	ldr	r7, .L47+144
	ldr	r8, [r8]
	ldr	r7, [r7]
	orr	r1, r1, r8
	orr	r2, r2, r7
	bic	r1, r1, ip
	bic	r2, r2, r3
	b	.L5
.L41:
	ldr	r3, .L47+148
	ldr	r2, .L47+152
	ldr	r1, .L47+156
	ldr	ip, [r3]
	ldr	r2, [r2]
	ldr	r3, .L47+100
	ldr	r1, [r1]
	ldr	r3, [r3]
	orr	r2, r2, ip
	ldr	ip, .L47+160
	orr	r2, r2, r1
	ldr	r1, .L47+16
	ldr	ip, [ip]
	orr	r2, r2, r3
	ldr	r3, .L47+164
	ldr	r1, [r1]
	ldr	r7, .L47+20
	orr	r2, r2, ip
	ldr	ip, [r3]
	orr	r2, r2, r1
	ldr	r3, [r5, #24]
	ldr	r1, [r7]
	orr	r2, r2, ip
	ldr	ip, .L47+168
	cmp	r3, #1
	orr	r1, r2, r1
	ldr	r2, [ip]
	ldreq	ip, .L47+36
	ldreq	r7, [r5, #8]
	ldreq	ip, [ip]
	orreq	r2, r2, ip
	ldr	ip, .L47+172
	orreq	r2, r2, r7
	ldr	ip, [ip]
	ldr	r7, [r5, #20]
	str	ip, [r4, #28]
	str	r7, [r4, #32]
	b	.L4
.L45:
	ldr	r3, [r5, #16]
	cmp	r3, #0
	ldrne	r3, .L47+176
	ldreq	r3, .L47+180
	ldr	r3, [r3]
	b	.L39
.L44:
	ldr	ip, .L47+48
	ldr	r7, [ip]
	orr	r7, r2, r7
	b	.L13
.L10:
	ldr	ip, .L47+44
	ldr	r7, [ip]
	orr	r7, r2, r7
	b	.L13
.L9:
	ldr	r7, .L47+44
	ldr	ip, .L47+48
	ldr	r7, [r7]
	ldr	ip, [ip]
	orr	r7, r7, ip
	orr	r7, r7, r2
	b	.L13
.L46:
	ldr	r2, .L47+184
	ldr	r8, [r2]
	b	.L16
.L48:
	.align	2
.L47:
	.word	E1000_STATUS
	.word	e1000_media_type_copper
	.word	SUPPORTED_1000baseKX_Full
	.word	SUPPORTED_FIBRE
	.word	SUPPORTED_Autoneg
	.word	SUPPORTED_Pause
	.word	e1000_i354
	.word	ADVERTISED_1000baseKX_Full
	.word	ADVERTISED_FIBRE
	.word	ADVERTISED_Autoneg
	.word	PORT_FIBRE
	.word	ADVERTISED_Pause
	.word	ADVERTISED_Asym_Pause
	.word	E1000_STATUS_LU
	.word	E1000_STATUS_2P5_SKU
	.word	E1000_STATUS_2P5_SKU_OVER
	.word	SPEED_2500
	.word	DUPLEX_UNKNOWN
	.word	SPEED_UNKNOWN
	.word	e1000_media_type_fiber
	.word	AUTONEG_ENABLE
	.word	AUTONEG_DISABLE
	.word	ETH_TP_MDI_INVALID
	.word	AUTO_ALL_MODES
	.word	ETH_TP_MDI_AUTO
	.word	SUPPORTED_100baseT_Full
	.word	ADVERTISED_100baseT_Full
	.word	E1000_STATUS_SPEED_1000
	.word	E1000_STATUS_SPEED_100
	.word	SPEED_100
	.word	SPEED_10
	.word	E1000_STATUS_FD
	.word	DUPLEX_FULL
	.word	DUPLEX_HALF
	.word	E1000_DEV_ID_I354_BACKPLANE_2_5GBPS
	.word	SUPPORTED_2500baseX_Full
	.word	ADVERTISED_2500baseX_Full
	.word	SUPPORTED_10baseT_Full
	.word	SUPPORTED_10baseT_Half
	.word	SUPPORTED_100baseT_Half
	.word	SUPPORTED_1000baseT_Full
	.word	SUPPORTED_TP
	.word	ADVERTISED_TP
	.word	PORT_TP
	.word	ETH_TP_MDI_X
	.word	ETH_TP_MDI
	.word	SPEED_1000
	.size	igb_get_link_ksettings, .-igb_get_link_ksettings
	.comm	e1000_media_type_fiber,4,4
	.comm	e1000_media_type_copper,4,4
	.comm	e1000_i354,4,4
	.comm	SUPPORTED_TP,4,4
	.comm	SUPPORTED_Pause,4,4
	.comm	SUPPORTED_FIBRE,4,4
	.comm	SUPPORTED_Autoneg,4,4
	.comm	SUPPORTED_2500baseX_Full,4,4
	.comm	SUPPORTED_10baseT_Half,4,4
	.comm	SUPPORTED_10baseT_Full,4,4
	.comm	SUPPORTED_100baseT_Half,4,4
	.comm	SUPPORTED_100baseT_Full,4,4
	.comm	SUPPORTED_1000baseT_Full,4,4
	.comm	SUPPORTED_1000baseKX_Full,4,4
	.comm	SPEED_UNKNOWN,4,4
	.comm	SPEED_2500,4,4
	.comm	SPEED_1000,4,4
	.comm	SPEED_100,4,4
	.comm	SPEED_10,4,4
	.comm	PORT_TP,4,4
	.comm	PORT_FIBRE,4,4
	.comm	ETH_TP_MDI_X,4,4
	.comm	ETH_TP_MDI_INVALID,4,4
	.comm	ETH_TP_MDI_AUTO,4,4
	.comm	ETH_TP_MDI,4,4
	.comm	E1000_STATUS_SPEED_1000,4,4
	.comm	E1000_STATUS_SPEED_100,4,4
	.comm	E1000_STATUS_LU,4,4
	.comm	E1000_STATUS_FD,4,4
	.comm	E1000_STATUS_2P5_SKU_OVER,4,4
	.comm	E1000_STATUS_2P5_SKU,4,4
	.comm	E1000_STATUS,4,4
	.comm	E1000_DEV_ID_I354_BACKPLANE_2_5GBPS,4,4
	.comm	DUPLEX_UNKNOWN,4,4
	.comm	DUPLEX_HALF,4,4
	.comm	DUPLEX_FULL,4,4
	.comm	AUTO_ALL_MODES,4,4
	.comm	AUTONEG_ENABLE,4,4
	.comm	AUTONEG_DISABLE,4,4
	.comm	ADVERTISED_TP,4,4
	.comm	ADVERTISED_Pause,4,4
	.comm	ADVERTISED_FIBRE,4,4
	.comm	ADVERTISED_Autoneg,4,4
	.comm	ADVERTISED_Asym_Pause,4,4
	.comm	ADVERTISED_2500baseX_Full,4,4
	.comm	ADVERTISED_100baseT_Full,4,4
	.comm	ADVERTISED_1000baseKX_Full,4,4
	.ident	"GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0"
	.section	.note.GNU-stack,"",%progbits
