Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/ieee802154/fakehard.c drivers/net/e1000e/ich8lan.c drivers/net/e1000e/phy.c drivers/net/netxen/netxen_nic_init.c drivers/net/wireless/ath/ath9k/main.c
This commit is contained in:
@@ -364,6 +364,7 @@ struct pktgen_dev {
|
||||
* device name (not when the inject is
|
||||
* started as it used to do.)
|
||||
*/
|
||||
char odevname[32];
|
||||
struct flow_state *flows;
|
||||
unsigned cflows; /* Concurrent flows (config) */
|
||||
unsigned lflow; /* Flow length (config) */
|
||||
@@ -427,7 +428,7 @@ static const char version[] =
|
||||
static int pktgen_remove_device(struct pktgen_thread *t, struct pktgen_dev *i);
|
||||
static int pktgen_add_device(struct pktgen_thread *t, const char *ifname);
|
||||
static struct pktgen_dev *pktgen_find_dev(struct pktgen_thread *t,
|
||||
const char *ifname);
|
||||
const char *ifname, bool exact);
|
||||
static int pktgen_device_event(struct notifier_block *, unsigned long, void *);
|
||||
static void pktgen_run_all_threads(void);
|
||||
static void pktgen_reset_all_threads(void);
|
||||
@@ -529,7 +530,7 @@ static int pktgen_if_show(struct seq_file *seq, void *v)
|
||||
seq_printf(seq,
|
||||
" frags: %d delay: %llu clone_skb: %d ifname: %s\n",
|
||||
pkt_dev->nfrags, (unsigned long long) pkt_dev->delay,
|
||||
pkt_dev->clone_skb, pkt_dev->odev->name);
|
||||
pkt_dev->clone_skb, pkt_dev->odevname);
|
||||
|
||||
seq_printf(seq, " flows: %u flowlen: %u\n", pkt_dev->cflows,
|
||||
pkt_dev->lflow);
|
||||
@@ -1689,13 +1690,13 @@ static int pktgen_thread_show(struct seq_file *seq, void *v)
|
||||
if_lock(t);
|
||||
list_for_each_entry(pkt_dev, &t->if_list, list)
|
||||
if (pkt_dev->running)
|
||||
seq_printf(seq, "%s ", pkt_dev->odev->name);
|
||||
seq_printf(seq, "%s ", pkt_dev->odevname);
|
||||
|
||||
seq_printf(seq, "\nStopped: ");
|
||||
|
||||
list_for_each_entry(pkt_dev, &t->if_list, list)
|
||||
if (!pkt_dev->running)
|
||||
seq_printf(seq, "%s ", pkt_dev->odev->name);
|
||||
seq_printf(seq, "%s ", pkt_dev->odevname);
|
||||
|
||||
if (t->result[0])
|
||||
seq_printf(seq, "\nResult: %s\n", t->result);
|
||||
@@ -1818,9 +1819,10 @@ static struct pktgen_dev *__pktgen_NN_threads(const char *ifname, int remove)
|
||||
{
|
||||
struct pktgen_thread *t;
|
||||
struct pktgen_dev *pkt_dev = NULL;
|
||||
bool exact = (remove == FIND);
|
||||
|
||||
list_for_each_entry(t, &pktgen_threads, th_list) {
|
||||
pkt_dev = pktgen_find_dev(t, ifname);
|
||||
pkt_dev = pktgen_find_dev(t, ifname, exact);
|
||||
if (pkt_dev) {
|
||||
if (remove) {
|
||||
if_lock(t);
|
||||
@@ -1995,7 +1997,7 @@ static void pktgen_setup_inject(struct pktgen_dev *pkt_dev)
|
||||
"queue_map_min (zero-based) (%d) exceeds valid range "
|
||||
"[0 - %d] for (%d) queues on %s, resetting\n",
|
||||
pkt_dev->queue_map_min, (ntxq ?: 1) - 1, ntxq,
|
||||
pkt_dev->odev->name);
|
||||
pkt_dev->odevname);
|
||||
pkt_dev->queue_map_min = ntxq - 1;
|
||||
}
|
||||
if (pkt_dev->queue_map_max >= ntxq) {
|
||||
@@ -2003,7 +2005,7 @@ static void pktgen_setup_inject(struct pktgen_dev *pkt_dev)
|
||||
"queue_map_max (zero-based) (%d) exceeds valid range "
|
||||
"[0 - %d] for (%d) queues on %s, resetting\n",
|
||||
pkt_dev->queue_map_max, (ntxq ?: 1) - 1, ntxq,
|
||||
pkt_dev->odev->name);
|
||||
pkt_dev->odevname);
|
||||
pkt_dev->queue_map_max = ntxq - 1;
|
||||
}
|
||||
|
||||
@@ -3263,7 +3265,7 @@ static int pktgen_stop_device(struct pktgen_dev *pkt_dev)
|
||||
|
||||
if (!pkt_dev->running) {
|
||||
printk(KERN_WARNING "pktgen: interface: %s is already "
|
||||
"stopped\n", pkt_dev->odev->name);
|
||||
"stopped\n", pkt_dev->odevname);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -3467,7 +3469,7 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev)
|
||||
default: /* Drivers are not supposed to return other values! */
|
||||
if (net_ratelimit())
|
||||
pr_info("pktgen: %s xmit error: %d\n",
|
||||
odev->name, ret);
|
||||
pkt_dev->odevname, ret);
|
||||
pkt_dev->errors++;
|
||||
/* fallthru */
|
||||
case NETDEV_TX_LOCKED:
|
||||
@@ -3570,13 +3572,18 @@ static int pktgen_thread_worker(void *arg)
|
||||
}
|
||||
|
||||
static struct pktgen_dev *pktgen_find_dev(struct pktgen_thread *t,
|
||||
const char *ifname)
|
||||
const char *ifname, bool exact)
|
||||
{
|
||||
struct pktgen_dev *p, *pkt_dev = NULL;
|
||||
if_lock(t);
|
||||
size_t len = strlen(ifname);
|
||||
|
||||
if_lock(t);
|
||||
list_for_each_entry(p, &t->if_list, list)
|
||||
if (strncmp(p->odev->name, ifname, IFNAMSIZ) == 0) {
|
||||
if (strncmp(p->odevname, ifname, len) == 0) {
|
||||
if (p->odevname[len]) {
|
||||
if (exact || p->odevname[len] != '@')
|
||||
continue;
|
||||
}
|
||||
pkt_dev = p;
|
||||
break;
|
||||
}
|
||||
@@ -3632,6 +3639,7 @@ static int pktgen_add_device(struct pktgen_thread *t, const char *ifname)
|
||||
if (!pkt_dev)
|
||||
return -ENOMEM;
|
||||
|
||||
strcpy(pkt_dev->odevname, ifname);
|
||||
pkt_dev->flows = vmalloc(MAX_CFLOWS * sizeof(struct flow_state));
|
||||
if (pkt_dev->flows == NULL) {
|
||||
kfree(pkt_dev);
|
||||
|
Reference in New Issue
Block a user