Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/mediatek/mtk_eth_soc.c drivers/net/ethernet/qlogic/qed/qed_dcbx.c drivers/net/phy/Kconfig All conflicts were cases of overlapping commits. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -4527,7 +4527,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
|
||||
(u8 *)&settings->beacon.head[ie_offset],
|
||||
settings->beacon.head_len - ie_offset,
|
||||
WLAN_EID_SSID);
|
||||
if (!ssid_ie)
|
||||
if (!ssid_ie || ssid_ie->len > IEEE80211_MAX_SSID_LEN)
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(ssid_le.SSID, ssid_ie->data, ssid_ie->len);
|
||||
@@ -5635,7 +5635,7 @@ static s32 brcmf_notify_vif_event(struct brcmf_if *ifp,
|
||||
ifevent->action, ifevent->flags, ifevent->ifidx,
|
||||
ifevent->bsscfgidx);
|
||||
|
||||
mutex_lock(&event->vif_event_lock);
|
||||
spin_lock(&event->vif_event_lock);
|
||||
event->action = ifevent->action;
|
||||
vif = event->vif;
|
||||
|
||||
@@ -5643,7 +5643,7 @@ static s32 brcmf_notify_vif_event(struct brcmf_if *ifp,
|
||||
case BRCMF_E_IF_ADD:
|
||||
/* waiting process may have timed out */
|
||||
if (!cfg->vif_event.vif) {
|
||||
mutex_unlock(&event->vif_event_lock);
|
||||
spin_unlock(&event->vif_event_lock);
|
||||
return -EBADF;
|
||||
}
|
||||
|
||||
@@ -5654,24 +5654,24 @@ static s32 brcmf_notify_vif_event(struct brcmf_if *ifp,
|
||||
ifp->ndev->ieee80211_ptr = &vif->wdev;
|
||||
SET_NETDEV_DEV(ifp->ndev, wiphy_dev(cfg->wiphy));
|
||||
}
|
||||
mutex_unlock(&event->vif_event_lock);
|
||||
spin_unlock(&event->vif_event_lock);
|
||||
wake_up(&event->vif_wq);
|
||||
return 0;
|
||||
|
||||
case BRCMF_E_IF_DEL:
|
||||
mutex_unlock(&event->vif_event_lock);
|
||||
spin_unlock(&event->vif_event_lock);
|
||||
/* event may not be upon user request */
|
||||
if (brcmf_cfg80211_vif_event_armed(cfg))
|
||||
wake_up(&event->vif_wq);
|
||||
return 0;
|
||||
|
||||
case BRCMF_E_IF_CHANGE:
|
||||
mutex_unlock(&event->vif_event_lock);
|
||||
spin_unlock(&event->vif_event_lock);
|
||||
wake_up(&event->vif_wq);
|
||||
return 0;
|
||||
|
||||
default:
|
||||
mutex_unlock(&event->vif_event_lock);
|
||||
spin_unlock(&event->vif_event_lock);
|
||||
break;
|
||||
}
|
||||
return -EINVAL;
|
||||
@@ -5792,7 +5792,7 @@ static void wl_deinit_priv(struct brcmf_cfg80211_info *cfg)
|
||||
static void init_vif_event(struct brcmf_cfg80211_vif_event *event)
|
||||
{
|
||||
init_waitqueue_head(&event->vif_wq);
|
||||
mutex_init(&event->vif_event_lock);
|
||||
spin_lock_init(&event->vif_event_lock);
|
||||
}
|
||||
|
||||
static s32 brcmf_dongle_roam(struct brcmf_if *ifp)
|
||||
@@ -6691,9 +6691,9 @@ static inline bool vif_event_equals(struct brcmf_cfg80211_vif_event *event,
|
||||
{
|
||||
u8 evt_action;
|
||||
|
||||
mutex_lock(&event->vif_event_lock);
|
||||
spin_lock(&event->vif_event_lock);
|
||||
evt_action = event->action;
|
||||
mutex_unlock(&event->vif_event_lock);
|
||||
spin_unlock(&event->vif_event_lock);
|
||||
return evt_action == action;
|
||||
}
|
||||
|
||||
@@ -6702,10 +6702,10 @@ void brcmf_cfg80211_arm_vif_event(struct brcmf_cfg80211_info *cfg,
|
||||
{
|
||||
struct brcmf_cfg80211_vif_event *event = &cfg->vif_event;
|
||||
|
||||
mutex_lock(&event->vif_event_lock);
|
||||
spin_lock(&event->vif_event_lock);
|
||||
event->vif = vif;
|
||||
event->action = 0;
|
||||
mutex_unlock(&event->vif_event_lock);
|
||||
spin_unlock(&event->vif_event_lock);
|
||||
}
|
||||
|
||||
bool brcmf_cfg80211_vif_event_armed(struct brcmf_cfg80211_info *cfg)
|
||||
@@ -6713,9 +6713,9 @@ bool brcmf_cfg80211_vif_event_armed(struct brcmf_cfg80211_info *cfg)
|
||||
struct brcmf_cfg80211_vif_event *event = &cfg->vif_event;
|
||||
bool armed;
|
||||
|
||||
mutex_lock(&event->vif_event_lock);
|
||||
spin_lock(&event->vif_event_lock);
|
||||
armed = event->vif != NULL;
|
||||
mutex_unlock(&event->vif_event_lock);
|
||||
spin_unlock(&event->vif_event_lock);
|
||||
|
||||
return armed;
|
||||
}
|
||||
|
@@ -227,7 +227,7 @@ struct escan_info {
|
||||
*/
|
||||
struct brcmf_cfg80211_vif_event {
|
||||
wait_queue_head_t vif_wq;
|
||||
struct mutex vif_event_lock;
|
||||
spinlock_t vif_event_lock;
|
||||
u8 action;
|
||||
struct brcmf_cfg80211_vif *vif;
|
||||
};
|
||||
|
@@ -743,7 +743,7 @@ static void brcmf_del_if(struct brcmf_pub *drvr, s32 bsscfgidx,
|
||||
* serious troublesome side effects. The p2p module will clean
|
||||
* up the ifp if needed.
|
||||
*/
|
||||
brcmf_p2p_ifp_removed(ifp);
|
||||
brcmf_p2p_ifp_removed(ifp, rtnl_locked);
|
||||
kfree(ifp);
|
||||
}
|
||||
}
|
||||
|
@@ -2297,7 +2297,7 @@ int brcmf_p2p_del_vif(struct wiphy *wiphy, struct wireless_dev *wdev)
|
||||
return err;
|
||||
}
|
||||
|
||||
void brcmf_p2p_ifp_removed(struct brcmf_if *ifp)
|
||||
void brcmf_p2p_ifp_removed(struct brcmf_if *ifp, bool rtnl_locked)
|
||||
{
|
||||
struct brcmf_cfg80211_info *cfg;
|
||||
struct brcmf_cfg80211_vif *vif;
|
||||
@@ -2306,9 +2306,11 @@ void brcmf_p2p_ifp_removed(struct brcmf_if *ifp)
|
||||
vif = ifp->vif;
|
||||
cfg = wdev_to_cfg(&vif->wdev);
|
||||
cfg->p2p.bss_idx[P2PAPI_BSSCFG_DEVICE].vif = NULL;
|
||||
rtnl_lock();
|
||||
if (!rtnl_locked)
|
||||
rtnl_lock();
|
||||
cfg80211_unregister_wdev(&vif->wdev);
|
||||
rtnl_unlock();
|
||||
if (!rtnl_locked)
|
||||
rtnl_unlock();
|
||||
brcmf_free_vif(vif);
|
||||
}
|
||||
|
||||
|
@@ -155,7 +155,7 @@ struct wireless_dev *brcmf_p2p_add_vif(struct wiphy *wiphy, const char *name,
|
||||
int brcmf_p2p_del_vif(struct wiphy *wiphy, struct wireless_dev *wdev);
|
||||
int brcmf_p2p_ifchange(struct brcmf_cfg80211_info *cfg,
|
||||
enum brcmf_fil_p2p_if_types if_type);
|
||||
void brcmf_p2p_ifp_removed(struct brcmf_if *ifp);
|
||||
void brcmf_p2p_ifp_removed(struct brcmf_if *ifp, bool rtnl_locked);
|
||||
int brcmf_p2p_start_device(struct wiphy *wiphy, struct wireless_dev *wdev);
|
||||
void brcmf_p2p_stop_device(struct wiphy *wiphy, struct wireless_dev *wdev);
|
||||
int brcmf_p2p_scan_prep(struct wiphy *wiphy,
|
||||
|
Reference in New Issue
Block a user