mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 18:26:42 +00:00
move netdev_boot_setup into Space.c
This is now only used by a handful of old ISA drivers, and can be moved into the file they already all depend on. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f8ade8dddb
commit
5ea2f5ffde
@ -30,6 +30,148 @@
|
||||
#include <linux/netlink.h>
|
||||
#include <net/Space.h>
|
||||
|
||||
/*
|
||||
* This structure holds boot-time configured netdevice settings. They
|
||||
* are then used in the device probing.
|
||||
*/
|
||||
struct netdev_boot_setup {
|
||||
char name[IFNAMSIZ];
|
||||
struct ifmap map;
|
||||
};
|
||||
#define NETDEV_BOOT_SETUP_MAX 8
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Device Boot-time Settings Routines
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/* Boot time configuration table */
|
||||
static struct netdev_boot_setup dev_boot_setup[NETDEV_BOOT_SETUP_MAX];
|
||||
|
||||
/**
|
||||
* netdev_boot_setup_add - add new setup entry
|
||||
* @name: name of the device
|
||||
* @map: configured settings for the device
|
||||
*
|
||||
* Adds new setup entry to the dev_boot_setup list. The function
|
||||
* returns 0 on error and 1 on success. This is a generic routine to
|
||||
* all netdevices.
|
||||
*/
|
||||
static int netdev_boot_setup_add(char *name, struct ifmap *map)
|
||||
{
|
||||
struct netdev_boot_setup *s;
|
||||
int i;
|
||||
|
||||
s = dev_boot_setup;
|
||||
for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
|
||||
if (s[i].name[0] == '\0' || s[i].name[0] == ' ') {
|
||||
memset(s[i].name, 0, sizeof(s[i].name));
|
||||
strlcpy(s[i].name, name, IFNAMSIZ);
|
||||
memcpy(&s[i].map, map, sizeof(s[i].map));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return i >= NETDEV_BOOT_SETUP_MAX ? 0 : 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* netdev_boot_setup_check - check boot time settings
|
||||
* @dev: the netdevice
|
||||
*
|
||||
* Check boot time settings for the device.
|
||||
* The found settings are set for the device to be used
|
||||
* later in the device probing.
|
||||
* Returns 0 if no settings found, 1 if they are.
|
||||
*/
|
||||
int netdev_boot_setup_check(struct net_device *dev)
|
||||
{
|
||||
struct netdev_boot_setup *s = dev_boot_setup;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
|
||||
if (s[i].name[0] != '\0' && s[i].name[0] != ' ' &&
|
||||
!strcmp(dev->name, s[i].name)) {
|
||||
dev->irq = s[i].map.irq;
|
||||
dev->base_addr = s[i].map.base_addr;
|
||||
dev->mem_start = s[i].map.mem_start;
|
||||
dev->mem_end = s[i].map.mem_end;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(netdev_boot_setup_check);
|
||||
|
||||
/**
|
||||
* netdev_boot_base - get address from boot time settings
|
||||
* @prefix: prefix for network device
|
||||
* @unit: id for network device
|
||||
*
|
||||
* Check boot time settings for the base address of device.
|
||||
* The found settings are set for the device to be used
|
||||
* later in the device probing.
|
||||
* Returns 0 if no settings found.
|
||||
*/
|
||||
static unsigned long netdev_boot_base(const char *prefix, int unit)
|
||||
{
|
||||
const struct netdev_boot_setup *s = dev_boot_setup;
|
||||
char name[IFNAMSIZ];
|
||||
int i;
|
||||
|
||||
sprintf(name, "%s%d", prefix, unit);
|
||||
|
||||
/*
|
||||
* If device already registered then return base of 1
|
||||
* to indicate not to probe for this interface
|
||||
*/
|
||||
if (__dev_get_by_name(&init_net, name))
|
||||
return 1;
|
||||
|
||||
for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++)
|
||||
if (!strcmp(name, s[i].name))
|
||||
return s[i].map.base_addr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Saves at boot time configured settings for any netdevice.
|
||||
*/
|
||||
static int __init netdev_boot_setup(char *str)
|
||||
{
|
||||
int ints[5];
|
||||
struct ifmap map;
|
||||
|
||||
str = get_options(str, ARRAY_SIZE(ints), ints);
|
||||
if (!str || !*str)
|
||||
return 0;
|
||||
|
||||
/* Save settings */
|
||||
memset(&map, 0, sizeof(map));
|
||||
if (ints[0] > 0)
|
||||
map.irq = ints[1];
|
||||
if (ints[0] > 1)
|
||||
map.base_addr = ints[2];
|
||||
if (ints[0] > 2)
|
||||
map.mem_start = ints[3];
|
||||
if (ints[0] > 3)
|
||||
map.mem_end = ints[4];
|
||||
|
||||
/* Add new entry to the list */
|
||||
return netdev_boot_setup_add(str, &map);
|
||||
}
|
||||
|
||||
__setup("netdev=", netdev_boot_setup);
|
||||
|
||||
static int __init ether_boot_setup(char *str)
|
||||
{
|
||||
return netdev_boot_setup(str);
|
||||
}
|
||||
__setup("ether=", ether_boot_setup);
|
||||
|
||||
|
||||
/* A unified ethernet device probe. This is the easiest way to have every
|
||||
* ethernet adaptor have the name "eth[0123...]".
|
||||
*/
|
||||
|
@ -295,18 +295,6 @@ enum netdev_state_t {
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* This structure holds boot-time configured netdevice settings. They
|
||||
* are then used in the device probing.
|
||||
*/
|
||||
struct netdev_boot_setup {
|
||||
char name[IFNAMSIZ];
|
||||
struct ifmap map;
|
||||
};
|
||||
#define NETDEV_BOOT_SETUP_MAX 8
|
||||
|
||||
int __init netdev_boot_setup(char *str);
|
||||
|
||||
struct gro_list {
|
||||
struct list_head list;
|
||||
int count;
|
||||
@ -2939,7 +2927,6 @@ static inline struct net_device *first_net_device_rcu(struct net *net)
|
||||
}
|
||||
|
||||
int netdev_boot_setup_check(struct net_device *dev);
|
||||
unsigned long netdev_boot_base(const char *prefix, int unit);
|
||||
struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type,
|
||||
const char *hwaddr);
|
||||
struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type);
|
||||
|
125
net/core/dev.c
125
net/core/dev.c
@ -676,131 +676,6 @@ void dev_remove_offload(struct packet_offload *po)
|
||||
}
|
||||
EXPORT_SYMBOL(dev_remove_offload);
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* Device Boot-time Settings Routines
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
/* Boot time configuration table */
|
||||
static struct netdev_boot_setup dev_boot_setup[NETDEV_BOOT_SETUP_MAX];
|
||||
|
||||
/**
|
||||
* netdev_boot_setup_add - add new setup entry
|
||||
* @name: name of the device
|
||||
* @map: configured settings for the device
|
||||
*
|
||||
* Adds new setup entry to the dev_boot_setup list. The function
|
||||
* returns 0 on error and 1 on success. This is a generic routine to
|
||||
* all netdevices.
|
||||
*/
|
||||
static int netdev_boot_setup_add(char *name, struct ifmap *map)
|
||||
{
|
||||
struct netdev_boot_setup *s;
|
||||
int i;
|
||||
|
||||
s = dev_boot_setup;
|
||||
for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
|
||||
if (s[i].name[0] == '\0' || s[i].name[0] == ' ') {
|
||||
memset(s[i].name, 0, sizeof(s[i].name));
|
||||
strlcpy(s[i].name, name, IFNAMSIZ);
|
||||
memcpy(&s[i].map, map, sizeof(s[i].map));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return i >= NETDEV_BOOT_SETUP_MAX ? 0 : 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* netdev_boot_setup_check - check boot time settings
|
||||
* @dev: the netdevice
|
||||
*
|
||||
* Check boot time settings for the device.
|
||||
* The found settings are set for the device to be used
|
||||
* later in the device probing.
|
||||
* Returns 0 if no settings found, 1 if they are.
|
||||
*/
|
||||
int netdev_boot_setup_check(struct net_device *dev)
|
||||
{
|
||||
struct netdev_boot_setup *s = dev_boot_setup;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
|
||||
if (s[i].name[0] != '\0' && s[i].name[0] != ' ' &&
|
||||
!strcmp(dev->name, s[i].name)) {
|
||||
dev->irq = s[i].map.irq;
|
||||
dev->base_addr = s[i].map.base_addr;
|
||||
dev->mem_start = s[i].map.mem_start;
|
||||
dev->mem_end = s[i].map.mem_end;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(netdev_boot_setup_check);
|
||||
|
||||
|
||||
/**
|
||||
* netdev_boot_base - get address from boot time settings
|
||||
* @prefix: prefix for network device
|
||||
* @unit: id for network device
|
||||
*
|
||||
* Check boot time settings for the base address of device.
|
||||
* The found settings are set for the device to be used
|
||||
* later in the device probing.
|
||||
* Returns 0 if no settings found.
|
||||
*/
|
||||
unsigned long netdev_boot_base(const char *prefix, int unit)
|
||||
{
|
||||
const struct netdev_boot_setup *s = dev_boot_setup;
|
||||
char name[IFNAMSIZ];
|
||||
int i;
|
||||
|
||||
sprintf(name, "%s%d", prefix, unit);
|
||||
|
||||
/*
|
||||
* If device already registered then return base of 1
|
||||
* to indicate not to probe for this interface
|
||||
*/
|
||||
if (__dev_get_by_name(&init_net, name))
|
||||
return 1;
|
||||
|
||||
for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++)
|
||||
if (!strcmp(name, s[i].name))
|
||||
return s[i].map.base_addr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Saves at boot time configured settings for any netdevice.
|
||||
*/
|
||||
int __init netdev_boot_setup(char *str)
|
||||
{
|
||||
int ints[5];
|
||||
struct ifmap map;
|
||||
|
||||
str = get_options(str, ARRAY_SIZE(ints), ints);
|
||||
if (!str || !*str)
|
||||
return 0;
|
||||
|
||||
/* Save settings */
|
||||
memset(&map, 0, sizeof(map));
|
||||
if (ints[0] > 0)
|
||||
map.irq = ints[1];
|
||||
if (ints[0] > 1)
|
||||
map.base_addr = ints[2];
|
||||
if (ints[0] > 2)
|
||||
map.mem_start = ints[3];
|
||||
if (ints[0] > 3)
|
||||
map.mem_end = ints[4];
|
||||
|
||||
/* Add new entry to the list */
|
||||
return netdev_boot_setup_add(str, &map);
|
||||
}
|
||||
|
||||
__setup("netdev=", netdev_boot_setup);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Device Interface Subroutines
|
||||
|
@ -62,8 +62,6 @@
|
||||
#include <linux/uaccess.h>
|
||||
#include <net/pkt_sched.h>
|
||||
|
||||
__setup("ether=", netdev_boot_setup);
|
||||
|
||||
/**
|
||||
* eth_header - create the Ethernet header
|
||||
* @skb: buffer to alter
|
||||
|
Loading…
x
Reference in New Issue
Block a user