qcacld-3.0: Move change to prevent mac addr modification
Move change Ie0f6f4365b8558a451fa8434832f14aebd56172b Prevent wds_replace_peer_mac modifying mac addr in skb to DP component Change-Id: If2cd52c1949a0eb7d406fd44a01b15bbb18d3a81 CRs-Fixed: 3226191
这个提交包含在:
@@ -441,46 +441,41 @@ void dp_wds_replace_peer_mac(void *soc, struct wlan_dp_intf *dp_intf,
|
||||
static QDF_STATUS dp_softap_validate_peer_state(struct wlan_dp_intf *dp_intf,
|
||||
qdf_nbuf_t nbuf)
|
||||
{
|
||||
struct qdf_mac_addr *dest_mac_addr, *mac_addr;
|
||||
static struct qdf_mac_addr bcast_mac_addr = QDF_MAC_ADDR_BCAST_INIT;
|
||||
struct qdf_mac_addr *dest_mac_addr;
|
||||
struct qdf_mac_addr mac_addr;
|
||||
enum ol_txrx_peer_state peer_state;
|
||||
void *soc;
|
||||
|
||||
dest_mac_addr = (struct qdf_mac_addr *)(qdf_nbuf_data(nbuf) +
|
||||
QDF_NBUF_DEST_MAC_OFFSET);
|
||||
|
||||
if (QDF_NBUF_CB_GET_IS_MCAST(nbuf))
|
||||
mac_addr = &bcast_mac_addr;
|
||||
else
|
||||
mac_addr = dest_mac_addr;
|
||||
if (QDF_NBUF_CB_GET_IS_BCAST(nbuf) || QDF_NBUF_CB_GET_IS_MCAST(nbuf))
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
if (!QDF_NBUF_CB_GET_IS_BCAST(nbuf) &&
|
||||
!QDF_NBUF_CB_GET_IS_MCAST(nbuf)) {
|
||||
/* for a unicast frame */
|
||||
enum ol_txrx_peer_state peer_state;
|
||||
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
|
||||
/* for a unicast frame */
|
||||
qdf_copy_macaddr(&mac_addr, dest_mac_addr);
|
||||
soc = cds_get_context(QDF_MODULE_ID_SOC);
|
||||
QDF_BUG(soc);
|
||||
dp_wds_replace_peer_mac(soc, dp_intf, mac_addr.bytes);
|
||||
peer_state = cdp_peer_state_get(soc, dp_intf->intf_id,
|
||||
mac_addr.bytes);
|
||||
|
||||
QDF_BUG(soc);
|
||||
dp_wds_replace_peer_mac(soc, dp_intf, mac_addr->bytes);
|
||||
peer_state = cdp_peer_state_get(soc, dp_intf->intf_id,
|
||||
mac_addr->bytes);
|
||||
if (peer_state == OL_TXRX_PEER_STATE_INVALID) {
|
||||
dp_debug_rl("Failed to find right station");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
if (peer_state == OL_TXRX_PEER_STATE_INVALID) {
|
||||
dp_debug_rl("Failed to find right station");
|
||||
if (peer_state != OL_TXRX_PEER_STATE_CONN &&
|
||||
peer_state != OL_TXRX_PEER_STATE_AUTH) {
|
||||
dp_debug_rl("Station not connected yet");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
if (peer_state == OL_TXRX_PEER_STATE_CONN) {
|
||||
if (qdf_ntohs(qdf_nbuf_get_protocol(nbuf)) != ETHERTYPE_PAE) {
|
||||
dp_debug_rl("NON-EAPOL packet in non-Authenticated state");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
if (peer_state != OL_TXRX_PEER_STATE_CONN &&
|
||||
peer_state != OL_TXRX_PEER_STATE_AUTH) {
|
||||
dp_debug_rl("Station not connected yet");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
if (peer_state == OL_TXRX_PEER_STATE_CONN) {
|
||||
if (qdf_ntohs(qdf_nbuf_get_protocol(nbuf)) !=
|
||||
ETHERTYPE_PAE) {
|
||||
dp_debug_rl("NON-EAPOL packet in non-Authenticated state");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
在新工单中引用
屏蔽一个用户