qcacld-3.0: Refactor hdd_register_interface()

Unify hdd_register_interface() and hdd_register_hostapd(). Update
failure log with error status and device name in case of
register_netdevice(), register_netdev() or dev_alloc_name() failures.

Change-Id: I428c73d473de6dc2e61567129e9f2a7996631729
CRs-Fixed: 2085098
This commit is contained in:
Mahesh Kumar Kalikot Veetil 2017-07-28 11:06:19 -07:00 committed by snandini
parent 9d472c9da0
commit aff9486ae9
3 changed files with 24 additions and 50 deletions

View File

@ -6317,43 +6317,6 @@ hdd_adapter_t *hdd_wlan_create_ap_dev(hdd_context_t *pHddCtx,
return pHostapdAdapter;
}
/**
* hdd_register_hostapd() - register hostapd
* @pAdapter: Pointer to hostapd adapter
* @rtnl_lock_held: RTNL lock held
*
* Return: QDF status
*/
QDF_STATUS hdd_register_hostapd(hdd_adapter_t *pAdapter,
uint8_t rtnl_lock_held) {
struct net_device *dev = pAdapter->dev;
QDF_STATUS status = QDF_STATUS_SUCCESS;
ENTER();
if (rtnl_lock_held) {
if (strnchr(dev->name, strlen(dev->name), '%')) {
if (dev_alloc_name(dev, dev->name) < 0) {
hdd_err("Failed:dev_alloc_name");
return QDF_STATUS_E_FAILURE;
}
}
if (register_netdevice(dev)) {
hdd_err("Failed:register_netdevice");
return QDF_STATUS_E_FAILURE;
}
} else {
if (register_netdev(dev)) {
hdd_err("Failed:register_netdev");
return QDF_STATUS_E_FAILURE;
}
}
set_bit(NET_DEVICE_REGISTERED, &pAdapter->event_flags);
EXIT();
return status;
}
/**
* hdd_unregister_hostapd() - unregister hostapd
* @pAdapter: Pointer to hostapd adapter

View File

@ -52,8 +52,6 @@ hdd_adapter_t *hdd_wlan_create_ap_dev(hdd_context_t *pHddCtx,
unsigned char name_assign_type,
uint8_t *name);
QDF_STATUS hdd_register_hostapd(hdd_adapter_t *pAdapter, uint8_t rtnl_held);
QDF_STATUS hdd_unregister_hostapd(hdd_adapter_t *pAdapter, bool rtnl_held);
eCsrAuthType

View File

@ -2971,30 +2971,43 @@ static hdd_adapter_t *hdd_alloc_station_adapter(hdd_context_t *hdd_ctx,
return adapter;
}
static QDF_STATUS hdd_register_interface(hdd_adapter_t *adapter,
bool rtnl_held)
static QDF_STATUS hdd_register_interface(hdd_adapter_t *adapter, bool rtnl_held)
{
struct net_device *pWlanDev = adapter->dev;
struct net_device *dev = adapter->dev;
int ret;
ENTER();
if (rtnl_held) {
if (strnchr(pWlanDev->name, strlen(pWlanDev->name), '%')) {
if (dev_alloc_name(pWlanDev, pWlanDev->name) < 0) {
hdd_err("Failed:dev_alloc_name");
if (strnchr(dev->name, IFNAMSIZ - 1, '%')) {
ret = dev_alloc_name(dev, dev->name);
if (ret < 0) {
hdd_err(
"unable to get dev name: %s, err = 0x%x",
dev->name, ret);
return QDF_STATUS_E_FAILURE;
}
}
if (register_netdevice(pWlanDev)) {
hdd_err("Failed:register_netdev");
ret = register_netdevice(dev);
if (ret) {
hdd_err("register_netdevice(%s) failed, err = 0x%x",
dev->name, ret);
return QDF_STATUS_E_FAILURE;
}
} else {
if (register_netdev(pWlanDev)) {
hdd_err("Failed:register_netdev");
ret = register_netdev(dev);
if (ret) {
hdd_err("register_netdev(%s) failed, err = 0x%x",
dev->name, ret);
return QDF_STATUS_E_FAILURE;
}
}
set_bit(NET_DEVICE_REGISTERED, &adapter->event_flags);
EXIT();
return QDF_STATUS_SUCCESS;
}
@ -3848,7 +3861,7 @@ hdd_adapter_t *hdd_open_adapter(hdd_context_t *hdd_ctx, uint8_t session_type,
NL80211_IFTYPE_P2P_GO;
adapter->device_mode = session_type;
status = hdd_register_hostapd(adapter, rtnl_held);
status = hdd_register_interface(adapter, rtnl_held);
if (QDF_STATUS_SUCCESS != status) {
hdd_deinit_adapter(hdd_ctx, adapter, rtnl_held);
goto err_free_netdev;