All of lore.kernel.org
 help / color / mirror / Atom feed
* Cannot initialize Compex WLE600VX for 802.11ac?
@ 2016-06-21 14:42 Tom Marble
  2016-06-22  6:47 ` Valo, Kalle
  0 siblings, 1 reply; 9+ messages in thread
From: Tom Marble @ 2016-06-21 14:42 UTC (permalink / raw)
  To: ath10k; +Cc: tmarble


[-- Attachment #1.1: Type: text/plain, Size: 2689 bytes --]


All:

I have configured a system specifically for 802.11ac using ath10k with
Compex WLE600VX [0] which is one of the QCA9880 Version 2 devices listed
on [1], but I'm unable to get it work.

This is an amd64 machine running Debian Jessie (stable), with
the latest kernel from kvalo [2] with all debugging enabled:
  CONFIG_ATH10K=m
  CONFIG_ATH10K_PCI=m
  CONFIG_ATH10K_DEBUG=y
  CONFIG_ATH10K_DEBUGFS=y
  CONFIG_ATH10K_TRACING=y

Linux six 4.7.0-rc3-wt-ath-tm1 #3 SMP Mon Jun 20 22:18:00 CDT 2016 x86_64 GNU/Linux

The firmware is also from klavo's git [3][4][5]. Upon boot the
kernel says:
  Jun 21 08:36:05 six kernel: [    4.193061] ath10k_pci 0000:02:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0
  Jun 21 08:36:05 six kernel: [    4.416764] ath10k_pci 0000:02:00.0: board_file api 1 bmi_id N/A crc32 bebc7c08
  Jun 21 08:36:05 six kernel: [    5.608354] ath10k_pci 0000:02:00.0: htt-ver 2.1 wmi-op 5 htt-op 2 cal otp max-sta 128 raw 0 hwcrypto 1

The hostapd software is built from the latest upstream [6], including
the configuration
  CONFIG_IEEE80211AC=y
  CONFIG_DRIVER_NL80211=y
  CONFIG_DRIVER_NL80211_QCA=y
  CONFIG_ACS=y

The hostapd config file /etc/hostapd/wlan0.conf is set exactly in
the "Full hostapd configuration" from [6] (with passwords changed).

Setting channel=0 to enable scanning results in finding channel 52
as the ideal channel, but then (full log in [7])...
# hostapd -dd /etc/hostapd/wlan0.conf | tee /tmp/wlan0.log
... 
  Mode: IEEE 802.11a  Channel: 52  Frequency: 5260 MHz
  DFS 0 channels required radar detection
  Could not set channel for kernel driver
  Interface initialization failed

Setting channel=52 and trying again fails with... (full log in [8]).
# hostapd -dd /etc/hostapd/wlan0.conf | tee /tmp/wlan0-52.log
...
  nl80211: Failed to start radar detection: -16 (Device or resource busy)


What suggestions do you have to help me identify the cause of 
this problem (and hopefully resolve it!)?

--Tom

[0] WLE600VX
    http://www.compex.com.sg/product/wle600vx/
[1] https://wireless.wiki.kernel.org/en/users/drivers/ath10k
[2] https://wireless.wiki.kernel.org/en/users/drivers/ath10k/sources
[3] https://wireless.wiki.kernel.org/en/users/drivers/ath10k/firmware
[4] board.bin
    https://github.com/kvalo/ath10k-firmware/blob/master/QCA988X/board.bin 
[5] firmware-5.bin
    https://github.com/kvalo/ath10k-firmware/blob/master/QCA988X/10.2.4/firmware-5.bin_10.2.4.70.44 
[6] https://wireless.wiki.kernel.org/en/users/drivers/ath10k/configuration
[7] channel=0 log
    http://paste.debian.net/740824/ 
[8] channel=52 log
    http://paste.debian.net/740826/ 


[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

[-- Attachment #2: Type: text/plain, Size: 146 bytes --]

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Cannot initialize Compex WLE600VX for 802.11ac?
  2016-06-21 14:42 Cannot initialize Compex WLE600VX for 802.11ac? Tom Marble
@ 2016-06-22  6:47 ` Valo, Kalle
  2016-06-22 13:10   ` Tom Marble
  0 siblings, 1 reply; 9+ messages in thread
From: Valo, Kalle @ 2016-06-22  6:47 UTC (permalink / raw)
  To: Tom Marble; +Cc: ath10k

Tom Marble <tmarble@info9.net> writes:

> Setting channel=0 to enable scanning results in finding channel 52
> as the ideal channel, but then (full log in [7])...
> # hostapd -dd /etc/hostapd/wlan0.conf | tee /tmp/wlan0.log
> ... 
>   Mode: IEEE 802.11a  Channel: 52  Frequency: 5260 MHz
>   DFS 0 channels required radar detection
>   Could not set channel for kernel driver
>   Interface initialization failed
>
> Setting channel=52 and trying again fails with... (full log in [8]).
> # hostapd -dd /etc/hostapd/wlan0.conf | tee /tmp/wlan0-52.log
> ...
>   nl80211: Failed to start radar detection: -16 (Device or resource busy)
>
>
> What suggestions do you have to help me identify the cause of 
> this problem (and hopefully resolve it!)?

Do you have CONFIG_ATH10K_DFS_CERTIFIED enabled? Also check that that
regulatory is correct with 'iw reg get' and 'iw phy0 info', especially
that 80 MHz channels are supported.

Also I would try first without DFS on channel 36 just to make it easier
to pinpoint the problem.

-- 
Kalle Valo
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Cannot initialize Compex WLE600VX for 802.11ac?
  2016-06-22  6:47 ` Valo, Kalle
@ 2016-06-22 13:10   ` Tom Marble
  2016-06-22 14:08     ` Valo, Kalle
  0 siblings, 1 reply; 9+ messages in thread
From: Tom Marble @ 2016-06-22 13:10 UTC (permalink / raw)
  To: Valo, Kalle; +Cc: Tom Marble, ath10k

"Valo, Kalle" <kvalo@qca.qualcomm.com> writes:
> Do you have CONFIG_ATH10K_DFS_CERTIFIED enabled?

No.. the option isn't even commented out in my .config??
Is there are tree other than...
  git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git

> Also check that that
> regulatory is correct with 'iw reg get' and 'iw phy0 info', especially
> that 80 MHz channels are supported.

root@six:/# iw reg get
country US: DFS-FCC
        (2402 - 2472 @ 40), (N/A, 30), (N/A)
        (5170 - 5250 @ 80), (N/A, 17), (N/A)
        (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS
        (5735 - 5835 @ 80), (N/A, 30), (N/A)
        (57240 - 63720 @ 2160), (N/A, 40), (N/A)
root@six:/#

(I cannot run 'iw phy0 info' at the moment as I'm away from the lab)

> Also I would try first without DFS on channel 36 just to make it easier
> to pinpoint the problem.

Okay, thanks!

--Tom

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Cannot initialize Compex WLE600VX for 802.11ac?
  2016-06-22 13:10   ` Tom Marble
@ 2016-06-22 14:08     ` Valo, Kalle
  2016-06-23 13:00       ` Tom Marble
  0 siblings, 1 reply; 9+ messages in thread
From: Valo, Kalle @ 2016-06-22 14:08 UTC (permalink / raw)
  To: Tom Marble; +Cc: ath10k

Tom Marble <tmarble@info9.net> writes:

> "Valo, Kalle" <kvalo@qca.qualcomm.com> writes:
>> Do you have CONFIG_ATH10K_DFS_CERTIFIED enabled?
>
> No.. the option isn't even commented out in my .config??

It depends on CFG80211_CERTIFICATION_ONUS so you need to enable that
first.

> Is there are tree other than...
>   git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git

That tree contains the latest ath10k code, so that's ok.

-- 
Kalle Valo
_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Cannot initialize Compex WLE600VX for 802.11ac?
  2016-06-22 14:08     ` Valo, Kalle
@ 2016-06-23 13:00       ` Tom Marble
  2016-06-23 13:27         ` Tomasz Skapski
  0 siblings, 1 reply; 9+ messages in thread
From: Tom Marble @ 2016-06-23 13:00 UTC (permalink / raw)
  To: Valo, Kalle; +Cc: Tom Marble, ath10k

"Valo, Kalle" <kvalo@qca.qualcomm.com> writes:
> Tom Marble <tmarble@info9.net> writes:
>> "Valo, Kalle" <kvalo@qca.qualcomm.com> writes:
>>> Do you have CONFIG_ATH10K_DFS_CERTIFIED enabled?
>>
>> No.. the option isn't even commented out in my .config??
>
> It depends on CFG80211_CERTIFICATION_ONUS so you need to enable that
> first.

Okay, I've rebuild the kernel with that option. Here's the latest info:

root@six:/# uname -a
Linux six 4.7.0-rc3-wt-ath-tm2 #4 SMP Wed Jun 22 11:47:12 CDT 2016 x86_64 GNU/Linux
root@six:/# iw reg get
country US: DFS-FCC
        (2402 - 2472 @ 40), (N/A, 30), (N/A)
        (5170 - 5250 @ 80), (N/A, 17), (N/A)
        (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS
        (5735 - 5835 @ 80), (N/A, 30), (N/A)
        (57240 - 63720 @ 2160), (N/A, 40), (N/A)
root@six:/# iw phy0 info
  SEE http://paste.debian.net/747986/ 

Setting channel=0 to enable scanning results still fails
# hostapd -dd /etc/hostapd/wlan0.conf | tee /tmp/wlan0.log 
  SEE http://paste.debian.net/747988/

  nl80211: Failed to set fragmentation threshold 2346: -95 (Operation not supported)
  Could not set fragmentation threshold for kernel driver
  Interface initialization failed

Seems to have made it a little further... What should I try now?

--Tom


_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Cannot initialize Compex WLE600VX for 802.11ac?
  2016-06-23 13:00       ` Tom Marble
@ 2016-06-23 13:27         ` Tomasz Skapski
  2016-06-24  3:27           ` Tom Marble
  0 siblings, 1 reply; 9+ messages in thread
From: Tomasz Skapski @ 2016-06-23 13:27 UTC (permalink / raw)
  To: Tom Marble; +Cc: Valo, Kalle, ath10k

In your config file set 'fragm_threshold=-1', or comment it.
Regards,
Tomasz Skąpski


On 23 June 2016 at 15:00, Tom Marble <tmarble@info9.net> wrote:
> "Valo, Kalle" <kvalo@qca.qualcomm.com> writes:
>> Tom Marble <tmarble@info9.net> writes:
>>> "Valo, Kalle" <kvalo@qca.qualcomm.com> writes:
>>>> Do you have CONFIG_ATH10K_DFS_CERTIFIED enabled?
>>>
>>> No.. the option isn't even commented out in my .config??
>>
>> It depends on CFG80211_CERTIFICATION_ONUS so you need to enable that
>> first.
>
> Okay, I've rebuild the kernel with that option. Here's the latest info:
>
> root@six:/# uname -a
> Linux six 4.7.0-rc3-wt-ath-tm2 #4 SMP Wed Jun 22 11:47:12 CDT 2016 x86_64 GNU/Linux
> root@six:/# iw reg get
> country US: DFS-FCC
>         (2402 - 2472 @ 40), (N/A, 30), (N/A)
>         (5170 - 5250 @ 80), (N/A, 17), (N/A)
>         (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS
>         (5735 - 5835 @ 80), (N/A, 30), (N/A)
>         (57240 - 63720 @ 2160), (N/A, 40), (N/A)
> root@six:/# iw phy0 info
>   SEE http://paste.debian.net/747986/
>
> Setting channel=0 to enable scanning results still fails
> # hostapd -dd /etc/hostapd/wlan0.conf | tee /tmp/wlan0.log
>   SEE http://paste.debian.net/747988/
>
>   nl80211: Failed to set fragmentation threshold 2346: -95 (Operation not supported)
>   Could not set fragmentation threshold for kernel driver
>   Interface initialization failed
>
> Seems to have made it a little further... What should I try now?
>
> --Tom
>
>
> _______________________________________________
> ath10k mailing list
> ath10k@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/ath10k

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Cannot initialize Compex WLE600VX for 802.11ac?
  2016-06-23 13:27         ` Tomasz Skapski
@ 2016-06-24  3:27           ` Tom Marble
  2016-06-27 11:52             ` Michal Kazior
  0 siblings, 1 reply; 9+ messages in thread
From: Tom Marble @ 2016-06-24  3:27 UTC (permalink / raw)
  To: Tomasz Skapski; +Cc: Tom Marble, Valo, Kalle, ath10k


[-- Attachment #1.1: Type: text/plain, Size: 3138 bytes --]

Tomasz Skapski <tomasz.skapski@tieto.com> writes:
> In your config file set 'fragm_threshold=-1', or comment it.

Indeed this was the last critical configuration change...
Now I'm able to bring up the interface!

Then I was getting errors when 'ifup'-ing the interface
  RTNETLINK answers: File exists
which were resolved by ensuring that
1. The interface was flushed prior to being up'ed
   ip addr flush dev wlan0
2. The interface was *not* configured to add an (additional) gateway

Following this the interface would not stay up due to avahi-daemon
decideding it didn't like something and removing the address
  avahi-daemon[2925]: Withdrawing address record for 10.6.8.1 on wlan0.

The solution here was just removing avahi-daemon (and mDNS services).

Then the interface wasn't happy about IPv6
  IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not read

Even with setting (in /etc/hostapd/wlan0.conf ) this problem still occurred.
  ipaddr_type_availability=32

The solution was disabling IPv6 (at least for now.. I do want IPv6
eventually), in /etc/sysctl.conf
# NO IPV6                                                                        net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
net.ipv6.conf.wan0.disable_ipv6 = 1

I also rebuilt hostapd because it seems to have a version locked
dependency of libssl (for some reason?).

With the addition of dnsmasq (for DHCP and DNS proxying) and
simple nftables rules for nat/masquerade I now have a functioning AP!

Certain clients seemed to get "kicked off" the network which has
been mitigated by setting:
  ap_max_inactivity=600
  disassoc_low_ack=0

One problem that results in clients getting removed from the AP is:
Jun 23 19:07:28 six kernel: [  995.006727] wlan0: dropped frame to 00:01:02:03:37:15 (unauthorized port)

... and I'm not sure what's causing that?

Amusingly certain Android clients seem to constantly "fishing" to find
active networks (these messages occur every 15 seconds):
Jun 23 21:26:23 six kernel: [ 9330.082522] wlan1: STA 00:01:02:03:37:15 aid 1 enters power save mode
Jun 23 21:26:38 six kernel: [ 9345.059365] wlan1: STA 00:01:02:03:37:15 aid 1 exits power save mode
Jun 23 21:26:38 six kernel: [ 9345.059408] wlan1: STA 00:01:02:03:37:15 aid 1 sending 0 filtered/0 PS frames since STA \
not sleeping anymore
Jun 23 21:26:39 six kernel: [ 9345.364866] wlan1: STA 00:01:02:03:37:15 aid 1 enters power save mode

In other good news I added a second nic (wlan1) to handle 2.4 GHz
traffic in the form of a TP-LINK TL-WN722N which is supported by
the driver ath9k_htc. Using a separate instance of hostapd for wlan1
I now have a dual mode access point!

I found I had to move the TL-WN722N antenna as far away as possible
to minimize interference with the 5 GHz signal.

One strange thing I've noticed is that if I configure the wlan0 (5 GHz)
channel=52 on boot up it doesn't work... However if I have once
done channel=0 then on subsequent bounces of the interface I can have
it come up on a specific channel.

Thanks Tomasz and Kalle for your help!!!

--Tom



[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 818 bytes --]

[-- Attachment #2: Type: text/plain, Size: 146 bytes --]

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Cannot initialize Compex WLE600VX for 802.11ac?
  2016-06-24  3:27           ` Tom Marble
@ 2016-06-27 11:52             ` Michal Kazior
  2016-06-27 12:42               ` Tom Marble
  0 siblings, 1 reply; 9+ messages in thread
From: Michal Kazior @ 2016-06-27 11:52 UTC (permalink / raw)
  To: Tom Marble; +Cc: Valo, Kalle, Tomasz Skapski, ath10k

On 24 June 2016 at 05:27, Tom Marble <tmarble@info9.net> wrote:
> Tomasz Skapski <tomasz.skapski@tieto.com> writes:
>> In your config file set 'fragm_threshold=-1', or comment it.
>
> Indeed this was the last critical configuration change...
> Now I'm able to bring up the interface!
>
> Then I was getting errors when 'ifup'-ing the interface
>   RTNETLINK answers: File exists
> which were resolved by ensuring that
> 1. The interface was flushed prior to being up'ed
>    ip addr flush dev wlan0
> 2. The interface was *not* configured to add an (additional) gateway
>
> Following this the interface would not stay up due to avahi-daemon
> decideding it didn't like something and removing the address
>   avahi-daemon[2925]: Withdrawing address record for 10.6.8.1 on wlan0.
>
> The solution here was just removing avahi-daemon (and mDNS services).
>
> Then the interface wasn't happy about IPv6
>   IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not read

This is normal. Try down/up your ethernet interface and you'll see the
same thing.


> Even with setting (in /etc/hostapd/wlan0.conf ) this problem still occurred.
>   ipaddr_type_availability=32
>
> The solution was disabling IPv6 (at least for now.. I do want IPv6
> eventually), in /etc/sysctl.conf
> # NO IPV6                                                                        net.ipv6.conf.all.disable_ipv6 = 1
> net.ipv6.conf.default.disable_ipv6 = 1
> net.ipv6.conf.lo.disable_ipv6 = 1
> net.ipv6.conf.eth0.disable_ipv6 = 1
> net.ipv6.conf.wan0.disable_ipv6 = 1

Do you really need to disable ipv6?


> I also rebuilt hostapd because it seems to have a version locked
> dependency of libssl (for some reason?).
>
> With the addition of dnsmasq (for DHCP and DNS proxying) and
> simple nftables rules for nat/masquerade I now have a functioning AP!
>
> Certain clients seemed to get "kicked off" the network which has
> been mitigated by setting:
>   ap_max_inactivity=600
>   disassoc_low_ack=0

Try using disassoc_low_ack=1 which enables station inactivity
detection up to firmware/driver (there are some bugs with sending
nullfunc frames depending on fw/hw/driver combo).


[...]
> One strange thing I've noticed is that if I configure the wlan0 (5 GHz)
> channel=52 on boot up it doesn't work... However if I have once
> done channel=0 then on subsequent bounces of the interface I can have
> it come up on a specific channel.

(haven't followed the entire thread, so sorry if I re-iterate something).

Channel availability can get messy and quirky (unless that has changed
in recent kernels?) with multiple wireless cards on the same system.
So there's that.


Michal

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Cannot initialize Compex WLE600VX for 802.11ac?
  2016-06-27 11:52             ` Michal Kazior
@ 2016-06-27 12:42               ` Tom Marble
  0 siblings, 0 replies; 9+ messages in thread
From: Tom Marble @ 2016-06-27 12:42 UTC (permalink / raw)
  To: Michal Kazior; +Cc: tmarble, Valo, Kalle, Tomasz Skapski, ath10k

Michal Kazior <michal.kazior@tieto.com> writes:
> On 24 June 2016 at 05:27, Tom Marble <tmarble@info9.net> wrote:
>> The solution here was just removing avahi-daemon (and mDNS services).
>>
>> Then the interface wasn't happy about IPv6
>>   IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not read
>
> This is normal. Try down/up your ethernet interface and you'll see the
> same thing.

Ok.

>> Even with setting (in /etc/hostapd/wlan0.conf ) this problem still occurred.
>>   ipaddr_type_availability=32
>>
>> The solution was disabling IPv6 (at least for now.. I do want IPv6
>> eventually), in /etc/sysctl.conf
>> # NO IPV6                                                                        net.ipv6.conf.all.disable_ipv6 = 1
>> net.ipv6.conf.default.disable_ipv6 = 1
>> net.ipv6.conf.lo.disable_ipv6 = 1
>> net.ipv6.conf.eth0.disable_ipv6 = 1
>> net.ipv6.conf.wan0.disable_ipv6 = 1
>
> Do you really need to disable ipv6?

No.. I *want* IPv6! I'm going to try adding it back in now
to see if I can get it to work.

>> Certain clients seemed to get "kicked off" the network which has
>> been mitigated by setting:
>>   ap_max_inactivity=600
>>   disassoc_low_ack=0
>
> Try using disassoc_low_ack=1 which enables station inactivity
> detection up to firmware/driver (there are some bugs with sending
> nullfunc frames depending on fw/hw/driver combo).

I'll try that!

>> One strange thing I've noticed is that if I configure the wlan0 (5 GHz)
>> channel=52 on boot up it doesn't work... However if I have once
>> done channel=0 then on subsequent bounces of the interface I can have
>> it come up on a specific channel.
>
> (haven't followed the entire thread, so sorry if I re-iterate something).
>
> Channel availability can get messy and quirky (unless that has changed
> in recent kernels?) with multiple wireless cards on the same system.
> So there's that.

I realize this can be tricky. My current thought is to bring
up wlan0 (5 GHz) first and then bring up wlan1 (2.4 GHz).

I'll report my findings after my next round of tests.

Thanks!

--Tom

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-06-27 12:43 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-21 14:42 Cannot initialize Compex WLE600VX for 802.11ac? Tom Marble
2016-06-22  6:47 ` Valo, Kalle
2016-06-22 13:10   ` Tom Marble
2016-06-22 14:08     ` Valo, Kalle
2016-06-23 13:00       ` Tom Marble
2016-06-23 13:27         ` Tomasz Skapski
2016-06-24  3:27           ` Tom Marble
2016-06-27 11:52             ` Michal Kazior
2016-06-27 12:42               ` Tom Marble

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.