This license applies to eagle4 firmware & DSPcode
namely, the files eagleIV.fw  DSP4p.bin*

| Copyright (2006) Ikanos Communications, Inc. 
| 
| Redistribution and use in source and binary forms, with or without 
| modification, are permitted provided that the following 
| conditions are met: 
| 
| * Redistribution of source code must retain the above copyright 
| notice, this list of conditions and the following disclaimer. 
| 
| * Redistribution in binary form must reproduce the above 
| copyright notice, this list of conditions and the following 
| disclaimer in the documentation and/or other materials provided 
| with the distribution. 
| 
| * The name of Ikanos Corporation may not be used to endorse         
|   or promote products derived from this source code without specific     
|   prior written consent of Ikanos Corporation. 
| 
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
| USER ACKNOWLEDGES AND AGREES THAT THE PURCHASE OR USE OF THIS SOFTWARE WILL 
| NOT CREATE OR GIVE GROUNDS FOR A     
|  LICENSE BY IMPLICATION, ESTOPPEL, OR OTHERWISE IN ANY INTELLECTUAL         
|  PROPERTY RIGHTS (PATENT, COPYRIGHT, TRADE SECRET, MASK WORK, OR OTHER   
|  PROPRIETARY RIGHT) EMBODIED IN ANY OTHER IKANOS HARDWARE OR SOFTWARE         
|  EITHER SOLELY OR IN COMBINATION WITH THIS SOFTWARE. 

