Kommt der Frame vom host stack, so wird, nachdem das Loopback Device ausgeschlossen wurde, die Funktion br_forward(struct sk_buff *skb, int port) aufgerufen, der die Struktur sk_buff und der Ursprungsport als Integerwert übergeben werden. Diese Funktion leitet den Frame entweder an eine bekannte Adresse an einem bestimmten Port weiter oder schickt einen Broadcast an alle Ports, wenn die Zieladresse des Frames nicht bekannt ist.
Liegt der Frame hingegen an einem Port an, so wird zunächst die Funktion static int br_learn(struct sk_buff *skb, int port) aufgerufen. br_learn ruft die Funktion br_avl_find_addr aus br_tree.c auf, die u.a. den Port und die MAC-Adresse des empfangenen Frames in eine Tabelle einträgt oder den vorhandenen Eintrag mit einem neueren Datum versieht. Das Datum dient als Timestamp, damit nach einer gewissen Zeit der Inaktivität der Eintrag wieder gelöscht werden kann. Ist die gewünschte Information in der Tabelle abgepeichert worden, wird das Ziel des Frames festgestellt. Ist der Frame für den Switch selber, so wird er an den host stack weitergeleitet, ansonsten die Funktion br_forward aufgerufen, die für die Auslieferung des Frames verantwortlich ist.
Je nachdem, ob die Zieladresse bekannt ist, also in der Switch Tabelle vorhanden ist, oder nicht, ruft br_forward die Funktion extern int dev_queue_xmit(struct sk_buff *skb) auf, die den Frame an den gewünschten Port ausliefert oder static int br_flood(struct sk_buff *skb, int port), die den Frame an alle Ports außer dem Quellport weiterleitet.