All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] ALSA: ice1712: remove unneeded return statement
@ 2014-11-13 15:14 Sudip Mukherjee
  2014-11-13 15:14 ` [PATCH 2/2] ALSA: ice1712: remove unused variable Sudip Mukherjee
  2014-11-13 15:21 ` [PATCH 1/2] ALSA: ice1712: remove unneeded return statement Takashi Iwai
  0 siblings, 2 replies; 5+ messages in thread
From: Sudip Mukherjee @ 2014-11-13 15:14 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Sudip Mukherjee, alsa-devel, linux-kernel

the functions:
	snd_ice1712_akm4xxx_build_controls
	snd_ice1712_build_pro_mixer
	snd_ctl_add
	snd_ak4114_build
	prodigy192_ak4114_init
	snd_ak4113_build
are all returning either 0 or a negetive error value.
so we can easily remove the check for a negative value and return
the value instead.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
---

i have not given Jaroslav Kysela <perex@perex.cz> in the To list,
as in my last mail, all mails bounced with the error:
"cant create user output file"

 sound/pci/ice1712/hoontech.c   |  5 +----
 sound/pci/ice1712/ice1712.c    | 13 +++----------
 sound/pci/ice1712/ice1724.c    |  5 +----
 sound/pci/ice1712/juli.c       |  4 +---
 sound/pci/ice1712/prodigy192.c |  4 +---
 sound/pci/ice1712/quartet.c    |  4 +---
 6 files changed, 8 insertions(+), 27 deletions(-)

diff --git a/sound/pci/ice1712/hoontech.c b/sound/pci/ice1712/hoontech.c
index 59e37c5..2c53154 100644
--- a/sound/pci/ice1712/hoontech.c
+++ b/sound/pci/ice1712/hoontech.c
@@ -310,10 +310,7 @@ static int snd_ice1712_value_init(struct snd_ice1712 *ice)
 
 	/* ak4524 controls */
 	err = snd_ice1712_akm4xxx_build_controls(ice);
-	if (err < 0)
-		return err;
-
-	return 0;
+	return err;
 }
 
 static int snd_ice1712_ez8_init(struct snd_ice1712 *ice)
diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c
index 48a0c33..b97a0f9 100644
--- a/sound/pci/ice1712/ice1712.c
+++ b/sound/pci/ice1712/ice1712.c
@@ -1296,9 +1296,7 @@ static int snd_ice1712_pcm_profi(struct snd_ice1712 *ice, int device, struct snd
 	}
 
 	err = snd_ice1712_build_pro_mixer(ice);
-	if (err < 0)
-		return err;
-	return 0;
+	return err;
 }
 
 /*
@@ -1546,9 +1544,7 @@ static int snd_ice1712_ac97_mixer(struct snd_ice1712 *ice)
 				 "cannot initialize ac97 for consumer, skipped\n");
 		else {
 			err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_mixer_digmix_route_ac97, ice));
-			if (err < 0)
-				return err;
-			return 0;
+			return err;
 		}
 	}
 
@@ -2498,10 +2494,7 @@ static int snd_ice1712_build_controls(struct snd_ice1712 *ice)
 	if (err < 0)
 		return err;
 	err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_mixer_pro_peak, ice));
-	if (err < 0)
-		return err;
-
-	return 0;
+	return err;
 }
 
 static int snd_ice1712_free(struct snd_ice1712 *ice)
diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c
index f633e3b..fa88485 100644
--- a/sound/pci/ice1712/ice1724.c
+++ b/sound/pci/ice1712/ice1724.c
@@ -2498,10 +2498,7 @@ static int snd_vt1724_build_controls(struct snd_ice1712 *ice)
 	}
 
 	err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_vt1724_mixer_pro_peak, ice));
-	if (err < 0)
-		return err;
-
-	return 0;
+	return err;
 }
 
 static int snd_vt1724_free(struct snd_ice1712 *ice)
diff --git a/sound/pci/ice1712/juli.c b/sound/pci/ice1712/juli.c
index 7a6c078..d6f2fb0 100644
--- a/sound/pci/ice1712/juli.c
+++ b/sound/pci/ice1712/juli.c
@@ -477,9 +477,7 @@ static int juli_add_controls(struct snd_ice1712 *ice)
 	/* only capture SPDIF over AK4114 */
 	err = snd_ak4114_build(spec->ak4114, NULL,
 			ice->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream);
-	if (err < 0)
-		return err;
-	return 0;
+	return err;
 }
 
 /*
diff --git a/sound/pci/ice1712/prodigy192.c b/sound/pci/ice1712/prodigy192.c
index 1eb151aa..3919aed 100644
--- a/sound/pci/ice1712/prodigy192.c
+++ b/sound/pci/ice1712/prodigy192.c
@@ -758,10 +758,8 @@ static int prodigy192_init(struct snd_ice1712 *ice)
 			"AK4114 initialized with status %d\n", err);
 	} else
 		dev_dbg(ice->card->dev, "AK4114 not found\n");
-	if (err < 0)
-		return err;
 
-	return 0;
+	return err;
 }
 
 
diff --git a/sound/pci/ice1712/quartet.c b/sound/pci/ice1712/quartet.c
index d4caf9d..3903e05 100644
--- a/sound/pci/ice1712/quartet.c
+++ b/sound/pci/ice1712/quartet.c
@@ -835,9 +835,7 @@ static int qtet_add_controls(struct snd_ice1712 *ice)
 	/* only capture SPDIF over AK4113 */
 	err = snd_ak4113_build(spec->ak4113,
 			ice->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream);
-	if (err < 0)
-		return err;
-	return 0;
+	return err;
 }
 
 static inline int qtet_is_spdif_master(struct snd_ice1712 *ice)
-- 
1.8.1.2

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

* [PATCH 2/2] ALSA: ice1712: remove unused variable
  2014-11-13 15:14 [PATCH 1/2] ALSA: ice1712: remove unneeded return statement Sudip Mukherjee
@ 2014-11-13 15:14 ` Sudip Mukherjee
  2014-11-13 15:22   ` [alsa-devel] " Takashi Iwai
  2014-11-13 15:21 ` [PATCH 1/2] ALSA: ice1712: remove unneeded return statement Takashi Iwai
  1 sibling, 1 reply; 5+ messages in thread
From: Sudip Mukherjee @ 2014-11-13 15:14 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: Sudip Mukherjee, alsa-devel, linux-kernel

these variable were initialized with some value, but never used.
and so they are safe to be deleted.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
---

i have not given Jaroslav Kysela <perex@perex.cz> in the To list,
as in my last mail, all mails bounced with the error:
"cant create user output file"

 sound/pci/ice1712/ice1712.c | 3 +--
 sound/pci/ice1712/revo.c    | 9 +++------
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c
index b97a0f9..8f27357 100644
--- a/sound/pci/ice1712/ice1712.c
+++ b/sound/pci/ice1712/ice1712.c
@@ -620,10 +620,9 @@ static int snd_ice1712_playback_ds_prepare(struct snd_pcm_substream *substream)
 {
 	struct snd_ice1712 *ice = snd_pcm_substream_chip(substream);
 	struct snd_pcm_runtime *runtime = substream->runtime;
-	u32 period_size, buf_size, rate, tmp, chn;
+	u32 period_size, rate, tmp, chn;
 
 	period_size = snd_pcm_lib_period_bytes(substream) - 1;
-	buf_size = snd_pcm_lib_buffer_bytes(substream) - 1;
 	tmp = 0x0064;
 	if (snd_pcm_format_width(runtime->format) == 16)
 		tmp &= ~0x04;
diff --git a/sound/pci/ice1712/revo.c b/sound/pci/ice1712/revo.c
index 1112ec1..1f40dab 100644
--- a/sound/pci/ice1712/revo.c
+++ b/sound/pci/ice1712/revo.c
@@ -481,7 +481,6 @@ static int ap192_ak4114_init(struct snd_ice1712 *ice)
 	static const unsigned char ak4114_init_txcsb[] = {
 		0x41, 0x02, 0x2c, 0x00, 0x00
 	};
-	int err;
 
 	struct revo51_spec *spec;
 	spec = kzalloc(sizeof(*spec), GFP_KERNEL);
@@ -489,11 +488,9 @@ static int ap192_ak4114_init(struct snd_ice1712 *ice)
 		return -ENOMEM;
 	ice->spec = spec;
 
-	err = snd_ak4114_create(ice->card,
-				 ap192_ak4114_read,
-				 ap192_ak4114_write,
-				 ak4114_init_vals, ak4114_init_txcsb,
-				 ice, &spec->ak4114);
+	snd_ak4114_create(ice->card, ap192_ak4114_read, ap192_ak4114_write,
+			  ak4114_init_vals, ak4114_init_txcsb, ice,
+			  &spec->ak4114);
 	/* AK4114 in Revo cannot detect external rate correctly.
 	 * No reason to stop capture stream due to incorrect checks */
 	spec->ak4114->check_flags = AK4114_CHECK_NO_RATE;
-- 
1.8.1.2

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

* Re: [PATCH 1/2] ALSA: ice1712: remove unneeded return statement
  2014-11-13 15:14 [PATCH 1/2] ALSA: ice1712: remove unneeded return statement Sudip Mukherjee
  2014-11-13 15:14 ` [PATCH 2/2] ALSA: ice1712: remove unused variable Sudip Mukherjee
@ 2014-11-13 15:21 ` Takashi Iwai
  1 sibling, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2014-11-13 15:21 UTC (permalink / raw)
  To: Sudip Mukherjee; +Cc: alsa-devel, linux-kernel

At Thu, 13 Nov 2014 20:44:16 +0530,
Sudip Mukherjee wrote:
> 
> the functions:
> 	snd_ice1712_akm4xxx_build_controls
> 	snd_ice1712_build_pro_mixer
> 	snd_ctl_add
> 	snd_ak4114_build
> 	prodigy192_ak4114_init
> 	snd_ak4113_build
> are all returning either 0 or a negetive error value.
> so we can easily remove the check for a negative value and return
> the value instead.

In doing so, you can rewrite to return directly like
	return xxx();
instead of
	err = xxx();
	return err;

Takashi


> 
> Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> ---
> 
> i have not given Jaroslav Kysela <perex@perex.cz> in the To list,
> as in my last mail, all mails bounced with the error:
> "cant create user output file"
> 
>  sound/pci/ice1712/hoontech.c   |  5 +----
>  sound/pci/ice1712/ice1712.c    | 13 +++----------
>  sound/pci/ice1712/ice1724.c    |  5 +----
>  sound/pci/ice1712/juli.c       |  4 +---
>  sound/pci/ice1712/prodigy192.c |  4 +---
>  sound/pci/ice1712/quartet.c    |  4 +---
>  6 files changed, 8 insertions(+), 27 deletions(-)
> 
> diff --git a/sound/pci/ice1712/hoontech.c b/sound/pci/ice1712/hoontech.c
> index 59e37c5..2c53154 100644
> --- a/sound/pci/ice1712/hoontech.c
> +++ b/sound/pci/ice1712/hoontech.c
> @@ -310,10 +310,7 @@ static int snd_ice1712_value_init(struct snd_ice1712 *ice)
>  
>  	/* ak4524 controls */
>  	err = snd_ice1712_akm4xxx_build_controls(ice);
> -	if (err < 0)
> -		return err;
> -
> -	return 0;
> +	return err;
>  }
>  
>  static int snd_ice1712_ez8_init(struct snd_ice1712 *ice)
> diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c
> index 48a0c33..b97a0f9 100644
> --- a/sound/pci/ice1712/ice1712.c
> +++ b/sound/pci/ice1712/ice1712.c
> @@ -1296,9 +1296,7 @@ static int snd_ice1712_pcm_profi(struct snd_ice1712 *ice, int device, struct snd
>  	}
>  
>  	err = snd_ice1712_build_pro_mixer(ice);
> -	if (err < 0)
> -		return err;
> -	return 0;
> +	return err;
>  }
>  
>  /*
> @@ -1546,9 +1544,7 @@ static int snd_ice1712_ac97_mixer(struct snd_ice1712 *ice)
>  				 "cannot initialize ac97 for consumer, skipped\n");
>  		else {
>  			err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_mixer_digmix_route_ac97, ice));
> -			if (err < 0)
> -				return err;
> -			return 0;
> +			return err;
>  		}
>  	}
>  
> @@ -2498,10 +2494,7 @@ static int snd_ice1712_build_controls(struct snd_ice1712 *ice)
>  	if (err < 0)
>  		return err;
>  	err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_ice1712_mixer_pro_peak, ice));
> -	if (err < 0)
> -		return err;
> -
> -	return 0;
> +	return err;
>  }
>  
>  static int snd_ice1712_free(struct snd_ice1712 *ice)
> diff --git a/sound/pci/ice1712/ice1724.c b/sound/pci/ice1712/ice1724.c
> index f633e3b..fa88485 100644
> --- a/sound/pci/ice1712/ice1724.c
> +++ b/sound/pci/ice1712/ice1724.c
> @@ -2498,10 +2498,7 @@ static int snd_vt1724_build_controls(struct snd_ice1712 *ice)
>  	}
>  
>  	err = snd_ctl_add(ice->card, snd_ctl_new1(&snd_vt1724_mixer_pro_peak, ice));
> -	if (err < 0)
> -		return err;
> -
> -	return 0;
> +	return err;
>  }
>  
>  static int snd_vt1724_free(struct snd_ice1712 *ice)
> diff --git a/sound/pci/ice1712/juli.c b/sound/pci/ice1712/juli.c
> index 7a6c078..d6f2fb0 100644
> --- a/sound/pci/ice1712/juli.c
> +++ b/sound/pci/ice1712/juli.c
> @@ -477,9 +477,7 @@ static int juli_add_controls(struct snd_ice1712 *ice)
>  	/* only capture SPDIF over AK4114 */
>  	err = snd_ak4114_build(spec->ak4114, NULL,
>  			ice->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream);
> -	if (err < 0)
> -		return err;
> -	return 0;
> +	return err;
>  }
>  
>  /*
> diff --git a/sound/pci/ice1712/prodigy192.c b/sound/pci/ice1712/prodigy192.c
> index 1eb151aa..3919aed 100644
> --- a/sound/pci/ice1712/prodigy192.c
> +++ b/sound/pci/ice1712/prodigy192.c
> @@ -758,10 +758,8 @@ static int prodigy192_init(struct snd_ice1712 *ice)
>  			"AK4114 initialized with status %d\n", err);
>  	} else
>  		dev_dbg(ice->card->dev, "AK4114 not found\n");
> -	if (err < 0)
> -		return err;
>  
> -	return 0;
> +	return err;
>  }
>  
>  
> diff --git a/sound/pci/ice1712/quartet.c b/sound/pci/ice1712/quartet.c
> index d4caf9d..3903e05 100644
> --- a/sound/pci/ice1712/quartet.c
> +++ b/sound/pci/ice1712/quartet.c
> @@ -835,9 +835,7 @@ static int qtet_add_controls(struct snd_ice1712 *ice)
>  	/* only capture SPDIF over AK4113 */
>  	err = snd_ak4113_build(spec->ak4113,
>  			ice->pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream);
> -	if (err < 0)
> -		return err;
> -	return 0;
> +	return err;
>  }
>  
>  static inline int qtet_is_spdif_master(struct snd_ice1712 *ice)
> -- 
> 1.8.1.2
> 

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

* Re: [alsa-devel] [PATCH 2/2] ALSA: ice1712: remove unused variable
  2014-11-13 15:14 ` [PATCH 2/2] ALSA: ice1712: remove unused variable Sudip Mukherjee
@ 2014-11-13 15:22   ` Takashi Iwai
  2014-11-14  8:19     ` Sudip Mukherjee
  0 siblings, 1 reply; 5+ messages in thread
From: Takashi Iwai @ 2014-11-13 15:22 UTC (permalink / raw)
  To: Sudip Mukherjee; +Cc: alsa-devel, linux-kernel

At Thu, 13 Nov 2014 20:44:17 +0530,
Sudip Mukherjee wrote:
> 
> these variable were initialized with some value, but never used.
> and so they are safe to be deleted.
> 
> Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> ---
> 
> i have not given Jaroslav Kysela <perex@perex.cz> in the To list,
> as in my last mail, all mails bounced with the error:
> "cant create user output file"
> 
>  sound/pci/ice1712/ice1712.c | 3 +--
>  sound/pci/ice1712/revo.c    | 9 +++------
>  2 files changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c
> index b97a0f9..8f27357 100644
> --- a/sound/pci/ice1712/ice1712.c
> +++ b/sound/pci/ice1712/ice1712.c
> @@ -620,10 +620,9 @@ static int snd_ice1712_playback_ds_prepare(struct snd_pcm_substream *substream)
>  {
>  	struct snd_ice1712 *ice = snd_pcm_substream_chip(substream);
>  	struct snd_pcm_runtime *runtime = substream->runtime;
> -	u32 period_size, buf_size, rate, tmp, chn;
> +	u32 period_size, rate, tmp, chn;
>  
>  	period_size = snd_pcm_lib_period_bytes(substream) - 1;
> -	buf_size = snd_pcm_lib_buffer_bytes(substream) - 1;
>  	tmp = 0x0064;
>  	if (snd_pcm_format_width(runtime->format) == 16)
>  		tmp &= ~0x04;
> diff --git a/sound/pci/ice1712/revo.c b/sound/pci/ice1712/revo.c
> index 1112ec1..1f40dab 100644
> --- a/sound/pci/ice1712/revo.c
> +++ b/sound/pci/ice1712/revo.c
> @@ -481,7 +481,6 @@ static int ap192_ak4114_init(struct snd_ice1712 *ice)
>  	static const unsigned char ak4114_init_txcsb[] = {
>  		0x41, 0x02, 0x2c, 0x00, 0x00
>  	};
> -	int err;
>  
>  	struct revo51_spec *spec;
>  	spec = kzalloc(sizeof(*spec), GFP_KERNEL);
> @@ -489,11 +488,9 @@ static int ap192_ak4114_init(struct snd_ice1712 *ice)
>  		return -ENOMEM;
>  	ice->spec = spec;
>  
> -	err = snd_ak4114_create(ice->card,
> -				 ap192_ak4114_read,
> -				 ap192_ak4114_write,
> -				 ak4114_init_vals, ak4114_init_txcsb,
> -				 ice, &spec->ak4114);
> +	snd_ak4114_create(ice->card, ap192_ak4114_read, ap192_ak4114_write,
> +			  ak4114_init_vals, ak4114_init_txcsb, ice,
> +			  &spec->ak4114);

IMO, this is rather a bug.  It should return the error (with a proper
error handling).


thanks,

Takashi


>  	/* AK4114 in Revo cannot detect external rate correctly.
>  	 * No reason to stop capture stream due to incorrect checks */
>  	spec->ak4114->check_flags = AK4114_CHECK_NO_RATE;
> -- 
> 1.8.1.2
> 
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 

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

* Re: [alsa-devel] [PATCH 2/2] ALSA: ice1712: remove unused variable
  2014-11-13 15:22   ` [alsa-devel] " Takashi Iwai
@ 2014-11-14  8:19     ` Sudip Mukherjee
  0 siblings, 0 replies; 5+ messages in thread
From: Sudip Mukherjee @ 2014-11-14  8:19 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, linux-kernel

On Thu, Nov 13, 2014 at 04:22:45PM +0100, Takashi Iwai wrote:
> At Thu, 13 Nov 2014 20:44:17 +0530,
> Sudip Mukherjee wrote:
> > 
<snip>
> >  	if (snd_pcm_format_width(runtime->format) == 16)
> >  		tmp &= ~0x04;
> > diff --git a/sound/pci/ice1712/revo.c b/sound/pci/ice1712/revo.c
> > index 1112ec1..1f40dab 100644
> > --- a/sound/pci/ice1712/revo.c
> > +++ b/sound/pci/ice1712/revo.c
> > @@ -481,7 +481,6 @@ static int ap192_ak4114_init(struct snd_ice1712 *ice)
> >  	static const unsigned char ak4114_init_txcsb[] = {
> >  		0x41, 0x02, 0x2c, 0x00, 0x00
> >  	};
> > -	int err;
> >  
> >  	struct revo51_spec *spec;
> >  	spec = kzalloc(sizeof(*spec), GFP_KERNEL);
> > @@ -489,11 +488,9 @@ static int ap192_ak4114_init(struct snd_ice1712 *ice)
> >  		return -ENOMEM;
> >  	ice->spec = spec;
> >  
> > -	err = snd_ak4114_create(ice->card,
> > -				 ap192_ak4114_read,
> > -				 ap192_ak4114_write,
> > -				 ak4114_init_vals, ak4114_init_txcsb,
> > -				 ice, &spec->ak4114);
> > +	snd_ak4114_create(ice->card, ap192_ak4114_read, ap192_ak4114_write,
> > +			  ak4114_init_vals, ak4114_init_txcsb, ice,
> > +			  &spec->ak4114);
> 
> IMO, this is rather a bug.  It should return the error (with a proper
> error handling).
> 
error handling is already there. ap192_ak4114_init is being called by revo_init,
where the return value is being checked. revo_init is the callback function of
chip_init, so if we return the error value here then chip_init will fail.
but since the author commented "error ignored; it's no fatal error", so i also
thought of ignoring the error.
I will send you a revised patch.

thanks
sudip


> 
> thanks,
> 
> Takashi
> 
> 
> >  	/* AK4114 in Revo cannot detect external rate correctly.
> >  	 * No reason to stop capture stream due to incorrect checks */
> >  	spec->ak4114->check_flags = AK4114_CHECK_NO_RATE;
> > -- 
> > 1.8.1.2
> > 
> > _______________________________________________
> > Alsa-devel mailing list
> > Alsa-devel@alsa-project.org
> > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> > 

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

end of thread, other threads:[~2014-11-14  8:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-13 15:14 [PATCH 1/2] ALSA: ice1712: remove unneeded return statement Sudip Mukherjee
2014-11-13 15:14 ` [PATCH 2/2] ALSA: ice1712: remove unused variable Sudip Mukherjee
2014-11-13 15:22   ` [alsa-devel] " Takashi Iwai
2014-11-14  8:19     ` Sudip Mukherjee
2014-11-13 15:21 ` [PATCH 1/2] ALSA: ice1712: remove unneeded return statement Takashi Iwai

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.