Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/emulex/benet/be_main.c drivers/net/ethernet/intel/igb/igb_main.c drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c include/net/scm.h net/batman-adv/routing.c net/ipv4/tcp_input.c The e{uid,gid} --> {uid,gid} credentials fix conflicted with the cleanup in net-next to now pass cred structs around. The be2net driver had a bug fix in 'net' that overlapped with the VLAN interface changes by Patrick McHardy in net-next. An IGB conflict existed because in 'net' the build_skb() support was reverted, and in 'net-next' there was a comment style fix within that code. Several batman-adv conflicts were resolved by making sure that all calls to batadv_is_my_mac() are changed to have a new bat_priv first argument. Eric Dumazet's TS ECR fix in TCP in 'net' conflicted with the F-RTO rewrite in 'net-next', mostly overlapping changes. Thanks to Stephen Rothwell and Antonio Quartulli for help with several of these merge resolutions. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -769,6 +769,7 @@ struct qeth_card {
|
||||
unsigned long thread_start_mask;
|
||||
unsigned long thread_allowed_mask;
|
||||
unsigned long thread_running_mask;
|
||||
struct task_struct *recovery_task;
|
||||
spinlock_t ip_lock;
|
||||
struct list_head ip_list;
|
||||
struct list_head *ip_tbd_list;
|
||||
@@ -862,6 +863,8 @@ extern struct qeth_card_list_struct qeth_core_card_list;
|
||||
extern struct kmem_cache *qeth_core_header_cache;
|
||||
extern struct qeth_dbf_info qeth_dbf[QETH_DBF_INFOS];
|
||||
|
||||
void qeth_set_recovery_task(struct qeth_card *);
|
||||
void qeth_clear_recovery_task(struct qeth_card *);
|
||||
void qeth_set_allowed_threads(struct qeth_card *, unsigned long , int);
|
||||
int qeth_threads_running(struct qeth_card *, unsigned long);
|
||||
int qeth_wait_for_threads(struct qeth_card *, unsigned long);
|
||||
|
@@ -177,6 +177,23 @@ const char *qeth_get_cardname_short(struct qeth_card *card)
|
||||
return "n/a";
|
||||
}
|
||||
|
||||
void qeth_set_recovery_task(struct qeth_card *card)
|
||||
{
|
||||
card->recovery_task = current;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(qeth_set_recovery_task);
|
||||
|
||||
void qeth_clear_recovery_task(struct qeth_card *card)
|
||||
{
|
||||
card->recovery_task = NULL;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(qeth_clear_recovery_task);
|
||||
|
||||
static bool qeth_is_recovery_task(const struct qeth_card *card)
|
||||
{
|
||||
return card->recovery_task == current;
|
||||
}
|
||||
|
||||
void qeth_set_allowed_threads(struct qeth_card *card, unsigned long threads,
|
||||
int clear_start_mask)
|
||||
{
|
||||
@@ -205,6 +222,8 @@ EXPORT_SYMBOL_GPL(qeth_threads_running);
|
||||
|
||||
int qeth_wait_for_threads(struct qeth_card *card, unsigned long threads)
|
||||
{
|
||||
if (qeth_is_recovery_task(card))
|
||||
return 0;
|
||||
return wait_event_interruptible(card->wait_q,
|
||||
qeth_threads_running(card, threads) == 0);
|
||||
}
|
||||
|
@@ -1144,6 +1144,7 @@ static int qeth_l2_recover(void *ptr)
|
||||
QETH_CARD_TEXT(card, 2, "recover2");
|
||||
dev_warn(&card->gdev->dev,
|
||||
"A recovery process has been started for the device\n");
|
||||
qeth_set_recovery_task(card);
|
||||
__qeth_l2_set_offline(card->gdev, 1);
|
||||
rc = __qeth_l2_set_online(card->gdev, 1);
|
||||
if (!rc)
|
||||
@@ -1154,6 +1155,7 @@ static int qeth_l2_recover(void *ptr)
|
||||
dev_warn(&card->gdev->dev, "The qeth device driver "
|
||||
"failed to recover an error on the device\n");
|
||||
}
|
||||
qeth_clear_recovery_task(card);
|
||||
qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD);
|
||||
qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD);
|
||||
return 0;
|
||||
|
@@ -3520,6 +3520,7 @@ static int qeth_l3_recover(void *ptr)
|
||||
QETH_CARD_TEXT(card, 2, "recover2");
|
||||
dev_warn(&card->gdev->dev,
|
||||
"A recovery process has been started for the device\n");
|
||||
qeth_set_recovery_task(card);
|
||||
__qeth_l3_set_offline(card->gdev, 1);
|
||||
rc = __qeth_l3_set_online(card->gdev, 1);
|
||||
if (!rc)
|
||||
@@ -3530,6 +3531,7 @@ static int qeth_l3_recover(void *ptr)
|
||||
dev_warn(&card->gdev->dev, "The qeth device driver "
|
||||
"failed to recover an error on the device\n");
|
||||
}
|
||||
qeth_clear_recovery_task(card);
|
||||
qeth_clear_thread_start_bit(card, QETH_RECOVER_THREAD);
|
||||
qeth_clear_thread_running_bit(card, QETH_RECOVER_THREAD);
|
||||
return 0;
|
||||
|
مرجع در شماره جدید
Block a user