# Copyright (C) 2003 - 2009 NetXen, Inc.
# All rights reserved.
# 
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#                            
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#                                   
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston,
# MA  02111-1307, USA.
# 
# The full GNU General Public License is included in this distribution
# in the file called LICENSE.
# 
# Contact Information:
#    info@netxen.com
# NetXen Inc,
# 18922 Forge Drive
# Cupertino, CA 95014-0701
#
#


obj-$(CONFIG_NETXEN_NIC) := netxen_nic.o

netxen_nic-y := netxen_nic_hw.o netxen_nic_main.o netxen_nic_init.o \
	netxen_nic_ethtool.o netxen_nic_niu.o netxen_nic_ctx.o
