qcacld-3.0: Add support to handle a packet list in the rx path

Add support to handle a list of packets in the receive callback.

The Napier data path may deliver a list of frames as opposed to
one frame at a time.

Change-Id: I4ea274783337a550ed83661a0510084f5ec54604
CRs-Fixed: 1114851
This commit is contained in:
Dhanashri Atre
2017-01-24 18:22:09 -08:00
committed by qcabuildsw
parent a8f82f28fc
commit 63d980253b
2 changed files with 127 additions and 114 deletions

View File

@@ -637,6 +637,10 @@ QDF_STATUS hdd_softap_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
/* walk the chain until all are processed */
skb = (struct sk_buff *)rxBuf;
while (skb) {
struct sk_buff *next = skb->next;
skb->next = NULL;
hdd_softap_dump_sk_buff(skb);
skb->dev = pAdapter->dev;
@@ -689,6 +693,9 @@ QDF_STATUS hdd_softap_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
pAdapter->dev->last_rx = jiffies;
skb = next;
}
return QDF_STATUS_SUCCESS;
}

View File

@@ -1012,6 +1012,10 @@ QDF_STATUS hdd_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
skb = (struct sk_buff *)rxBuf;
while (skb) {
struct sk_buff *next = skb->next;
skb->next = NULL;
pHddStaCtx = WLAN_HDD_GET_STATION_CTX_PTR(pAdapter);
if ((pHddStaCtx->conn_info.proxyARPService) &&
cfg80211_is_gratuitous_arp_unsolicited_na(skb)) {
@@ -1027,10 +1031,10 @@ QDF_STATUS hdd_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
}
hdd_event_eapol_log(skb, QDF_RX);
DPTRACE(qdf_dp_trace(rxBuf,
DPTRACE(qdf_dp_trace(skb,
QDF_DP_TRACE_RX_HDD_PACKET_PTR_RECORD,
qdf_nbuf_data_addr(rxBuf),
sizeof(qdf_nbuf_data(rxBuf)), QDF_RX));
qdf_nbuf_data_addr(skb),
sizeof(qdf_nbuf_data(skb)), QDF_RX));
wlan_hdd_tdls_update_rx_pkt_cnt(pAdapter, skb);
@@ -1065,7 +1069,7 @@ QDF_STATUS hdd_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
/* Remove SKB from internal tracking table before submitting
* it to stack
*/
qdf_net_buf_debug_release_skb(rxBuf);
qdf_net_buf_debug_release_skb(skb);
if (HDD_LRO_NO_RX ==
hdd_lro_rx(pHddCtx, pAdapter, skb)) {
@@ -1089,6 +1093,8 @@ QDF_STATUS hdd_rx_packet_cbk(void *context, qdf_nbuf_t rxBuf)
pAdapter->dev->last_rx = jiffies;
skb = next;
}
return QDF_STATUS_SUCCESS;
}