|
@@ -176,6 +176,31 @@ mwifiex_11n_get_rx_reorder_tbl(struct mwifiex_private *priv, int tid, u8 *ta)
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
+/* This function retrieves the pointer to an entry in Rx reordering
|
|
|
+ * table which matches the given TA and deletes it.
|
|
|
+ */
|
|
|
+void mwifiex_11n_del_rx_reorder_tbl_by_ta(struct mwifiex_private *priv, u8 *ta)
|
|
|
+{
|
|
|
+ struct mwifiex_rx_reorder_tbl *tbl, *tmp;
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ if (!ta)
|
|
|
+ return;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
|
|
|
+ list_for_each_entry_safe(tbl, tmp, &priv->rx_reorder_tbl_ptr, list) {
|
|
|
+ if (!memcmp(tbl->ta, ta, ETH_ALEN)) {
|
|
|
+ spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock,
|
|
|
+ flags);
|
|
|
+ mwifiex_del_rx_reorder_entry(priv, tbl);
|
|
|
+ spin_lock_irqsave(&priv->rx_reorder_tbl_lock, flags);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ spin_unlock_irqrestore(&priv->rx_reorder_tbl_lock, flags);
|
|
|
+
|
|
|
+ return;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* This function finds the last sequence number used in the packets
|
|
|
* buffered in Rx reordering table.
|